()が0になるのは問題ではありませんか?yilog(yi)
はい、そうです。は未定義ですが、実際にはを使用することでこの問題を回避でき。log(0)log(yi+ϵ)
何が正しいのですか?
(a)または
(b)?Hy′(y):=−∑iy′ilog(yi)
Hy′(y):=−∑i(y′ilog(yi)+(1−y′i)log(1−yi))
(a)は、マルチクラス予測(実際には二重加算)に適しています。(b)は、2クラス予測の(a)と同じです。両方ともクロスエントロピーです。
例:
各トレーニングデータにラベルがあり、モデルが予測するとします。xic′i∈{0,1}ci∈[0,1]
5つのデータポイントの場合、真のラベルとモデル予測は次のとおりです。 c′ici
(c′i,ci)={(0,0.1),(0,0.4),(0,0.8),(1,0.8),(1,0.2)} (1)、
ベクトルおよびを次のように定義します y′iyi
表記の例(1)は次のようになります。 (y′i,yi)
(y′i,yi)={([1,0],[0.9,0.1]), ([1,0],[0.6,0.4]), ([1,0],[0.2,0.8]), ([0,1],[0.2,0.8]), ([0,1],[0.8,0.2])}、
(a)と(b)は両方とも次のように計算されます。
Hy′(y)=−1/5([log(0.9)+log(0.6)+log(0.2)]ci=0+[log(0.8)+log(0.2)]ci=1)=0.352
導出:
複数のクラスがあるとしに。
トレーニングポイントの、と等価であるに1である別の場所で位置0。場合、我々は、モデルの出力たい 1に近いことがよって、損失のように定義することができる、。すべてのクラスの損失は、次のように組み合わせることができます。1K
(xi,c′i)c′i=ky′i=[0,..,1,0,..]kthy′ik=1yik=p(k|xi)(xi,k)−log(yik)yik→1⇒−log(yik)→0
L(y′i,yi)=−∑Kk=1y′iklog(yik)。
場合、他のすべてのクラスの損失として無効にされ、例えば真ラベルであるので、、損失が希望される:y′ik=1k′≠k0log(yik′)=0y′im=1
L(y′i,yi)=−log(yim)。
すべてのトレーニングポイントに対する最終的な式は次のとおりです。
Hy′(y)=−∑(xi,y′i)∑Kk=1y′iklog(yik)。
バイナリ分類では、(真のラベル)および(モデル予測)があるため、(a)は次のように書き換えることができます。y′i0=1−y′i1yi0=1−yi1
Hy′(y)=−∑(xi,y′i)y′i1log(yi1)+y′i0log(yi0)=−∑(xi,y′i)y′i1log(yi1)+(1−y′i1)log(1−yi1)
(b)と同じです。
クロスエントロピー(a)クラス全体(1つの合計)
クラスに対するクロスエントロピー(a)は次のとおりです。
Hy′(y)=−∑Kk=1y′klog(yk)、
このバージョンは分類タスクには使用できません。前の例のデータを再利用してみましょう。
(c′i,ci)={(0,0.1),(0,0.4),(0,0.8),(1,0.8),(1,0.2)}
経験的クラス確率は次のです:、および、y′0=3/5=0.6y′1=0.4
モデルによって推定されるクラス確率は、およびy0=3/5=0.6y1=0.4
(a)は次のように計算されます:。−y′0logy0−y′1logy1=−0.6log(0.6)−0.4log(0.4)=0.292
2つのデータポイントおよびは分類されますが、およびは正しく推定されます!(0,0.8)(1,0.2)y′0y′1
5つのポイントすべてが、
(c′i,ci)={(0,0.1),(0,0.4),(0,0.2),(1,0.8),(1,0.8)}
(a)が再びとして推定されるため、同じままです。y′0y0=3/5