Epoch
機械学習におけるエポックとは何か、またそれがモデルの学習にどのような影響を与えるか学びましょう。最適化や過学習の回避、そしてUltralytics YOLO26を簡単に学習させる方法について解説します。
エポックとは、機械学習アルゴリズムが学習データセット全体を1回完全に通過するサイクルのことです。このプロセスにおいて、モデルはデータ内のすべてのサンプルに基づいて内部パラメータを正確に1回ずつ更新する機会を得ます。ディープラーニングの文脈では、ニューラルネットワークが複雑なパターンを効率的に学習するために、1回のパスでは不十分なことがほとんどです。そのため、学習には通常複数のエポックが必要となり、学習アルゴリズムが反復的に理解を深め、予測と実際の正解(グラウンドトゥルース)との誤差を最小限に抑えることが可能になります。
Link to this section最適化におけるエポックの役割#
The primary goal of training is to adjust model weights to minimize a specific loss function. Optimization algorithms, such as stochastic gradient descent (SGD) or the Adam optimizer, use the error calculated during each epoch to guide these adjustments. As the number of epochs increases, the model generally shifts from a state of high error (random guessing) to lower error (learned patterns).
しかし、適切なエポック数を選択することは、ハイパーパラメータチューニングにおいて重要な側面です。
- エポック数が少なすぎる場合: モデルがデータの根本的な傾向をまだ捉えていないアンダーフィッティング(学習不足)につながる可能性があります。
- エポック数が多すぎる場合: 多くの場合オーバーフィッティング(過学習)が発生し、モデルが新しいデータに対して一般化できず、学習データに含まれるノイズを記憶してしまいます。これを防ぐために、開発者は検証データのパフォーマンスを監視し、一般化が改善されなくなった時点で学習を停止するアーリーストッピングといった手法を採用します。
Link to this sectionエポック vs. バッチ vs. イテレーション#
初心者が「エポック」を関連用語と混同することはよくあります。学習ループを正しく構成するには、これらの概念の階層を理解することが不可欠です。
- エポック: データセット全体を1回完全に通過すること。
- バッチ: 同時に処理されるデータセットのサブセット。データセットはGPUメモリに一度に収まらないほど大きいことが多いため、バッチサイズによって定義された小さなグループに分割されます。
- イテレーション: モデルの重みに対する単一の更新のこと。データセットに1,000枚の画像があり、バッチサイズが100の場合、1エポックを完了するには10回のイテレーションが必要になります。
Link to this section実社会での応用#
必要なエポック数は、タスクの複雑さとデータのサイズに応じて劇的に異なります。
- 医療画像解析: MRIスキャンにおける腫瘍の検出など、医療画像解析では正確性が最も重要です。これらのタスク向けに学習されたモデルは、数百エポックにわたって実行されることがよくあります。この徹底した学習により、畳み込みニューラルネットワーク (CNN)は悪性組織と健康な組織を区別する微妙な異常を識別できるようになり、救命につながる可能性があります。
- 自動運転: 自動運転車向けの物体検出モデルは、歩行者、標識、その他の車両を確実に識別しなければなりません。これらの堅牢なシステムを学習させるには、通常COCOやObjects365のような膨大なデータセットが必要です。データセットのサイズは大きいものの、さまざまな天候や照明条件下で十分に一般化できるソリューションに収束させるには、モデルには依然として複数のエポックが必要です。
Link to this sectionコードによる学習サイクルの管理#
Ultralytics YOLOのような最新のフレームワークを使用する場合、エポック数の定義は学習コマンド内の単純な引数として設定されます。Ultralytics Platformのようなツールを使用すると、各エポックにわたる損失曲線を表示し、最適な停止ポイントを特定するのに役立ちます。
以下の例は、YOLO26モデルを学習させる際にエポック数を設定する方法を示しています。
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Train the model for 50 epochs
# The 'epochs' argument determines how many times the model sees the entire dataset
results = model.train(data="coco8.yaml", epochs=50, imgsz=640)このコードスニペットでは、epochs=50という引数が、学習エンジンに対してcoco8.yamlデータセットを50回繰り返して処理するように指示しています。各サイクル中に、モデルは順伝播と逆伝播を実行して、検出能力を改善します。






