Construire un détecteur de bord
Fabriquer un détecteur à la main, sans entraînement, et voir où il se laisse tromper.
On appelle bord, dans une image de chiffre, un trait d'encre bordé de papier des deux côtés, comme la barre horizontale qui ouvre un sept. Ce n'est pas le pourtour vide de la grille, dont la page 2 a compté les pixels morts. Peut-on fabriquer à la main, sans le moindre entraînement, une pièce de calcul qui rende un grand score quand un tel trait passe à un endroit donné, et un petit score sinon ? Et si elle y arrive, tient-elle devant une image faite exprès pour la tromper ?
Premier temps : compter l'encre d'une zone
On veut un neurone dont le score monte quand une zone précise de l'image est encrée, et on choisit une bande horizontale de trois lignes, les lignes à sur les colonnes à , soit pixels dont on note l'ensemble des rangs. Cette bande est posée là où passe la barre d'un sept du jeu, ce qui est un choix et non un résultat.
On pose alors pour ces pixels, pour les autres, et .
Ce neurone ne fait donc qu'une chose, additionner l'encre présente dans la bande, et comme chaque pixel vaut au plus sur les de la bande, son score reste entre et . Il n'atteint que si les pixels sont noirs pleins.
À gauche, une grille de vingt-huit sur vingt-huit cases, entièrement blanche. À droite, trois colonnes de ronds reliées par un voile de traits gris ; un rond de la colonne du milieu est cerclé de rouge brique, et les traits qui l'atteignent ressortent de la même couleur. Trente-neuf cases de la grille passent au rouge, trois rangées de treize, formant une bande horizontale au tiers supérieur ; tout le reste demeure blanc. Un sept manuscrit vient se poser en gris sur la grille : sa barre du haut traverse la bande de part en part, une lueur court le long des traits rouges depuis la colonne de gauche et s'arrête au bord de la grille ; le rond cerclé se remplit, et le score vingt-trois virgule quatre s'inscrit à droite. Un un le remplace : son trait n'effleure la bande que d'une case, le rond reste presque vide, et cinq virgule zéro s'inscrit dessous. Puis un zéro, dont l'arc traverse largement la bande : vingt-cinq virgule huit, davantage que le sept. Une tache rectangulaire pleine se construit alors case par case, recouvre la bande et déborde tout autour ; le rond se remplit au maximum et son score, trente-neuf, dépasse les trois autres, qu'un cadre rouge vient souligner. Enfin cent trente-deux cases entourant la bande, une marge de trois cases tout autour, passent au bleu ardoise. Les quatre entrées repassent une à une : seul le sept garde un score positif, dix virgule six, et le rond ne s'allume plus que pour lui ; le un tombe à moins cinq virgule six, le zéro à moins neuf virgule huit, la tache à moins quatre-vingt-treize. Le cadre rouge se referme cette fois sur le sept.
Le score de la bande seule, sur quatre entrées
zone positive lignes 8 à 10, colonnes 9 à 21 (39 pixels à +1)
entrée z = somme de l'encre
image de test n°0 (un 7) 23.4000
image de test n°2 (un 1) 5.0039
image de test n°3 (un 0) 25.8549
tache large construite 39.0000Lecture
L'image du marque : sa barre supérieure traverse la bande de part en part.
L'image du marque : un est un trait vertical étroit, qui ne croise la bande que sur quelques cases, la plupart à peine grises.
Mais l'image du marque , davantage que le , et la tache marque , le maximum possible.
Deuxième temps : ce que ce neurone ne distingue pas
La tache large n'est pas une image du jeu : c'est un contre-exemple construit exprès, un rectangle d'encre pleine qui couvre exactement les lignes à et les colonnes à , c'est-à-dire la bande et tout son pourtour. Elle obtient le score maximal, , parce que ses pixels de bande sont tous noirs. Le neurone ne mesure pas la présence d'un trait, il mesure une quantité d'encre : n'importe quelle surface encrée qui contient la bande le satisfait mieux qu'un trait fin.
Du plus grand au plus petit score, le classement obtenu place donc la tache, puis le , puis le , puis le , et il est faux pour ce qu'on voulait : une surface pleine y passe devant la barre qu'on cherchait à repérer.
Troisième temps : refuser ce qui déborde
Ce qui manque au neurone est de pouvoir refuser, et la décomposition dit comment, puisqu'un poids négatif fait descendre quand son pixel porte de l'encre.
On garde donc sur la bande, et on pose sur son pourtour , une marge de trois cases tout autour. Ce pourtour est le rectangle des lignes à et des colonnes à privé de la bande elle-même, soit pixels.
Le même calcul, avec le pourtour négatif
zone positive lignes 8 à 10, colonnes 9 à 21 (39 pixels à +1)
pourtour négatif marge de 3 pixels autour (132 pixels à -1)
tous les autres poids sont nuls (613 pixels à 0)
entrée temps 1 temps 3
image de test n°0 (un 7) 23.4000 10.6627
image de test n°2 (un 1) 5.0039 -5.6431
image de test n°3 (un 0) 25.8549 -9.8078
tache large construite 39.0000 -93.0000Lecture
Le classement s'inverse, et le reste seul positif : sa barre dépose dans la bande sensiblement plus d'encre que dans le pourtour, et la soustraction lui laisse donc un score positif. Le tableau n'a que deux colonnes parce que le deuxième temps ne pose aucun poids : il lit les scores du premier et constate qu'ils sont faux.
Le passe de à : son arc traversait la bande, mais il traverse aussi le pourtour, et le second terme l'emporte.
La tache passe de à : elle remplit le pourtour entier, pixels à , et c'est très exactement ce qu'on lui demandait de payer.
Le reste faible dans les deux cas, mais il passe sous zéro : sa hampe traverse le pourtour bien plus qu'elle ne touche la bande, ce qui fait passer son score de à .
Un neurone est donc entièrement décrit par deux choses, toutes deux inscrites dans : les endroits où il veut de l'encre, marqués par des poids positifs, et ceux où il n'en veut pas, marqués par des poids négatifs. Le second n'est pas un raffinement du premier, puisque sans lui le neurone ne distingue pas un trait d'une tache, et la mesure ci-dessus le montre en quatre nombres.
Les quatre entrées de la mesure ci-dessus sont reprises ici, sans leurs scores.
- a
Classer les quatre entrées par score décroissant du détecteur de .
- b
Justifier chaque position par la décomposition : quelle part du score vient de la zone, quelle part du pourtour.
- c
Quelle forme devrait avoir une image pour obtenir le score le plus bas possible avec les poids de , et que vaudrait alors ce score ?
Aucune réponse à cliquer : il y a un calcul à faire.