ディープラーニングの学習は「少しずつ何度も繰り返す」ことで進みますが、その繰り返しの最小単位がイテレーションです。エポックとの違いは試験でも定番の論点なので、この記事で「1回のイテレーションで何が起きるのか」を土台からしっかり押さえましょう。
📖 ひと言でいうと
イテレーションとは、訓練データを小分けにしたミニバッチ1つ分を使って、モデルのパラメータ(重みやバイアス)を1回更新するステップのことです。学習全体を「本を読む」ことに例えるなら、1ページ読んで理解を1回アップデートするのがイテレーション、本を最初から最後まで1周読み切るのがエポックにあたります。
🖼 1枚でわかるイテレーション
📘 公式テキストの説明
トレーニングデータを複数の小さなデータセット(ミニバッチ)に分け、各ミニバッチごとにモデルを学習させるステップのこと。通常、ディープラーニングは膨大なデータを一度に処理するのが難しいため、データを小分けにして順次モデルに学習させる方法が取られる。この1回のミニバッチを使って学習するごとに、モデル内でパラメータの更新が行われ、これが1イテレーションとなる。具体的には、たとえば1000件のデータを100件ずつ10バッチに分けた場合、各バッチの処理が1イテレーションとなり、10回のイテレーションが1エポック(データセット全体の学習サイクル)に相当する。このイテレーション回数はバッチサイズに依存し、設定によって学習効率や精度に影響するため、最適な値を見つけることが重要である。
ポイントは「1イテレーション=ミニバッチ1つ分の学習=パラメータ更新1回」という対応関係です。ディープラーニングでは数万〜数億件のデータを一度にメモリへ載せて計算することが難しいため、データを小さな束(ミニバッチ)に分けて順番に処理します。その束を1つ処理し終えるたびにモデルが少し賢くなる、その「1歩」を数える単位がイテレーションです。
🔍 しっかり理解する
なぜデータを小分けにするのか
全データを一度に使って勾配を計算する方法(バッチ学習)は、データ量が膨大になると計算資源的に現実的ではありません。逆に1件ずつ更新すると計算のムダが多く、更新方向もぶれやすくなります。そこで実務では、数十〜数百件程度のミニバッチ単位で勾配を計算して更新する「ミニバッチ学習」が主流です。イテレーションという言葉は、このミニバッチ学習の更新ステップを数えるために使われます。
イテレーション回数はバッチサイズで決まる
1エポックあたりのイテレーション回数は「データ件数 ÷ バッチサイズ」で決まります。公式テキストの例のとおり、1000件のデータをバッチサイズ100で学習すれば、1エポックは10イテレーションです。同じ1000件でもバッチサイズを50にすれば20イテレーションになり、更新の回数は増えますが、1回あたりに見るデータは少なくなります。
学習効率・精度への影響
なお、多くのフレームワークでは各エポックの開始時にデータの並び順をシャッフルしてからミニバッチに分け直します。毎周同じ順番・同じ組み合わせで学習すると、並び順の癖をモデルが拾ってしまうことがあるためです。つまり「何件ずつ処理するか」は固定でも、各イテレーションで見るデータの中身はエポックごとに変わるのが一般的です。また、学習ログや論文ではイテレーションのことを「ステップ」と呼ぶことも多く、「10万ステップ学習した」といった表現は10万イテレーション分のパラメータ更新を意味します。
バッチサイズ(=イテレーション回数)の設定は、学習のスピードと安定性のトレードオフに直結します。バッチサイズが小さいほど更新回数が増えて学習は細かく進みますが、1回ごとの勾配はノイズを含みやすくなります。大きくすると勾配は安定する一方、1回の計算が重くなり、メモリも多く必要です。公式テキストが「最適な値を見つけることが重要」と述べているのは、この釣り合いを取る調整が精度に影響するためです。
💡 具体例で考える
手書き数字認識でよく使われるMNISTデータセットは訓練データが6万件あります。これをバッチサイズ100で学習すると、1エポックは60000 ÷ 100 = 600イテレーションです。学習ログに「iteration 600」と表示された時点で、モデルはちょうど全データを1周見終わったことになります。
もし同じMNISTをバッチサイズ500に変えると、1エポックは120イテレーションに減ります。「10エポック学習した」という条件が同じでも、バッチサイズ100なら6000回、500なら1200回パラメータが更新されており、更新回数はまったく違う点に注意してください。
⚠️ よくある誤解・紛らわしい用語
- 「イテレーション=エポック」ではない: イテレーションはミニバッチ1個分の更新1回、エポックは全データ1周です。1エポックの中に複数のイテレーションが含まれる、という包含関係で覚えましょう。
- 「1イテレーションでデータ1件を処理する」は不正確: 処理する単位はミニバッチです。バッチサイズが1のときに限り、1イテレーション=1件になります。
- バッチサイズと混同しない: バッチサイズは「1回の更新に使うデータ件数」という設定値、イテレーションは「更新を数える回数」です。両者は「データ件数 ÷ バッチサイズ = 1エポックのイテレーション数」という式でつながります。
📝 試験でのポイント
- 「1000件をバッチサイズ100で学習したとき、1エポックは何イテレーションか」のような計算問題が想定されます。データ件数 ÷ バッチサイズで即答できるようにしましょう。
- イテレーション・エポック・バッチサイズの定義を入れ替えた選択肢が並ぶ形式が典型です。「更新1回/全データ1周/1回に使う件数」の対応を崩さないことが重要です。
- 「パラメータ更新はいつ行われるか」を問う形で、ミニバッチごと(=イテレーションごと)に更新される点が問われる可能性があります。
📚 まとめ
イテレーションは、ミニバッチ1つを使ってパラメータを1回更新する学習の最小ステップです。1エポックあたりのイテレーション数は「データ件数 ÷ バッチサイズ」で決まります。エポック(全データ1周)との違い、バッチサイズ(1回に使う件数)との役割分担を整理しておけば、この分野の定義問題・計算問題には安定して対応できます。
