確率的勾配降下の場合、バッチサイズはどれくらいの大きさにすべきですか?


49

回答:


72

あなたが話している「サンプルサイズ」と呼ばれるバッチサイズ、。バッチサイズパラメーターは、ミニバッチの確率的勾配降下(SGD)でニューラルネットワークをトレーニングするときに調整するハイパーパラメーターの1つに過ぎず、データに依存します。ハイパーパラメーター検索の最も基本的な方法は、学習率とバッチサイズをグリッド検索して、ネットワークを収束させるペアを見つけることです。B

バッチサイズを理解するには、バッチ勾配降下法、オンラインSGD、およびミニバッチSGDの関係を確認することが重要です。ミニバッチSGDの重み更新ステップの一般式は、3つのタイプすべての一般化です。[ 2 ]

θt+1θtϵ(t)1Bb=0B1L(θ,mb)θ
  1. バッチ勾配降下、B=|x|
  2. オンライン確率勾配降下法:B=1
  3. ミニバッチ確率勾配降下法:B>1だがB<|x|

1の場合、損失関数はもはやランダム変数ではなく、確率的近似ではないことに注意してください。

SGDは、ランダムに選択されたトレーニングセットのサブセットを見た後に重みを更新するため、通常の「バッチ」勾配降下よりも速く収束します。ましょう、当社のトレーニングセットすることとしましょう。バッチサイズは、の基数にすぎません:。xmxBmB=|m|

バッチ勾配降下法は、データセット全体の勾配を使用して重みを更新します。一方、SGDは、ミニバッチ勾配の平均を使用して重みを更新します。(合計ではなく平均を使用すると、データセットが非常に大きい場合にアルゴリズムが大きすぎるステップを実行することを防ぎます。そうでない場合は、データセットのサイズに基づいて学習率を調整する必要があります。) SGDで使用される勾配の確率的近似は、バッチ勾配降下で使用される決定論的勾配に等しくなります。。θxmE[LSGD(θ,m)]=L(θ,x)

サンプルを取得して重みを更新するたびに、ミニバッチと呼ばれます。データセット全体を実行するたびに、エポックと呼ばれます。

いくつかのデータベクトル、ニューラルネットワークをパラメータ化する初期重みベクトル、および損失関数最小化しようとしている。我々が持っている場合は訓練例とのバッチサイズ、我々はCミニバッチにそれらの訓練例を分割することができます。x:RDθ0:RSL(θ,x):RSRDRSTB

C=T/B

簡単にするために、TはBで均等に割り切れると仮定できます。ただし、そうでない場合、そうでない場合が多いため、各ミニバッチにそのサイズの関数として適切な重みを割り当てる必要があります。

エポックのSGDの反復アルゴリズムを以下に示します。M

t0while t<Mθt+1θtϵ(t)1Bb=0B1L(θ,mb)θtt+1

注:実生活では、これらのトレーニングサンプルデータをメモリから読み取ります。また、キャッシュのプリフェッチやコンピュータによるその他のメモリトリックにより、メモリアクセスが合体した場合、つまりメモリを読み取った場合、アルゴリズムは高速に実行されます順番に、ランダムに飛び回らないでください。そのため、ほとんどのSGD実装はデータセットをシャッフルしてから、サンプルが読み取られる順にメモリにロードします。

上記のバニラ(勢いなし)SGDの主なパラメーターは次のとおりです。

  1. 学習率:ϵ

イプシロンをエポックカウントから学習率までの関数として考えるのが好きです。この機能は、学習率スケジュールと呼ばます。

ϵ(t):NR

学習率を固定したい場合は、イプシロンを定数関数として定義してください。

  1. バッチサイズ

バッチサイズは、ウェイトを更新する前に表示するサンプルの数を決定します。低いほど、トレーニング信号のノイズが大きくなり、高いほど、各ステップの勾配の計算に時間がかかります。

引用と参考文献:

  1. 勾配ベースの学習の概要
  2. ディープアーキテクチャの勾配ベースのトレーニングに関する実践的な推奨事項
  3. 確率的最適化のための効率的なミニバッチトレーニング

1
For simplicity we can assume that D is evenly divisible by BTをBで均等に分割できるという意味ではありませんか?
アントワーヌ

4
そして、実際にOPの質問に答えるために、あなたが追加することができますB is typically chosen between 1 and a few hundreds, e.g. B = 32 is a good default value, with values above 10 taking advantage of the speed-up of matrix-matrix products over matrix-vector products.(Bengioの2012紙から)
アントワーヌ

@sabalabaいい答えです。しかし、「MエポックのSGDの反復アルゴリズムを以下に示します」という方程式では、各ミニバッチを実行した後に重みを更新するのではありません。言い換えれば、エポック、つまりt <M
Kaushik Acharya

2
統計では、サンプルは複数の観測で構成されます。そのため、統計量によってサンプルサイズが正しく解釈されます。コンピューターサイエンス(特に機械学習)では、サンプルは単一の観測であり、バッチはサンプルのコレクションです。少しわかりにくいかもしれません。統計学者へのサンプルは、データサイエンティストへのバッチです;)出典:en.wikipedia.org/wiki/Sample_size_determination
オレグメルニコフ

「バッチサイズパラメーターは、チューニングするハイパーパラメーターの1つにすぎません。」複数のチューニングモデルを実行しても、そもそもSGDの目的全体が損なわれることはないでしょうか?OPはサンプルサイズの経験則を求めていると思います。データにレコードと個の変数が含まれる場合、勾配を適切に計算するのに適したサンプルサイズはどれくらいですか?nm
ロバートF
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.