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

Au départ, le réseau est mauvais

Ce que vaut le réseau avant la première mise à jour, mesuré plutôt que supposé.

Un réseau dont les cent mille nombres sortent d'un tirage au sort n'a rien appris, et rien appris de faux non plus. Fait-il aussi bien que de répondre au hasard ?

Un axe horizontal gradué de deux virgule trente à deux virgule quarante-cinq. Un trait vertical en brique le coupe un peu après la première graduation, sous la mention répondre au hasard, et porte sa valeur. Cinq ronds à l'encre sont posés sur l'axe, un par graine de zéro à quatre, et les cinq sont à droite du trait brique. Chaque rond porte à gauche le nom de sa graine et à droite sa valeur.
Le trait en brique est ce que paierait un réseau qui répondrait un dixième pour chacune des dix classes. Les cinq mesures sont toutes du mauvais côté.

Une procédure qui améliore quelque chose doit partir d'un état connu, sans quoi une amélioration ne se distingue pas d'une erreur de mesure.

Le nombre porté par cet axe est la moyenne, sur les 10 00010\,00010000 images de test, de la perte ℓ\ellℓ que le chapitre 2 a posée. Les pages 5 et 6 diront pourquoi cette moyenne-là plutôt qu'une autre, et lui donneront son nom ; pour l'instant, elle sert seulement d'étalon.

Le point de départ

Les 101 770101\,770101770 nombres sont tirés au hasard, chaque coefficient de W[l]W^{[l]}W[l] selon une loi normale centrée dont la dispersion 2/dl−1\sqrt{2/d_{l-1}}2/dl−1​​ dépend du nombre d'entrées de la couche, et les biais partent à zéro. Le tirage est reproductible : la graine est le nombre qui le fixe, et deux exécutions de même graine donnent les mêmes 101 770101\,770101770 valeurs. Pourquoi pas tout à zéro est une bonne question, elle a une réponse, et elle relève du chapitre d'initialisation.

Un réseau qui répondrait au hasard accorderait la même valeur à chacune des dix classes, c'est-à-dire ak=1/10a_{k}=1/10ak​=1/10 pour tout kkk, et il paierait alors −ln⁡(1/10)=ln⁡10=2,302585-\ln(1/10)=\ln 10=2{,}302585−ln(1/10)=ln10=2,302585 sur chaque image : c'est la barre à laquelle on compare tout ce qui suit.

Cinq initialisations, avant toute mise à jour · cours/lecon3/mesures.py, mesure 1

    répondre au hasard : -ln(1/10) = 2.302585

      graine     coût        précision
           0     2.417832    0.1314
           1     2.407812    0.0602
           2     2.379976    0.1323
           3     2.382167    0.1520
           4     2.389514    0.1466

Lecture

  • ·

    Les précisions vont de 0,06020{,}06020,0602 à 0,15200{,}15200,1520, c'est-à-dire autour du dixième qu'on obtiendrait en tirant la réponse au sort : le réseau ne sait rien, et c'est attendu. L'écart entre les deux extrêmes dit seulement que cinq tirages ne suffisent pas à cerner une moyenne.

  • ·

    Les cinq coûts dépassent 2,3025852{,}3025852,302585, donc le réseau initialisé fait légèrement pire que de répondre au hasard, et ce n'est pas une anomalie.

  • ·

    C'est le contrôle qu'on voulait : si cette ligne avait donné 0,50{,}50,5 ou 121212, il y aurait un défaut dans le code avant la première mise à jour, et rien de ce qui suit n'aurait de sens.

Comment fait-on pire que le hasard ?

Dix barres verticales, numérotées de zéro à neuf, de hauteurs inégales. Une ligne horizontale en pointillé ardoise marque la hauteur un dixième : cinq barres la dépassent, cinq restent en dessous. La barre numéro sept est en brique et compte parmi les plus basses ; sa valeur est portée à droite sous la mention la vraie classe.
Répondre au hasard, c'est produire dix barres de même hauteur. Celles-ci ne le sont pas, et c'est là toute la différence.

Une sortie de réseau non entraîné, en entier · graine 0

      classe :         0         1         2         3         4         5         6         7         8         9
      a_k    :    0.1221    0.0885    0.2106    0.1094    0.1149    0.1021    0.0825    0.0650    0.0493    0.0555
      somme   1.0000000000
      écart max entre deux coordonnées   0.161240
      une loi uniforme donnerait          0.000000
      étiquette vraie 7, coordonnée correspondante 0.065024
      perte sur cet exemple : -ln(0.065024) = 2.733006

Lecture

  • ·

    Répondre au hasard, c'est sortir dix valeurs égales. Ce réseau en sort d'inégales : 0,21060{,}21060,2106 pour la classe 222, 0,04930{,}04930,0493 pour la classe 888, un écart de 0,16120{,}16120,1612 entre les deux extrêmes.

  • ·

    Ses préférences ne veulent rien dire puisqu'elles viennent d'un tirage, mais elles existent, et sur cette image, un 777, il accorde 0,06500{,}06500,0650 à la bonne classe, moins que 1/101/101/10, et paie −ln⁡(0,0650)=2,733-\ln(0{,}0650)=2{,}733−ln(0,0650)=2,733.

  • ·

    Le mécanisme se voit sur cette seule sortie, en faisant tourner la vraie classe. Si l'étiquette avait été le 222, le réseau aurait payé −ln⁡(0,2106)=1,558-\ln(0{,}2106)=1{,}558−ln(0,2106)=1,558 ; si elle avait été le 888, −ln⁡(0,0493)=3,010-\ln(0{,}0493)=3{,}010−ln(0,0493)=3,010. La moyenne des dix pertes possibles vaut 2,3872{,}3872,387, au-dessus de ln⁡10=2,302585\ln 10=2{,}302585ln10=2,302585, alors que dix valeurs toutes égales à 1/101/101/10 donneraient exactement ln⁡10\ln 10ln10 dans les dix cas.

  • ·

    C'est que −ln⁡-\ln−ln monte sans borne quand la coordonnée tend vers zéro et ne descend que lentement quand elle tend vers un : rendre dix valeurs inégales coûte donc plus qu'il ne rapporte, et c'est vrai de n'importe quel jeu de dix valeurs inégales. Un réseau tiré au sort en produit à chaque image, et c'est tout ce qui le sépare du hasard.

Les dix sorties mesurées se posent contre le repère d'une loi uniforme, et la vraie classe se signale : avant tout apprentissage, elles sont déjà inégales.

Le réseau s'efface et devient un décor très pâle ; seule sa colonne de sortie, à droite, garde ses dix ronds remplis, chacun portant son chiffre de zéro à neuf. De chaque rond part alors vers la droite une barre horizontale, du haut vers le bas, l'une après l'autre, et chacune s'arrête à sa propre longueur. Les longueurs sont visiblement inégales : la barre de la classe deux est plus de quatre fois plus longue que celle de la classe huit, alors qu'aucune n'a de raison de l'être. Les dix valeurs s'inscrivent ensuite en brique tout à droite, alignées les unes sous les autres : zéro virgule douze vingt et un, zéro virgule zéro huit quatre-vingt-cinq, zéro virgule vingt et un zéro six, zéro virgule dix quatre-vingt-quatorze, zéro virgule onze quarante-neuf, zéro virgule dix vingt et un, zéro virgule zéro huit vingt-cinq, zéro virgule zéro six cinquante, zéro virgule zéro quatre quatre-vingt-treize, zéro virgule zéro cinq cinquante-cinq. Une ligne verticale pointillée se pose alors en travers des barres, à la longueur zéro virgule un, celle qu'aurait chacune si le réseau répondait au hasard, et sa valeur s'inscrit sous elle. Cinq barres la dépassent, et leur contour s'épaissit pour qu'on les repère ; les cinq autres restent en deçà — le réseau ne penche donc pas dans un sens, il hésite. La barre de la classe sept, enfin, celle qui est la vraie réponse, passe à la brique avec sa valeur : elle est parmi les plus courtes.

0:00 / 0:11
Vérification rapide n° 22

Un réseau initialisé au hasard obtient un coût de 2,41782{,}41782,4178 alors que répondre au hasard donne 2,3025852{,}3025852,302585.

  1. a

    Comment un réseau peut-il faire pire que le hasard alors qu'il n'a rien appris de faux ?

  2. b

    Quelle sortie faudrait-il produire pour obtenir exactement 2,3025852{,}3025852,302585 ?

  3. c

    Un réseau accorde 0,990{,}990,99 à une classe fixe, la même pour toutes les images, et répartit également le centième restant sur les neuf autres. Les dix chiffres étant à peu près équirépartis dans le jeu, estimer son coût moyen et le comparer à ln⁡10\ln 10ln10.

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

Dette du chapitre 2 réglée : d'où viennent les poids

Le chapitre 2 citait un gabarit dont le minimum tombait en (16,15)(16,15)(16,15), et disait à chaque fois que ces valeurs venaient d'un réseau déjà entraîné. Le voici, ce réseau, avant l'entraînement : 101 770101\,770101770 nombres tirés au hasard, une précision de 0,130{,}130,13, un coût de 2,422{,}422,42. Les pages 5 à 9 construisent la procédure qui, sans qu'aucun humain ne décide d'un seul de ces nombres, les amène à ce que le chapitre 2 a lu.

Leçon suivante
PrécédenteCe que veut dire apprendreSuivanteDire au programme qu'il est mauvais