機械学習と統計学において、学習率は最適化アルゴリズムの調整パラメータであり、損失関数の最小値に向かって進む際に各反復におけるステップサイズを決定します。[ 1 ]新しく獲得した情報が古い情報をどの程度上書きするかに影響するため、比喩的に機械学習モデルが「学習」する速度を表します。適応制御の文献では、学習率は一般的にゲインと呼ばれます。[ 2 ]
学習率を設定する際には、収束速度とオーバーシュートの間にトレードオフがあります。通常、降下方向は損失関数の勾配から決定されますが、学習率はその方向にどれだけ大きなステップを取るかを決定します。学習率が高すぎると、学習が最小値を飛び越えてしまいますが、学習率が低すぎると、収束に時間がかかりすぎたり、望ましくない局所的最小値に陥ったりします。[ 3 ]
より速い収束を実現し、振動を防ぎ、望ましくない局所的最小値に陥らないようにするために、学習率は、学習率スケジュールに従って、または適応学習率を使用して、トレーニング中に変化することがよくあります。[ 4 ]学習率とその調整は、パラメータごとに異なる場合もあり、その場合は、ニュートン法のヘッセ行列の逆行列の近似として解釈できる対角行列になります。[ 5 ]学習率は、準ニュートン法および関連する最適化アルゴリズムにおける不正確な線探索によって決定されるステップ長に関連しています。[ 6 ] [ 7 ]
初期レートはシステムデフォルトのままにしておくことも、さまざまな手法を使用して選択することもできます。[ 8 ]学習率スケジュールは学習中に学習率を変更し、多くの場合、エポック/イテレーション間で変更されます。これは主に、減衰とモーメンタムという 2 つのパラメータで行われます。さまざまな学習率スケジュールがありますが、最も一般的なのは時間ベース、ステップベース、指数関数です。[ 4 ]
減衰は、学習を適切な場所に安定させ、振動を回避する役割を果たします。振動は、一定の学習率が高すぎると、学習が最小値を超えて行ったり来たりしてしまう場合に発生する可能性があり、ハイパーパラメータによって制御されます。
モーメンタムは、丘を転がり落ちるボールに例えられます。ボールが丘の最も低い地点(最小誤差に対応)に落ち着くことを目指します。モーメンタムは、誤差コスト勾配が長時間同じ方向に向かっている場合に学習を加速させ(学習率を高め)、小さな凹凸を「乗り越える」ことで局所的最小値を回避します。モーメンタムは、ボールの質量に例えられるハイパーパラメータによって制御され、手動で選択する必要があります。高すぎると、ボールは探したい最小値を乗り越えてしまい、低すぎると目的を果たせません。モーメンタムを考慮に入れるための式は、減衰の場合よりも複雑ですが、多くの場合、 Kerasなどの深層学習ライブラリに組み込まれています。
時間ベースの学習スケジュールでは、前回の反復における学習率に応じて学習率が変更されます。減衰を考慮すると、学習率の数式は次のようになります。
どこ学習率とは、は元の学習率です。は減衰パラメータであり、これは反復ステップです。
ステップベース学習スケジュールは、あらかじめ定義されたいくつかのステップに従って学習率を変更します。減衰適用式は、ここで次のように定義されます。
どこ反復における学習率は、は初期学習率です。は、各ドロップで学習率がどれだけ変化するか(0.5は半減に対応)であり、はドロップ率、つまりドロップ率がどのくらいの頻度でドロップされるかに対応します(10 は 10 回の反復ごとにドロップに対応します)。floor関数() ここで、1 より小さいすべての値に対して、入力の値を 0 に落とします。
指数学習スケジュールはステップベース学習スケジュールに似ていますが、ステップの代わりに減少指数関数が使用されます。減衰を考慮に入れるための数式は次のとおりです。
どこは減衰パラメータです。
学習率スケジュールの問題点は、学習セッションごとに手動で選択する必要のあるハイパーパラメータに依存し、対象となる問題や使用するモデルによって大きく異なる可能性があることです。これに対処するために、Adagrad、Adadelta、RMSprop、Adam [ 9 ]など、さまざまなタイプの適応型勾配降下アルゴリズムがあり、これらは一般的にKeras [ 10 ]などの深層学習ライブラリに組み込まれています。