1. 定義と概要
エポック(epoch)とは、機械学習モデルの学習において、訓練データ(モデルにパターンを学習させるために使うデータの集合)の全体を1回すべて使い切って学習を行うことを1と数える単位です。たとえば1,000件の訓練データをすべて1回使えば1エポック、同じデータセットを10回繰り返して学習すれば10エポックになります。
エポックを重ねる回数であるエポック数は、学習前に人があらかじめ決めるハイパーパラメータ(学習率やエポック数など、モデルの学習前に人が設定する調整値)の一つに位置づけられます。学習率などほかのハイパーパラメータと同じく、モデルやデータセットの性質に応じて適切な値を探る対象になります。
ニューラルネットワーク(人間の脳の神経回路を模した機械学習モデルの構造)の学習は、訓練データを使ってパラメータ(学習によって調整される、モデル内部の重みの値)を少しずつ更新する反復処理として行われます。この1回分のパラメータ更新をイテレーション(パラメータを1回更新する処理の単位)と呼び、イテレーションを積み重ねて訓練データ全体を一巡させた区切りがエポックにあたります。
エポック数をどれだけに設定するかは、モデルの学習が不十分な未学習(アンダーフィッティング。学習が足りずデータの特徴を十分につかめていない状態)と、訓練データに適合しすぎる過学習(オーバーフィッティング。訓練データを学習しすぎて未知のデータへの対応力が落ちてしまう状態)との間でバランスを取る調整項目です。データ量やモデルの複雑さによって適切なエポック数は変わるため、固定値で決め打ちするのではなく学習の途中経過を見ながら調整するのが一般的です。
2. 試験対策ポイント
エポック数が少なすぎると訓練データの特徴を十分に学習しきれない未学習に陥り、多すぎると訓練データに過剰適合する過学習に陥るという関係にあります。過不足の両側が論点です。
あわせて、エポック・イテレーション・バッチサイズの関係式も試験対策で欠かせない知識です。この3つはよく似た文脈で登場しますが、数えている対象がそれぞれ違うので、次のように対応づけて覚えておくと混同しにくくなります。
| 用語 | 数える対象 |
|---|---|
| バッチサイズ | 1回のパラメータ更新に使うデータの件数 |
| イテレーション | 重み(パラメータ)が更新された回数 |
| エポック | 訓練データ全体を1巡させた回数 |
3つはエポック数=(イテレーション数×バッチサイズ)÷訓練データ数という関係式で結ばれています。数える対象がこのように違うため、同じ訓練データ数でもバッチサイズの決め方によってイテレーション数は変わり、その結果として1エポックに到達するまでの更新回数も変わります。
具体例として、訓練データ2,000件をバッチサイズ500件のミニバッチ学習(訓練データを小分けにして少しずつ使う学習方法)で処理する場合、2,000件÷500件=4回のイテレーションを繰り返すと1エポックになります。全訓練データを一度に使うバッチ勾配降下法(訓練データ全体を一度に使ってパラメータを更新する方法)では1イテレーションで全データを使うため、イテレーション数とエポック数が一致する特殊なケースになります。
適切なエポック数を決める実務手法として、早期終了(early stopping。検証データでの性能悪化を見て学習を早めに打ち切る手法)とあわせて扱われます。検証データに対する誤差の推移を学習曲線(エポックごとの誤差や精度の推移をグラフにしたもの。横軸にエポック数、縦軸に誤差や精度を取ります)で確認し、検証誤差(バリデーション誤差。学習に使っていないデータで試したときの誤差で、未知データへの対応力の目安)が下げ止まり悪化に転じた時点で学習を打ち切ることで、過学習に陥る前の適切なエポック数を実務的に判断します。
学習をどこまで続けるかという判断を、感覚ではなくグラフの推移という根拠に基づいて下せる点が実務上の利点です。
3. 関連概念との比較・相違点
イテレーションとの最大の違いは、それぞれが何を数える単位かという点にあります。エポックは訓練データ全体を1巡させた回数を指し、イテレーションはパラメータ(重み)が更新された1回分の処理を指します。
ミニバッチ学習では1エポックが複数イテレーションから構成されるため、エポック数とイテレーション数は基本的に一致しません。たとえば1エポックの中で複数回のイテレーションが発生していても、エポック数自体は1のままです。
この違いは取り違えやすい点です。この違いを取り違えると、1エポックあたりのイテレーション数を求める計算問題で単位を混同しやすく、1エポック内のイテレーション回数はバッチサイズの設定次第で変わります。
バッチサイズとの最大の違いは、数える対象そのものが異なる点にあります。バッチサイズは1回のパラメータ更新に使うデータの件数を指し、エポックは学習全体の周回数を指します。
バッチサイズを小さくするほど同じ訓練データ量に対するイテレーション数が増え、1エポックあたりのパラメータ更新回数も増えるという関係にあります。エポックの周回数自体は変わらなくても、バッチサイズの設定によって1エポックにかかる更新回数は変わります。
この関係は、バッチサイズの値からイテレーション数やエポック数を逆算する場面でも押さえておきたいポイントです。なお、ミニバッチ学習そのものの仕組みは別記事で扱います。
4. ビジネス・実務での活用シナリオ
画像認識モデルの開発では、学習曲線でエポックごとの訓練誤差と検証誤差を監視し、検証誤差が下げ止まった時点で早期終了を適用します。監視を人手の感覚ではなくグラフの推移に基づいて行うことで、開発工数と計算コストを抑えつつ判断の根拠も明確になります。検証誤差の推移を早い段階で把握できれば、性能が頭打ちになった学習を漫然と続けずに次の実験へ移れるため、限られた開発期間の中でより多くのモデル改良を試せるようになります。
クラウドAI開発や大規模モデルの学習では、GPU(画像処理用に開発された、AIの学習計算を高速に行える演算装置)の利用料が学習時間に比例して増えていきます。そこで、エポック数を必要以上に大きく設定せず、検証性能の推移を見ながら学習を打ち切ることで、限られた予算の中で計算コストを最適化します。学習を早期に打ち切ることでモデルの精度を大きく落とさないまま無駄な計算時間を削減できるため、同じ予算でより多くのモデル候補を試せるようになるという効果につながります。
自然言語処理(人間が日常的に使う言葉をコンピュータに処理させる技術分野)モデルの学習でも、大規模なコーパス(自然言語処理で使う大量のテキストデータ)を扱う場合に、データ全体を1巡する単位としてエポックが使われます。学習に時間がかかりやすい分野であるほど、エポックごとの性能の推移を見極める重要性は増します。
5. 要点まとめ
- エポックとは訓練データ全体を1回使い切って学習することを1と数える単位で、エポック数が少なすぎると未学習、多すぎると過学習に陥る関係にあります。
- エポック・イテレーション・バッチサイズは、エポック数=(イテレーション数×バッチサイズ)÷訓練データ数の関係式で結ばれ、ミニバッチ学習では1エポックが複数イテレーションで構成されます。
- 適切なエポック数は学習曲線で検証誤差の推移を確認し、早期終了によって検証誤差が悪化に転じる前の時点で学習を打ち切ることで実務的に判断します。
6. 確認問題
問1エポックとは、訓練データセットの全体を1回すべて使い切って学習することを1と数える単位である。
解答・解説をみる
○ 正しい
エポックの定義そのものです。同じデータセットを複数回繰り返して使えば、その回数分のエポック数になります。
問2訓練データ2,000件をバッチサイズ500件のミニバッチ学習で処理する場合、1エポックあたりのイテレーション数は4回である。
解答・解説をみる
○ 正しい
2,000件÷500件=4回で、4回のパラメータ更新(イテレーション)を行うと訓練データ全体を使い切り、1エポックになります。
問3エポック数はイテレーション数と常に同じ値になる。
解答・解説をみる
× 誤り
ミニバッチ学習では1エポックが複数イテレーションで構成されるため、両者は基本的に一致しません。正しくは、全訓練データを1回のパラメータ更新に使うバッチ勾配降下法のような特殊な場合に限り一致します。

