Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Epoch

エポックとは、モデルが学習データ全体を1回処理することです。エポックとバッチ、イテレーションの関係や、必要な学習エポック数について解説します。

エポックとは、機械学習モデルが学習データセット全体を1回通過することです。1エポックの間に、各学習例はモデルの重みの更新にちょうど1回寄与します。ディープラーニングモデルは通常、1回の通過だけでは十分に学習できないため、学習を複数のエポックにわたって実行します。ネットワークが予測を調整するにつれて、通常はエポックごとに学習データ上の誤差が小さくなります。

エポック、バッチ、イテレーションの違い#

学習実行の構造を表す用語は3つあり、それぞれが1つ前の単位の中に含まれます。

  • エポック:学習データセット全体を1回通過することです。
  • バッチ:1ステップでまとめて処理するデータ例のグループです。データセット全体を一度にGPUメモリへ収めることは難しいため、通常はデータをシャッフルしてから、各エポックを複数のバッチに分割します。
  • イテレーション:損失関数をバッチ上で計算し、誤差逆伝播法によって勾配を逆向きに伝播させた後に行う、重みの更新1回分です。「ステップ」とも呼ばれます。

1エポックあたりのイテレーション数は、データセットのサイズをバッチサイズで割り、切り上げた値です。画像1,000枚のデータセットをバッチサイズ100で学習すると、1エポックあたり10イテレーションとなるため、50エポックで重みの更新は500回になります。PyTorchでは、この構造は、エポックを回す外側のループと、DataLoaderが提供するバッチを処理する内側のループという、2重のループとして表されます。

import torch
from torch.utils.data import DataLoader, TensorDataset

torch.manual_seed(0)

# 1,000 noisy samples of the line y = 3x + 2, served in shuffled batches of 100
x = torch.rand(1000, 1)
y = 3 * x + 2 + 0.1 * torch.randn(1000, 1)
loader = DataLoader(TensorDataset(x, y), batch_size=100, shuffle=True)

model = torch.nn.Linear(1, 1)
optimizer = torch.optim.SGD(model.parameters(), lr=0.5)

for epoch in range(5):  # one epoch = one full pass over all 1,000 samples
    for xb, yb in loader:  # 1,000 / 100 = 10 iterations per epoch
        loss = torch.nn.functional.mse_loss(model(xb), yb)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
    print(f"Epoch {epoch + 1}: {len(loader)} iterations, last batch loss {loss.item():.4f}")

各エポックは10イテレーションを実行します。モデルが真の直線に収束するにつれて、最終バッチの損失は1エポック目終了後の0.1096から5エポック目終了後の0.0088へ低下します。データ拡張を使う場合、各エポックではすべての画像が新たに変換されるため、後のエポックでは完全に同じ画像が繰り返されるのではなく、多様性が加わります。

エポック数の選び方#

エポック数は、ハイパーパラメーター調整における主要な設定の1つです。エポック数が少なすぎると、モデルはアンダーフィッティングとなり、学習データと検証データの両方で誤差が大きくなります。多すぎると、過学習に向かいます。この状態ではモデルが学習例を記憶し始めるため、学習損失は下がり続ける一方で検証スコアは停滞または低下します。適切なエポック数は、データセットとモデルのサイズ、学習率のスケジュール、転移学習によって事前学習済み重みから学習を始めるかどうかによって変わります。規模によっても異なります。小規模なビジョンデータセットでは数百エポック学習することがよくありますが、大規模言語モデルはデータの大部分を1回も見ないまま学習を終えることがあります。GPT-3は、フィルタリング済みのCommon Crawlデータを0.44エポック学習しました。

早期終了を使うと、エポック数の選択を自動化できます。各エポック後にモデルを検証データで評価して最良のチェックポイントを保持し、patienceと呼ばれる所定のエポック数にわたって検証スコアが改善しない場合に学習を終了します。

エポックベースの学習スケジュール#

終了時点以外にも、多くの学習設定はエポックに応じて変化します。たとえば、学習率のウォームアップや減衰、データ拡張の強度などです。Ultralytics YOLOの学習では、epochsとpatienceはどちらも既定値が100です。学習率は最初の3エポックでウォームアップし、モザイク拡張は最後の10エポックで無効になります(close_mosaic=10)。これにより、モデルは実際の入力に似た画像で学習を終えます。YOLO26の学習レシピは、モデルサイズによってエポック数がどれほど変わるかを示しています。Objects365で150エポック事前学習した後のCOCOファインチューニングは、YOLO26nでは245エポック、YOLO26xでは40エポック実行されました。

from ultralytics import YOLO

# 事前学習済みYOLO26nモデルを読み込みます
model = YOLO("yolo26n.pt")

# 50エポック学習します:COCO8の学習画像を50回すべて通過します
results = model.train(data="coco8.yaml", epochs=50, imgsz=640)

この実行では、トレーナーは各エポック後にYOLO26モデルを検証し、そのたびにlast.ptを上書きします。また、検出タスクではmAP50-95となる検証フィットネスが新たな最高値に達するたびに、best.ptを保存します。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう