神経正味重量減衰と学習率の違い


回答:


161

学習率は、更新ステップが重みの現在の値にどの程度影響するかを決定するパラメーターです。重み減衰は、他の更新がスケジュールされていない場合、重みを指数関数的にゼロに減衰させる重み更新ルールの追加用語です。

したがって、最小化したいコスト関数またはエラー関数あるとします。勾配降下は、の最急降下の方向に重みを変更するように指示し: ここで、は学習率であり、それが大きい場合は、それに応じて重み大きな変更が行われます(一般に、大きすぎてはいけません。そうでなければ、コスト関数の極小値をオーバーシュートします)。E(w)wE

wiwiηEwi,
ηwi

モデルの空きパラメータの数を効果的に制限して、過剰適合を回避するために、コスト関数を正規化することができます。これを行う簡単な方法は、重みの前にゼロ平均ガウスを導入することです。これは、コスト関数をに変更することと同等です。。実際には、これは大きな重みにペナルティを課し、モデルの自由度を効果的に制限します。正則化パラメーターは、元のコストと大きな重みペナルティとのトレードオフを決定します。E~(w)=E(w)+λ2w2λE

この新しいコスト関数に勾配降下法を適用すると、 正則化に由来する 新しい項により、重みはそのサイズに比例して減衰します。

wiwiηEwiηλwi.
ηλwi

2
有用な説明をありがとう。質問:「nnet」Rパッケージには、「decay」と呼ばれるニューラルネットワークのトレーニングで使用されるパラメーターがあります。減衰がラムダに対応するか、eta * lambdaに対応するかを知っていますか?
アンドレアイアンニ

3
また、後者に慣れている人にとっては、体重減少はL2正則化と同じことです。
セルゲイ

2
@セルゲイ、この誤報の拡散を止めてください!これは、バニラSGDの非常に特殊な場合にのみ当てはまります。Adam論文の重量減衰修正を参照してください。
ルーカスB

明確にするため:執筆時点で、AdamのPyTorchのドキュメントでは、「重量減衰」(括弧で「L2ペナルティ」と呼ばれます)という用語を使用して、著者がL2規制と呼んでいるものを指します。私の理解が正しければ、この回答は、勢いのないSGDを指し、2つは同等です。
ディランF

14

@mrigの答え(+1)に加えて、ニューラルネットワークの多くの実用的なアプリケーションでは、Levenberg-Marquardt(小中規模ネットワーク)やスケーリングされた共役勾配降下(中大)などのより高度な最適化アルゴリズムを使用することをお勧めしますネットワーク)、これらははるかに高速であり、学習率を設定する必要はありません(両方のアルゴリズムは、曲率と勾配を使用して基本的に学習率を調整します)。適切なニューラルネットワークパッケージまたはライブラリには、これらのメソッドのいずれかの実装がありますが、そうでないパッケージはおそらく廃止されます。私は、MATLAB用のNETLABライブラリを使用していますが、これはすばらしいキットです。


Rpropベースの最適化アルゴリズムはどうですか?彼らはどのように積み重ねますか?
電源

4
ほとんどの人は、RMSProp、adagrad、SGD + nesterovの運動量などのrprop + momentumのバリアントを使用していると思います。cs231クラスを参照してください。
facuq

1
もちろん、アプリケーションによって異なります。しかし、今やちょっとトレンディな大規模なデータセット/ネットワークの場合、人々は私が言及したアルゴリズムがより適していると思います。
facuq 16

6
@DikranMarsupialそれは、今日(あなたの答えからほぼ5年後)人々が代わりにAdamを使う傾向があるからでしょうか?
コンピューター

2
実際、この答えは非常に時代遅れです。これらのアルゴリズムは、今日の典型的なモデルとデータセットの規模では実用的ではなく、最も広く使用されているパッケージは確かに時代遅れではなく、これらのアルゴリズムを欠いています。
LucasB

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.