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

Un seul exemple, et ce que sa sortie réclame

On suit une seule image, et on lit sur des nombres ce que sa sortie réclame.

Tout ce qui suit se joue sur une seule image, et il faut la choisir sans tricher. Le réseau ne l'a jamais vue et il n'a rien appris de personne, mais il va tout de même rendre ses dix nombres. Que lit-on sur ces dix nombres, et sur lesquels peut-on agir ?

À gauche, l'image d'entraînement numéro cinq, un deux manuscrit noir et gris sur fond blanc, dessinée en cases pleines dans une grille de vingt-huit sur vingt-huit dont les bords sont cotés un et vingt-huit. À droite, un relevé : l'indice de l'exemple vaut cinq, l'étiquette deux, les pixels non nuls cent quatre-vingt-huit sur sept cent quatre-vingt-quatre, les neurones cachés allumés cinquante-sept sur cent vingt-huit et les éteints soixante et onze. Plus bas, le nombre de coefficients du gradient de la première matrice exactement nuls sur cette image : quatre-vingt-neuf mille six cent trente-six sur cent mille trois cent cinquante-deux, soit quatre-vingt-neuf virgule trente-deux pour cent. En pied, la mention réseau non entraîné, graine zéro.
L'exemple est désigné par un critère, jamais tiré au sort.

C'est la première image de classe 222 du jeu d'entraînement, celle d'indice n=5n=5n=5, et le réseau qui la reçoit porte les poids de son initialisation, graine 000.

Le dernier chiffre du relevé se laisse déjà lire comme un indice : près de neuf dixièmes du gradient de la première matrice sont exactement nuls sur cette image.

« Souhaite », traduit une fois pour toutes

Ce chapitre dira qu'un neurone « souhaite monter », et la phrase est une façon de parler d'une dérivée partielle strictement négative, rien de plus. Un neurone ne souhaite rien : ∂ℓ/∂z<0\partial\ell/\partial z<0∂ℓ/∂z<0 signifie que la perte décroît quand zzz croît, et c'est tout ce que le mot recouvre. La même traduction vaut pour « demande », « réclame » et « veut », et le mot ne recouvre jamais rien d'autre.

Ce que les sorties de programme affichent

Les blocs de sortie donnent des valeurs arrondies, quatre ou six décimales selon la colonne, alors que les produits, les quotients et les sommes cités dans le texte sont calculés sur les valeurs non arrondies. Reposer une division avec les chiffres affichés ne redonne donc pas toujours le dernier chiffre annoncé, et l'écart vient de l'affichage, jamais du calcul.

Ce que le réseau répond

L'exemple de travail · cours/lecon4/mesures.py, mesure 1

  critère            première image de classe 2 du jeu d'entraînement
  indice retenu      n = 5
  étiquette          c = 2

  -- La sortie du réseau non entraîné --------------------------------------
      k    a_k         delta_k
      0    0.1366      +0.1366
      1    0.1098      +0.1098
      2    0.2445      -0.7555
      3    0.0911      +0.0911
      4    0.0796      +0.0796
      5    0.1308      +0.1308
      6    0.0478      +0.0478
      7    0.0574      +0.0574
      8    0.0563      +0.0563
      9    0.0462      +0.0462

  perte de cet exemple            1.408379
  perte du hasard, ln 10          2.302585
  classe prédite                  2
  la plus grande activation       0.2445   (classe 2)

  -- La couche cachée ------------------------------------------------------
  neurones cachés allumés         57 sur 128
  neurones cachés éteints         71 sur 128
  pixels non nuls de l'image      188 sur 784

Lecture

  • ·

    Les dix activations viennent d'un tirage, et l'ordre dans lequel elles tombent n'apprend rien sur l'image : c'est exactement ce qu'on attend d'un réseau non entraîné.

  • ·

    La plus grande est pourtant celle de la classe 222, à 0,24450{,}24450,2445 : ce réseau, qui ne sait rien, classe cette image correctement, par accident, et sa perte de 1,4081{,}4081,408 est même meilleure que celle du hasard, ln⁡10=2,303\ln 10=2{,}303ln10=2,303.

  • ·

    Un réseau non entraîné ne se trompe pas systématiquement ; il répond n'importe quoi, et n'importe quoi tombe juste environ une fois sur dix. La mesure 4 donne la précision de ce réseau sur le jeu de test avant ses deux cents pas : 0,13140{,}13140,1314.

  • ·

    575757 neurones cachés sur 128128128 sont allumés, et ce nombre n'est pas anodin : les 717171 autres sont éteints, et un neurone éteint ne fait rien passer, ni à l'aller ni au retour.

Dix barres verticales, une par classe, numérotées de zéro à neuf et toutes de hauteurs voisines. La plus haute, celle de la classe deux, est en brique et porte sa valeur, zéro virgule deux quatre quatre cinq ; les neuf autres sont grises et ne portent pas de valeur. Une ligne en pointillé marque la hauteur zéro virgule un, celle de dix classes équiprobables. En pied, la perte de cet exemple, un virgule quatre cent huit mille trois cent soixante-dix-neuf, est comparée à celle du hasard, deux virgule trois cent deux mille cinq cent quatre-vingt-cinq, et deux mentions disent que la plus haute est la classe deux et que c'est la bonne, par accident.
Un réseau non entraîné ne se trompe pas systématiquement : il répond n'importe quoi, et n'importe quoi tombe juste une fois sur dix.
L'image n° 5, de classe 222, traverse le réseau non entraîné : les dix sorties s'allument à leur valeur mesurée.

Sur la gauche, une grille de vingt-huit cases sur vingt-huit porte en gris l'image d'un deux manuscrit. Les cases encrées se détachent une à une et rejoignent, en glissant vers la droite, les rangs qui leur correspondent dans la première colonne du réseau ; les cases blanches ne bougent pas. La colonne s'assombrit alors, chaque rond à la valeur de son pixel. Une lueur de brique traverse le premier faisceau de la gauche vers la droite, et la colonne cachée s'allume à son tour, très inégalement : quelques ronds sont presque noirs, la plupart restent vides. Une seconde lueur traverse le second faisceau, et les dix ronds de la colonne de sortie se remplissent. À droite de chacun s'inscrit alors son activation mesurée, de zéro virgule zéro quatre six deux à zéro virgule deux quatre quatre cinq. Le rond de la classe deux, le plus sombre des dix, passe au trait de brique avec son étiquette, et sa valeur reste seule en brique sous les neuf autres.

0:00 / 0:12

Le signal d'erreur, et pourquoi il dérive par rapport à z\mathbf{z}z

Signal d'erreur d'une coucheerror signal, delta

δ[l]:=gradz[l] ℓ∈Rdl\boldsymbol{\delta}^{[l]}:=\mathrm{grad}_{\mathbf{z}^{[l]}}\,\ell\in\mathbb{R}^{d_{l}}δ[l]:=gradz[l]​ℓ∈Rdl​, vecteur colonne de même dimension que z[l]\mathbf{z}^{[l]}z[l]. Sa kkk-ième composante est ∂ℓ/∂zk[l]\partial\ell/\partial z_{k}^{[l]}∂ℓ/∂zk[l]​, un scalaire. Il y a un signal d'erreur par couche : δ[2]∈R10\boldsymbol{\delta}^{[2]}\in\mathbb{R}^{10}δ[2]∈R10, δ[1]∈R128\boldsymbol{\delta}^{[1]}\in\mathbb{R}^{128}δ[1]∈R128.

On dérive par rapport à z[l]\mathbf{z}^{[l]}z[l] et non par rapport à a[l]\mathbf{a}^{[l]}a[l] parce que z[l]\mathbf{z}^{[l]}z[l] est l'endroit où les paramètres entrent : z[l]=W[l]a[l−1]+b[l]\mathbf{z}^{[l]}=W^{[l]}\mathbf{a}^{[l-1]}+\mathbf{b}^{[l]}z[l]=W[l]a[l−1]+b[l]. Une fois δ[l]\boldsymbol{\delta}^{[l]}δ[l] connu, les gradients de W[l]W^{[l]}W[l] et de b[l]\mathbf{b}^{[l]}b[l] s'en déduisent sans autre calcul.

Ce que δ[2]\boldsymbol{\delta}^{[2]}δ[2] demande porte sur z[2]\mathbf{z}^{[2]}z[2], et z[2]\mathbf{z}^{[2]}z[2] n'est pas modifiable, puisque c'est une valeur calculée. Les seules quantités qu'on puisse modifier sont les poids et les biais : l'image est une donnée, et les activations sont des résultats.

δ[2]=gradz[2] ℓ=a[2]−y ∈R10,y=onehot(c)\boldsymbol{\delta}^{[2]}=\mathrm{grad}_{\mathbf{z}^{[2]}}\,\ell=\mathbf{a}^{[2]}-\mathbf{y}\ \in\mathbb{R}^{10},\qquad \mathbf{y}=\mathrm{onehot}(c)δ[2]=gradz[2]​ℓ=a[2]−y ∈R10,y=onehot(c)
(4.2)
Le chapitre 2, page 6, pose le softmax et la perte d'entropie croisée, et n'en dérive aucun gradient. Cette identité est donc admise, comme la règle de la chaîne, et la mesure 2 confronte l'algorithme entier aux différences finies.

Les deux formes de la règle de la chaîne

g:R→R, f:R→R deˊrivables⟹(f∘g)′(t)=f′(g(t))⋅g′(t)g:\mathbb{R}\rightarrow\mathbb{R},\ f:\mathbb{R}\rightarrow\mathbb{R}\ \text{dérivables}\quad\Longrightarrow\quad (f\circ g)'(t)=f'\big(g(t)\big)\cdot g'(t)g:R→R, f:R→R deˊrivables⟹(f∘g)′(t)=f′(g(t))⋅g′(t)
(4.3)
u influence C aˋ travers v1,…,vm⟹∂C∂u=∑k=1m∂C∂vk ∂vk∂uu\ \text{influence}\ C\ \text{à travers}\ v_{1},\ldots,v_{m}\quad\Longrightarrow\quad \frac{\partial C}{\partial u}=\sum_{k=1}^{m}\frac{\partial C}{\partial v_{k}}\,\frac{\partial v_{k}}{\partial u}u influence C aˋ travers v1​,…,vm​⟹∂u∂C​=k=1∑m​∂vk​∂C​∂u∂vk​​
(4.4)
Un biais influence la perte par un seul chemin, une activation cachée par dix.

On somme dans la seconde forme parce que chaque chemin d'influence apporte sa contribution au premier ordre, et que des contributions au premier ordre s'ajoutent. Ce n'est pas une commodité de calcul.

Ces deux énoncés sont admis

Leur preuve demande le contrôle du terme o(s)o(s)o(s) de l'approximation au premier ordre f(t+s)=f(t)+sf′(t)+o(s)f(t+s)=f(t)+sf'(t)+o(s)f(t+s)=f(t)+sf′(t)+o(s) dans une composition, et c'est cet outil-là, et non l'approximation elle-même, que le parcours pose dans son bloc de mathématiques. Il vérifie en revanche numériquement toutes les identités qu'il en tire, et la mesure 2 confronte 160160160 dérivées aux différences finies centrées pour un écart relatif maximal de 7,0⋅10−97{,}0\cdot 10^{-9}7,0⋅10−9. Une vérification n'est pas une preuve, et le chapitre dit exactement ce qu'elle établit et ce qu'elle n'établit pas.

Une seule composante est négative

DérivationSeule la composante de la vraie classe est strictement négative (proposition 1)
1

Hypothèses

  • ·

    a[2]=softmax(z[2])∈Δ9∘\mathbf{a}^{[2]}=\mathrm{softmax}(\mathbf{z}^{[2]})\in\Delta^{\circ}_{9}a[2]=softmax(z[2])∈Δ9∘​, l'intérieur du simplexe : 0<ak<10<a_{k}<10<ak​<1 pour tout kkk, et ∑kak=1\sum_{k}a_{k}=1∑k​ak​=1.

  • ·

    y=onehot(c)\mathbf{y}=\mathrm{onehot}(c)y=onehot(c) : yc=1y_{c}=1yc​=1 et yk=0y_{k}=0yk​=0 pour k≠ck\neq ck=c.

  • ·

    δ[2]=a[2]−y\boldsymbol{\delta}^{[2]}=\mathbf{a}^{[2]}-\mathbf{y}δ[2]=a[2]−y, formule (4.2), admise.

2

Propriétés utilisées

  • ·

    L'image de softmax\mathrm{softmax}softmax est incluse dans l'intérieur du simplexe : aucune coordonnée n'atteint 000 ni 111

  • ·

    Soustraction composante par composante

3

Étapes

  1. La composante de la vraie classe. δc=ac−yc=ac−1\delta_{c}=a_{c}-y_{c}=a_{c}-1δc​=ac​−yc​=ac​−1, et ac<1a_{c}<1ac​<1 strictement, donc δc<0\delta_{c}<0δc​<0.

  2. Les neuf autres. Pour k≠ck\neq ck=c, δk=ak−0=ak\delta_{k}=a_{k}-0=a_{k}δk​=ak​−0=ak​, et ak>0a_{k}>0ak​>0 strictement, donc δk>0\delta_{k}>0δk​>0.

  3. δc=ac−1<0etδk=ak>0pour tout k≠c\delta_{c}=a_{c}-1<0\qquad\text{et}\qquad \delta_{k}=a_{k}>0\quad\text{pour tout }k\neq cδc​=ac​−1<0etδk​=ak​>0pour tout k=c

    Les deux inégalités sont strictes parce que le softmax n'atteint jamais les bords du simplexe.

4

Résultat

#{k : δk<0}=1,#{k : δk>0}=9\#\{k\ :\ \delta_{k}<0\}=1,\qquad \#\{k\ :\ \delta_{k}>0\}=9#{k : δk​<0}=1,#{k : δk​>0}=9
5

Interprétation

δc=∂ℓ/∂zc<0\delta_{c}=\partial\ell/\partial z_{c}<0δc​=∂ℓ/∂zc​<0 signifie qu'augmenter zcz_{c}zc​ fait baisser la perte, et pour les neuf autres ∂ℓ/∂zk>0\partial\ell/\partial z_{k}>0∂ℓ/∂zk​>0 signifie que les baisser la fait baisser aussi. C'est cela, et rien d'autre, que veut dire « le neurone de la bonne classe doit monter et les neuf autres descendre ».

Ce que ce résultat ne dit pas

  • ·

    L'énoncé porte sur les signes et non sur les tailles : il ne dit pas de combien pousser, et il ne dit rien de ce qui arrive après un pas.

  • ·

    Il vaut pour la sortie d'un softmax avec entropie croisée, et avec un autre coût le point de départ change, la proposition avec lui.

Dix barres verticales de part et d'autre d'un axe horizontal marqué zéro, une par classe, numérotées de zéro à neuf sous le cadre. Neuf montent au-dessus de l'axe, en brique. Une seule descend sous l'axe, en ardoise, bien plus longue que les autres : celle de la classe deux. À droite du cadre, deux mentions : un delta positif fait descendre l'activation, un delta négatif la fait monter. En pied, la valeur de la composante négative, moins zéro virgule sept cent cinquante-cinq mille quatre cent soixante et un, et la mention que sa valeur absolue égale la somme des neuf autres.
La vraie classe pèse exactement autant que les neuf autres réunies.
Le signal d'erreur de sortie en dix barres signées, neuf vers le haut et une vers le bas, à l'échelle mesurée.

Le réseau pâlit et passe au second plan. Une ligne horizontale se trace au travers de l'écran, et dix barres verticales poussent depuis cette ligne, une par neurone de sortie. Neuf montent, très courtes, d'inégales longueurs ; la troisième descend, et elle descend jusqu'au bas du cadre, incomparablement plus longue que les neuf autres. Sa valeur s'inscrit à son extrémité : moins zéro virgule sept cinq cinq cinq. Les neuf barres courtes passent ensuite au brique et se déplacent l'une après l'autre au-dessus de la troisième, où elles s'empilent bout à bout en une seule colonne qui monte à mesure. Quand la neuvième se pose, un trait de brique marque le sommet de la pile, un second marque le bas de la barre descendante, et les deux sont à la même distance de la ligne. La valeur de la pile s'inscrit : plus zéro virgule sept cinq cinq cinq.

0:00 / 0:12

La somme est nulle, et la vraie classe pèse autant que les neuf autres

DérivationLa somme des dix composantes est nulle, et ∣δc∣=∑k≠c∣δk∣|\delta_{c}|=\sum_{k\neq c}|\delta_{k}|∣δc​∣=∑k=c​∣δk​∣ (proposition 2)
1

Hypothèses

  • ·

    Les hypothèses de la proposition 1.

  • ·

    ∑kak=1\sum_{k}a_{k}=1∑k​ak​=1 et ∑kyk=1\sum_{k}y_{k}=1∑k​yk​=1.

2

Propriétés utilisées

  • ·

    Linéarité de la somme

  • ·

    Proposition 1 : δk>0\delta_{k}>0δk​>0 pour k≠ck\neq ck=c, donc ∣δk∣=δk|\delta_{k}|=\delta_{k}∣δk​∣=δk​

3

Étapes

  1. ∑k=09δk=∑k=09ak−∑k=09yk=1−1=0\sum_{k=0}^{9}\delta_{k}=\sum_{k=0}^{9}a_{k}-\sum_{k=0}^{9}y_{k}=1-1=0k=0∑9​δk​=k=0∑9​ak​−k=0∑9​yk​=1−1=0

    Les deux vecteurs sont des lois de probabilité sur dix classes : leurs coordonnées somment à un.

  2. On isole la composante de la vraie classe. De δc+∑k≠cδk=0\delta_{c}+\sum_{k\neq c}\delta_{k}=0δc​+∑k=c​δk​=0 on tire −δc=∑k≠cδk-\delta_{c}=\sum_{k\neq c}\delta_{k}−δc​=∑k=c​δk​.

  3. Par la proposition 1, δc<0\delta_{c}<0δc​<0 donc −δc=∣δc∣-\delta_{c}=|\delta_{c}|−δc​=∣δc​∣, et δk>0\delta_{k}>0δk​>0 donc δk=∣δk∣\delta_{k}=|\delta_{k}|δk​=∣δk​∣ pour k≠ck\neq ck=c.

  4. ∣δc∣=1−ac=∑k≠cak=∑k≠c∣δk∣|\delta_{c}|=1-a_{c}=\sum_{k\neq c}a_{k}=\sum_{k\neq c}|\delta_{k}|∣δc​∣=1−ac​=k=c∑​ak​=k=c∑​∣δk​∣
4

Résultat

∑kδk=0et∣δc∣=1−ac=∑k≠c∣δk∣\sum_{k}\delta_{k}=0\qquad\text{et}\qquad |\delta_{c}|=1-a_{c}=\sum_{k\neq c}|\delta_{k}|k∑​δk​=0et∣δc​∣=1−ac​=k=c∑​∣δk​∣
5

Interprétation

La correction portée sur le neurone de la vraie classe pèse exactement autant que les neuf autres réunies, et ∣δc∣=1−ac|\delta_{c}|=1-a_{c}∣δc​∣=1−ac​ : plus le réseau se trompe, plus aca_{c}ac​ est petit, plus cette correction est grande. C'est le sens précis qu'il faut donner à l'idée que les corrections sont proportionnelles à l'écart, où la proportionnalité porte sur 1−ac1-a_{c}1−ac​ et non sur une notion vague de distance.

Ce que ce résultat ne dit pas

  • ·

    L'égalité porte sur les valeurs absolues, donc sur des tailles. Elle ne dit pas que la correction du neurone ccc produit sur la perte autant d'effet que celle des neuf autres.

La proposition 2 sur les nombres mesurés · cours/lecon4/mesures.py, mesure 1

  -- Contrôle de la proposition 2 sur ces nombres --------------------------
  somme des dix composantes       +8.327e-17
  |delta_2|                       0.755461
  somme des neuf autres           0.755461
  écart entre les deux            1.110e-16

Lecture

  • ·

    La somme des dix composantes vaut 8,3⋅10−178{,}3\cdot 10^{-17}8,3⋅10−17, c'est-à-dire zéro à la précision machine, l'erreur d'arrondi d'une somme de dix flottants.

  • ·

    ∣δ2∣=0,755461|\delta_{2}|=0{,}755461∣δ2​∣=0,755461 et la somme des neuf autres vaut 0,7554610{,}7554610,755461 à 1,1⋅10−161{,}1\cdot 10^{-16}1,1⋅10−16 près, donc l'égalité de la proposition 2 est vérifiée jusqu'au dernier chiffre représentable.

  • ·

    ∣δ2∣=1−a2=1−0,2445=0,7555|\delta_{2}|=1-a_{2}=1-0{,}2445=0{,}7555∣δ2​∣=1−a2​=1−0,2445=0,7555, qui est la lecture directe de la formule.

Vérification rapide n° 35

Les dix composantes de δ[2]\boldsymbol{\delta}^{[2]}δ[2] sont données par la mesure 1 : +0,1366+0{,}1366+0,1366, +0,1098+0{,}1098+0,1098, −0,7555-0{,}7555−0,7555, +0,0911+0{,}0911+0,0911, +0,0796+0{,}0796+0,0796, +0,1308+0{,}1308+0,1308, +0,0478+0{,}0478+0,0478, +0,0574+0{,}0574+0,0574, +0,0563+0{,}0563+0,0563, +0,0462+0{,}0462+0,0462.

  1. a

    Vérifier à la main que leur somme est nulle, et que ∣δ2∣|\delta_{2}|∣δ2​∣ égale la somme des neuf autres, à l'arrondi de l'affichage près.

  2. b

    Que vaudrait ∣δ2∣|\delta_{2}|∣δ2​∣ si le réseau accordait 0,90{,}90,9 à la classe 222 ?

  3. c

    Vers quelle valeur ∣δ2∣|\delta_{2}|∣δ2​∣ tend-il quand a2a_{2}a2​ s'approche de 111, et la proposition 1 permet-elle de l'atteindre ?

Aucune réponse à cliquer : il y a un calcul à faire.

Leçon suivante
PrécédenteCe qu'on cherche, et ce qu'on ne sait pas encore calculerSuivanteLa première voie : le biais