J'ai du mal à dériver la propagation avec ReLU, et j'ai fait du travail, mais je ne sais pas si je suis sur la bonne voie.
Fonction de coût: où est la valeur réelle et est une valeur prédite. Supposons également que > 0 toujours.y y x
1 couche ReLU, où le poids à la 1ère couche est
2 Layer ReLU, où les poids à la 1ère couche sont , et la 2ème couche est Et je voulais mettre à jour la 1ère couchew 1 w 2
Depuis
ReLU à 3 couches, où les poids à la 1ère couche sont , 2e couche et 3e couchew 2 w 1
Depuis
Étant donné que la règle de chaîne ne dure qu'avec 2 dérivés, par rapport à un sigmoïde, qui peut être aussi long que nombre de couches.
Supposons que je veuille mettre à jour les 3 pondérations des couches, où est la troisième couche, est la deuxième couche, est la troisième couchew 2 w 1
Si cette dérivation est correcte, comment cela empêche-t-il de disparaître? Par rapport à sigmoïde, où nous avons beaucoup de multiplier par 0,25 dans l'équation, alors que ReLU n'a pas de multiplication à valeur constante. S'il y a des milliers de couches, il y aurait beaucoup de multiplication à cause des poids, alors cela ne causerait-il pas un gradient de fuite ou d'explosion?
la source
Réponses:
Définitions de travail de la fonction ReLU et de sa dérivée:
La dérivée est la fonction de pas d' unité . Cela ignore un problème àx=0 , où le gradient n'est pas strictement défini, mais ce n'est pas une préoccupation pratique pour les réseaux de neurones. Avec la formule ci-dessus, la dérivée à 0 est 1, mais vous pouvez également la traiter comme 0 ou 0,5 sans impact réel sur les performances du réseau de neurones.
Réseau simplifié
Avec ces définitions, regardons vos exemples de réseaux.
Vous exécutez une régression avec la fonction de coûtC=12(y−y^)2 . Vous avez définiR comme la sortie du neurone artificiel, mais vous n'avez pas défini de valeur d'entrée. J'ajouterai cela pour être complet - appelez-lez , ajoutez une indexation par couche, et je préfère les minuscules pour les vecteurs et les majuscules pour les matrices, doncr(1) sortie de la première couche,z(1) pour son entrée etW(0) pour le poids reliant le neurone à son entréex (dans un réseau plus grand, qui pourrait se connecter à unrplus profondr à la place). J'ai également ajusté le numéro d'index pour la matrice de poids - pourquoi cela deviendra plus clair pour le plus grand réseau. NB J'ignore avoir plus de neurones dans chaque couche pour l'instant.
En regardant votre simple couche 1, 1 réseau de neurones, les équations de rétroaction sont:
La dérivée de la fonction de coût par rapport à un exemple d'estimation est:
Utilisation de la règle de chaîne pour la propagation arrière à la valeur de pré-transformation (z ):
Ce∂C∂z(1) est une étape intermédiaire et une partie critique du backprop reliant les étapes ensemble. Les dérivations sautent souvent cette partie car des combinaisons intelligentes de fonction de coût et de couche de sortie signifient qu'elle est simplifiée. Ici non.
Pour obtenir le gradient par rapport au poidsW(0) , alors c'est une autre itération de la règle de chaîne:
. . . carz(1)=W(0)x donc ∂z(1)∂W(0)=x
C'est la solution complète pour votre réseau le plus simple.
Cependant, dans un réseau en couches, vous devez également appliquer la même logique à la couche suivante. De plus, vous avez généralement plus d'un neurone dans une couche.
Réseau ReLU plus général
Si nous ajoutons des termes plus génériques, nous pouvons travailler avec deux couches arbitraires. Appelez-les Layer(k) indexé par i , et Layer (k+1) indexé par j . Les poids sont maintenant une matrice. Donc, nos équations de rétroaction ressemblent à ceci:
Dans la couche de sortie, le gradient initial wrtro u t p u tj est encore ro u t p u tj- yj . Cependant, ignorez cela pour l'instant et regardez la façon générique de propager en arrière, en supposant que nous avons déjà trouvé ∂C∂r( k + 1 )j
Nous devons d'abord accéder à l'entrée des neurones avant d'appliquer ReLU:
Nous devons également propager le gradient vers les couches précédentes, ce qui implique de résumer toutes les influences connectées à chaque neurone:
Et nous devons le connecter à la matrice des poids afin de faire des ajustements plus tard:
Retour à vos questions:
Votre dérivation n'était pas correcte. Cependant, cela ne répond pas complètement à vos préoccupations.
Oui, cela peut aussi avoir un impact. Cela peut être un problème indépendamment du choix de la fonction de transfert. Dans certaines combinaisons, ReLU peut également aider à garder les gradients explosifs sous contrôle, car il ne sature pas (donc les normes de poids importantes auront tendance à être de mauvaises solutions directes et il est peu probable qu'un optimiseur se déplace vers elles). Cependant, cela n'est pas garanti.
la source