回答:
ニューラルネットワークの用語では:
例:1000のトレーニング例があり、バッチサイズが500の場合、1エポックを完了するには2回の反復が必要です。
参考:ニューラルネットワークをトレーニングするためのバッチサイズと反復回数のトレードオフ
「バッチ」という用語はあいまいです。一部の人々はこれを使用してトレーニングセット全体を指定し、一部の人々は1つのフォワード/バックワードパスのトレーニング例の数を参照するために使用します(この回答で行ったように)。このあいまいさを回避し、バッチが1つの順方向/逆方向パスのトレーニング例の数に対応していることを明確にするために、用語mini-batchを使用できます。
エポックとイテレーションは異なることを説明します。
エポックは、アルゴリズムが見た回数を説明し、全体のデータセットを。したがって、アルゴリズムがデータセット内のすべてのサンプルを確認するたびに、エポックが完了しました。
反復は回数に説明するバッチアルゴリズムを通過したデータのを。ニューラルネットワークの場合、これはフォワードパスとバックワードパスを意味します。したがって、NNを介してデータのバッチを渡すたびに、反復を完了しました。
例はそれをより明確にするかもしれません。
10個の例(またはサンプル)のデータセットがあるとします。バッチサイズが2で、アルゴリズムを3エポックで実行するように指定したとします。
したがって、各エポックには5つのバッチがあります(10/2 = 5)。各バッチはアルゴリズムを通過するため、エポックごとに5回の反復があります。3つのエポックを指定したので、トレーニングには合計15回の反復(5 * 3 = 15)があります。
これらの違いを理解するには、勾配降下アルゴリズムとそのバリアントを理解する必要があります。
実際の回答を始める前に、背景を説明します。
バッチが完了したデータセットです。そのサイズは、使用可能なデータセット内のトレーニング例の総数です。
ミニバッチサイズは、学習アルゴリズムが1つのパス(前方および後方)で処理する例の数です。
ミニバッチが与えられたのデータセットのごく一部であるミニバッチサイズ。
反復は、アルゴリズムが見たデータのバッチの数(または単に、アルゴリズムがデータセットに対して行ったパスの数)です。
エポックは、学習アルゴリズムが完全なデータセットを見る回数です。データセットはミニバッチで処理することもできるため、これは反復数と同じではない可能性があります。基本的に、1回のパスでデータセットの一部のみを処理できます。このような場合、反復の数はエポックの数と等しくありません。
バッチ勾配降下の場合、バッチ全体が各トレーニングパスで処理されます。したがって、勾配降下オプティマイザーは、ミニバッチ勾配降下よりも収束がスムーズになりますが、時間がかかります。バッチ勾配降下は、存在する場合に最適を見つけることが保証されています。
確率的勾配降下法は、ミニバッチサイズが1であるミニバッチ勾配降下法の特殊なケースです。
通常は、ネットワークが学習できるようにテストセットを小さなバッチに分割し、グラデーション降下を適用しながら、段階的にトレーニングをレイヤー数を段階的に進めていきます。これらの小さなステップはすべて反復と呼ぶことができます。
エポック一度全体のネットワークを介さ全体のトレーニングセットに対応しています。これを制限すること、例えば、過剰適合と戦うことは有用です。
エポックには、いくつかの反復が含まれています。これが実際にこの「エポック」です。ニューラルネットワークをトレーニングするために、「エポック」をデータセットの反復回数として定義します。
反復は、バッチSGDの単一のバッチforward + backpropに相当すると思います。Epochは、データセット全体を一度通過します(他の誰かが述べたように)。
私はニューラルネットワークの用語の文脈で推測します:
反復(別名ステップ)を定義するには、最初にバッチサイズについて知る必要があります。
バッチサイズ:非効率的で大量のメモリが必要になるため、トレーニングインスタンス全体を1回の転送パスで処理したくない場合があります。したがって、一般的に行われていることは、トレーニングインスタンスをサブセット(つまり、バッチ)に分割し、選択したサブセット(つまり、バッチ)に対して1回のパスを実行し、バックプロパゲーションによってネットワークを最適化することです。サブセット(つまり、バッチ)内のトレーニングインスタンスの数は、batch_sizeと呼ばれます。
反復:(別名トレーニングステップ)1つのエポックを完了するためには、ネットワークが1つのパスですべてのトレーニングインスタンスを通過する必要があることを知っています。ちょっと待って!トレーニングインスタンスをバッチに分割する場合、つまり、1つのフォワードパスで処理できるのは1つのバッチ(トレーニングインスタンスのサブセット)だけなので、他のバッチについてはどうでしょうか。ここで、イテレーションという用語が役立ちます。
たとえば、1000のトレーニングインスタンスがあり、サイズを10 にしてバッチ処理を実行する場合。1つのエポックを完了するには、10000/10 = 1000 回の反復を実行する必要があります。
これがあなたの質問に答えられることを願っています!
エポックは、トレーニング用のサンプルのサブセットの反復です。たとえば、ニュートラルネットワークの勾配降下アルゴリズムです。適切なリファレンスは次のとおりです:http : //neuralnetworksanddeeplearning.com/chap1.html
ページにはエポックを使用する勾配降下アルゴリズムのコードがあることに注意してください
def SGD(self, training_data, epochs, mini_batch_size, eta,
test_data=None):
"""Train the neural network using mini-batch stochastic
gradient descent. The "training_data" is a list of tuples
"(x, y)" representing the training inputs and the desired
outputs. The other non-optional parameters are
self-explanatory. If "test_data" is provided then the
network will be evaluated against the test data after each
epoch, and partial progress printed out. This is useful for
tracking progress, but slows things down substantially."""
if test_data: n_test = len(test_data)
n = len(training_data)
for j in xrange(epochs):
random.shuffle(training_data)
mini_batches = [
training_data[k:k+mini_batch_size]
for k in xrange(0, n, mini_batch_size)]
for mini_batch in mini_batches:
self.update_mini_batch(mini_batch, eta)
if test_data:
print "Epoch {0}: {1} / {2}".format(
j, self.evaluate(test_data), n_test)
else:
print "Epoch {0} complete".format(j)
コードを見てください。各エポックについて、勾配降下アルゴリズムの入力のサブセットをランダムに生成します。エポックが効果的である理由もこのページで説明されています。ぜひご覧ください。
各例が1回見られるように、データセット全体に対する完全なトレーニングパス。したがって、エポックはN / バッチサイズのトレーニングの反復を表します。ここで、Nはサンプルの総数です。
トレーニング中のモデルの重みの単一の更新。反復は、単一のデータバッチの損失に関するパラメーターの勾配の計算で構成されます。
ボーナスとして:
モデルトレーニングの 1 回の反復(つまり、1回の勾配 更新)で使用される例のセット。
バッチサイズも参照してください。
ソース:https : //developers.google.com/machine-learning/glossary/
1.エポックは、ニューラルネットワークが彼のすべてのデータを見た1つの完全なサイクルです。
2.モデルをトレーニングするために100,000の画像があると言うかもしれませんが、メモリ領域はすべての画像を一度に処理するには十分でない場合があるため、バッチと呼ばれるデータの小さなチャンクでモデルのトレーニングを分割します。たとえば、バッチサイズは100です
。3.複数のバッチを使用してすべての画像をカバーする必要があります。したがって、100,000枚の画像すべてをカバーするには1000回の反復が必要になります。(100バッチサイズ* 1000反復)
4.ニューラルネットワークがデータ全体を確認すると、1エポック(ポイント1)と呼ばれます。モデルをトレーニングするには、複数のエポックが必要になる場合があります。(10エポックとしましょう)。