7

おそらく、最小バッチ処理に関するANN101の質問です。グーグルは答えを持っていなかったようだ。ここで検索しても何も得られませんでした。私の推測では、どこかに「このようにしてください」という本があります。そして私はその本を読んでいません。

私はPythonでニューラルネットをコーディングしています(言語が重要ではありません)。フルバッチではなく、ミニバッチアップデートを追加しようとしています。エポックごとに1回ずつ観測を選択する必要がありますか?ミニバッチは、データ値1:10、11:20、21:30などになるため、すべての観測値が使用され、すべて1回使用されます。

または、確率に基づいてトレーニングデータセットからランダムにミニバッチを選択するのは正しいですか?その結果、各観測値は、特定のエポックで1回、複数回、またはまったく使用されない可能性があります。エポックごとに20のミニバッチの場合、各データ要素には、任意のミニバッチに対して5%の確率で選択されます。ミニバッチはランダムに選択され、サイズもランダムになりますが、20個のミニバッチのそれぞれに20個のデータポイントごとに約1個が含まれ、選択の保証はありません。

4

2 に答える 2

7

ミニバッチトレーニングに関するいくつかのヒント:

すべてのエポックの前にサンプルをシャッフルします

その理由は、オンライントレーニングでサンプルをシャッフルする理由と同じです。そうしないと、ネットワークがサンプルをフィードする順序を単に記憶する可能性があります。

すべてのバッチおよびすべてのエポックに固定バッチサイズを使用します

おそらく統計的な理由もありますが、計算に行列乗算の高速実装を使用できるため、実装が簡素化されます。(例:BLAS)

学習率をバッチサイズに適合させる

バッチが大きい場合は、使用する学習率を低くする必要があります。そうしないと、ANNは最適ではない最小値に向かって収束する傾向があります。私は常に学習率を1/sqrt(n)でスケーリングしました。ここで、nはバッチサイズです。これは実験からの単なる経験値であることに注意してください。

于 2012-12-10T23:15:52.780 に答える
2

あなたの最初の推測は正しいです。最初にデータセットをランダム化するだけです。次に、(たとえば)20ミニバッチの場合。使用:1〜20、次に21〜40など。したがって、すべてのデータセットが使用されます。

ベンは、データセットが一度だけ使用されるとは言いません。通常、ネットワークが適切に学習するには、すべてのデータセットに対して複数のエポックを実行する必要があります。

ミニバッチは、主に学習プロセスをスピードアップするために使用されます。

于 2012-12-09T02:34:52.210 に答える