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

Ce que le gradient encode

Ce qu'un gradient contient quand on le regarde, au lieu de simplement l'appliquer.

Le même pas s'applique aux cent mille paramètres à la fois. Reçoivent-ils tous la même correction ?

Une courbe montante et très creusée. Elle part du coin bas gauche, s'élève presque à la verticale sur le premier dixième de la largeur, puis s'aplatit et n'avance plus que lentement jusqu'au coin haut droit. L'axe horizontal porte les repères un pour cent, dix pour cent et cinquante pour cent, sous la mention des composantes. Trois ronds brique marquent la courbe à ces trois abscisses, et leurs trois valeurs sont portées à droite sous la mention de la somme.
Les composantes sont rangées de la plus grande à la plus petite, puis cumulées. Une courbe qui monterait en diagonale dirait qu'elles se valent toutes.

La règle (8.4)(8.4)(8.4) se contente de soustraire le gradient et ne dit jamais ce qu'il dit. Il y a pourtant trois choses à lire dans une composante, et la troisième est celle qui décide de la suite.

θ\boldsymbol{\theta}θ et gradθ CD(θ)\mathrm{grad}_{\boldsymbol{\theta}}\,C_{\mathcal{D}}(\boldsymbol{\theta})gradθ​CD​(θ) vivent dans le même espace et ont la même taille : à chaque paramètre θi\theta_{i}θi​ correspond exactement une composante gig_{i}gi​ du gradient. La mise à jour se lit alors coordonnée par coordonnée, θi←θi−η gi\theta_{i}\leftarrow\theta_{i}-\eta\,g_{i}θi​←θi​−ηgi​, et chaque gig_{i}gi​ ne concerne que son propre paramètre.

Ce que porte une composante

Ce qu'on litCe que cela ditCe que cela ne dit pas

Le signe de gig_{i}gi​

Dans quel sens pousser θi\theta_{i}θi​ : gi>0g_{i}>0gi​>0 fait diminuer θi\theta_{i}θi​, gi<0g_{i}<0gi​<0 le fait augmenter

De combien : le signe ne porte aucune amplitude

La valeur absolue de gig_{i}gi​

De combien CDC_{\mathcal{D}}CD​ change quand θi\theta_{i}θi​ bouge d'un peu, donc l'importance de ce paramètre ici et maintenant

Si ce paramètre est important en général : la valeur change à chaque pas

gi=0g_{i}=0gi​=0 exactement

Que CDC_{\mathcal{D}}CD​ ne dépend pas de θi\theta_{i}θi​ au premier ordre : ce paramètre n'est pas modifié à ce pas

Que θi\theta_{i}θi​ soit inutile : il peut redevenir non nul au pas suivant

Les 101 770101\,770101770 composantes, mesurées

La distribution des composantes · cours/lecon3/mesures.py, mesure 4

    graine 0, AVANT tout apprentissage, sur 2048 exemples
    p                                       101770 composantes
    plus grande valeur absolue              1.0084e-01
    médiane des valeurs absolues            2.4935e-04
    rapport de la plus grande à la médiane  404
    norme du gradient                       1.398869

    les     1 % plus grandes portent  14.55 % de la somme des |g_i|
    les    10 % plus grandes portent  60.39 % de la somme des |g_i|
    les    50 % plus grandes portent  98.90 % de la somme des |g_i|

    composantes exactement nulles           23882, soit 23.5 %

Lecture

  • ·

    La composante la plus importante pèse 404404404 fois la composante médiane. Ce n'est pas une queue de distribution un peu longue : deux ordres de grandeur et demi séparent deux composantes d'un même vecteur, prises au même instant.

  • ·

    La moitié la plus faible des cent mille paramètres ne porte que 1,1 %1{,}1\,\%1,1% du total, et un dixième des composantes en porte 60 %60\,\%60%. Le gradient encode donc bien une importance relative : il dit où le rendement d'une correction est le meilleur.

  • ·

    Une conséquence immédiate pour la règle (8.4)(8.4)(8.4) : η\etaη est le même pour toutes les composantes, mais le pas effectif η ∣gi∣\eta\,|g_{i}|η∣gi​∣ ne l'est pas. Un même η\etaη déplace beaucoup les paramètres importants et presque pas les autres, si bien que c'est le gradient, et non le réglage, qui répartit l'effort.

  • ·

    Près d'un quart des 101 770101\,770101770 composantes sont exactement nulles, et elles sont toutes dans W[1]W^{[1]}W[1], dont elles occupent 23,8 %23{,}8\,\%23,8% des 100 352100\,352100352 coefficients. Ce n'est pas un arrondi, et la mesure suivante dit d'où elles viennent.

Les composantes du gradient se rangent par valeur absolue, et le rapport 404404404 entre la plus grande et la plus petite se lit sur la hauteur des barres.

Un socle horizontal se dessine au milieu de l'écran, et une cote s'inscrit dessous : cent un mille sept cent soixante-dix composantes. C'est la taille du vecteur gradient. Une barre large monte alors depuis ce socle et ne s'arrête qu'en haut du cadre ; sa valeur s'inscrit au-dessus, zéro virgule un zéro zéro huit quatre : c'est la plus grande des cent un mille composantes. Une seconde barre monte juste à côté, à la même échelle, et elle s'arrête si bas qu'on la prendrait pour un épaississement du socle : c'est la composante médiane, la valeur qui partage le vecteur en deux moitiés égales. Sa valeur ne peut pas s'inscrire au-dessus d'elle, il n'y a pas la place : elle s'inscrit haut au-dessus, zéro virgule zéro zéro zéro deux quatre neuf trois cinq, reliée à sa barre par un mince trait d'appel qui descend jusqu'au socle. Une accolade de brique court enfin le long de la grande barre, du socle jusqu'à son sommet, et porte un seul nombre : quatre cent quatre. C'est par là qu'il faut multiplier la seconde barre pour obtenir la première, et la moitié des composantes du gradient sont plus petites encore que la seconde.

0:00 / 0:08

D'où viennent les 23 88223\,88223882 zéros

Le coefficient qui relie le pixel jjj au neurone caché iii ne compte, pour une image donnée, que par le produit de deux quantités : l'encre du pixel jjj sur cette image, et ce que le neurone iii renvoie vers l'arrière. Un pixel blanc annule le premier facteur ; un neurone éteint, c'est-à-dire un neurone que ReLU\mathrm{ReLU}ReLU a coupé parce que sa préactivation était négative, annule le second. La composante du gradient étant la somme de ces produits sur les 2 0482\,0482048 images de l'échantillon, elle est nulle quand, pour chaque image, l'un des deux facteurs l'est. Le chapitre 4 écrira ce produit ; ici il suffit de savoir qu'il en est un.

Deux cas extrêmes s'en déduisent, pixel blanc sur toutes les images et neurone éteint sur toutes les images, et il en reste un troisième, entre les deux, qu'il a fallu mesurer.

Deux grilles carrées de vingt-huit sur vingt-huit cases, côte à côte. Sur celle de gauche, intitulée sur l'échantillon, les cases en brique forment un large cadre le long des quatre bords, et le centre est vide. Sur celle de droite, intitulée sur le jeu entier, les cases en brique sont bien moins nombreuses et se cantonnent aux quatre coins et aux tout premiers rangs. Sous chaque grille est porté le compte de pixels muets sur sept cent quatre-vingt-quatre.
Un pixel muet est un pixel dont l'octet vaut zéro sur toutes les images considérées. Aucun chiffre manuscrit n'atteint les bords.

La décomposition des zéros · cours/lecon3/mesures.py, mesure 10

    pixels jamais encrés sur les 2048 exemples      144 sur 784
    pixels jamais encrés sur les 60000 images    67 sur 784
      terme intrinsèque au jeu dans W^[1]   67 x 128 = 8576
    neurones cachés éteints sur les 2048       0 sur 128

    zéros dans W^[1]                        23882
      dont colonnes de pixels muets         18432   (144 x 128)
      dont lignes de neurones éteints       0   (0 x 784)
      comptés deux fois (intersection)      -0
      total expliqué                        18432
      reste inexpliqué par les deux causes  5450
        ces zeros portent sur des pixels encres par
        mediane 3 image(s) sur 2048,   maximum 663
        pixels concernes                    295 sur 784
    zéros dans b^[1]                        0   (les neurones éteints)
    zéros dans W^[2]                        0
    zéros dans b^[2]                        0

Lecture

  • ·

    Premier terme, 18 43218\,43218432 zéros. Sur l'échantillon de 2 0482\,0482048 images, 144144144 pixels ne portent jamais d'encre, et leur colonne dans W[1]W^{[1]}W[1] est nulle en entier, soit 144×128144\times 128144×128 coefficients.

  • ·

    Les deux comptes de pixels muets ne disent pas la même chose. Sur les 60 00060\,00060000 images du jeu entier, seuls 676767 pixels sont muets, et c'est le terme intrinsèque au jeu, 67×128=8 57667\times 128=8\,57667×128=8576, celui qui subsisterait quel que soit l'échantillon. Les 144144144 de l'échantillon comprennent ces 676767 plus 777777 pixels qui sont encrés quelque part dans le jeu, mais pas dans ces 2 0482\,0482048 images-là.

  • ·

    Le deuxième terme est nul. Aucun neurone caché n'est éteint sur les 2 0482\,0482048 images à la fois : la couche n'a pas de neurone mort au départ, et b[1]\mathbf{b}^{[1]}b[1] n'a donc aucune composante nulle.

  • ·

    Troisième terme, 5 4505\,4505450 zéros, et il ne se devinait pas. Ils portent sur 295295295 pixels encrés par une poignée d'images, la médiane étant de 333 images sur 2 0482\,0482048. Il suffit que ces trois images-là aient ce neurone-là éteint pour que le produit soit nul sur toute la somme. Ce n'est ni un pixel mort ni un neurone mort : c'est une rencontre entre les deux.

  • ·

    W[2]W^{[2]}W[2] et b[2]\mathbf{b}^{[2]}b[2] n'ont aucun zéro : la couche de sortie voit toujours quelque chose.

Vérification rapide n° 31

La composante la plus grande du gradient vaut 404404404 fois la médiane.

  1. a

    Qu'est-ce que cela dit sur l'effet d'un même pas η\etaη appliqué à tous les poids ?

  2. b

    Si l'on voulait que tous les paramètres bougent autant les uns que les autres, que faudrait-il changer dans la règle (8.4)(8.4)(8.4) ? Et que perdrait-on en le faisant ?

  3. c

    Un paramètre dont la composante est nulle à ce pas est-il inutile ? Répondre en citant la décomposition des zéros.

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

Trois étages, et aucun ne vit où vit le précédent

ObjetDépartArrivéeCe qui y varie

Le réseau fθf_{\boldsymbol{\theta}}fθ​

R784\mathbb{R}^{784}R784

Δ9∘\Delta^{\circ}_{9}Δ9∘​

Une image ; θ\boldsymbol{\theta}θ est fixé

Le coût CDC_{\mathcal{D}}CD​

R101 770\mathbb{R}^{101\,770}R101770

R≥0\mathbb{R}_{\geq 0}R≥0​

Les paramètres ; D\mathcal{D}D est fixé

Le gradient gradθ CD\mathrm{grad}_{\boldsymbol{\theta}}\,C_{\mathcal{D}}gradθ​CD​

R101 770\mathbb{R}^{101\,770}R101770

R101 770\mathbb{R}^{101\,770}R101770

Les paramètres ; il rend un vecteur, pas un nombre

Le coût est une fonction du réseau, et le gradient une fonction du coût : chaque étage prend le précédent comme objet. Les deux derniers partent du même espace, celui des paramètres, et c'est leur arrivée qui les sépare : un nombre pour le coût, un vecteur de même taille que θ\boldsymbol{\theta}θ pour le gradient. Le réseau, lui, ne part pas du tout de là.

Dette du chapitre 2 réglée : $\sigma'\leq 1/4$

Le chapitre 2 a démontré que σ′=σ(1−σ)≤1/4\sigma'=\sigma(1-\sigma)\leq 1/4σ′=σ(1−σ)≤1/4, et a renvoyé sa conséquence ici. La voici : les composantes du gradient d'une couche s'obtiennent à partir de celles de la couche suivante, en les multipliant par la dérivée de l'activation traversée. Avec la sigmoïde, ce facteur ne dépasse jamais 1/41/41/4. Le réseau de ce chapitre n'a qu'une couche cachée, et n'en souffre donc guère ; mais dans un réseau à quatre couches, les paramètres de la première recevraient un gradient multiplié par au plus (1/4)4=1/256(1/4)^{4}=1/256(1/4)4=1/256, soit deux cent cinquante-six fois plus petit que ceux de la dernière. C'est un effet d'empilement, et il n'a rien à voir avec le rapport 404404404 mesuré plus haut, qui vaut à l'intérieur d'une même couche. Avec ReLU\mathrm{ReLU}ReLU, dont la dérivée vaut 000 ou 111, cette atténuation systématique disparaît, et c'est l'une des raisons du choix du chapitre 2. Le mécanisme exact par lequel les composantes d'une couche se déduisent de la suivante est le sujet du chapitre 4 ; ce chapitre en constate l'effet sans l'écrire.

Leçon suivante
PrécédentePourquoi on n'utilise pas tout le jeuSuivanteIl n'y a pas une bonne réponse