勾配のきちんとした、確率的な勾配のきちんとした

勾配が適切

主な参考資料:国立台湾大学のLi Hongyi教授による機械学習コースのステーションBビデオ
前に説明したEMアルゴリズムと同様に、勾配降下アルゴリズムも最適化アルゴリズムです。それが解決したい問題がある:
見つける
θ⋆= argの分⁡L(θ)\シータ^ {\スター} = \ argminのL(\シータ)θ=a r gM I nはL θ

どこθ\シータθは更新するパラメーターです。これには複数のパラメーターを含めることができます。つまり、θ\ thetaθはベクトル、L(θ)L(\ theta)L θ は損失関数です。これは、最適化プロセス中に減少し続ける必要がある関数です。

全体のプロセスは数学で説明するのが実際には非常に簡単で、使用されるのは多数の勾配の概念です。θ= [θ1、θ2] Tと仮定します\ theta = [\ theta_1、\ theta_2] ^ Tθ=[ θ1θ2]Tは、2つのパラメーターがあることを意味します。その場合、パラメーター反復プロセス全体は次のようになります。

ここで、θij \ theta_i ^ jθJ表しIIをi変数はjjにありますj回の反復後の値、η\ etaηは、深層学習で最も一般的なハイパーパラメーターの1つである学習率学習率です。

注意すべきことの1つは、θt + 1 \ theta ^ {t + 1}を取得することですθt + 1の場合、∇L(θ)\ nabla L(\ theta)が必要ですL θは、換言すれば、全体の損失関数の勾配はそう、計算する必要があります

学習率

学習率は勾配降下のステップ値です。非常に古典的だと思う画像があります。
ここに画像の説明を挿入
上の図に示すように、学習率が比較的小さい場合、パラメーターの更新は非常に遅くなり、ネットワークトレーニングには役立ちません。学習率が非常に大きい場合、損失は減少するのではなく増加します。適切な学習率だけが最良の結果を達成できます。

適応学習率

私を含む多くの人々は、彼らが最初に学習率を学んだとき、それが極端な値に近づくにつれて学習率を小さくすることができるという自然な考えを持っていました。高速かつ高い最終精度の要件を満たすには十分ではないでしょうか?

私は以前Andrew Ngのビデオを見たことがありますが、彼はこれについて説明しています:実際には、この種の演算は必要ありません。最も一般的な2次関数を例として取り上げます。勾配を減少させるプロセスでは、学習率を一定に保ちます。極値に近づくほど、勾配が小さくなるため、徐々に正確な効果が得られます。

しかし、より適応的な学習率調整アルゴリズムを設計する必要がある場合もあります。そこで適応学習率が生まれました。

アダグラード

Adagradのアルゴリズムフローは次のとおりです。
ここに画像の説明を挿入
ここで、Li Hongyi教授は次のように質問しました。
ここに画像の説明を挿入

Li Hongyi教授の説明は非常に明確です。ここに画像の説明を挿入

プロセス全体で、分母の平均二乗は、実際には、2次導関数を近似するサンプリングプロセスを想定しています。もちろん、実際には2次導関数を見つけることができますが、実際の操作では、上の図の方法の方がはるかに高速です。

確率的勾配が適切

勾配降下アルゴリズムでは、勾配を計算するときに、すべてのサンプルを使用して損失関数を計算し、勾配を計算します。毎回計算される勾配の方向は非常に正しいですが、速度は非常に遅いです。ネットワークをトレーニングする場合、それは完全に不要です。
2つのアルゴリズムの主な違いは次のとおりです。
ここに画像の説明を挿入
この時点での損失はもはやグローバルな損失ではなく、ランダムに取得されたこのサンプルの損失のみです。したがって、速度は通常の勾配降下よりもはるかに高速です。

おすすめ

転載: blog.csdn.net/Code_Tookie/article/details/104336536