Cross-Entropy Loss
交差エントロピー損失は、予測されたクラス確率と正解ラベルを比較し、学習中の分類モデルやセグメンテーションモデルを導きます。
交差エントロピー損失は、モデルが予測したクラス確率と正解ラベルがどの程度一致しているかを測定します。正しいクラスに高い確率が割り当てられると小さなペナルティを、確率が低いと大きなペナルティを与えます。損失関数として、教師あり学習では学習中に最小化する目的関数を提供します。
Claude Shannonが1948年に発表した通信の数学的理論は、エントロピーの基礎を確立しました。D. F. Kerridgeは1961年の論文不正確さと推論で、交差エントロピー尺度を「不正確さ」として導入しました。分類では、対数損失は同義語であり、ロジスティック回帰とニューラル分類器の両方で使用されます。
交差エントロピー損失の仕組み#
正しいクラスが1つある1つのサンプルの場合、重み付けなしの交差エントロピーはloss = -ln(p_correct)です。正しいクラスの確率が0.9の場合、損失は約0.105になり、0.1の場合は約2.303になります。自然対数で表した結果の単位はナットです。通常、学習ではバッチ内のこれらのペナルティを平均します。
より一般的には、交差エントロピーは各クラスの正解確率に予測確率の負の対数を掛け、クラス全体で合計します。ワンホット形式の正解ラベルでは、正しいクラスに1、それ以外に0を設定するため、正しいクラスの項だけが残ります。重み付けなしのワンホット形式の正解ラベルでは、交差エントロピーの最小化は観測されたラベルの尤度を最大化することと同等です。誤差逆伝播法で勾配を計算し、勾配降下法でモデルのパラメーターを更新します。
二値・カテゴリカル・スパース交差エントロピー#
適切な形式はラベルによって異なります。
- シグモイドを用いた二値交差エントロピー: 0または1の正解ラベル
yと、クラス1の予測確率pに対する損失は-[y * ln(p) + (1 - y) * ln(1 - p)]です。マルチラベル分類では、同時に該当する可能性のあるラベルごとに独立して適用します。 - ソフトマックスを用いたカテゴリカル交差エントロピー: 確率の合計が1になる、相互排他的なクラスを評価します。ソフトマックスは、生のモデルスコアであるロジットをその確率分布に変換します。
- スパースカテゴリカル交差エントロピー: ワンホットベクトルの代わりに整数のクラスインデックスを使用します。同じ損失を計算し、「スパース」は正解ラベルのエンコード方法を表します。
ソフトラベルでは、複数のクラスに確率を分配します。ソフトラベルはラベルスムージングや知識蒸留で使用され、知識蒸留では生徒モデルが教師モデルの確率分布から学習します。
PyTorchでの交差エントロピーの計算#
PyTorchは、CrossEntropyLossで生のロジットを受け取ります。クラスインデックス形式の正解ラベルに対する計算は、log-softmaxの後に負の対数尤度を計算する方法と同等です。事前にsoftmaxを適用すると、この関数は確率をロジットとして扱うため、損失と勾配が変わります。整数形式の正解ラベルにはtorch.longを使用し、確率形式の正解ラベルには浮動小数点値を使用します。確率形式の正解ラベルの形状はロジットと一致させます。
import torch
from torch import nn
# Both predictions select class 0; the second is more confident.
logits = torch.tensor([[2.0, 0.0, 0.0], [4.0, 0.0, 0.0]])
targets = torch.tensor([0, 0], dtype=torch.long)
loss_fn = nn.CrossEntropyLoss(reduction="none")
losses = loss_fn(logits, targets)
print(f"Lower confidence loss: {losses[0].item():.4f}")
print(f"Higher confidence loss: {losses[1].item():.4f}")両方の予測が正解のまま、損失は0.2395から0.0360に減少します。精度はクラスの判定を記録しますが、交差エントロピーは確率の割り当てにも反応します。二値またはマルチラベルのロジットには、BCEWithLogitsLossを使用するとシグモイドと二値交差エントロピーを組み合わせられます。
コンピュータービジョンでの応用#
単一ラベルの画像分類では、画像ごとに1つのクラスを学習するために交差エントロピーを使用します。UltralyticsのYOLO26の分類学習では、クラスロジットに対する平均交差エントロピーを使用し、分類器を更新してラベル付けされたカテゴリに近づけます。
医療画像セグメンテーションでは、初期のU-Netは、生物医学顕微鏡画像を使い、ピクセル単位のソフトマックスと重み付き交差エントロピーで学習しました。重みマップは、接触する細胞間の境界におけるペナルティを増やし、隣接する細胞の分離を支援しました。これはセマンティックセグメンテーションで各ピクセルに分類を適用するものです。
損失値の解釈#
有効な正解確率分布と非負の重みを用いた離散交差エントロピーは、非負です。重み付けなしのハードラベルでは、正しいクラスに確率1が割り当てられると損失は0になり、その確率が0に近づくほど損失は無限に増大します。負の値は、正解ラベルに負の値が含まれる、重みが負であるなど、入力または実装に誤りがあることを示します。
エントロピーは1つの分布内の不確実性を測定し、交差エントロピーは正解ラベルと予測を比較します。交差エントロピーは、正解ラベルのエントロピーに、追加の不一致ペナルティであるカルバック・ライブラー・ダイバージェンスを加えたものです。そのため、ソフトラベルのエントロピーが正の場合、損失の最小値も正になります。
クラス重み付けは、選択したクラスの寄与を増やします。焦点損失は、物体検出における前景と背景の不均衡に対処するため、簡単なサンプルの寄与を減らします。一様な予測の場合、重み付けなしの対数損失はln(number_of_classes)となり、2クラスでは約0.693、10クラスでは約2.303です。










