Le problème, et le jeu
Les images sur lesquelles on travaille, et à partir de quel score on peut dire qu'une machine a appris.
Ton œil lit un chiffre manuscrit sans effort, et personne ne sait écrire la règle qu'il applique. Lister les cas un par un ne la remplace pas, parce qu'il y a trop de façons d'écrire un sept, et c'est pourquoi on va chercher cette règle dans des exemples. Reste à savoir combien il y en a, à quoi ils ressemblent, et à partir de quel score une machine aura vraiment appris plutôt que deviné.
Sous chaque vignette se lisent son numéro dans le fichier, à gauche, et le chiffre qu'elle montre, à droite : la première est l'image numéro 0, et c'est un 7.
Les deux 1, en troisième et sixième position de la première rangée, n'ont ni la même inclinaison ni la même épaisseur, et aucun programme ne les reconnaîtra en comparant les pixels un par un à un 1 modèle.
Dans chaque carré, enfin, le chiffre est posé à peu près au milieu, et ce « à peu près » se mesure exactement.
Des ronds reliés par un voile de traits très pâles occupent l'écran : trois colonnes de ronds vides alignées de gauche à droite, et contre la dernière les dix chiffres de zéro à neuf, un par rond. Un nombre est posé contre la première colonne, sept cent quatre-vingt-quatre, un autre sous la deuxième, cent vingt-huit : ni l'une ni l'autre ne montre tous ses ronds. À gauche, un carré quadrillé attend, vide. Un sept manuscrit s'y dessine, gris, case par case ; puis les cases encrées se détachent une à une et s'envolent vers la première colonne, chacune vers la hauteur qui lui revient, où elles s'effacent en arrivant. Une vague couleur brique parcourt alors les traits, de la gauche vers la droite, et la colonne du milieu s'assombrit inégalement : beaucoup de ronds y restent parfaitement vides. La vague repart et atteint la dernière colonne, où un seul rond devient franchement noir : celui du chiffre sept. Un cadre brique se referme sur lui, et un nombre s'inscrit dans la marge de droite, à sa hauteur — zéro virgule, sept neuf, puis un sept, presque exactement un. Tout s'éteint d'un coup. Un deux manuscrit remplace le sept, la traversée recommence, et le cadre se referme sur le chiffre deux. Tout s'éteint encore, un un manuscrit apparaît, la traversée recommence, et le cadre tombe sur le chiffre un. Pas un mot n'est écrit : on regarde la machine répondre, trois fois de suite.
Les objets
Les objets du jeu, typés
| Symbole | Type | Ensemble | Rôle |
|---|---|---|---|
Scalaire entier | , la taille du jeu d'entraînement | ||
Scalaire entier | , la taille du jeu de test | ||
Indice | ou selon le jeu | Désigne un exemple. Ce n'est pas une quantité | |
Matrice | L'image du -ième exemple, | ||
Scalaire entier | L'étiquette du -ième exemple | ||
Ensemble de couples | |||
Ensemble de couples | , jamais vues à l'entraînement |
Les trois notations d'indice
| Écriture | Ce qu'elle désigne | Ce qu'elle n'est pas |
|---|---|---|
, | Le -ième exemple du jeu, en grille puis en colonne | Une puissance |
L'étape de calcul numéro , à partir de la page 8 | Ni une puissance, ni un numéro d'exemple | |
La -ième composante d'un vecteur | Un exemple ni une étape de calcul |
Ce que le jeu contient
Le plus paresseux des systèmes ne regarde pas l'image et répond toujours le chiffre le plus fréquent du jeu. Ce qu'il obtient est le seuil sous lequel un score ne veut rien dire, et il se calcule en comptant les classes. Le programme l'appelle le seuil du hasard instruit, instruit parce que ce système sait au moins quel chiffre revient le plus souvent.
La répartition des classes · cours/lecon2/mesures.py, section 1
repartition chiffre : 0 1 2 3 4 5 6 7 8 9
train : 5923 6742 5958 6131 5842 5421 5918 6265 5851 5949 total 60000
test : 980 1135 1032 1010 982 892 958 1028 974 1009 total 10000
classe la plus frequente au test 1 (1135 images)
SEUIL DU HASARD INSTRUIT 11.35 %Lecture
Les classes ne sont pas équilibrées : le est le chiffre le plus fréquent et le le moins fréquent, et l'écart entre les deux vaut à l'entraînement du plus petit des deux comptes.
Un modèle qui répondrait toujours , sans regarder l'image, tomberait juste fois sur , soit de bonnes réponses.
C'est donc le seuil : sous , un résultat ne signifie rien, et à peine au-dessus il ne signifie presque rien. Tout score de ce chapitre se lit contre cette barre.
Ce que valent les pixels
part des valeurs nulles (train) 80.88 %
valeur moyenne d'un pixel (train) 0.130660
pixels nuls sur les 60 000 images 67 sur 784Lecture
Quatre pixels sur cinq sont exactement nuls, une image de chiffre étant surtout du blanc, et la page 4 montrera que ce blanc ne pèse sur aucun score. Ce compte porte sur tous les pixels de toutes les images pris ensemble.
La ligne suivante compte autre chose : pixels sur sont nuls sur les images à la fois, et ce sont les pixels du pourtour de la grille, où aucune encre n'apparaît jamais. Les nombres qu'un modèle leur attachera ne pourront donc rien apprendre, et il y en aura à la page 6, un par pixel mort et par chiffre possible.
Vérifier que les images sont centrées, et sur quoi
Ce « à peu près au milieu » relevé sur la planche des douze images n'est pas un hasard, puisque les auteurs du jeu ont recadré les 70 000 images avant de les publier.
Deux questions se posent alors, et elles se mesurent l'une comme l'autre. Ont-ils recadré les 60 000 images d'entraînement, ou seulement quelques-unes ? Et « au milieu », c'est au milieu de quoi exactement ?
Les lignes et les colonnes se comptent de 1 à 28 dans tout le chapitre, la ligne 1 en haut et la colonne 1 à gauche.
Ce qu'on appelle le milieu d'une image
Ce qu'on appelle le milieu d'une image est son centre de masse, c'est-à-dire l'endroit où son encre se concentre, et il se calcule en deux fois, puisqu'une position dans la grille demande deux nombres.
D'abord la ligne. Chaque pixel se trouve sur une ligne et porte une quantité d'encre comprise entre 0 et 1, et l'on fait la moyenne des numéros de ligne en comptant chaque pixel autant qu'il porte d'encre. Un pixel blanc ne compte donc pas du tout, quand un pixel noir compte pour un.
La colonne se traite de la même façon, et le centre de masse est le couple formé par les deux moyennes.
Où tombe le milieu géométrique
Le milieu géométrique de la grille vaut , et il ne tombe sur aucun pixel, parce que 28 est un nombre pair. C'est de lui que la mesure va écarter le jeu.
Le centre de masse moyen des $60\,000$ images · cours/lecon2/mesures.py, section 1
CENTRE DE MASSE DES 60 000 IMAGES, en indices 1 a 28
ligne colonne
centre de masse moyen 14.9959 15.0068
ecart-type entre images 0.2892 0.2909
ecart au milieu geometrique, 14,5 +0.4959 +0.5068
distance 0.7091 pixel
ecart a l'indice 15 -0.0041 +0.0068
distance 0.0080 pixel
rapport des deux ecarts 89.1Lecture
Le jeu est centré sur l'indice , et pas sur le milieu de la grille. L'écart au milieu géométrique vaut pixel quand l'écart à l'indice n'en vaut que , soit un rapport de calculé avant tout arrondi d'affichage : l'indice n'est pas un peu meilleur, il l'est de deux ordres de grandeur.
Cet écart au milieu géométrique n'est pas du bruit, puisqu'il vaut un demi-pixel sur chaque axe et qu'il va toujours vers le bas et vers la droite, alors que l'écart-type entre images ne vaut que pixel.
Une grille de côté pair n'a pas de pixel central, si bien que les auteurs du jeu ont dû en choisir un, et ils ont choisi le . « Centré » ne veut rien dire tant qu'on n'a pas dit « centré sur quoi ».
Un écart-type de pixel signifie que les images s'écartent très peu de cette moyenne, et non que des images très décentrées se compensent entre elles : elles sont donc recadrées une par une, et ce chapitre n'a rien à recadrer.
Cela comptera page 4, où l'on verra qu'un même chiffre décalé de quelques colonnes change tout le calcul d'un modèle.
Une image, en entier
Voici la première image du jeu de test, telle qu'elle est dans le fichier : octets, un par pixel, rangés en lignes de . Le point remplace le zéro pour que la forme se voie.
L'image de test n°0, en octets · cours/lecon2/mesures.py, section 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
1 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8 . . . . . . 84 185 159 151 60 36 . . . . . . . . . . . . . . . .
9 . . . . . . 222 254 254 254 254 241 198 198 198 198 198 198 198 198 170 52 . . . . . .
10 . . . . . . 67 114 72 114 163 227 254 225 254 254 254 250 229 254 254 140 . . . . . .
11 . . . . . . . . . . . 17 66 14 67 67 67 59 21 236 254 106 . . . . . .
12 . . . . . . . . . . . . . . . . . . 83 253 209 18 . . . . . .
13 . . . . . . . . . . . . . . . . . 22 233 255 83 . . . . . . .
14 . . . . . . . . . . . . . . . . . 129 254 238 44 . . . . . . .
15 . . . . . . . . . . . . . . . . 59 249 254 62 . . . . . . . .
16 . . . . . . . . . . . . . . . . 133 254 187 5 . . . . . . . .
17 . . . . . . . . . . . . . . . 9 205 248 58 . . . . . . . . .
18 . . . . . . . . . . . . . . . 126 254 182 . . . . . . . . . .
19 . . . . . . . . . . . . . . 75 251 240 57 . . . . . . . . . .
20 . . . . . . . . . . . . . 19 221 254 166 . . . . . . . . . . .
21 . . . . . . . . . . . . 3 203 254 219 35 . . . . . . . . . . .
22 . . . . . . . . . . . . 38 254 254 77 . . . . . . . . . . . .
23 . . . . . . . . . . . 31 224 254 115 1 . . . . . . . . . . . .
24 . . . . . . . . . . . 133 254 254 52 . . . . . . . . . . . . .
25 . . . . . . . . . . 61 242 254 254 52 . . . . . . . . . . . . .
26 . . . . . . . . . . 121 254 254 219 40 . . . . . . . . . . . . .
27 . . . . . . . . . . 121 254 207 18 . . . . . . . . . . . . . .
28 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
etiquette 7
pixels non nuls 116 sur 784
somme des octets 18454
lignes encrees 8 a 27
octet maximal 255 en (13, 20), 1 pixel a cette valeurLecture
La barre horizontale du occupe les lignes à , colonnes à . La hampe oblique descend ensuite de la ligne à la ligne .
pixels non nuls sur : de l'image porte de l'encre, sensiblement moins que la moyenne du jeu, où c'est à peu près un pixel sur cinq.
Un seul pixel atteint , en . L'écriture manuscrite numérisée est grise presque partout : , , , , , à la ligne .
Un rond par pixel, et aucun ne manque, pas même les blancs : un pixel blanc est une donnée au même titre qu'un pixel noir, et c'est pour cela que la figure les dessine tous.
Sous les trois ronds cerclés de brique se lit le passage de l'octet à la valeur : donne , et donne . C'est la division par annoncée plus haut, faite sur trois pixels de cette image.
Le pourtour de la grille, enfin, reste vide sur ses sept premières lignes comme sur ses six premières colonnes, et l'encre tient dans un rectangle au milieu. Ce rectangle est propre à cette image : les 67 pixels comptés plus haut sont, eux, ceux qu'aucune des 60 000 images n'encre jamais.
Le contenu du jeu se lit dans le tableau de répartition ci-dessus. Les vérifications portent un numéro propre sur tout le parcours, les sept premières étant au chapitre 1. Ces numéros ne suivent pas l'ordre des pages, et il est normal d'en rencontrer un plus grand avant un plus petit.
- a
Combien d'images du chiffre le jeu d'entraînement contient-il, et quelle part du total cela représente-t-il ?
- b
Pourquoi le seuil de est-il celui du chiffre , et non celui d'un autre chiffre ?
- c
Ce seuil serait-il le même si on le calculait sur le jeu d'entraînement ? Le vérifier avec les nombres du tableau.
Aucune réponse à cliquer : il y a un calcul à faire.