2016-01-03 10 views
5

イリーナ・サツケバーのブログ記事A brief overview of Deep Learningでは、深いニューラルネットワークを効率的に訓練するために適切なミニサイズを選択することが重要であることを説明しています。彼はアドバイス「あなたのマシンで効率的に動作するより小さなミニバッチを使用する」を提供します。以下の完全な引用符を参照してください。ディープ学習のミニサイズの選択

他のよく知られているディープラーニングの研究者からも同様のことがわかりましたが、正しいミニサイズのサイズを見つける方法はまだわかりません。より大きなミニバッチがより大きな学習率を可能にするのを見ると、特定のミニバッチサイズがトレーニングスピードに関してより良い性能をもたらすかどうかを判断するためには多くの実験が必要なようである。

私は4GBのRAMを搭載したGPUを使用しており、ライブラリCaffeとKerasを使用しています。このケースでは、各観察に一定のメモリフットプリントがある場合、良いミニバッチサイズを選択するための実用的なヒューリスティックは何ですか?M

ミニバッチ:ミニバッチを使用してください。 あなたが一度に1つのトレーニングケースを処理する場合、現代のコンピュータは効率的ではありません。 を実行すると、128例のミニバッチでネットワークを訓練する方がはるかに効率的です( )。スループットが大幅に向上します。サイズが1のミニバッチを使用するのは実際には といいでしょう。その結果、パフォーマンスが向上し、オーバーフィットが低くなる可能性があります( )。 を実行する利点は、 ミニバッチによって提供される膨大な計算上の利益を上回ります。しかし、非常に大きなミニバッチは使用しないでください。 はあまりうまく機能しません。つまり、実際には、 は、あなたのマシンで効率的に実行される小さなミニバッチを使用します。

答えて

6

私たちがネットワークを訓練しているとき、フォワードパスを計算するとき、すべての中間アクティベーション出力は、バックワードパスのために保持する必要があります。あなたは、他のメモリ制約(GPUへの重みの格納など)に加えて、フォワードパスに関連するすべてのアクティベーション出力を保存するのにかかるメモリの量を計算するだけで済みます。ネットがかなり深い場合は、メモリが不足しているため、バッチサイズを小さくすることをお勧めします。

ミニバッファサイズを選択すると、メモリの制約とパフォーマンス/精度が混在しています(通常、相互検証を使用して評価されます)。

私の個人的な推測/計算では、私のフォワード/バックワードパスがどれだけ使い果たしていくつかの値を試してみます。例えば、私がフィットできる最大のものが128であれば、私は32,64,96などを使って妥当性を検証し、より良いパフォーマンスを得ることができるかどうかを確認することができます。これは通常、私のGPUメモリをプッシュしようとしているより深いネット用です(私は4 GBのカードしか持っていませんが、モンスターNVIDIAカードにアクセスできない)。

私は、ネットワークアーキテクチャ、貿易の最適化技術/トリック、データ前処理に重点を置く傾向があると思います。

関連する問題