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(θ)=iyilog(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 partielleCE(θ)θik=yiky^ik

En prenant à partir de là pour chaque les gradients partiels individuels seront iCE(θ)θi=(yi1y^i1yi2y^i2yi3y^i3yi4y^i4yi5y^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=(000yi4y^i40)

Et donc les gradients pour tout devraient être iCE(θ)θ=(000yi4y^i4000yi3y^i300...0yi2y^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(θ)=iyilog(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 partielleCE(θ)θi=yky^k

En prenant à partir de là pour chaque les gradients partiels individuels seront iCE(θ)θ=(y1y^1y2y^2y3y^3y4y^4y5y^5)

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

CE(θ)θi=(θkθisoftmax(θi))

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

Shubhanshu Mishra
la source

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

Neil G
la source
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^ijyijyiCE(θ)θij=0,jkyik=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(θ)=iyilog(y^i)

et

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

Nous savons que pour et , donc:yj=0jkyk=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=0qk

θ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

Maarten
la source