Comment dériver des erreurs dans le réseau neuronal avec l'algorithme de rétropropagation?

10

De cette vidéo d'Andrew Ng vers 5h00

entrez la description de l'image ici

Comment sont δ3 et δ2dérivé? En fait, qu'est-ce queδ3 signifie même? δ4 est obtenu en comparant à y, une telle comparaison n'est pas possible pour la sortie d'une couche cachée, non?

qed
la source
Le lien vidéo ne fonctionne pas. Veuillez le mettre à jour ou fournir un lien vers le cours. Merci.
MadHatter

Réponses:

15

Je vais répondre à votre question sur le δje(l), mais rappelez-vous que votre question est une sous-question d'une question plus vaste, c'est pourquoi:

jej(l)=kθkje(l+1)δk(l+1)(uneje(l)(1-uneje(l)))unej(l-1)

Rappel sur les étapes des réseaux de neurones:

  • Étape 1: propagation directe (calcul de la uneje(l))

  • Étape 2a: propagation vers l'arrière: calcul des erreurs δje(l)

  • Étape 2b: propagation vers l'arrière: calcul du gradient ij(l) de J (Θ) en utilisant les erreurs δi(l+1) et le ai(l),

  • Étape 3: descente de gradient: calculez le nouveau θij(l) en utilisant les dégradés ij(l)

Tout d'abord, pour comprendre ce queδi(l)sont , ce qu'ils représentent et pourquoi Andrew NG parle d'eux , vous devez comprendre ce qu'Andrew fait en ce moment et pourquoi nous faisons tous ces calculs: Il calcule le gradientij(l) de θij(l) à utiliser dans l'algorithme de descente de gradient.

Le gradient est défini comme:

ij(l)=Cθij(l)

Comme nous ne pouvons pas vraiment résoudre cette formule directement, nous allons la modifier en utilisant DEUX MAGIC TRICKS pour arriver à une formule que nous pouvons réellement calculer. Cette dernière formule utilisable est:

ij(l)=θ(l+1)Tδ(l+1).(ai(l)(1ai(l)))aj(l1)

Pour arriver à ce résultat, le PREMIER TRUC MAGIQUE est que l'on peut écrire le gradientij(l) de θij(l) en utilisant δi(l):

ij(l)=δi(l)aj(l1)
Avec δi(L) défini (pour l'indice L uniquement) comme:

δi(L)=Czi(l)

Et puis le SECOND MAGIC TRICK utilisant la relation entreδi(l) et δi(l+1), pour définir les autres index,

δi(l)=θ(l+1)Tδ(l+1).(ai(l)(1ai(l)))

Et comme je l'ai dit, nous pouvons enfin écrire une formule dont nous connaissons tous les termes:

jej(l)=θ(l+1)Tδ(l+1).(uneje(l)(1-uneje(l)))unej(l-1)

DÉMONSTRATION DU PREMIER TRUC MAGIQUE: jej(l)=δje(l)unej(l-1)

Nous avons défini:

jej(l)=Cθjej(l)

La règle de chaîne pour les dimensions supérieures (vous devez VRAIMENT lire cette propriété de la règle de chaîne) nous permet d'écrire:

jej(l)=kCzk(l)zk(l)θjej(l)

Cependant, comme:

zk(l)=mθkm(l)unem(l-1)

On peut alors écrire:

zk(l)θjej(l)=θjej(l)mθkm(l)unem(l-1)

Du fait de la linéarité de la différenciation [(u + v) '= u' + v '], on peut écrire:

zk(l)θjej(l)=mθkm(l)θjej(l)unem(l-1)

avec:

jeFk,mje,j,  θkm(l)θjej(l)unem(l-1)=0

jeFk,m=je,j,  θkm(l)θjej(l)unem(l-1)=θjej(l)θjej(l)unej(l-1)=unej(l-1)

Alors pour k = i (sinon c'est clairement égal à zéro):

zje(l)θjej(l)=θjej(l)θjej(l)unej(l-1)+mjθjem(l)θjej(l)unej(l-1)=unej(l-1)+0

Enfin, pour k = i:

zje(l)θjej(l)=unej(l-1)

En conséquence, nous pouvons écrire notre première expression du gradient jej(l):

jej(l)=Czje(l)zje(l)θjej(l)

Ce qui équivaut à:

jej(l)=Czje(l)unej(l-1)

Ou:

jej(l)=δje(l)unej(l-1)

DÉMONSTRATION DU SECOND MAGIC TRICK :δje(l)=θ(l+1)Tδ(l+1).(uneje(l)(1-uneje(l))) ou:

δ(l)=θ(l+1)Tδ(l+1).(une(l)(1-une(l)))

N'oubliez pas que nous avons posé:

δ(l)=Cz(l)   unen   δje(l)=Czje(l)

Encore une fois, la règle de chaîne pour les dimensions supérieures nous permet d'écrire:

δje(l)=kCzk(l+1)zk(l+1)zje(l)

Remplacement Czk(l+1) par δk(l+1), on a:

δje(l)=kδk(l+1)zk(l+1)zje(l)

Maintenant, concentrons-nous sur zk(l+1)zje(l). On a:

zk(l+1)=jθkj(l+1)unej(l)=jθkj(l+1)g(zj(l))

Ensuite, nous dérivons cette expression concernant zk(je):

zk(l+1)zje(l)=jθkj(l)g(zj(l))zje(l)

Du fait de la linéarité de la dérivation, on peut écrire:

zk(l+1)zje(l)=jθkj(l)g(zj(l))zje(l)

Si j i, alors θkj(l)g(zj(l))zje(l)=0

En conséquence:

zk(l+1)zje(l)=θkje(l)g(zje(l))zje(l)

Et alors:

δje(l)=kδk(l+1)θkje(l)g(zje(l))zje(l)

Comme g '(z) = g (z) (1-g (z)), nous avons:

δje(l)=kδk(l+1)θkje(l)g(zje(l))(1-g(zje(l))

Et comme g(zje(l)=uneje(l), on a:

δje(l)=kδk(l+1)θkje(l+1)uneje(l)(1-uneje(l))

Et enfin, en utilisant la notation vectorisée:

jej(l)=[θ(l+1)Tδ(l+1)(uneje(l)(1-uneje(l)))][unej(l-1)]
tmangin
la source
1
Merci pour votre réponse. Je t'ai voté !! Pourriez-vous s'il vous plaît citer les sources que vous avez référées pour arriver à la réponse ... :)
Adithya Upadhya
@tmangin: Après la conférence d'Andrew Ng, nous avons δj(je)est l'erreur du nœud j dans la couche l. Comment avez-vous obtenu la définition deδj(je)=CZj(l).
phuong
@phuong En fait, je vous ai raison de demander: seul le
δje(L)
avec l'indice "l" le plus élevé L est défini comme
δje(L)=Czje(l)
Alors que les deltas avec des indices "l" inférieurs sont définis par la formule suivante:
δje(l)=θ(l+1)Tδ(l+1).(uneje(l)(1-uneje(l)))
tmangin
3
Je recommande fortement de lire la notation vectorielle backprop du calcul des gradients.
CKM
Votre formule finale utilisable n'est pas celle d'Andrew Ng, ce qui rend vraiment frustrant de suivre votre preuve. Il avait ∇ (l) ij = θ (l) Tδ (l + 1). ∗ (a (l) i (1 − a (l) i)) ∗ a (l − 1) j, pas θ (l + 1) Tδ (l + 1)
Aziz Javed
0

Ce calcul aide. La seule différence entre ce résultat et le résultat d'Andrew est à cause de la définition de thêta. Dans la définition d'Andrew, z (l + 1) = thêta (l) * a (l). Dans ce calcul, z (l + 1) = thêta (l + 1) * a (l). Donc, en réalité, il n'y a aucune différence.

Qing Song
la source