Le problème est:
Dérivez le gradient par rapport à la couche d'entrée pour un réseau neuronal à couche cachée unique en utilisant sigmoïde pour l'entrée -> caché, softmax pour caché -> la sortie, avec une perte d'entropie croisée.
Je peux passer la majeure partie de la dérivation en utilisant la règle de chaîne, mais je ne suis pas sûr de savoir comment les "chaîner" ensemble.
Définir quelques notations
, est une fonction sigmoïde
,
, est la fonction softmax
, est un véritable vecteur à chaud
Ensuite, selon la règle de la chaîne,
Les gradients individuels sont:
Nous devons maintenant enchaîner les définitions. En simple variable, c'est facile, nous multiplions simplement tout ensemble. Dans les vecteurs, je ne sais pas s'il faut utiliser la multiplication par élément ou la multiplication matricielle.
Où est la multiplication élémentaire des vecteurs, et est une multiplication matricielle. Cette combinaison d'opérations est la seule façon dont je pourrais sembler les enchaîner pour obtenir un vecteur de dimension , que je sais que doit être.
Ma question est: quel est le moyen de principe pour moi de déterminer quel opérateur utiliser? Je suis particulièrement confus par la nécessité de l'élément par élément entre et .
Merci!
la source
Réponses:
Je crois que la clé pour répondre à cette question est de souligner que la multiplication par élément est en fait un raccourci et donc lorsque vous dérivez les équations, vous ne l' utilisez jamais réellement.
L'opération réelle n'est pas une multiplication par élément mais plutôt une multiplication matricielle standard d'un gradient avec un jacobien , toujours .
Dans le cas de la non-linéarité, le jacobien du vecteur sortie de la non-linéarité par rapport au vecteur entrée de la non-linéarité se trouve être une matrice diagonale. Il est donc vrai que le gradient multiplié par cette matrice est équivalent au gradient de la sortie de la non-linéarité par rapport à la perte élément par élément multiplié par un vecteur contenant toutes les dérivées partielles de la non-linéarité par rapport à l'entrée de la non-linéarité, mais cela découle du fait que le jacobien est diagonal. Vous devez passer par l'étape jacobienne pour arriver à la multiplication par élément, ce qui pourrait expliquer votre confusion.
En mathématiques, nous avons des non linéarités , une perte et une entrée de la non linéarité (cela pourrait être n'importe quel tenseur). La sortie de la non-linéarité a la même dimension --- comme le dit @Logan, les fonctions d'activation sont définies comme élément par élément.s L x∈Rn×1 s(x)∈Rn×1
Nous voulons
Où est le jacobien de . En développant ce jacobien, nous obtenons∂s(x)∂x s
On voit qu'il est partout nul sauf la diagonale. On peut faire un vecteur de tous ses éléments diagonaux
Et puis utilisez l'opérateur élément par élément.
la source
Chaque fois que la fonction est rétro-proportionnelle à une fonction d'activation, les opérations deviennent élémentaires. Plus précisément, en utilisant votre exemple, est un dérivé de rétropropagation et est un dérivé d'activation, et leur produit est un produit élémentaire, . En effet, les fonctions d'activation sont définies comme des opérations élément par élément dans le réseau neuronal.δ2=(y^−y)WT2 a′=h∘(1−h) δ2∘a′
Voir les diapositives de la conférence cs224d page 30, cela pourrait également aider.
la source