【ディープラーニング】ニューラルネットワークにおけるバッチとエポックの違いは何ですか?それをどう理解すべきでしょうか?

1. 問題の導入

1.1 確率的勾配降下法

確率的勾配降下法 (SGD) は、損失関数を最小化するためにモデル パラメーターを更新するために機械学習と深層学習で使用される最適化アルゴリズムです。従来の勾配降下法アルゴリズムとは異なり、SGD では、トレーニング データセット全体を使用するのではなく、パラメーター更新ごとに 1 つのサンプル (またはサンプルの小さなバッチ) のみを使用します。これにより、SGD の収束が速くなり、大規模なデータセットを処理できるようになります。

SGD の基本的な考え方は、損失関数が徐々に減少するように、損失関数の勾配方向に沿ってモデル パラメーターを更新することです。各反復では、ランダム サンプルまたはミニバッチ サンプルが選択され、このサンプルの損失関数の勾配が計算されます。次に、この勾配を使用してモデル パラメーターを更新します。

SGD の更新ルールは次のとおりです。

参数 = 参数 - 学习率 * 损失函数关于参数的梯度

このうち、学習率は各更新のステップ サイズを制御するハイパーパラメーターです。学習率が小さいとトレーニングがより安定しますが、収束が遅くなる可能性があります。一方、学習率が大きいとトレーニングが不安定になる可能性があります。

SGD はトレーニング中に迅速に収束することができ、大規模なデータセットに適していますが、各更新では 1 つのサンプルまたはサンプルの小さなバッチのみが使用されるため、更新方向に大きなランダム性が存在する可能性があります。したがって、SGD の更新にはノイズが含まれる可能性があり、トレーニング中に損失関数が変動する可能性があります。

1.2 主なパラメータ

確率的勾配降下法 (SGD) は、アルゴリズムのパフォーマンスと収束率に影響を与えるように調整できるいくつかのパラメーターを備えた最適化アルゴリズムです。SGD アルゴリズムの主なパラメータは次のとおりです。

学習率:
学習率は、各パラメーター更新のステップ サイズを制御するハイパーパラメーターです。学習率が小さいほどトレーニングはより安定しますが、収束が遅くなる可能性があります。学習率が大きいと、トレーニングが不安定になったり、発散したりする可能性があります。学習率の調整は最適化アルゴリズムにおける重要なタスクであり、多くの場合、最適な学習率を見つけるためにさまざまな値を試す必要があります。

反復数 (エポック):
反復数とは、データ セット全体に対してトレーニング アルゴリズムが実行される回数を指します。反復回数を増やすと、モデルがトレーニング データにさらに適合するようになりますが、反復が多すぎると過剰適合につながる可能性があります。実際のアプリケーションでは、通常、適切な反復回数を決定するために相互検証などの方法が必要です。

バッチ サイズ:
バッチ サイズは、各更新に使用されるサンプルの数です。バッチ サイズを大きくするとトレーニングを高速化できますが、メモリ要件が増加する可能性があります。バッチ サイズが小さいとトレーニングがより安定する可能性がありますが、収束が遅くなる可能性があります。バッチ サイズの選択は、ハードウェア リソースとデータセットのサイズにも影響されます。

2. バッチ

バッチ サイズは、内部モデル パラメーターを更新する前に処理するサンプルの数を定義するハイパーパラメーターです。バッチ処理は、1 つ以上のサンプルを反復し、それらのサンプルに対して予測を行うループと考えてください。

バッチの最後に、これらの予測が予想される出力と比較され、誤差が計算されます。この誤差に基づいて、更新アルゴリズムを使用して、通常は誤差勾配の方向に沿ってモデルが改善されます。

トレーニング データセットは 1 つ以上のバッチに分割できます。すべてのトレーニング サンプルを使用して各バッチのモデルを更新する場合、この学習アルゴリズムはバッチ勾配降下法と呼ばれます。

バッチ サイズが 1 サンプルの場合、学習アルゴリズムは確率的勾配降下法と呼ばれます。バッチ サイズが 1 つのサンプルとトレーニング データセット全体の間の場合、学習アルゴリズムはミニバッチ勾配降下法と呼ばれます。

  • バッチ勾配降下。バッチサイズ = トレーニングセットのサイズ
  • 確率的勾配降下法。バッチサイズ = 1
  • ミニバッチ勾配降下法。1 < バッチ サイズ < トレーニング セット サイズ

バッチ サイズは、各バッチに含まれるトレーニング サンプルの数を指します。通常、バッチ サイズは 32、64、128 などの正の整数です。バッチ サイズの選択は、トレーニングの速度と安定性に直接影響する重要な決定です。

SGD では、各パラメータ更新でサンプルのバッチが使用されます。従来の勾配降下法とは異なり、SGD はランダム サンプルまたは小規模バッチ サンプルを使用して勾配を計算し、モデル パラメーターを更新します。このアプローチにはいくつかの利点があります。

  • 計算効率: 一度に 1 つのバッチの勾配を計算すると、データセット全体の勾配を計算する場合と比較して、特に大規模なデータセットでのトレーニングを高速化できます。
  • パラメーター更新の頻度: サンプルの小さなバッチを使用してモデル パラメーターを更新すると、トレーニング中にパラメーターをより頻繁に更新できるようになり、モデルをより速く収束させることができます。
  • ランダム性により過学習が軽減される: ランダムなサンプルを使用してパラメーターを更新すると、各更新がサンプルの異なるサブセットに基づいているため、トレーニング プロセスでの過学習をある程度軽減できます。

3. エポック

エポックは、機械学習と深層学習のトレーニング プロセスにおける重要な概念です。これは、トレーニング アルゴリズムにおける順伝播および逆伝播のために、トレーニング データ セット全体をモデルに完全に渡すプロセスを表します。トレーニング データセット内のすべてのサンプルは、モデルのパラメーターを 1 回更新するために使用されます。これは反復と呼ばれます。

トレーニング プロセス中、通常、トレーニング データ セットを複数のバッチに分割し、各バッチでパラメーターの更新を実行します。反復は、トレーニング データセット全体のすべてのサンプルがモデルを通過し、パラメーターの更新に参加するたびに完了します。

Epoch のコンセプトは、モデルのパフォーマンスと汎化能力を向上させるために、トレーニング データセット全体でモデルを完全に学習できるようにすることです。エポック数を増やすと、モデルがトレーニング データにさらに適合するようになりますが、エポックが多すぎると過適合につながる可能性があります。つまり、モデルはトレーニング データでは良好にパフォーマンスしますが、新しいデータでは良好にパフォーマンスが低下します。

実際のトレーニング プロセスでは、通常、問題の特性とデータ セットのサイズに応じて適切な数のエポックを選択する必要があります。場合によっては、交差検証などの手法を使用して、過剰適合または過小適合を回避するために最適なエポック数を決定します。

以下は、確率的勾配降下法におけるエポックの詳細な解釈です。

  1. 確率的勾配降下法では、エポックとは、モデルの順伝播と逆伝播を通じて、トレーニング データセット全体のすべてのサンプルでモデル パラメーターを 1 回更新するプロセスを指します。これは、各エポックで、すべてのトレーニング サンプルが勾配の計算とモデルの更新に使用されることを意味します。
  2. 各エポックではトレーニングデータセット全体が走査されますが、SGD は更新ごとに 1 つのランダムサンプルまたは小さなバッチサンプルのみを使用するため、各エポックでのパラメーター更新にはある程度のランダム性があります。このランダム性は、アルゴリズムがトレーニング中に極小値を回避するのに役立ちますが、トレーニング中に損失関数の変動を引き起こす可能性もあります。
  3. 実際のトレーニングでは、エポックの定義はバッチ サイズに応じて異なります。トレーニング データ セットに N 個のサンプルがあり、バッチ サイズが B であると仮定すると、1 つのエポックは N/B ラウンドのパラメーター更新を実行する必要があります。各ラウンドで、モデルはランダム サンプルまたはサンプルのミニバッチを使用して勾配を計算し、パラメーターを更新します。
  4. 適切なエポック数を選択することは、ハイパーパラメータの重要な選択です。一般に、エポックの数が少なすぎると、モデルがデータを学習する十分な機会が得られない可能性があり、エポックの数が多すぎると、過学習につながる可能性があります。一般的な方法は、トレーニング セットと検証セットの損失関数のパフォーマンスを観察し、相互検証などの手法を通じて最適なエポック数を選択することです。

4. 両者の関係と違い

バッチ (バッチ):

  • バッチは、各パラメーターの更新で使用されるトレーニング サンプルの小さなサブセットです。具体的には、バッチに含まれるサンプルの数はバッチ サイズによって決まり、バッチ サイズは 32、64、128 などの正の整数になります。
  • 各バッチで、モデルはこれらのサンプルを使用して順伝播を実行し、損失を計算して逆伝播を実行し、計算された勾配に従ってモデル パラメーターを更新します。

エポック (反復):

  • エポックは、トレーニング データセット全体に対する完全なトレーニング反復を表します。1 エポックで、モデルはトレーニング データセット全体のすべてのサンプルを走査し、それらを使用して勾配を計算し、モデル パラメーターを更新します。
  • エポック数によって、トレーニング プロセス全体にかかる完全な反復の回数が決まります。

違い:

  • バッチとエポックは 2 つの異なるトレーニング フェーズです。各エポックでは、パラメータ更新の複数のバッチが実行されます。
  • バッチは、モデル パラメーターを調整するために更新ごとに勾配を計算するために使用されます。これらはトレーニング データのサブセットです。
  • エポックは、モデルを通過するトレーニング データセット全体の完全なパスを記述するために使用されます。これは、トレーニング プロセスの完全な反復を表します。

おすすめ

転載: blog.csdn.net/wzk4869/article/details/132554313