1. 序章

このチュートリアルでは、学習率とバッチサイズ、モデルトレーニングの前に設定する必要がある2つのニューラルネットワークハイパーパラメーターについて説明します。 両方を紹介し、その後、それに応じて調整する方法を分析します。

また、ある人が別の人にどのように影響し、このトピックでどのような作業が行われたかを確認します。

2. 学習率

学習率は、機械学習と統計で使用される用語です。 簡単に言うと、アルゴリズムが解に収束する速度を指します。 学習率は、ニューラルネットワークをトレーニングするための最も重要なハイパーパラメーターの1つです。 したがって、その値を可能な限り最適に近づけることが非常に重要です。

通常、ニューラルネットワークモデルをトレーニングする必要がある場合は、勾配降下アルゴリズムに基づくいくつかの最適化手法を使用する必要があります。 重みに関する損失関数の勾配を計算した後、その勾配は局所最適点への方向を持ちます。 学習率ハイパーパラメーターを使用して、その方向に向けて重みを調整し、モデルを最適化します。

学習率は、最急降下法が局所最適に向けて取るステップサイズを示します。

したがって、学習率が低すぎると、最急降下法が最適値に到達するまでに時間がかかります。 逆に、学習率が大きすぎると、最急降下法が発散し始め、最適な解に到達することはありません。

また、学習率は固定値である必要はありません。 たとえば、トレーニングのエポックが増加するにつれて学習率が減少するというルールを定義できます。 それに加えて、いくつかの適応学習率最適化手法は、トレーニング中に学習率を変更します。 学習率と最急降下法の選択の詳細については、この記事を参照してください。

3. バッチサイズ

バッチサイズは、ニューラルネットワークをトレーニングするために1つのエポックで使用するサンプルの数を定義します。バッチサイズに関して、最急降下法には3つのタイプがあります。

  • バッチ勾配降下法–1つのエポックでトレーニングセットからのすべてのサンプルを使用します。
  • 確率的勾配降下法–1つのエポックでトレーニングセットからのランダムなサンプルを1つだけ使用します。
  • ミニバッチ最急降下法–1つのエポックでトレーニングセットから事前定義された数のサンプルを使用します。

ミニバッチ最急降下法が最も一般的であり、経験的に最良の結果を示しています。 たとえば、1000サンプルのトレーニングサイズと100のバッチサイズを考えてみましょう。 ニューラルネットワークは、最初のエポックで最初の100個のサンプルを取得し、順方向および逆方向の伝播を行います。 その後、2番目のエポックで後続の100サンプルを取得し、プロセスを繰り返します。

全体として、ネットワークは、事前定義されたエポック数の間、または目的の条件が満たされないまでトレーニングされます。

ミニバッチ最急降下法がこの記事で説明した単一バッチ降下法よりも優れている理由。

バッチサイズは、全体的なトレーニング時間、エポックごとのトレーニング時間、モデルの品質などのいくつかの指標に影響します。 通常、バッチサイズは16〜512の範囲の2の累乗として選択しました。 ただし、一般的に、32のサイズは経験則であり、最初の選択として適切です。

 

4. 学習率とバッチサイズの関係

問題は、学習率とバッチサイズの間に何らかの関係があるかどうかです。 バッチサイズを増減する場合、学習率を変更する必要がありますか? まず、Adam、Adagradなどの適応勾配降下オプティマイザーを使用する場合、バッチサイズを変更した後に学習率を変更する必要はありません。

そのため、古典的なミニバッチ最急降下法について話していると考えます。

4.1. 理論的見解

この問題についてはいくつかの作業が行われています。 一部の著者は、バッチサイズにを掛けるときは、学習率も掛けて維持する必要があると提案しています。 グラの分散 dient期待定数。 また、より一般的には、単純な線形スケーリングルールが使用されます。 つまり、バッチサイズにを掛ける場合、学習率にもを掛ける必要がありますが、他のハイパーパラメータは変更されません。

つまり、著者はさまざまなバッチサイズと学習率で実験しました。 線形スケーリングルールを使用して、同じ精度を達成し、学習曲線を一致させました。 彼らは、ImageNet実験までのバッチサイズでこの一致を達成しました。

また、トレーニングの最初の5つのエポックで、学習率を一定に増加させる段階的なウォームアップを使用してそれを達成しました。 この戦略は、かなりの学習率による早期の過剰適合を防ぎます。 

この例では、線形スケーリングルールを適用しようとしました。 これは、MNISTデータセットと、1つの畳み込み、ドロップアウト、および完全に接続されたレイヤーを備えた単純なCNNを使用した実験でした。 のバッチサイズと学習率をそれらの乗算値と比較しました。ここで、乗算は最大からの整数を使用して行われます。 結果は、学習曲線がよく一致していることを確認します。

4.2. 実用的なビュー

理論的アプローチは、ほとんどの変数とデータセットがほぼ完全である理論的実験でうまく機能します。 通常、実際のタスクに関しては状況が少し異なります。 まず第一に、私たちの目標は、2セットのバッチサイズと学習率を使用して同じ精度と学習曲線を一致させることではなく、可能な限り良好な結果を達成することです。

たとえば、バッチサイズを増やして精度を上げた場合、以前の結果を達成するために学習率を変更する意味はありません。 また、調整するハイパーパラメータが他にもたくさんあるため、バッチサイズと学習率の初期値が最適かどうかはわかりません。

通常、実際には、これら2つのハイパーパラメーターを他のハイパーパラメーターと一緒に調整します。 それに加えて、それらを独立して設定するのが一般的です。 たとえば、ニューラルネットワークのトレーニングが遅すぎる場合は、バッチサイズを増やして、結果の変化を監視することがあります。 また、ネットワークの収束が遅すぎる場合は、学習率が向上する可能性があります。

5. 結論

この記事では、バッチサイズと学習率という用語について簡単に説明しました。 両方の用語の理論的背景をいくつか示しました。 経験則では、両方のハイパーパラメータを上記から直線的に増やします。 しかし、さらに重要なことは、バッチサイズと学習率の比率ではなく、ニューラルネットワークの結果に焦点を合わせ続けることです。

結局のところ、私たちの目標は可能な限り最高の結果を得ることです。