1行定義
エポックとは、機械学習の訓練で、訓練データ全体をひと通り1回使って学習することを1と数える単位のことです。
くわしく
エポックは、学習がどこまで進んだかを数える単位です。訓練データのすべてを1回ずつ使い切ると「1エポック」と数えます。「30エポック学習した」は、訓練データ全体を30周したという意味です。
イテレーションとの違い
ニューラルネットワークの学習では、データをいくつかずつまとめて勾配を計算し、重みを更新します。重みを1回更新する単位をイテレーションと呼びます。ミニバッチ学習では、1エポックあたりのイテレーション数は次の式で決まります。
- 1エポックのイテレーション数 = 訓練データ数 ÷ バッチサイズ
1万件のデータをバッチサイズ100で学習すると、1エポックは100イテレーションです。バッチサイズを大きくすると、1エポックあたりの更新回数は減ります。割り切れない場合の端数の扱いは、実装によって異なります。
学習方法による違いも押さえておきます。データ全体で1回だけ勾配を計算するバッチ学習では、1エポックの更新は1回です。1件ずつ更新するオンライン学習では、1エポックでデータ数と同じ回数だけ更新します。
なぜ何周もするのか
勾配降下法は、1回の更新で重みを少しずつしか動かしません。1周だけでは誤差が十分に下がらないため、同じデータを何周も使います。エポックごとにデータの順番を並べ替え(シャッフルし)、ミニバッチの組み合わせを変えることもよく行われます。
エポック数の決め方
エポック数は、設計者が決めるハイパーパラメータです。少なすぎると学習が足りません。多すぎると、訓練データに合わせすぎる過学習が起きます。そこで、エポックごとに検証データで誤差を測り、悪化し始めたところで学習を止める早期終了がよく使われます。
覚え方
「エポックは周回数、イテレーションは更新回数」と覚えます。
G検定での出題
出題のされ方
イテレーション(重みの更新回数)との違い、データ数とバッチサイズから1エポックあたりの更新回数を求める計算、エポック数を増やしすぎたときの過学習と早期終了との関係が問われます。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| エポックこのページの用語 | 機械学習の訓練で、訓練データ全体をひと通り1回使って学習することを1と数える単位 |
| イテレーション | 機械学習の訓練で、重みを1回更新することを1と数える単位 |
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
訓練データ5,000件を、バッチサイズ50のミニバッチ学習で10エポック学習すると、重みは合計1,000回更新される。
答えを見る
答え ◯ 正しい
1エポックの更新回数は、データ数÷バッチサイズで100回です。10エポックなら100×10で1,000回になります。
-
訓練データ全体で1回だけ勾配を計算するバッチ学習では、1エポックで、訓練データの件数と同じ回数だけ重みが更新される。
答えを見る
答え × 誤り
バッチ学習では、全データで勾配を1回計算して1回更新するので、1エポックの更新は1回です。データの件数と同じ回数だけ更新するのは、1件ずつ更新するオンライン学習です。
-
エポック数は多いほど汎化性能が高くなるため、計算資源が許す限り大きく設定するのがよい。
答えを見る
答え × 誤り
エポックを重ねると、訓練誤差は下がり続けても、検証誤差はある時点から上がることがあります。これが過学習です。検証誤差が悪化し始めたところで止める早期終了がよく使われます。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目16 最適化手法)
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press (2016) (8.1.3 Batch and Minibatch Algorithms)
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press (2016) (7.8 Early Stopping)