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

La troisième voie : les activations

Une correction qu'on ne peut pas appliquer telle quelle, et d'où vient le mot propagation.

Il reste les cent mille coefficients de la première couche, et rien de ce qui précède ne les atteint. La troisième prise, l'activation d'avant, n'est pas un réglage : que peut-on en tirer tout de même ?

Un tableau de quatre lignes, une par neurone caché. Chacune donne le poids qui relie ce neurone au neurone de sortie de la classe deux, le produit de ce poids par le signal d'erreur, et le sens demandé. Les deux poids positifs, plus zéro virgule deux trois six trois et plus zéro virgule zéro six quatre zéro, donnent des produits négatifs et demandent à l'activation de monter ; les deux poids négatifs, moins zéro virgule zéro quatre deux zéro et moins zéro virgule zéro deux trois deux, donnent des produits positifs et demandent à l'activation de descendre. Une flèche verticale indique le sens sur chaque ligne. En pied, le signal d'erreur vaut moins zéro virgule sept cent cinquante-cinq mille quatre cent soixante et un sur les quatre lignes, et deux mentions disent qu'il est le même partout et que seul le poids change.
Un poids positif transmet la demande telle quelle ; un poids négatif la retourne.

Une seule quantité varie d'une ligne à l'autre, le poids, et c'est elle qui décide du sens : le signal d'erreur, lui, est le même sur les quatre lignes puisqu'il s'agit du même neurone de sortie.

La proposition qui suit dit d'où vient ce signe, et pourquoi les tailles suivent le même rapport que les poids. Ce qu'elle ouvre, ce sont les 100 480100\,480100480 coefficients de la première couche, que rien n'a encore atteints.

Ce qu'un seul neurone de sortie demande à une activation

DérivationUn neurone de sortie contribue à ∂ℓ/∂aj[1]\partial\ell/\partial a_{j}^{[1]}∂ℓ/∂aj[1]​ par δk[2]Wkj[2]\delta_{k}^{[2]}W_{kj}^{[2]}δk[2]​Wkj[2]​ (proposition 5)
1

Hypothèses

  • ·

    zk[2]=∑jWkj[2]aj[1]+bk[2]z_{k}^{[2]}=\sum_{j}W_{kj}^{[2]}a_{j}^{[1]}+b_{k}^{[2]}zk[2]​=∑j​Wkj[2]​aj[1]​+bk[2]​.

  • ·

    W[2]W^{[2]}W[2] est fixé : les poids ne dépendent pas des activations.

  • ·

    δ[2]=gradz[2] ℓ\boldsymbol{\delta}^{[2]}=\mathrm{grad}_{\mathbf{z}^{[2]}}\,\ellδ[2]=gradz[2]​ℓ.

2

Chaîne de dépendances

a_j^{[1]} → z_k^{[2]} → a^{[2]} → ℓ

3

Propriétés utilisées

  • ·

    Dérivation d'une somme dont un seul terme contient aja_{j}aj​

  • ·

    Règle de la chaîne, forme simple, sur le chemin qui passe par zkz_{k}zk​

4

Étapes

  1. ∂zk[2]∂aj[1]=Wkj[2]\frac{\partial z_{k}^{[2]}}{\partial a_{j}^{[1]}}=W_{kj}^{[2]}∂aj[1]​∂zk[2]​​=Wkj[2]​

    Dans ∑j′Wkj′aj′\sum_{j'}W_{kj'}a_{j'}∑j′​Wkj′​aj′​, un seul terme contient aja_{j}aj​, et son facteur est WkjW_{kj}Wkj​.

  2. ∂ℓ∂zk[2] ∂zk[2]∂aj[1]⏟le chemin par zk=δk[2] Wkj[2]\underbrace{\frac{\partial\ell}{\partial z_{k}^{[2]}}\,\frac{\partial z_{k}^{[2]}}{\partial a_{j}^{[1]}}}_{\text{le chemin par }z_{k}}=\delta_{k}^{[2]}\,W_{kj}^{[2]}le chemin par zk​∂zk[2]​∂ℓ​∂aj[1]​∂zk[2]​​​​=δk[2]​Wkj[2]​
5

Résultat

contribution de k aˋ ∂ℓ∂aj[1] = δk[2] Wkj[2]\text{contribution de }k\ \text{à}\ \frac{\partial\ell}{\partial a_{j}^{[1]}}\ =\ \delta_{k}^{[2]}\,W_{kj}^{[2]}contribution de k aˋ ∂aj[1]​∂ℓ​ = δk[2]​Wkj[2]​
6

Interprétation

À kkk fixé cette contribution est proportionnelle à WkjW_{kj}Wkj​, et si δk<0\delta_{k}<0δk​<0, ce qui est le cas du neurone de la vraie classe, elle est du signe opposé à WkjW_{kj}Wkj​ : les activations reliées par un poids positif doivent monter, celles reliées par un poids négatif doivent descendre. Le sens demandé se lit sur un signe, sans aucun calcul.

Ce que ce résultat ne dit pas

  • ·

    C'est la contribution d'un seul neurone de sortie, et il y en a dix.

  • ·

    La contribution est une dérivée, pas une action : aj[1]a_{j}^{[1]}aj[1]​ n'est pas un paramètre, et la section suivante en tire la conséquence.

Le sens demandé, lu sur le signe du poids · cours/lecon4/mesures.py, mesure 3

  -- Le signe se lit sur le poids, ligne k = 2 (delta_2 < 0) ---------------
      j       W^[2]_2j      delta_2 W_2j     l'activation doit
      1       +0.2363       -0.178491       monter
      4       +0.0640       -0.048331       monter
      2       -0.0420       +0.031698       descendre
      7       -0.0232       +0.017562       descendre

Lecture

  • ·

    δ2=−0,7555\delta_{2}=-0{,}7555δ2​=−0,7555 est le même pour les quatre lignes, seul le signe de W2jW_{2j}W2j​ change, et il décide seul du sens.

  • ·

    Un poids positif donne une contribution négative, donc la perte baisse quand aja_{j}aj​ monte ; un poids négatif donne l'inverse.

  • ·

    Les tailles suivent aussi, puisque 0,178491/0,048331=3,690{,}178491/0{,}048331=3{,}690,178491/0,048331=3,69 et 0,2363/0,0640=3,690{,}2363/0{,}0640=3{,}690,2363/0,0640=3,69 : le rapport des contributions est celui des poids, à l'arrondi des valeurs affichées près, et c'est la proportionnalité de la proposition 5.

Ce qu'on ne peut pas faire

La proposition 5 dit dans quel sens aj[1]a_{j}^{[1]}aj[1]​ devrait varier, et cette information est inutilisable telle quelle parce que aj[1]a_{j}^{[1]}aj[1]​ n'est pas un paramètre : c'est une valeur produite par le réseau, aj[1]=ReLU(∑iWji[1]xi+bj[1])a_{j}^{[1]}=\mathrm{ReLU}\big(\sum_{i}W_{ji}^{[1]}x_{i}+b_{j}^{[1]}\big)aj[1]​=ReLU(∑i​Wji[1]​xi​+bj[1]​), et l'exemple x\mathbf{x}x ne se modifie pas davantage.

QuantitéModifiable ?Ce qu'on en fait

W[2]W^{[2]}W[2], b[2]\mathbf{b}^{[2]}b[2]

Oui

On applique la correction, propositions 3 et 4

a[1]\mathbf{a}^{[1]}a[1]

Non

On note la correction souhaitée, et on la reporte en arrière

W[1]W^{[1]}W[1], b[1]\mathbf{b}^{[1]}b[1]

Oui

Ils déterminent a[1]\mathbf{a}^{[1]}a[1] : c'est sur eux que le report arrive

x\mathbf{x}x

Non

C'est la donnée, et rien ne la modifie

D'où vient le mot

La correction souhaitée sur a[1]\mathbf{a}^{[1]}a[1] ne peut être ni appliquée ni oubliée, et elle est donc reportée sur les quantités qui déterminent a[1]\mathbf{a}^{[1]}a[1], c'est-à-dire sur W[1]W^{[1]}W[1] et b[1]\mathbf{b}^{[1]}b[1], et si le réseau avait une couche de plus sur les activations d'encore avant, qui à leur tour reporteraient. Une demande formulée à la sortie remonte ainsi de couche en couche, à contre-courant du calcul qui l'a produite, et c'est de là que vient le mot « rétropropagation ».

Vérification rapide n° 42

Un neurone caché jjj est relié au neurone de la vraie classe par un poids négatif : Wcj[2]<0W_{cj}^{[2]}<0Wcj[2]​<0, et δc[2]<0\delta_{c}^{[2]}<0δc[2]​<0.

  1. a

    Son activation doit-elle monter ou descendre ? Donner le signe de δcWcj\delta_{c}W_{cj}δc​Wcj​ avant de répondre.

  2. b

    La réponse change-t-elle si l'on remplace le neurone de la vraie classe par un neurone k≠ck\neq ck=c, à poids négatif lui aussi ?

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

Leçon suivante
PrécédenteCe que Hebb dit, et ce qu'il ne dit pasSuivanteDix demandes, une somme