ニューラルネットワークのトレーニングに最適なバッチサイズについて
バッチサイズがテスト精度に与える影響についての基礎的研究
Created on March 25|Last edited on February 16
Comment
概要
最適なバッチサイズに関する質問の答えは、ほとんどの場合「状況によって異なる」という内容でしょう。今回の目標は、さまざまなバッチサイズが精度やトレーニング時間、計算リソースにどのように影響するかを調べることです。まず、それらの違いを説明する仮説をいくつか立てて調べることにします。
調べてみましょう
まず、バッチサイズがテスト精度とトレーニング時間に与える影響を確認する必要があります。
そのためには、アブレーション研究が必要です。画像分類タスクを使用して、バッチサイズが変わると精度がどう変化するかをテストします。このテストでは以下に焦点を当てます:
- 過剰パラメータネットワークは使用しません。これにより、過剰適合を回避できます
- エポック数は25にして、さまざまなバッチサイズでモデルをトレーニングします。
Google Colabでアブレーション研究を試す→
Run set
9
- まず、検証メトリックから、小さなバッチサイズでトレーニングされたモデルは、検証セットで適切に一般化されます。
- バッチサイズが32の場合、最良の結果が得られ、サイズが2048では最悪の結果をもたらしました。私たちの研究では、バッチサイズを8から2048の範囲にして、各サイズを前回のサイズの2倍にして、モデルをトレーニングしています。
- 更に、私たちの平行座標プロットによって重要なトレードオフ(妥協点)が非常に明白になります。バッチサイズが大きいほど、トレーニングにかかる時間は短くなる一方、精度は低くなります。
Run set
9
- さらに掘り下げてみると、バッチサイズが小さくなるにつれて、テストエラー率が指数関数的に減少することがはっきりとわかります。とはいえ、バッチサイズ32の場合、エラー率が最も低いことに注意してください。
- バッチサイズが小さくなると、トレーニングにかかる時間が指数関数的に増加します。これは、モデルが過学習(オーバーフィッティング)し始めたときに早期停止を使用せず、このトレーニングを25エポック行ったため、トレーニング時間がこのように増加すると予想します。
バッチサイズが大きくなり過ぎると、なぜ一般化しにくくなるか
- この論文では、大きなバッチでは、トレーニングやテスト関数のシャープミニマイザーに収束する傾向があり、シャープな最小値が一般化の低下につながると主張しています。一方、小さいバッチを使うと、一貫してフラットミニマイザーに収束します。
- 勾配降下ベースの最適化は、コスト関数の線形近似を行います。ただし、コスト関数が非常に非線形(高度に湾曲)である場合、近似はあまり良くないため、ここでは小さいバッチサイズが安全です。
- ミニバッチにm個の例を配置する場合、O(m)計算を実行し、O(m)メモリを使用する必要がありますが、勾配の不確実性量をO(sqrt(m))だけ減らします。言い換えれば、ミニバッチに多くの例を配置すると収穫逓減(しゅうかくていげん)の法則が存在するのです。
- ��レーニングセット全体を使用しても、実際には真の勾配は得られません。トレーニングセット全体を使用することは、非常に大きなミニバッチを使用することに過ぎません。
- 小さいバッチサイズの勾配は、大きいバッチサイズに比べて大きく変動します。この変動はノイズと見なすことができますが、非凸損失ランドスケープ(多くの場合)の場合、ノイズはローカルの最小値からの飛び出しを助けることに役立ちます。したがって、より大きなバッチは最適なソリューションの検索ステップをより少なく、そしてより粗くします。そのため、構築によって最適なソリューションに収束する可能性は低くなります。
Weights & Biases
Weights&Biasesは、あなたの機械学習実験の記録や追跡をより簡単にします。私たちのツールによって、ハイパーパラメータや実行の出力メトリックをログに記録し、それを可視化できます。そして結果や所見を迅速に人々と共有することができます。
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.