1

確率的勾配降下の汎用モジュールを実装しています。引数を取ります: トレーニング データセット、損失(x,y)、dw(x,y) - サンプルごとの損失とサンプル勾配の変化。

さて、収束基準について、私は次のことを考えました:-

a) 一部のウィンドウで平均化された、dataset.size の 10% ごとに損失関数をチェックする

b) データセット サイズの 10 ~ 20% ごとに、重みベクトル間の差のノルムを確認する

c) トレーニング セットのエラーの安定化。

d) 勾配の符号の変化 (繰り返しますが、一定の間隔ごとにチェックされます) -

これらのチェック (チェックの精度など) は、ステップ サイズ、学習率などの他の要素にも依存し、その効果はトレーニングの問題ごとに異なることに気付きました。

SGDモジュールでスローされたトレーニングセット、fx、df/dwに関係なく、一般的な停止基準はどうあるべきか、私は気にしていないようです。あなたたちは何をしますか?

また、(d) について、n 次元ベクトルの「符号の変化」とはどういう意味ですか? in - 与えられた dw_i, dw_i+1 で、符号の変化を検出するにはどうすればよいですか?

PS非数学/ラテックス記号の謝罪..まだ物事に慣れています。

4

1 に答える 1

3

まず、確率的勾配降下法は、最急降下法のオンラインバージョンです。更新ルールは、一度に1つの例を使用しています。

単一の例のコスト関数であるとすると、f(x)N次元ベクトルのSGDの停止基準は通常次のようになります。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

詳細については、この1、またはこの2を参照してください。

第二に、いわゆる「ミニバッチ」を使用した確率的勾配降下法にはさらにねじれがあります。勾配の各推定を行うために複数のトレーニング例を使用することを除いて、SGDと同じように機能します。この手法は、勾配の推定値の分散を減らし、多くの場合、最新のコンピューターの階層メモリ構成をより有効に活用します。この3を参照してください。

于 2012-10-25T00:06:48.287 に答える