問題タブ [gradient-descent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 勾配降下計算における損失と特徴の関係
チームメイトと私は勾配降下法の実装をコード化しようとしていますが、かなり近づいていると思います
この質問に対する最初の回答に関連する手順、つまり次の手順に従うことを (試みました) 。
1.仮説 h = X * theta を計算します
2.損失 = h - y を計算し、コストの 2 乗 (損失^2)/2m を計算します。
3.勾配 = X' * 損失 / m を計算します。
4.パラメータ theta = theta - alpha * gradient を更新します。
しかし、欠落しているコードからわかるように、勾配を計算する方法について少し迷っています。正しく設定しましたか?
その計算を実行する方法は?
X' と X はどう違いますか?
c++ - 一定量の引数の展開
C++ で 5 つのパラメーターを持つ関数の単純な勾配降下法を書きたいと考えています。ここで、実装モデルの問題に出くわしました。引数をベクトル/配列に折りたたむために速度を犠牲にする必要があります。これが私の言いたいことです。次のように関数値と勾配計算を実装できます。
また:
後者の方が実装が簡単ですが、メモリを常に割り当てたり解放したりすると、速度が大幅に低下するのではないかと心配しています。
私の質問は次のとおりです。
- どちらを選びますか?
- 勾配降下法を実装したことがある場合、そのケースをどのように処理しましたか?
matlab - 線形回帰の勾配降下がうまくいかない
実際には線形モデルを使用して一連の「sin」データに適合させたいのですが、反復ごとに損失関数が大きくなることがわかりました。以下のコードに問題はありますか? (勾配降下法)
これがMatlabの私のコードです
ここに私が適合させたいデータがあります
python - 確率的勾配降下法の収束基準
現在、SGD の収束基準は、MSE エラー率が特定の境界内にあるかどうかをチェックします。
重みは、トレーニング セット内の単一のデータ ポイントに対して更新されます。
アルファが 0.001 の場合、モデルは数回の反復で収束するはずですが、収束しません。この収束基準は厳しすぎませんか?
r - R の別のループ内でループする
loop in loop 関数の結果に問題があります。ループ内を 1 回だけカウントし、最初の raw に最適なソリューションを選択してから停止します。
行列の各行の最適解を覚えておきたいzmienne
です。私は何を間違っていますか?
machine-learning - torch - LookupTable と勾配の更新
複数のレイヤーを持つニューラル ネットワークを実装しようとしています。私が行ったことが正しいかどうかを理解しようとしています。そうでない場合は、どうすればこれをデバッグできますか。私が行う方法は、次の方法でニューラル ネットワークを定義することです (事前に学習した埋め込みでルックアップ可能レイヤーを初期化します)。
ここで、ネットワークをトレーニングするために、すべてのトレーニングの例をループし、すべての例に対して、次のコードを持つ gradUpdate() を呼び出します (これは例からそのままです)。
findGrad 関数は、勾配 wrt 出力を返す WARP Loss の単なる実装です。これだけでいいのかな?これにより、すべてのレイヤーのパラメーターが逆伝播されて更新されると思います。これを確認するために、このネットワークをトレーニングし、モデルを保存しました。次に、モデルをロードして実行しました:
今、私は vector[1] と lookuptable.weight[1] をチェックしましたが、それらは同じでした。ルックアップ テーブル レイヤーの重みが更新されなかった理由がわかりません。ここで何が欠けていますか?
返信をお待ちしております。
optimization - グラデーションを必要としないカスタム損失関数を受け入れる Apache Spark / MLLib のオプティマイザーはありますか?
Apache Spark / MLLib の実験を始めたばかりで、尤度関数を区別するのが難しいモデルを適合させたいと考えています。Rでは、最適化アルゴリズムが勾配を指定する必要がないことを知っています(経験的に計算されている/数値導関数であると思います)。
そのようなアルゴリズムは Apache Spark に存在しますか? 誰かがそれに遭遇しましたか?これを現在の最適化ライブラリに統合するためのベスト プラクティスはありますか? すべての R コードはコンパイルされているため、それらがどのように機能しているかを正確に理解することはできません。
よろしくお願いいたします。
スコット
vector - 行列分解と勾配降下法
私はここにある論文に従っており、論文に記載されている確率的勾配降下法 (SGD) の代わりにバッチ勾配降下法 (BGD) を実行しようとしています。
SGDの場合、私が収集するのは、これを行うことです(疑似コード):
Repeat for every user
Do the same for every Item, except in 2. multiply by the user vector instead of the item vector
Go back to start and repeat until some breakpoint
BGDの場合、私がしたことは次のとおりです。
Then repeat for the Items exchanging item vector in 2. for user vector
これは理にかなっているように思えますが、さらに読むと、BGD について混乱してしまいました。1 つの変更を行うためだけに、BGD はデータセット全体で反復する必要があると書かれています。これは、私が行ったことのように、その特定のユーザーに関連するデータセット全体を意味しますか、それとも文字通りデータセット全体を意味しますか?
データセット全体を通過する実装を作成し、すべての予測エラーを合計し、その数値を使用してすべてのユーザー ベクトルを更新します (したがって、すべてのユーザー ベクトルは同じ量だけ更新されます! )。ただし、ラムダ レートが 0.002 の場合でも、最小値には近づかず、急速に変動します。平均誤差 12,500 から 1.2、さらに -539 などになる可能性があります。最終的には、数値が無限大に近づき、プログラムが失敗します。
この背後にある数学に関するヘルプは素晴らしいでしょう。