49

私が読んでいる入門ドキュメント ( TOC here ) では、定義せずに「バッチ」という用語 (たとえば here ) を使用しています。

4

1 に答える 1

78

数字認識 (MNIST) を実行したいとし、ネットワークのアーキテクチャ (CNN) を定義したとします。これで、トレーニング データから画像を 1 つずつネットワークにフィードし始め、予測を取得し (このステップまでは推論を行うと呼ばれます)、損失を計算し、勾配を計算し、ネットワークのパラメーターを更新します (つまり、重みバイアス)、次の画像に進みます... モデルをトレーニングするこの方法は、オンライン学習と呼ばれることがあります。

ただし、トレーニングを高速化し、勾配のノイズを減らし、配列操作を効率的に実行できる GPU の能力を活用する必要があります (具体的にはnD-arrays )。したがって、代わりに行うことは、一度に 100 枚の画像をフィードすることです (このサイズの選択はあなた次第であり (つまり、ハイパーパラメーターです)、問題にも依存します)。たとえば、下の図を見てください (著者: Martin Gorner)。

バッチサイズ 100

ここでは、28x28(オンライン トレーニングの場合のように 1 つではなく) 一度に 100 個の images( ) をフィードしているため、バッチ サイズは 100です。多くの場合、これはミニバッチ サイズまたは単にと呼ばれmini-batchます。


また、下の写真: (著者: Martin Gorner)

再びバッチサイズ

これで、行列の乗算はすべて完全にうまく機能し、高度に最適化された配列操作も利用できるため、トレーニング時間が短縮されます。

上の図を観察すると、(GPU) ハードウェアのメモリに収まる限り、100、256、2048、または 10000 (バッチ サイズ) の画像を与えるかどうかはそれほど重要ではありません。それだけ多くの予測が得られます。

ただし、このバッチ サイズは、トレーニング時間、達成するエラー、勾配シフトなどに影響することに注意してください。どのバッチ サイズが最適かについての一般的な経験則はありません。いくつかのサイズを試して、自分に最適なものを選んでください。ただし、データがオーバーフィットするため、大きなバッチ サイズを使用しないようにしてください。人々は通常、 のミニバッチ サイズを使用し32, 64, 128, 256, 512, 1024, 2048ます。


おまけ: このバッチサイズでどれだけクレイジーにできるかをよく理解するには、この論文を読んでください: CNN を並列化するための奇妙なトリック

于 2016-12-16T03:10:48.570 に答える