1行定義
イテレーションとは、機械学習の訓練で、重みを1回更新することを1と数える単位のことです。
くわしく
イテレーションは、ニューラルネットワークの学習で、重みを1回更新することを1と数える単位です。英語のiterationは「反復」という意味で、ステップと呼ぶこともあります。ミニバッチ学習では、1回のイテレーションで、ミニバッチ1つ分のデータから勾配を求め、重みを1回更新します。
エポックとの違い
エポックは、訓練データ全体をひと通り使い切った回数です。イテレーションは、重みを更新した回数です。ミニバッチ学習では、次の関係があります。
1エポックのイテレーション数 = 訓練データ数 ÷ バッチサイズ総イテレーション数 = 1エポックのイテレーション数 × エポック数
たとえば8,000件のデータをバッチサイズ40で学習すると、1エポックは8,000 ÷ 40 = 200イテレーションです。これを15エポック続けると、総イテレーション数は200 × 15 = 3,000回です。
バッチサイズを大きくすると、1エポックあたりのイテレーション数は減ります。全データで1回更新するバッチ学習では、1エポックが1イテレーションです。1件ずつ更新するオンライン学習では、1エポックのイテレーション数がデータ数と同じになります。
なぜ区別するのか
学習の設定や記録では、エポック数で書く場合と、イテレーション数で書く場合があります。学習率を下げる時期や、検証データで性能を測る間隔も、どちらかの単位で指定します。単位を取り違えると、学習の量を大きく見誤ります。たとえばバッチサイズを変えると、同じエポック数でも更新回数が変わります。
別の分野のイテレーション
アジャイル開発では、数週間程度で区切った短い開発の周期をイテレーションと呼びます。同じ言葉でも意味が異なるので、文脈で区別します。
覚え方
「イテレーションは更新回数、エポックは周回数」と覚えます。
G検定での出題
出題のされ方
エポックとの違い、データ数とバッチサイズから1エポックのイテレーション数や総更新回数を求める計算、バッチ学習やオンライン学習での回数の違いが問われます。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| イテレーションこのページの用語 | 機械学習の訓練で、重みを1回更新することを1と数える単位 |
| エポック | 機械学習の訓練で、訓練データ全体をひと通り1回使って学習することを1と数える単位 |
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
訓練データ6,000件をバッチサイズ200でミニバッチ学習すると、1エポックは30イテレーションになる。
答えを見る
答え ◯ 正しい
1エポックのイテレーション数は、データ数÷バッチサイズです。6,000÷200=30回になります。
-
イテレーションとは、訓練データ全体をひと通り使い切る学習の単位のことである。
答えを見る
答え × 誤り
それはエポックです。イテレーションは重みの更新1回分の単位で、ミニバッチ学習では1エポックが複数のイテレーションからなります。
-
ほかの条件を変えずにバッチサイズを2倍にすると、1エポックあたりのイテレーション数はおよそ半分になる。
答えを見る
答え ◯ 正しい
1回の更新で使うデータが2倍になるので、データ全体を使い切るまでの更新回数はおよそ半分になります。割り切れない端数の扱いは実装によります。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目16 最適化手法)
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press (2016) (8.1.3 Batch and Minibatch Algorithms)
- Sebastian Ruder, An overview of gradient descent optimization algorithms (2016)