• Projets00
  • AI Academy13
  • Veille07 entrées ces 7 derniers jours
  • Outils00
Profil
Déposer un projet
ProjetsAI AcademyVeilleOutilsProfilDéposer
Le cours
47/59
Lecture9 min

Synthèse, formulaire et erreurs fréquentes

La rétropropagation en un paragraphe, le formulaire, et les erreurs fréquentes.

Le retour est passé par six étapes, chacune établie sur sa page, et le formulaire les alignera sans dire ce qu'on récolte à chaque pas. Dans quel ordre s'exécutent-elles, et que récolte-t-on au passage ?

Trois cadres empilés, reliés de haut en bas par des flèches. Le premier porte l'opération a de la couche deux moins y, et sous elle le nom de ce qu'elle produit, le signal d'erreur de la couche deux ; deux flèches de brique en partent vers la droite et mènent au gradient des biais de la couche deux et au gradient de la matrice de la couche deux. Le deuxième porte la transposée de la seconde matrice appliquée à ce signal, et produit la demande sur les activations de la couche un. Le troisième porte le produit terme à terme par la dérivée de ReLU, et produit le signal d'erreur de la couche un ; deux flèches de brique en partent vers le gradient des biais et le gradient de la matrice de la couche un. À gauche, trois notes : l'étiquette entre au premier cadre, la matrice est lue en colonnes au deuxième, la porte est décidée à l'aller au troisième. En pied, la mention que sur tout le jeu on en fait la moyenne.
La colonne du milieu porte ce qui se transmet ; les deux flèches de droite portent ce qui se récolte et ne repart pas.

Chaque cadre transforme ce qu'il reçoit en un objet neuf, et les quatre gradients tombent en chemin, sans qu'il faille repasser par le réseau.

Les trois notes de gauche disent d'où vient ce qui entre dans chaque cadre : l'étiquette au premier, la matrice de la couche de sortie au deuxième, et au troisième la porte, dont l'ouverture a été décidée à l'aller par le signe de z[1]\mathbf{z}^{[1]}z[1].

Le trajet, d'un bout à l'autre

Une image traverse le réseau et donne dix activations, l'étiquette dit ce qu'elles devraient être, et la différence a[2]−y\mathbf{a}^{[2]}-\mathbf{y}a[2]−y est le signal d'erreur, dont une seule composante est négative, celle de la vraie classe, qui pèse autant que les neuf autres réunies.

Ce signal se transforme sans autre calcul en gradient des biais de sortie, et en produit extérieur avec les activations cachées pour le gradient des poids, d'où la proportionnalité exacte à l'activation.

Reporté sur la couche cachée par la transposée de la matrice, qui redistribue au retour ce qu'elle avait collecté à l'aller, il traverse ReLU\mathrm{ReLU}ReLU, qui coupe ce qui arrive à un neurone éteint, et redevient un signal d'erreur. S'il y avait une couche de plus, la même mécanique recommencerait un cran plus bas. Sur tout le jeu, la moyenne de ces corrections est le gradient du coût, exactement.

La vague remonte de la sortie vers l'entrée, couche après couche.

Le réseau est allumé : la grille de l'image de travail à gauche, les trois colonnes remplies chacune à ses valeurs, la colonne cachée très inégalement. Une lueur de brique parcourt le premier faisceau de la gauche vers la droite, en cascade, puis le second, toujours vers la droite : c'est l'aller, et il va vite. Le réseau reste un instant immobile. Puis une lueur repart, du second faisceau cette fois, et elle va de la droite vers la gauche, plus lentement : elle quitte les dix ronds de sortie et gagne la colonne cachée. Elle s'arrête. Une seconde lueur repart du premier faisceau, toujours vers la gauche, et gagne la colonne d'entrée. Le même geste recommence une fois, dans le même ordre : de la sortie vers la couche cachée, puis de la couche cachée vers l'entrée. Rien d'autre ne bouge, aucun nombre ne s'écrit, et les activations ne changent pas.

0:00 / 0:15

Formulaire

δ[2]=a[2]−ygradb[2] ℓ=δ[2]gradW[2] ℓ=δ[2](a[1])Tgrada[1] ℓ=(W[2])Tδ[2]δ[1]=[(W[2])Tδ[2]]⊙ReLU′(z[1])gradb[1] ℓ=δ[1]gradW[1] ℓ=δ[1]xTgradθ CD=1N∑ngradθ ℓn\begin{aligned}\boldsymbol{\delta}^{[2]}&=\mathbf{a}^{[2]}-\mathbf{y}\\ \mathrm{grad}_{\mathbf{b}^{[2]}}\,\ell&=\boldsymbol{\delta}^{[2]}\\ \mathrm{grad}_{W^{[2]}}\,\ell&=\boldsymbol{\delta}^{[2]}\big(\mathbf{a}^{[1]}\big)^{\mathsf{T}}\\ \mathrm{grad}_{\mathbf{a}^{[1]}}\,\ell&=\big(W^{[2]}\big)^{\mathsf{T}}\boldsymbol{\delta}^{[2]}\\ \boldsymbol{\delta}^{[1]}&=\Big[\big(W^{[2]}\big)^{\mathsf{T}}\boldsymbol{\delta}^{[2]}\Big]\odot\mathrm{ReLU}'\big(\mathbf{z}^{[1]}\big)\\ \mathrm{grad}_{\mathbf{b}^{[1]}}\,\ell&=\boldsymbol{\delta}^{[1]}\\ \mathrm{grad}_{W^{[1]}}\,\ell&=\boldsymbol{\delta}^{[1]}\mathbf{x}^{\mathsf{T}}\\ \mathrm{grad}_{\boldsymbol{\theta}}\,C_{\mathcal{D}}&=\tfrac{1}{N}\textstyle\sum_{n}\mathrm{grad}_{\boldsymbol{\theta}}\,\ell_{n}\end{aligned}δ[2]gradb[2]​ℓgradW[2]​ℓgrada[1]​ℓδ[1]gradb[1]​ℓgradW[1]​ℓgradθ​CD​​=a[2]−y=δ[2]=δ[2](a[1])T=(W[2])Tδ[2]=[(W[2])Tδ[2]]⊙ReLU′(z[1])=δ[1]=δ[1]xT=N1​∑n​gradθ​ℓn​​
(4.14)

Les objets du chapitre

SymboleSignificationEnsembleDimensionRôle

δ[l]\boldsymbol{\delta}^{[l]}δ[l]

Signal d'erreur de la couche lll

Rdl\mathbb{R}^{d_{l}}Rdl​

dl×1d_{l}\times 1dl​×1

Tout ce qu'il faut savoir de l'aval pour dériver la couche lll

u⊙v\mathbf{u}\odot\mathbf{v}u⊙v

Produit de Hadamard

Rm\mathbb{R}^{m}Rm

m×1m\times 1m×1

Appliquer la porte d'activation, sans mélanger les indices

uvT\mathbf{u}\mathbf{v}^{\mathsf{T}}uvT

Produit extérieur

Mm,n(R)\mathcal{M}_{m,n}(\mathbb{R})Mm,n​(R)

m×nm\times nm×n

Écrire d'un coup les mnmnmn dérivées d'une matrice de poids

ReLU′(u)\mathrm{ReLU}'(u)ReLU′(u)

1{u>0}\mathbb{1}\{u>0\}1{u>0}, convention ReLU′(0)=0\mathrm{ReLU}'(0)=0ReLU′(0)=0

{0,1}\{0,1\}{0,1}

scalaire, appliqué composante par composante

Décider si un neurone laisse passer le signal de retour

ℓn\ell_{n}ℓn​

Perte de l'exemple nnn, vue comme fonction des paramètres

Rp→R≥0\mathbb{R}^{p}\rightarrow\mathbb{R}_{\geq 0}Rp→R≥0​

p=101 770p=101\,770p=101770 en entrée

Ce qu'on dérive. À ne pas confondre avec le ℓ\ellℓ du chapitre 2, qui prend une sortie et une étiquette

CDC_{\mathcal{D}}CD​

Coût sur le jeu

Rp→R≥0\mathbb{R}^{p}\rightarrow\mathbb{R}_{\geq 0}Rp→R≥0​

ppp en entrée

Ce que la descente minimise

gradθ ℓn\mathrm{grad}_{\boldsymbol{\theta}}\,\ell_{n}gradθ​ℓn​

Gradient de la perte d'un exemple

Rp→Rp\mathbb{R}^{p}\rightarrow\mathbb{R}^{p}Rp→Rp

p×1p\times 1p×1 en sortie

Ce que l'algorithme calcule

Les indices, tenus dans tout le chapitre

kkk indexe la couche de sortie, jjj la couche cachée, iii les pixels d'entrée ; W[l]W^{[l]}W[l] désigne la couche lll et θt\theta_{t}θt​ l'itération ttt. La lettre iii change de rôle en un seul endroit, la formule (4.1), où θi\theta_{i}θi​ est la iii-ième composante de θ\boldsymbol{\theta}θ. Partout ailleurs la convention n'a pas varié, et Wkj[2]W_{kj}^{[2]}Wkj[2]​ se lit toujours « le poids qui va du neurone caché jjj vers le neurone de sortie kkk ».

L'algorithme, en pseudo-code

TexteUn gradient d'exemple, de bout en bout
1ENTRÉE   x (784), c la classe, theta = {W1, b1, W2, b2}2SORTIE   grad_W1, grad_b1, grad_W2, grad_b23 4ALLER5  x reçu                                   garder x6  z1 <- W1 x + b1                          garder z17  a1 <- ReLU(z1)                           garder a18  z2 <- W2 a1 + b29  a2 <- softmax(z2)                        garder a210 11RETOUR12  d2      <- a2 - onehot(c)                (10)13  grad_b2 <- d2                            (10)14  grad_W2 <- d2 a1^T                       (10, 128)15  d1      <- (W2^T d2) ⊙ ReLU'(z1)         (128)16  grad_b1 <- d1                            (128)17  grad_W1 <- d1 x^T                        (128, 784)18 19COÛT     1 propagation avant, 1 propagation arrière20         1 050 nombres gardés entre les deux

Erreurs fréquentes

Ce qu'on écritCe qu'il faut écrirePage

La rétropropagation approche le gradient

Elle le calcule exactement, puisque c'est la règle de la chaîne organisée et non une méthode numérique. Ce sont les différences finies qui approchent

2

On retient la demande la plus forte parmi les dix

On les additionne, parce que la règle de la chaîne à plusieurs chemins l'impose ; retenir la plus forte donnerait +0,022372+0{,}022372+0,022372 au lieu de +0,006402+0{,}006402+0,006402

8

gradW[2] ℓ=a[1](δ[2])T\mathrm{grad}_{W^{[2]}}\,\ell=\mathbf{a}^{[1]}(\boldsymbol{\delta}^{[2]})^{\mathsf{T}}gradW[2]​ℓ=a[1](δ[2])T

gradW[2] ℓ=δ[2](a[1])T\mathrm{grad}_{W^{[2]}}\,\ell=\boldsymbol{\delta}^{[2]}(\mathbf{a}^{[1]})^{\mathsf{T}}gradW[2]​ℓ=δ[2](a[1])T, car les deux produits existent et donnent 128×10128\times 10128×10 contre 10×12810\times 12810×128, et seul le second a la forme de W[2]W^{[2]}W[2]

5

Une dérivée nulle veut dire un poids nul

Elle veut dire que la perte ne dépend pas de ce poids sur cet exemple, parce que l'activation ou le pixel est nul. Le poids, lui, vaut ce qu'il vaut

9

La dérivée par rapport au biais dépend des activations

Elle vaut δk\delta_{k}δk​ et rien d'autre, ce qui distingue la voie du biais des deux autres

4

La transposée est là pour que les dimensions tombent juste

Elle est la redistribution : la colonne jjj de W[2]W^{[2]}W[2] rend à l'activation jjj ce que la ligne kkk lui avait pris à l'aller

8

Le réseau « pense » que l'image est un 2

Il ne pense rien : l'étiquette impose la réponse attendue, et c'est elle qui rend δ2\delta_{2}δ2​ négatif

6

Un neurone éteint reçoit une petite correction

Il n'en reçoit aucune, puisque la porte annule sa composante et que les dix poids qui partent de lui ont une dérivée exactement nulle

5 et 9

La moyenne des corrections est proportionnelle au gradient

Elle est le gradient, sans facteur ni approximation : c'est la linéarité de la dérivation

10

δ\boldsymbol{\delta}δ est le gradient par rapport aux activations

δ[l]=gradz[l] ℓ\boldsymbol{\delta}^{[l]}=\mathrm{grad}_{\mathbf{z}^{[l]}}\,\ellδ[l]=gradz[l]​ℓ, par rapport aux sommes pondérées. Les deux diffèrent d'un facteur ReLU′\mathrm{ReLU}'ReLU′, et le neurone 000 de la mesure 3 les sépare : −0,009335-0{,}009335−0,009335 contre 000

3 et 9

Les 🧪 de ce chapitre

n°PageCe qu'elle contrôle

35

3

La somme nulle et l'égalité ∣δc∣=∑k≠c∣δk∣|\delta_{c}|=\sum_{k\neq c}|\delta_{k}|∣δc​∣=∑k=c​∣δk​∣, sur les nombres

36

4

Le sens de la poussée d'un biais, lu sur le signe de la dérivée

37

4

Pourquoi la dérivée d'un biais ne dépend d'aucune activation

38

5

Le rapport de deux corrections de poids d'une même ligne

39

5

Ce que devient un poids qui part d'un neurone éteint

40

6

Le signe qui décide qu'un poids augmente, et la classe qu'il désigne

41

6

Les deux raisons pour lesquelles l'analogie de Hebb est inexacte

42

7

Le sens demandé à une activation reliée par un poids négatif

43

8

Pourquoi on somme les dix demandes plutôt que d'en choisir une

44

8

Les dimensions de (W[2])Tδ[2](W^{[2]})^{\mathsf{T}}\boldsymbol{\delta}^{[2]}(W[2])Tδ[2], et celles du produit sans transposition

45

9

Le compte des lignes et des colonnes nulles de gradW[1] ℓ\mathrm{grad}_{W^{[1]}}\,\ellgradW[1]​ℓ

46

10

D'où vient la précision 0,10320{,}10320,1032 d'un réseau qui répond toujours 222

47

10

Ce que dit un cosinus de −0,03-0{,}03−0,03 entre deux gradients d'exemples

48

11

Pourquoi l'écart relatif et l'écart absolu ne classent pas les blocs pareil

ExerciceContrôle final15 min

Un réseau 784→32→10784\rightarrow 32\rightarrow 10784→32→10, même structure, même perte. Une image dont 200200200 pixels sont non nuls, et pour laquelle 121212 neurones cachés sont allumés. Répondre sans écrire une seule ligne de code.

Attendu · Les quatre dimensions, le compte total de coefficients, les deux comptes de zéros, et le nombre de propagations avant des différences finies centrées.

    La suite du parcours

    Tout ce qui précède porte sur deux couches et sur ReLU\mathrm{ReLU}ReLU, et les identités ne changeront pas de nature, mais leur écriture doit cesser de nommer W[2]W^{[2]}W[2] et ReLU′\mathrm{ReLU}'ReLU′ pour valoir en général.

    C'est l'objet du chapitre 5 : la règle de la chaîne multivariée sous forme jacobienne, la récursion qui donne δ[l]\boldsymbol{\delta}^{[l]}δ[l] à partir de δ[l+1]\boldsymbol{\delta}^{[l+1]}δ[l+1], et le traitement d'une fonction d'activation quelconque.

    D'où vient l'ordre de ce chapitre

    L'ordre des notions suit celui du chapitre sur la rétropropagation de la série de Grant Sanderson sur les réseaux de neurones, publiée sous le nom 3Blue1Brown. Le texte, les définitions, les sept propositions, les huit mesures et les animations sont propres à ce cours. Quatre écarts y sont pris et signalés : l'entropie croisée au lieu du coût quadratique, page 2 ; la réserve « en gros le gradient » levée, page 10 ; la sensibilité chiffrée par la mesure du chapitre 3 plutôt que par un exemple inventé, page 2 ; et la vérification numérique de chaque identité, page 11.

    Leçon suivante
    PrécédenteL'algorithme, et sa vérificationSuivanteLe cadre du cours