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

Dire au programme qu'il est mauvais

Choisir le nombre qui dit au programme à quel point il se trompe sur un exemple.

Le réseau vient de répondre, et il faut lui dire de combien il s'est trompé. Deux fonctions font l'affaire, et il va falloir choisir : voici ce qu'elles donnent sur quatre réponses.

Quatre paires de barres verticales, une paire par sortie. Sous chaque paire se lit la valeur accordée à la vraie classe : zéro virgule neuf cent soixante-dix, zéro virgule trois cent dix, zéro virgule cent vingt, zéro virgule zéro zéro quatre. Dans chaque paire, la barre de gauche est à l'encre et porte l'entropie croisée, celle de droite est en ardoise et porte le coût quadratique. Les deux barres montent de la première paire à la dernière, mais celle de l'entropie croisée monte beaucoup plus haut.
Les deux coûts classent les quatre sorties dans le même ordre. Ce sont leurs échelles qui diffèrent.

La sortie du réseau est a∈Δ9∘\mathbf{a}\in\Delta^{\circ}_{9}a∈Δ9∘​, une loi sur dix classes, et la vérité est c∈[ ⁣[0,9] ⁣]c\in[\![0,9]\!]c∈[[0,9]], un code. Ce qu'on cherche est une fonction qui reçoive les deux et rende un nombre positif, d'autant plus grand que le réseau se trompe.

Sans cette fonction, l'énoncé de la page 3 est une phrase vide : arg⁡min⁡CD\arg\min C_{\mathcal{D}}argminCD​ est écrit, et CDC_{\mathcal{D}}CD​ n'existe pas encore.

Deux candidates

ℓquad:ΔK−1∘×[ ⁣[0,K−1] ⁣]→R≥0,ℓquad(a,c)=∑k=1K(ak−yk)2,y=onehot(c)\ell_{\text{quad}}:\Delta^{\circ}_{K-1}\times[\![0,K-1]\!]\rightarrow\mathbb{R}_{\geq 0},\qquad \ell_{\text{quad}}(\mathbf{a},c)=\sum_{k=1}^{K}\big(a_{k}-y_{k}\big)^{2},\quad \mathbf{y}=\mathrm{onehot}(c)ℓquad​:ΔK−1∘​×[[0,K−1]]→R≥0​,ℓquad​(a,c)=k=1∑K​(ak​−yk​)2,y=onehot(c)
(5.1)
La somme des carrés des écarts entre la sortie obtenue et la sortie voulue. C'est le choix de la source.
ℓ:ΔK−1∘×[ ⁣[0,K−1] ⁣]→R≥0,ℓ(a,c)=−ln⁡ac+1\ell:\Delta^{\circ}_{K-1}\times[\![0,K-1]\!]\rightarrow\mathbb{R}_{\geq 0},\qquad \ell(\mathbf{a},c)=-\ln a_{c+1}ℓ:ΔK−1∘​×[[0,K−1]]→R≥0​,ℓ(a,c)=−lnac+1​
(5.2)
L'entropie croisée, posée au chapitre 2. Elle ne regarde qu'une coordonnée de a\mathbf{a}a : celle de la vraie classe.

Les deux ont le même ensemble de départ et le même ensemble d'arrivée, et les deux valent 000 si et seulement si a=y\mathbf{a}=\mathbf{y}a=y, ce qui n'arrive jamais exactement sur ΔK−1∘\Delta^{\circ}_{K-1}ΔK−1∘​, dont les coordonnées sont strictement positives. Rien ne les départage encore.

Les deux coûts sur quatre sorties, vraie classe $4$ · cours/lecon3/mesures.py, mesure 2

      sortie                    a_4      entropie croisée   quadratique
      confiante et juste       0.970          0.030459       0.001000
      hésitante et juste       0.310          1.171183       0.529000
      hésitante et fausse      0.120          2.120264       0.860444
      confiante et fausse      0.004          5.521461       1.102240

Lecture

  • ·

    La colonne notée a_4 par le programme est a5a_{5}a5​ au sens de (5.2)(5.2)(5.2) : le programme numérote les classes à partir de zéro, la formule à partir de un. C'est la même coordonnée, celle de la vraie classe.

  • ·

    De la première à la dernière ligne, l'entropie croisée est multipliée par 181181181 et la quadratique par 1 1021\,1021102, et surtout la quadratique sature : elle ne peut pas dépasser 222, puisque a\mathbf{a}a et y\mathbf{y}y vivent tous deux dans [0,1]K[0,1]^{K}[0,1]K.

  • ·

    Le classement ne suffit donc pas à choisir, et ce qui compte pour faire descendre un coût n'est pas sa valeur mais sa pente.

Ce qui les départage : la pente, pas la valeur

Trois mots sont à poser avant de lire la table qui suit. Chaque neurone de la couche de sortie calcule d'abord un score zkz_{k}zk​, sa préactivation, et c'est softmax\mathrm{softmax}softmax qui transforme ensuite les dix scores en les dix valeurs aka_{k}ak​ : c'est le zzz du chapitre 2, ici porté par la dernière couche. La sensibilité du coût à ce score est le nombre qui dit de combien le coût change quand le score change d'un peu, et on la note ∂C/∂zc+1\partial C/\partial z_{c+1}∂C/∂zc+1​, où CCC désigne la perte sur l'exemple regardé.

Pourquoi juger un coût sur cette quantité-là plutôt que sur la correction d'un poids ? Parce que tous les poids de la dernière couche reçoivent leur correction à travers ce score : changer un poids change zc+1z_{c+1}zc+1​, et zc+1z_{c+1}zc+1​ seul porte l'effet du coût jusqu'à lui. Le chapitre 4 écrira ce passage ; ici, il suffit de comparer les deux candidates au même endroit de la chaîne. On les mesure en faisant varier ac+1a_{c+1}ac+1​ et en répartissant uniformément la masse restante sur les neuf autres classes.

Un graphe dont l'axe horizontal est gradué logarithmiquement et porte les valeurs zéro virgule zéro zéro un, zéro virgule zéro dix, zéro virgule cent et zéro virgule neuf cents. Deux courbes y sont tracées. Celle de l'entropie croisée, à l'encre et en trait plein, part très haut à gauche et descend régulièrement vers la droite. Celle du coût quadratique, en ardoise et en tirets, reste basse sur toute la largeur. À gauche, une accolade en brique mesure l'écart entre les deux et porte la mention multiplié par quatre cent cinquante virgule cinq.
L'axe horizontal est gradué logarithmiquement, pour que les trois décades entre un millième et un dixième tiennent à intervalles égaux. Les deux courbes joignent les cinq valeurs de la table ci-dessous.

La sensibilité des deux coûts · cours/lecon3/mesures.py, mesure 2

         a_c      |dC/dz_c| entropie   |dC/dz_c| quadratique   rapport
         0.001            0.999000              0.002218   x   450.5
         0.010            0.990000              0.021780   x    45.5
         0.100            0.900000              0.180000   x     5.0
         0.500            0.500000              0.277778   x     1.8
         0.900            0.100000              0.020000   x     5.0

Lecture

  • ·

    La ligne du haut est celle qui tranche, puisque le réseau y accorde un millième à la bonne classe et se trompe donc autant qu'il est possible de se tromper : l'entropie croisée produit alors une sensibilité de 0,9990{,}9990,999, la quadratique de 0,00220{,}00220,0022, soit 450450450 fois plus faible.

  • ·

    Le coût quadratique cesse donc de corriger exactement quand il faudrait corriger le plus. Ce n'est pas une question d'échelle qu'un réglage global rattraperait : le rapport ne vaut pas la même chose d'une ligne à l'autre, 450,5450{,}5450,5 en haut et 1,81{,}81,8 au milieu, et aucun facteur constant ne compense un rapport qui varie d'un facteur 250250250 selon l'endroit où l'on se trouve.

  • ·

    La colonne de l'entropie croisée se lit d'ailleurs en une ligne, puisqu'elle vaut exactement 1−ac+11-a_{c+1}1−ac+1​ : la correction est proportionnelle à ce qui manque à la bonne classe pour valoir 111.

  • ·

    Sur la dernière ligne, ac+1=0,9a_{c+1}=0{,}9ac+1​=0,9, les deux sensibilités redeviennent faibles parce que le réseau a raison et qu'il n'y a plus grand-chose à corriger. Les deux coûts sont d'accord là où ça n'a pas d'importance.

La source retient l'autre choix, et le cours le dit

L'exposé dont ce chapitre suit l'ordre pose le coût quadratique, la somme des carrés des écarts, et c'est un choix parfaitement défendable : il est plus simple à écrire, il ne demande pas de logarithme, et il donne le même classement des sorties. Ce cours retient l'entropie croisée parce que le chapitre 2 l'a déjà posée, et parce que la table ci-dessus dit ce que l'autre coûte là où le réseau se trompe le plus. La mesure ne dit pas que la source a tort ; elle dit à quoi on renonce.

Vérification rapide n° 23

Quatre sorties sont données pour une image de la classe 444, avec a5a_{5}a5​ valant respectivement 0,9700{,}9700,970, 0,3100{,}3100,310, 0,1200{,}1200,120 et 0,0040{,}0040,004.

  1. a

    Les classer par coût croissant avec l'entropie croisée, puis avec le coût quadratique.

  2. b

    Le classement est-il le même ? Et les rapports entre coûts successifs le sont-ils ?

  3. c

    Pour la sortie la plus fausse, dire lequel des deux coûts corrigera le plus, et de combien.

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

Leçon suivante
PrécédenteAu départ, le réseau est mauvaisSuivanteLe coût sur tout le jeu