2012-12-04 4 views
5

おそらく最小バッチ処理に関するANN101の質問です。 Googleはその答えを持っていないようだ。ここでの検索でも何も得られなかった。私の推測では、どこかに「この方法でやって!私はその本を読まなかっただけです。ニューラルネット - 各ミニバッチのデータの選択

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

確率に基づいてトレーニングデータセットからランダムにミニバッチを選択するのは正しいですか?その結果、各観測は、任意のエポックで1回、複数回、または全く使用されないことがあります。 1エポック当たり20個のミニバッチについて、各データエレメントは、任意のミニバッチに対して選択される5%の確率が与えられる。ミニバッチは無作為に選択され、サイズはランダムですが、20個のデータポイントのおよそ1個が20個のミニバッチのそれぞれに含まれ、選択の保証はありません。

答えて

2

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

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

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

7

いくつかのヒント:そうでなければネットワークは、単に暗記するかもしれません:

すべてのエポック

は、理由はあなたがオンライントレーニングのサンプルをシャッフルする理由と同じである前に、あなたのサンプルをシャッフルあなたがサンプルをフィードする順序。

は、統計的な理由は、おそらくもあり、すべてのバッチのために、すべてのエポック

固定バッチサイズを使用しますが、それはあなたの計算のための行列乗算の高速な実装を使用することができますように、実装を簡素化します。 (例えば、BLAS)

あなたは小さな学習レートを使用する必要があります大規模バッチのバッチサイズ

にあなたの学習率を適応させる、そうでない場合はANNは、次善の最小値に向かって収束する傾向があります。私は常に1/sqrt(n)で学習率を調整しました。ここでnはバッチサイズです。これは実験による経験的価値に過ぎないことに注意してください。

+0

各エポック前にサンプルをシャッフルするのに良いヒント。 – user791770