Focal Lossがいかにディープラーニングにおけるクラス不均衡を解決するかを探ります。困難な事例に焦点を当て、モデル精度を向上させるためにUltralytics YOLO26でそれを実装する方法を学びましょう。
Focal Lossは、深刻なクラス不均衡の課題に対処するためにディープラーニングで主に使用される特殊な目的関数です。オブジェクトdetectなどの多くのコンピュータービジョンタスクでは、背景の例(ネガティブサンプル)の数が、関心のあるオブジェクト(ポジティブサンプル)の数を大幅に上回ります。広く使用されている交差エントロピー損失のような標準的な方法は、すべてのエラーを等しく扱い、モデルが分類しやすい背景データの膨大な量に圧倒されることがよくあります。Focal Lossは、これらの簡単な例の重みを減らすように標準的な損失計算を変更し、最適化アルゴリズムに、モデルのパフォーマンスにとって重要な「困難な」例、つまりまれで分類が難しいオブジェクトに学習能力を集中させます。
Focal Lossの核となる革新は、モデルの確信度に基づいて、各サンプルに割り当てられるペナルティを動的にスケーリングする能力にあります。典型的な教師あり学習シナリオでは、検出器は画像内の何千もの候補位置を評価する可能性があります。これらの位置のほとんどにはオブジェクトが含まれていないため、標準的な損失関数は、これらの簡単なネガティブから多くの小さな誤差信号を蓄積し、わずかなポジティブインスタンスからの貴重な信号をかき消してしまう可能性があります。
Focal Lossは、正しいクラスに対する信頼度が高まるにつれて損失の寄与を減衰させる変調因子を導入します。これは、モデルが背景パッチが実際に背景であると99%確信している場合、そのパッチの損失がほぼゼロに減少することを意味します。その結果、モデルの重みは、主に誤分類されたサンプルやモデルが不確実なサンプルに基づいて更新されます。このターゲットを絞ったアプローチは、YOLO26のような高性能なone-stage object detectorsのトレーニングに不可欠であり、複雑なサンプリング段階を必要とせずに高い精度を達成することを可能にします。
不均衡なトレーニングデータの処理は、安全性と精度が最優先される環境で堅牢な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}")
Focal Lossが誤差測定のより広い範囲でどのように位置づけられるかを理解することは、特定のコンピュータービジョンタスクに適切な戦略を選択するのに役立ちます。

未来の機械学習で、新たな一歩を踏み出しましょう。