基礎知識の習得が研究の高さを決定します。私たちがディープラーニングに初めて触れたとき、私たちは通常、他の人の一般化を見ました。この方法は、すぐに始めるには非常に良い方法ですが、大きな欠点もあります。理解が徹底されていないため、アルゴリズムの最適化について混乱しています。私も知識の要約というアイデアからディープラーニングの知識の本質の探求を始めましたが、そこからより多くの人を助けたいと思っています。記事の途中に不明瞭な表現がありましたが、研究者仲間(深層学習を研究している友人)からアドバイスをいただき、記事の改善に努めたいと思います。
1. 勾配降下法アルゴリズムの概要
先ほど述べた損失関数を見つける目的は、損失を削減してパラメータを継続的に最適化することでネットワークを最適化することです。極値を見つける必要があることは明らかです。一次関数の極値を求めるのは非常に簡単で、導関数を連続的に導出し、極値を求める判断を行うだけです。二項関数の場合は偏導関数を実行する必要があります。関数が凸でない場合、複数の極値問題が発生します。そのため、ディープラーニングのような高度な損失関数の最小値を見つけることは困難であり、また、ディープラーニングでは学習に大量のサンプルが必要となるため、異なる勾配降下法によって異なる効果が得られます。まず、勾配を見つけるために最も一般的に使用されるフレームワークを紹介します。
1. グローバル勾配降下法 (バッチ勾配降下法)
勾配の各反復では、モデルを更新するためにすべてのトレーニング セット サンプルが必要です
範囲 (エポック) 内の i の場合:
params_grad = 評価勾配(損失関数,データ,パラメータ)
params = params - learning_rate * params_grad
上記はコードの実装です。グローバル変数の長所と短所を要約できます。すべてのデータが毎回反復に参加するため、最適化の方向が毎回正しいことが保証され、関数が次のことを行うことができることがわかります。極値に収束する(凸関数の場合は極小値、非凸関数の場合は極値となる)。ただし、各反復には長い時間がかかる可能性があり、一度に多すぎるデータでトレーニングすると計算メモリが不足する可能性があります。
2. 確率的勾配降下法
確率的勾配降下法では、学習のために毎回トレーニングから 1 つのサンプルがランダムに選択されます。
長所と短所: SGD の短所の 1 つは、損失値が大きく変動するため、更新されるたびに勾配が正しい方向に進むことを保証できないことです。ただし、これにはいくつかの利点もあります。それは、変動によって関数が局所最適解から飛び出し、別のより適切な局所最適解に到達する可能性があることです。収束効果が向上し、全体的な最適点も得られます。また、変動により反復回数が増えるため、収束が遅くなります。ただし、それでも最終的には局所最適または大域最適に収束します。
3. ミニバッチ勾配降下法 (ミニバッチ勾配降下法)
ミニバッチ勾配降下法は、グローバル勾配降下法と確率的勾配降下法のバランスをとっており、まずデータをランダムなグループにシャッフルします。次に、トレーニングごとに小さなデータセットを入力します。
長所と短所: 勾配降下法と比較して、ミニバッチ勾配降下法では収束の不安定性が軽減されます。アップデートをより安定させます。大域勾配降下法 MIni-batch と比較して学習速度が向上し、メモリの制限を心配する必要がありません。各入力画像は選択問題であり、何度も試行した後、適切な数のサンプルを選択できます。
2. 勾配降下法アルゴリズムの問題点と課題
1. 学習率の選択は特に難しく、学習率が小さいと収束速度が遅くなり、学習率が大きいと収束効果が悪く、極端に近い乱流が続くことになります。値はありますが、ドロップダウンできません。
2. 学習率の調整。つまり、トレーニング プロセス中に学習率を継続的に変更する戦略を設定します。ただし、これにはしきい値の設定が必要です。
3. モデル内の各パラメーターの更新には同じ学習率が必要ですが、データの特徴がまばらであり、各特徴の値の統計的特性と空間が異なるため、各パラメーターの更新には異なる学習率が必要です。
4. 非凸関数の場合、局所最適解に陥りやすい。もう 1 つの最も深刻な問題は、局所最適解ではなく鞍点 (特定の直線上では比較的安定しているが、最大値も最小値も示さない) に現れることです。
3. 上記問題を軽減するための最適化手法
勾配降下法最適化アルゴリズムを紹介しましょう。
1. 勢い
局所的な極値が多い関数では、その箇所で勾配降下が徘徊し、収束速度が低下する場合があるため、モーメンタムメモリエンディングを追加します。原理としては、現時点での勾配降下方向が直前の勾配降下方向と同じであれば、その時点での勾配降下速度が速くなるというものです。直前の方向と逆の場合は、その方向の勾配降下速度を下げる必要があります。これにより、間違った方向に大きくシフトして、勾配の低下が早くなることがなくなります。
2、投与量
Adagrad は、パラメーターの更新ごとに異なる学習率に適応できる勾配ベースの最適化アルゴリズムです。まばらな特徴に対しては大きな学習率が得られます。多くの特徴を持つ特徴に対しては、より小さい学習率が使用されます。したがって、最適化アルゴリズムは、まばらな特徴データの処理により適しており、ネットワークの堅牢性を向上させることができます。一般に、単語ベクトルはトレーニングによって取得でき、フィールドに出現する単語には小さな学習率が割り当てられます。
方程式は次のとおりです。
式から、運動量が異なり、2次運動量が使用されていることがわかります。
3、アダム
Adaptive Moment Estimation (Adam) も適応学習率の手法の 1 つであり、その減衰方法は運動量に似ています。
方程式は次のとおりです。実際、これは 1 次の運動量と 2 次の運動量を組み合わせるものです。
4. SGD オプティマイザーの選択方法
データ特徴がまばらな場合は、トレーニング中に学習率を手動で調整する必要がないため、適応学習率 SGD 最適化手法 (Adagrad、Adadelta、RMSprop、Adam) を使用することをお勧めします。ただし、最新の論文の多くは現在、SGD の最も基本的な学習率アニーリング調整を使用しています。証拠は、SGD が最小値を取得する可能性があることを示していますが、ロバストな初期化値と学習率アニーリングに依存する他のオプティマイザーと比較して、調整戦略、そして最小点と鞍点に陥りやすいです。したがって、高速収束を達成するには、適応学習率を備えた SGD 最適化方法を選択する必要があります。
5. さらなる SGD 最適化戦略
前述の Momentum、Adagrade、Adam はすべて、学習率を変更し、勾配を正しい方向に制御することによって実行されます。次の最適化アルゴリズムはこれらの分布を補足するもので、トレーニングをより安定させます。
1. サンプルをランダムにシャッフルするか、特定の意味に従ってサンプルを並べ替えます。
トレーニング セットの順序を乱すのは、学習プロセスに偏りがないようにするためです。ただし、場合によっては、問題を段階的に解決し、トレーニング セットを意味のある並べ替えることで、収束と SGD のパフォーマンスが向上します。
2. バッチ正規化(BNアルゴリズム)
ネットワークの収束とトレーニング速度パフォーマンスの影響を確実にするために、多くの場合、平均 0、分散 1 の原則に基づいて入力データを初期化します。ただし、ネットワークがトレーニングされると、パラメーターはさまざまな程度に更新されるため、これらのパラメーターは平均 0、分散 1 の分布を失います。これにより、データの偏差が発生し、収束速度の低下につながり、非活性化されるニューロンが多すぎる可能性があり、過剰なパラメータ調整が発生して収束性能に影響を与える可能性があります。
3. 早期停止(トレーニングを早期に終了する)
複数回の反復中に損失関数が大幅に減少しなくなった場合は、トレーニングを早期に終了する必要があります。または、オーバーフィッティングが増加した場合は、早期に終了する必要があります。
4、勾配ノイズ
各反復でガウス分布のランダム誤差を追加すると、ネットワークの堅牢性が向上するため、ディープ ネットワーク トレーニングに適しています。ランダム ノイズを追加すると、局所的な極値がスキップされ、より良い収束が達成される可能性が高いためです。
以上が勾配降下法に関する知識のまとめですが、分かりにくい表現や間違いがあればご指摘ください。次に、記事内で言及されているBN(バッチ正規化)の原理と、ディープネットワークにおけるBNの役割について詳しく紹介します。