深層学習におけるクラス不均衡をFocal Lossが解決する仕組みを探る。Ultralytics 実装し、困難な例に焦点を当てモデル精度を向上させる方法を学ぶ。
焦点損失(Focal Loss)は、深刻なクラス不均衡の問題に対処するために主に深層学習で使用される特殊な目的関数である。物体検出などの多くのコンピュータビジョン課題では、背景例(ネガティブサンプル)の数が対象物(ポジティブサンプル)を大幅に上回る。広く用いられるクロスエントロピー損失などの標準手法は、すべての誤りを均等に扱うため、分類が容易な背景データが大量に存在することでモデルが圧倒されることが頻繁に起こる。焦点損失は標準的な損失計算を修正し、誤りを均等に扱うことで、この問題を解決する。 クロスエントロピー損失は全ての誤りを同等に扱うため、classify 膨大な量にモデルが圧倒されることが頻繁に発生する。フォーカル損失は標準的な損失計算を修正し、こうした容易な例を軽視することで、最適化アルゴリズムが学習能力を「困難な」例——モデル性能にとって極めて重要でありながら稀でclassify 集中させるよう強制する。
焦点損失の核心的な革新性は、モデルの信頼度に基づいて各サンプルに割り当てられるペナルティを動的にスケーリングする能力にある。典型的な教師あり学習シナリオでは、検出器が画像内の数千もの候補位置を評価することがある。これらの位置の大半は物体を含まないため、標準的な損失関数はこうした容易な陰性例から多くの小さな誤差信号を蓄積し、その結果、少数の陽性例から得られる貴重な信号が埋もれてしまう。
焦点損失は、正しいクラスに対する確信度が高まるにつれて損失寄与を減少させる調整係数を導入する。これは、モデルが背景パッチが確かに背景であると既に99%確信している場合、そのパッチに対する損失がほぼゼロに減少することを意味する。結果として、モデルの重みは主に誤分類されたサンプルやモデルが不確かなサンプルに基づいて更新される。 この標的型アプローチは、YOLO26のような 高性能なワンステージ物体検出器の訓練に不可欠であり、複雑なサンプリング段階を必要とせずに高い精度を達成することを可能にします。
安全性と精度が最優先される環境において、頑健なAIシステムを展開するには、不均衡なトレーニングデータの取り扱いが極めて重要である。
について ultralytics ライブラリには、最先端モデルをサポートするための高度な損失関数の最適化された実装が含まれています。一方、 Ultralytics 自動的に
これらのハイパーパラメータを最適なトレーニング用に設定します。開発者はカスタム研究のためにこれらのコンポーネントに直接アクセスすることも可能です。
以下の例は、Focal Lossを初期化する方法を示しています。 ultralytics ユーティリティパッケージと
予測値のセットに対する誤差を計算する。
import torch
from ultralytics.utils.loss import FocalLoss
# Initialize Focal Loss.
# The 'gamma' parameter controls the focusing strength (higher = more focus on hard examples).
criterion = FocalLoss(gamma=1.5)
# Example: Model predictions (logits) and binary Ground Truth labels
# requires_grad=True simulates model outputs that need backpropagation
predictions = torch.tensor([[0.8], [-1.5], [0.1]], requires_grad=True)
targets = torch.tensor([[1.0], [0.0], [1.0]])
# Calculate the loss value
loss = criterion(predictions, targets)
print(f"Computed Focal Loss: {loss.item():.4f}")
焦点損失がエラー測定のより広範な枠組みの中でどのような位置を占めるかを理解することは、特定のコンピュータビジョンタスクに適した戦略を選択する上で役立つ。