Vectorisation de la perte d'entropie croisée


9

Je suis confronté à un problème lié à la recherche du gradient de la fonction de perte d'entropie croisée par rapport au paramètre où:θ

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

Où, et est une entrée vectorielle.y^i=softmax(θi)θi

De plus, est un vecteur chaud de la classe correcte et est la prédiction pour chaque classe utilisant la fonction softmax.yy^

Par conséquent, par exemple, ayons etyi=(00010)y^i=(0.100.200.100.400.20)

Pour trouver la dérivée partielle∂CE(θ)∂θik=−yik−y^ik

En prenant à partir de là pour chaque les gradients partiels individuels seront i∂CE(θ)∂θi=(yi1−y^i1yi2−y^i2yi3−y^i3yi4−y^i4yi5−y^i5)

Mais ce n'est pas vrai parce que les gradients devraient en fait être 0 pour toutes les autres lignes, sauf pour la 4ème ligne, car nous avons utilisé la propriété du vecteur chaud. Le gradient réel doit donc être ∂CE(θ)∂θi=(000yi4−y^i40)

Et donc les gradients pour tout devraient être i∂CE(θ)∂θ=(000yi4−y^i4000yi3−y^i300...0yi2−y^i2000)

Mais ce n'est pas égal à . Il ne faut donc pas appeler le gradient de la fonction d'entropie croisée une différence vectorielle entre prédite et originale.y^−y

Quelqu'un peut-il clarifier cela?

MISE À JOUR: correction de ma dérivation

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

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

Où, et est une entrée vectorielle.y^i=softmax(θi)θi

De plus, est un vecteur chaud de la classe correcte et est la prédiction pour chaque classe utilisant la fonction softmax.yy^

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

MISE À JOUR: Suppression de l'index de etyy^ Par conséquent, par exemple, permet d'avoir ety=(00010)y^=(0.100.200.100.400.20)

MISE À JOUR: Correction de la prise du dérivé wrt il ne devrait être que wrt . θikθi Pour trouver la dérivée partielle∂CE(θ)∂θi=−yk−y^k

En prenant à partir de là pour chaque les gradients partiels individuels seront i∂CE(θ)∂θ=(y1−y^1y2−y^2y3−y^3y4−y^4y5−y^5)

Ce qui précède se produit parce que Et, En prenant la dérivée partielle de wrt nous obtenons:CE(θ)=−(yk∗log(y^k))y^k=log(softmax(θk))=θk−log(∑jexp(θj))CE(θ)θi

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

ÉTAPE PRINCIPALE: Le fait que et rend le vecteur qui complète la preuve.∂θk∂θi=0,i≠k∂θk∂θi=1,i=k∂CE(θ)∂θ=y^−y

Réponses:


2

Non, les gradients ne doivent pas être nuls pour les autres composants. Si votre prédiction est pour certains et votre observation , alors vous avez trop prédit par .y^iji,jyij=0y^ij


Mais sera toujours une valeur softmax et l'observation réelle. Et parce que nous utilisons le fait que est un vecteur unique, la dérivée partielle , étant donné que Est-ce que je fais une erreur dans la différenciation? y^ijyijyi∂CE(θ)∂θij=0,∀j≠kyik=1
— Shubhanshu Mishra

1
Merci pour votre contribution @ neil-g, j'ai pu corriger ma dérivation du dégradé.
— Shubhanshu Mishra

15

Ce qui suit est le même contenu que l'édition, mais dans un format étape par étape (pour moi) légèrement plus clair:

Nous essayons de prouver que:

∂CE∂θ=y^−y

donné

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

et

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

Nous savons que pour et , donc:yj=0j≠kyk=1

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

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

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

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

Utilisez le fait que et pour , montrer que.∂θk∂θk=1∂θk∂θq=0q≠k

∂θk∂θ=y

Pour la deuxième partie, nous écrivons la dérivée pour chaque élément individuel de et utilisons la règle de chaîne pour obtenir:θ

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

Par conséquent,

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.