バッチサイズが小さい場合、SGDの降下方向は「真の」降下方向の非常にノイズの多い推定になると思います(つまり、トレーニングセット全体で評価した場合)。バッチサイズが小さい場合、非常に騒々しい方向に運動量が蓄積されるため、運動量の増加がどれほど役立つかわかりません。しかし、私は間違っている可能性があります。おそらく、あなたの最適化問題は、これが機能するのに十分な位置にあります。
「最先端の」結果を狙っていない場合、自然な画像データの選択肢の1つは、画像のサイズを変更することです。私は実際、エリートベンチマークパフォーマンスを追跡するモジュロ、自然画像には多くのスケール不変のプロパティがあり、それらのセマンティック機能の多くは、妥当なスケーリング変換の下でかなり堅牢であると思います。これにより、GPUメモリの一部が軽減され、バッチサイズを増やすことができます。SGD降下方向は、降下方向のより良い推定になります。
負の対数尤度のような分離可能な損失関数を扱っている場合、大きなバッチの勾配は、その構成要素であるサブバッチの勾配の合計/平均に過ぎないという事実を利用できます。たとえば、バッチサイズが場合、通常どおりバッチを反復して各バッチの勾配を計算することにより、スーパーバッチサイズ勾配を計算できますが、重みを更新する代わりに、各勾配を実行中の合計または平均にキャッシュします。適切に平均化すると、サイズのスーパーバッチの正確な勾配が計算されます。次に、各番目のバッチが処理された後に、重みの更新を実行します。BB KB KK
上記のように計算をシリアル化することにより、バッチ勾配を正確に計算します。計算やメモリのオーバーヘッドが最小限で済みます。ミニバッチイテレータを変更して、スーパーバッチのシリアル化と勾配キャッシュを含めるだけで済みます。B K