Histoire de l’IA

Comment l’équipe de Yann LeCun a-t-elle appris à un réseau de neurones à lire des codes postaux manuscrits en 1989?

· Par Robert Scales · 6 min de lecture

Réponse courte

En 1989, Yann LeCun et six collègues des AT&T Bell Laboratories ont entraîné par rétropropagation un réseau de neurones à lire les chiffres manuscrits des codes postaux (ZIP codes) tirés du vrai courrier américain, en lui fournissant les pixels bruts plutôt que des caractéristiques conçues à la main. Son astuce clé : laisser de petits groupes de connexions partager les mêmes poids, pour que le réseau apprenne ses propres détecteurs de motifs, valables n’importe où dans l’image. C’est l’idée derrière les réseaux de neurones convolutifs d’aujourd’hui.

Une grande partie de la vision par ordinateur d’aujourd’hui, des applications qui trient les photos aux machines qui lisent les chèques, remonte à un court article de 1989. Une équipe des AT&T Bell Laboratories y montrait qu’un réseau de neurones pouvait apprendre à lire des chiffres manuscrits brouillons directement à partir des pixels, sans qu’un humain lui dise quels traits ou quelles courbes chercher.

L’article, « Backpropagation Applied to Handwritten Zip Code Recognition » (la rétropropagation appliquée à la reconnaissance des codes postaux manuscrits), a paru dans la revue Neural Computation en 1989. Son premier auteur, Yann LeCun, était entré au service de recherche sur les systèmes adaptatifs (Adaptive Systems Research Department) des Bell Labs, à Holmdel, au New Jersey, en octobre 1988. Ce service était dirigé par Lawrence Jackel, l’un des six coauteurs.

Qu’a construit l’équipe?

Le problème venait du service postal des États-Unis (US Postal Service). Trier le courrier à la machine suppose de lire les codes postaux, et les gens écrivent les chiffres d’innombrables façons : grands, petits, penchés, soignés ou bâclés, au stylo, au crayon ou au marqueur. L’équipe a travaillé avec 9 298 chiffres isolés, découpés dans les codes postaux d’enveloppes passées par le bureau de poste de Buffalo, dans l’État de New York. Elle en a utilisé 7 291 pour entraîner le réseau et en a gardé 2 007 de côté pour le tester sur des chiffres qu’il n’avait jamais vus. Certains de ces chiffres étaient si mal écrits que même une personne aurait hésité.

Des sous-traitants du service postal avaient déjà repéré le code postal sur chaque enveloppe et l’avaient découpé en chiffres séparés, ce qui est une tâche difficile en soi. Chaque chiffre était ensuite réduit à une petite grille de 16 sur 16 pixels gris. À partir de là, un seul réseau faisait tout le reste : il recevait les 256 valeurs des pixels et produisait dix sorties, une pour chaque chiffre de 0 à 9. La sortie la plus élevée était la réponse.

C’était là l’audace. Quelques mois plus tôt, un système des Bell Labs conçu pour la même tâche par John Denker et ses collègues utilisait des premières couches dont les réglages avaient été établis à la main. Dans le nouveau réseau, chaque connexion était apprise par rétropropagation, la méthode qui ajuste les poids d’un réseau en renvoyant ses erreurs à rebours à travers les couches.

Comment ça fonctionnait?

Un réseau qui relie chaque pixel à chaque unité a beaucoup trop de boutons à régler pour quelques milliers d’exemples. Il a tendance à mémoriser les chiffres d’entraînement au lieu d’apprendre ce qui fait qu’un 3 est un 3. L’équipe de LeCun a plutôt intégré des connaissances sur les images dans la forme même du réseau.

La première couche cachée, appelée H1, contenait 12 petites « cartes de caractéristiques », chacune étant une grille de 8 sur 8 unités. Chaque unité ne regardait qu’une parcelle de 5 sur 5 de l’image d’entrée. Et toutes les unités d’une même carte utilisaient exactement les mêmes 25 poids. Une carte entière agissait donc comme un petit pochoir qu’on fait glisser sur l’image et qui s’allume partout où son motif apparaît : peut-être un trait vertical dans une carte, le bord d’une courbe dans une autre. Faire glisser ainsi un seul pochoir sur une image, c’est ce que les mathématiciens appellent une convolution, d’où le nom de « réseau convolutif ».

Une deuxième couche, H2, faisait la même chose sur les cartes de H1, en combinant des caractéristiques simples pour en former de plus complexes. Les deux couches avançaient aussi sur l’image deux pixels à la fois, ce qui conservait la position approximative d’une caractéristique tout en laissant tomber les détails précis qui ne servent pas à distinguer les chiffres. Une troisième couche de 30 unités, puis les 10 sorties, étaient entièrement connectées de la manière habituelle.

Voici ce que le partage des poids a permis d’économiser :

Partie du réseauConnexionsPoids réellement appris
Couche H119 9681 068
Couche H238 5922 592
Réseau entier64 6609 760

Le réseau comptait 1 256 unités en tout. Il a été entraîné sur un poste de travail Sun avec un logiciel écrit par Léon Bottou et LeCun, et l’entraînement a pris environ trois jours.

À essayer : sur du papier quadrillé, tracez une grille de 16 sur 16 et écrivez-y un chiffre. Découpez ensuite une fenêtre de 5 sur 5 dans un carton et faites-la glisser deux cases à la fois sur votre chiffre, en marquant chaque endroit où la fenêtre montre un trait surtout vertical. Les marques que vous recueillez forment une « carte de caractéristiques ».

Quels ont été les résultats?

Après 23 passages sur l’ensemble d’entraînement, le réseau se trompait sur 0,14 % des chiffres d’entraînement (10 erreurs) et sur 5,0 % des chiffres de test (102 erreurs). En pratique, une machine postale peut refuser de deviner quand elle n’est pas sûre; pour atteindre un taux d’erreur de 1 %, le réseau devait mettre de côté environ 12 % des chiffres de test pour un humain. La plupart de ses erreurs venaient de chiffres mal séparés de leurs voisins, ou de styles d’écriture absents de l’ensemble d’entraînement.

L’équipe a aussi essayé un réseau ordinaire entièrement connecté, avec une seule couche cachée. Il faisait 8,1 % d’erreurs sur l’ensemble de test, bien pire. La conception contrainte était aussi légèrement meilleure que le système précédent aux premières couches conçues à la main, même si on y avait intégré beaucoup moins de connaissances sur les chiffres. Certains des pochoirs appris ressemblaient même aux détecteurs de contours que l’on trouve dans la vision animale.

Pour montrer que cela pouvait fonctionner dans le monde réel, l’équipe a fait tourner le réseau entraîné sur une carte de traitement du signal AT&T DSP-32C du commerce, installée dans un ordinateur personnel muni d’une caméra. L’ensemble du système lisait de 10 à 12 chiffres par seconde, capture de l’image comprise.

Pourquoi est-ce important?

L’idée de cartes de caractéristiques en couches n’était pas entièrement nouvelle. Le néocognitron de Kunihiko Fukushima, en 1980, avait des couches de détecteurs à poids partagés, mais ses poids n’étaient pas appris par rétropropagation, et le réseau à délais temporels d’Alex Waibel, en 1987, partageait des poids dans le temps pour la parole. Ce qu’a fait l’article de 1989, c’est combiner des couches d’image à poids partagés avec une rétropropagation de bout en bout, et en faire la preuve sur une vraie tâche industrielle. Ce réseau est maintenant vu comme le premier de la famille LeNet, qui a mené à LeNet-5 et au banc d’essai de chiffres MNIST en 1998.

Les réseaux convolutifs de ce genre font aujourd’hui fonctionner la plus grande partie de la vision par ordinateur. En 2014, presque toutes les meilleures candidatures au grand concours de reconnaissance d’images ImageNet reposaient sur l’un d’eux.

Pourquoi le partage des poids a-t-il fait une telle différence?

Partager les poids remplit deux fonctions à la fois. D’abord, cela réduit le nombre de valeurs à apprendre : environ 65 000 connexions, mais moins de 10 000 poids ajustables. Avec moins de boutons, un réseau entraîné sur quelques milliers d’exemples risque beaucoup moins de les mémoriser et a beaucoup plus de chances de bien traiter une nouvelle écriture. L’article le formule dans le langage de la théorie de l’apprentissage, mais la version de tous les jours est simple : un ensemble de choix plus restreint demande moins de preuves.

Ensuite, le partage intègre un fait sur les images : un trait reste un trait, qu’il se trouve à gauche ou à droite de l’image. Un seul pochoir qui fonctionne partout signifie que le réseau n’a pas à apprendre « ligne verticale, en haut à gauche » et « ligne verticale, en bas à droite » comme des idées distinctes.

Cette combinaison, moins de paramètres et une hypothèse sensée sur les données, reste la raison principale pour laquelle les réseaux convolutifs fonctionnent si bien sur les images, des chiffres sur les enveloppes jusqu’aux photographies.

Sources

  1. Backpropagation Applied to Handwritten Zip Code Recognition — Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, L. D. Jackel, Neural Computation 1(4), MIT Press (doi:10.1162/neco.1989.1.4.541)
  2. LeNet — Wikipedia, 1 avril 2020
  3. Convolutional neural network — Wikipedia, 17 mai 2020

Recevez gratuitement le Guide de l’intelligence artificielle

Abonnez-vous à l’infolettre hebdomadaire et recevez le guide gratuit : ce qui a changé en IA cette semaine, une leçon, un prompt à essayer. Désabonnement en un clic.

Ce que nous faisons de votre adresse

Retour en haut

Affichage

Vos choix sont enregistrés dans ce navigateur seulement. Aucune donnée n’est transmise.

Taille du texte
100 %
Couleurs
Lecture
Autres réglages
Déclaration d’accessibilité