1. 序章

機械学習(ML)の問題に取り組み始めるとき、確かに私たちの注意を引く主な側面の1つは、ニューラルネットワークが持つことができるパラメーターの数です。

これらのパラメータの一部は、レイヤーを接続する重みなど、トレーニングフェーズ中に定義されることを目的としています。 ただし、学習率や重みの減衰などの他の要素は、開発者である私たちが定義する必要があります。

ハイパーパラメータという用語を使用して、定義する必要のあるパラメータを参照します。 それらを調整するプロセスは、微調整と呼ばれます。

現在、一部のML データセットには、数百万または数十億のトレーニングインスタンスがあります。 これらのパラメーターのいずれかに間違った値を選択すると、モデルが必要以上に時間内に収束し、最適でないソリューションに到達する可能性があります。さらに悪いことに、収束が発生しないシナリオに到達する可能性があります。

このチュートリアルでは、学習率のみに焦点を当て、満足のいくモデルを実現するためにその値を定義するためのさまざまなアプローチを示します。

2. 理論的背景

学習率の役割を正確に理解するためにニューラルネットワークの数学的基礎に飛び込む前に、いくつかの一般化理論の概念を簡単に確認する必要があります。

このようにして、このパラメーターの定義と、その値を最適化するためのこの懸念の背後にある理由について、さまざまな方法を評価することができます。

2.1. 一般化理論

機械学習の優れたモデルは何ですか? トレーニングセットとこれまでに見たことのないデータの両方でうまく機能するシステムをどのように作成できますか?

これらの質問に答えるには、他のハイパーパラメータの中でも、学習率の定義に密接に関連する一般化するモデルの能力を理解する必要があります。

モデルが単純すぎて、トレーニングサンプルとテストサンプルの両方を正しく分類できない場合、アンダーフィッティングが発生したと言います。

しかし、モデルがトレーニングセットのサンプルを正確に分類できるが、新しいデータのパフォーマンスが低い場合、モデルは過剰適合であると言えます。 これは、システムが非常に複雑になり、一般化の能力なしにトレーニングセットに厳密に関連する機能を学習したためです。

私たちは、トレーニングセットの精度が高いレベルではない可能性があるが、トレーニングに使用されなかった新しいデータに対して適切に実行されるスイートスポットを達成したいと考えています。

2.2. 基本に戻る:最急降下法

学習率が設定されるポイントに到達するまで、勾配ベースの最適化がどのように機能するかについて簡単に説明します。 その後、その値を定義するためのさまざまな方法について説明します。

ディープラーニングでは、ほとんどのアルゴリズムが最適化問題を意味します。 通常、損失関数または誤差関数と呼ばれる関数を最小限に抑えたいと考えています。

この最小点に到達するために、関数の導関数を計算します。ここで、およびは実数です。

(1)  

導関数の計算方法については説明しませんが、簡単なを確認できます。

導関数は、点での勾配を表します。 言い換えると、出力の対応する変更を取得するために、入力をどの程度変更する必要がありますか。

(2)  

最急降下法は、現在の導関数とは反対の方向に小さなステップを踏んで、さまざまなポイントで導関数を計算するプロセスとして定義されます。

この戦略に従って、関数のローカルまたはグローバルの最小値に到達することができます。

2.3. 複数入力の場合

前のセクションでは、導関数を計算する関数しかありませんでした。

しかし、ディープラーニングでは、問題はより複雑なモデルで複数の入力を簡単に持つ可能性があります。 では、この場合、どのように導関数を計算できますか?

各入力変数の偏導関数を計算する必要があります。 入力として持っていると仮定しましょう。その点で変数を変更した場合の偏導関数を次のように表します。

(3)  

勾配と呼ばれるベクトルにすべての偏導関数をグループ化できます。

最小化するために、負の勾配の方向に次のように定義された新しいポイントに移動します。

(4)  

最後に、で表される学習率に到達しました。

学習率は、損失関数の最小値を見つけようとするときに、最急降下法の計算中に各反復で実行されるステップのサイズを定義します。

2.4. 悪い学習率の影響

間違った学習率を選択すると、何がうまくいかない可能性がありますか?

2つのことの1つ:i)重みを更新するための最小限の手順を実行しているため、進行が非常に遅い、またはii)大きなレートを定義する可能性があるため、目的のポイントに到達することさえありません。モデルは収束せずに損失関数全体で跳ね返ります。

3. 学習率の選び方

前述の問題を回避するために、トレーニングフェーズ中に学習率を定義するさまざまな方法を実装できます。

次の例では、によってパラメータ化されたコスト関数を検討します。 学習率は、で表され、勾配はで表され、重みはで表されます。

3.1. 学習率アニーリング

実装できる最も簡単なアプローチの1つは、トレーニングのエポックが進むにつれて学習率を下げるスケジュールを立てることです。

この戦略は、最初は学習率の高い空間を探索したいという事実を利用していますが、最終的なエポックに近づくにつれて、結果を改良して最小点に近づけたいと考えています。

たとえば、モデルを1000エポックでトレーニングする場合、学習率0.1からエポック400まで開始できます。 その後、エポック700まで学習率を0.01に下げることができます。 最後に、0.001の学習率で最後のエポックをトレーニングできます。

高次元の問題がある場合は、このハイパーパラメータに多数のステップとバリエーションを使用できます。

3.2. 二乗平均平方根伝搬(RMSProp)

RMSPropは、初期の更新では後の更新での重みが少なくなるはずであるという事実に基づいて、反復中に学習率を更新するオプティマイザーです。

簡単に言えば、学習率は指数関数的に減衰するアプローチで二乗勾配の平均で除算され、急激な変化を防ぎます。

(5)  

ここで、は勾配の2乗の移動平均を表します。

RMSPropを使用すると、移動平均パラメーターがあります。これは、デフォルトで0.9に設定されています。

移動平均を計算した後、重みを更新できます。これは、ゼロによる除算を防ぐための定数です。

(6)  

3.3. アダム

適応モーメント推定(Adam)法は、RMSPropと従来の最急降下法の組み合わせと見なすことができます。 また、勾配の移動平均と組み合わせて、勾配の2乗の移動平均を使用します。

最初は最初の瞬間の見積もりです:

(7)  

2番目は、2番目のモーメントの推定値である非中心分散です。

(8)  

およびのデフォルト値は、それぞれ0.9および0.999です。 との両方を0として初期化する必要があります。このため、モーメントはゼロに向かってバイアスされます。

このエラーを修正するには、次の値を使用します。

(9)  

(10)  

そして、最終的に、Adamオプティマイザーを使用して重みを更新するための最終ルールを詳しく説明できます。

(11)  

3.4. アダグラード

Adagrad戦略の主な考え方は、パラメーターごとに異なる学習率を使用することです。

直接の利点は、頻繁に更新されるパラメーターに小さな学習率を適用し、反対のシナリオに大きな学習率を適用することです。

このように、データがまばらに空間全体に分散している場合は、Adadeltaを使用できます。 このメソッドの更新ルールには、パラメーターのみを考慮した勾配の2乗の合計を含む行列が含まれています。

(12)  

3.5. アダデルタ

Adadeltaを使用して学習率を調整することもできます。 この方法とAdagradの違いは、ここでは過去のすべての勾配を累積しないことです。

移動平均の計算に影響を与えるパラメータ(通常は0.9に設定)があります。

(13)  

(14)  

Adadeltaの主な利点の1つは、デフォルトの学習率を設定する必要がないことです。これにより、手動で調整するハイパーパラメーターの数が減ります。

3.6. 人口ベースのトレーニング(PBT)

また、Deep Mindによって開発されたメソッドを使用することもできます。これは、ハンドチューニングに関連するランダム検索の異なるアプローチで構成されています。

PBTの原則は、他のモデルと比較してパフォーマンスが低いモデルのトレーニングを継続する必要がないことです。

トレーニングされているハイパーパラメータが異なる2つのモデルのみがあり、学習率が含まれていると仮定します。 モデル1の精度が30%で、モデル2の精度が3%の場合、これらのハイパーパラメーターを使用してモデル2のトレーニングを続行する理由はありません。

したがって、モデル2をモデル1の現在のステージに置き換え、さまざまな値を引き続き調査します。

4. さまざまな学習率の例

異なる学習率で同じオプティマイザーを使用した場合の効果を例示するために、Adamアルゴリズムを使用して、120のクラス間で犬種を認識するニューラルネットワークをトレーニングしました。

同じ戦略で3つの異なる学習率を使用することの影響を簡単に確認できます。

0.001の学習率が他のシナリオをどのように上回っているかがはっきりとわかり、この場合、それが最適値であることを証明しています。

最後に、同じニューラルネットワークアーキテクチャを使用したトレーニングのパフォーマンスを、学習率を定義するためのさまざまなアプローチと比較しました。

パラメータをデフォルト値に設定して、すべてのシナリオで学習率に同じ値を使用したことを強調することは重要です。

犬の品種を認識するために、Adamオプティマイザーは精度が高く、損失が少ないことから、満足のいくモデルを取得するための最初の戦略または推測と見なす必要があることを示しています。

5. 結論

この記事では、機械学習モデルのトレーニングフェーズ中に重みを更新するためのさまざまな戦略について説明しました。 この例は、異なる学習率または戦略がトレーニングおよびテスト段階の出力にどのように劇的に影響するかを示しています。

すべての問題を解決し、学習率の最適値を選択するための厳密なルールを作成することはできませんが、確立されたアプローチを利用できます。このようにして、適切な方法をとることができます。最初に推測すると、その時点から、モデルを微調整できるようになります。