用語集

コールバック

機械学習におけるコールバックの本質的な役割を探る-精度、柔軟性、効率を向上させるためにモデル学習を監視、制御、自動化するツール。

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

さらに詳しく

機械学習、特にニューラルネットワークの複雑な学習プロセスにおいて、コールバックは強力なユーティリティです。コールバックは基本的に、プロシージャの様々な段階で特定のアクションを実行するように設計されたオブジェクトまたは関数です。コールバックを自動化されたフックまたはトリガーと考えると、手動でトレーニングプロセスを中断することなく、内部状態の監視、モデル統計の観察、意思決定、カスタムコードの実行を行うことができます。コールバックは、以下のような一般的なディープラーニング(DL)フレームワークにおいて、トレーニングループやその他の逐次処理の動作をカスタマイズし制御するための重要なメカニズムを提供します。 TensorFlowPyTorch.

コールバックの仕組み

コールバックはイベント・ドリブン・システムに基づいて動作する。コールバックは通常、以下のようなメイン関数にリストとして渡される。 train メソッド内の 機械学習 フレームワークを使用する。フレームワークは、"イベント "と呼ばれる特定の時点でこれらのコールバックを呼び出すように設計されている。一般的なイベントには、トレーニングプロセス全体の開始や終了、トレーニングの開始や終了 エポックを処理する前でも後でもいい。 バッチサイズ を実行する。特定のイベントが発生すると、フレームワークは対応するコールバック関数を実行し、多くの場合、現在のエポック番号のような現在の状態に関する関連情報を渡す、 損失関数 値やパフォーマンス・メトリクスを引数として渡すことができる。これにより、コールバックはリアルタイム情報に基づいて、進行中のプロセスと動的に相互作用し、影響を与えることができます。

主な用途と使用例

コールバックは非常に汎用性が高く、効果的なモデル開発とトレーニングに不可欠な幅広い機能を実現します:

  • モデル・パフォーマンスのモニタリングトレーニング中、トレーニングデータと検証データの損失や精度などのメトリクスを追跡します。結果は、コンソールに記録したり、ファイルに保存したり、TensorBoardのようなツールを使用して可視化することができます。
  • モデルのチェックポイント モデルの重みを定期的に自動的に保存し、多くの場合、選択したメトリック(検証精度や損失など)に基づいて最もパフォーマンスの良いバージョンだけを保存します。これにより、トレーニングが中断されたり、後でパフォーマンスが低下した場合でも、最良のモデルが失われることはありません。
  • 早期停止パフォーマンス指標(検証損失など)を監視し、定義されたエポック数で指標の改善が止まった場合、学習プロセスを自動的に停止する。これにより、オーバーフィッティングを防ぎ、計算リソースを節約します。
  • ダイナミックな調整トレーニング・パラメータをその場で変更する。一般的な例として、トレーニングの進捗状況に基づいて学習レートを動的に調整し、パフォーマンスが停滞したときに学習レートを下げることがよくあります(学習レートのスケジューリング)。
  • ロギングとレポート:ログ、メトリックス、トレーニングの進捗状況を外部のモニタリングシステムや以下のような実験追跡プラットフォームに送信します。 Weights & BiasesUltralytics HUBのような外部モニタリングシステムや実験追跡プラットフォームに送信し、MLOpsの実践を支援します。
  • リソース管理:以下のようなシステム・リソースを管理するカスタム・ロジックを実装します。 GPUメモリキャッシュを特定の間隔でクリアするなど、システムリソースを管理するカスタムロジックを実装します。モデルトレーニングのヒントに関するガイドで、より多くの提案をご覧ください。

実践例

  1. 最適な物体検出モデルの保存:最適な Ultralytics YOLOモデルをトレーニングする場合、ModelCheckpoint コールバックを使用することがあります。このコールバックは、検証データセットの 平均平均精度(mAP)を監視します。mAPスコアが以前に保存したベストスコアと比較して向上した場合にのみ、モデルの重みをファイルに保存し、トレーニングセッションから最も正確なモデルを確実に保持します。モデル比較ページで、さまざまなYOLO モデルのパフォーマンスを比較してください。
  2. 画像分類におけるオーバーフィッティングの防止: ImageNetのような複雑なデータセットで画像分類モデルを学習することを想像してみてください。EarlyStoppingコールバックを設定して、検証損失を監視することができます。検証損失が例えば10エポック連続で減少しない場合、コールバックは自動的に学習を停止します。これにより、モデルがトレーニングデータにオーバーフィットするのを防ぎ、トレーニング時間とコストを大幅に削減します。画像分類タスクをさらに詳しく

コールバックを使用する利点

コールバックを機械学習のワークフローに組み込むことで、いくつかの大きな利点が得られる:

  • 自動化:コールバックは、モデルの保存、メトリクスの記録、パラメーターの調整などの反復タスクを自動化し、長時間のトレーニング実行中の手動介入の必要性を低減します。
  • 柔軟性とカスタマイズ:開発者は、コアフレームワークのコードを変更することなく、トレーニングループにカスタムロジックを挿入することができ、高度にカスタマイズされたトレーニング動作が可能になる。これは、複雑な実験やハイパーパラメータのチューニングに特に有効です。
  • 効率性:早期停止や動的学習率調整のようなコールバックは、計算リソースを節約し、収束を早める可能性があるため、トレーニングをより効率的に行うことができる。
  • 洞察とモニタリング:詳細なロギングと時間経過に伴うメトリクスの視覚化を可能にすることで、トレーニングダイナミクスに対する深い洞察を提供します。
  • 再現性:トレーニング中に行われるアクション(保存基準や停止条件など)を標準化することで、コールバックはより再現性の高い機械学習実験に貢献する。

Kerasや PyTorch Lightningのようなフレームワークは、組み込みコールバックの広範なコレクションと、カスタムコールバックを作成するためのわかりやすいインターフェースを提供しています。また、Ultralytics トレーニングパイプラインの内部でコールバックを活用しており、以下のようなツールの堅牢性と使いやすさに貢献しています。 Ultralytics YOLO11Ultralytics HUBプラットフォームなどのツールの堅牢性と使いやすさに貢献しています。Ultralytics ドキュメントを参照すると、YOLO モデルのトレーニングに関するより具体的な例を見ることができます。

すべて読む