用語集

時代

機械学習におけるエポックについて学びましょう。エポックがモデル学習に与える影響、オーバーフィッティングの防止、Ultralytics YOLO 。

Ultralytics HUB で
を使ってYOLO モデルをシンプルにトレーニングする。

さらに詳しく

機械学習(ML)、特に深層学習モデルの学習の文脈では、エポックは、学習アルゴリズムを通して学習データセット全体の1回の完全な通過を表す。モデルの学習は、データを繰り返し処理することでモデルがパターンを学習する反復プロセスである。エポックは、アルゴリズムがデータセット全体を処理する回数を定義する基本的なハイパーパラメータであり、モデルがデータ内の各例から複数回学習することを可能にする。

エポックについて

学習プロセスにおいて、モデルの内部パラメータ(重み)は、予測における誤差に基づいて調整される。この調整は通常、勾配降下法やその亜種(アダム・オプティマイザーなど)のような最適化アルゴリズムを用いて行われます。1回のエポックは、トレーニングデータセットのすべてのサンプルが、モデルの内部パラメータを1回更新する機会を得たことを意味する。大規模なデータセットの場合、データセット全体を一度に処理するのは計算コストがかかるため、データをバッチと呼ばれる小さな塊に分割することが多い。

エポック対反復対バッチサイズ

エポックを関連用語と区別することは重要だ:

  • バッチ・サイズこれは、モデルの重みが更新される前に処理されるサンプル数を定義する。
  • 反復:1エポックを完了するのに必要なバッチ数を指す。データセットが1000サンプルでバッチサイズが100の場合、1回のエポックには10回の反復が必要である(1000サンプル÷100サンプル/バッチ=10バッチ/反復)。各反復は1バッチを処理し、モデルの重みを更新する。
  • エポック:トレーニング・データセット全体を1周すること。上記の例では、10回の反復で1エポックとなる。

本全体がデータセット、1章がバッチ、1章を読むのがイテレーション、本全体を隅から隅まで読むのが1エポックだ。

なぜエポックが重要なのか

エポック数は、モデルが全データセットから何回学習するかを決定するため、重要なハイパーパラメータである。

  • エポック数が少なすぎる:モデルの学習エポック数が少なすぎる場合、基礎となるパターンを効果的に学習するために十分なデータに触れることができない可能性がある。これはアンダーフィッティングにつながり、モデルは訓練データと未見のテストデータの両方に対して低いパフォーマンスを示します。
  • エポック数が多すぎる:逆に、エポック数が多すぎるトレーニングは、オーバーフィッティングにつながる可能性がある。このシナリオでは、モデルはノイズや特定の詳細も含めて訓練データを学習しすぎてしまい、新しい未知のデータに対する汎化能力を失ってしまいます。モデルは、トレーニングセットでは優れた精度を示すが、検証データやテストデータでは低いパフォーマンスを示すかもしれない。

適切なバランスを見つけることが、優れたモデル性能と汎化を達成する鍵である。これには多くの場合、トレーニング中に別の検証データセットでモデルのパフォーマンスをモニターすることが含まれる。

エポック数の決定

最適なエポック数は、データの複雑さ、データセットのサイズ、モデル・アーキテクチャ、学習率によって異なる。一般的なアプローチには以下のようなものがある:

  • 実験:様々なエポック数を試し、パフォーマンスを評価する。
  • 検証指標の監視:検証セットにおける損失や精度などのメトリクスを追跡する。これらのメトリクスが改善されなくなったり、低下し始めたりした場合、トレーニングを停止することがよくあります。
  • ハイパーパラメータのチューニング Ultralytics ハイパーパラメータチューニングガイドにあるような自動化ツールやテクニックを用いて、エポック数を含む最適なハイパーパラメータを系統的に探索する。

実例

  1. 物体検出をトレーニングするとき Ultralytics YOLOモデル YOLOv8または YOLO11COCOのような大規模なデータセットでは、モデルは特定のエポック数、例えば100や300で学習されます。各エポックの間、モデルはCOCO訓練セットの全画像を処理し、オブジェクトのバウンディングボックスとクラスラベルをより良く予測するために重みを調整する。Ultralytics HUBのようなプラットフォームを使用すると、ユーザーはこのトレーニングプロセスを簡単に管理し、エポック間のパフォーマンスを監視することができます。
  2. 自然言語処理(NLP) センチメント分析のようなタスクのためにBERT のような大規模な言語モデルを訓練するには、膨大な量のテキストデータをモデルに供給する必要があります。データセットとモデルのサイズが非常に大きいため、訓練は少ないエポック数(3~10回など)で行われることがあります。各エポックは、モデルがテキスト・コーパス全体を1回見ることを保証し、センチメントに関連する言語ニュアンスの理解を洗練させる。Hugging Face Transformersのようなフレームワークは、微調整のためにデフォルトのエポック数を指定することが多い。

ツールとフレームワーク

エポックは、ほとんどのディープラーニング・フレームワークで標準的なパラメーターだ:

  • PyTorchトレーニングループ PyTorchはエポックとバッチを明示的に反復します。
  • TensorFlow: Kerasのような高レベルのAPI TensorFlow でエポック数を直接指定できる。 fit メソッドを使用する。
  • Ultralytics HUB: YOLOようなモデルをトレーニングするためのユーザーフレンドリーなインターフェースを提供し、ユーザーはエポック数を簡単に設定し、トレーニングの進捗状況を視覚的に監視することができます。

エポックはMLにおける反復学習の基礎であり、オーバーフィッティングのリスクに対して十分なデータ露出の必要性のバランスをとる。スタンフォード大学のCS231nコースや Machine Learning Masteryブログのようなリソースで議論されているように、しばしば注意深い実験とモニタリングを通じて、適切なエポック数を選択することが、効果的なモデルを構築する鍵となる。Google Machine Learning Glossaryのようなリソースで、より多くの定義を見つけることができる。

すべて読む