クロスエントロピー損失のベクトル化


9

パラメータ使用して、クロスエントロピー損失関数の勾配を見つけることに関連する問題を処理しています。θ

CE(θ)=−∑iyi∗log(y^i)

ここで及びθ iは、ベクトル入力されます。y^i=softmax(θi)θi

また、正しいクラスのワンホットベクトルであり、yはソフトマックス関数を用いて各クラスの予測です。yy^

したがって、例えば有することができ 及びY iは = (0.10 0.20 0.10 0.40 0.20)yi=(00010)y^i=(0.100.200.100.400.20)

偏微分見つけるには∂CE(θ)∂θik=−yik−y^ik

各そこから取っ個々の部分勾配はなり ∂ C E (θ )i∂CE(θ)∂θi=(yi1−y^i1yi2−y^i2yi3−y^i3yi4−y^i4yi5−y^i5)

ただし、1つのホットベクトルのプロパティを使用したため、4番目の行を除く他のすべての行の勾配は実際には0になるため、これは当てはまりません。だから、実際の勾配があるべき ∂CE(θ)∂θi=(000yi4−y^i40)

それゆえ、すべてのための勾配はする必要があり ∂ C E (θ )i∂CE(θ)∂θ=(000yi4−y^i4000yi3−y^i300...0yi2−y^i2000)

しかし、これは等しくないのy - yの。したがって、クロスエントロピー関数の勾配を、予測と元のベクトルの差と呼ぶべきではありません。y^−y

誰かがこれを明確にできますか?

更新:派生を修正しました

θ=(θ1θ2θ3θ4θ5)

CE(θ)=−∑iyi∗log(y^i)

ここで及びθ iは、ベクトル入力されます。y^i=softmax(θi)θi

また、Yは、正しいクラスのワンホットベクトルであり、yはyy^

∂CE(θ)∂θi=−(log(y^k))

yy^y=(00010)y^=(0.100.200.100.400.20)

θikθi∂CE(θ)∂θi=−yk−y^k

各そこから取っI個々の部分勾配はなり ∂ C E (θ i∂CE(θ)∂θ=(y1−y^1y2−y^2y3−y^3y4−y^4y5−y^5)

CE(θ)=−(yk∗log(y^k))y^k=log(softmax(θk))=θk−log(∑jexp(θj))CE(θ)θi

∂CE(θ)∂θi=−(∂θk∂θi−softmax(θi))

∂θk∂θi=0,i≠k∂θk∂θi=1,i=k∂CE(θ)∂θ=y^−y

回答:


2

y^iji,jyij=0y^ij


y^ijyijyi∂CE(θ)∂θij=0,∀j≠kyik=1

1
あなたの入力をありがとう@ neil-g私は学年の私の派生を修正することができました。
— Shubhanshu Mishra 2015

15

以下は編集と同じ内容ですが、(私にとっては)少し明確な段階的な形式です。

私たちはそれを証明しようとしています:

∂CE∂θ=y^−y

与えられた

CE(θ)=−∑iyi∗log(y^i)

そして

y^i=exp(θi)∑jexp(θj)

yj=0j≠kyk=1

CE(θ)=− log(y^k)

=− log(exp(θk)∑jexp(θj))

=− θk+log(∑jexp(θj))

∂CE∂θ=−∂θk∂θ+∂∂θlog(∑jexp(θj))

∂θk∂θk=1∂θk∂θq=0q≠k

∂θk∂θ=y

θ

∂∂θilog(∑jexp(θj))=exp(θi)∑jexp(θj)=y^i

したがって、

∂CE∂θ=∂∂θlog(∑jexp(θj))−∂θk∂θ=y^

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.