Deep Learning
En français, Deep Learning se traduit par « apprentissage profond », une expression qui peut sembler abstraite. Beaucoup de personnes parlent de deep learning sans vraiment savoir à quoi cela correspond, en y ajoutant souvent une bonne dose de fantasme.
En réalité, c'est assez simple. Pour mieux comprendre, comparons deux domaines : d'un côté, la reconnaissance optique de caractères, et de l'autre, l'apprentissage automatique.
Imaginez que vous deviez faire reconnaître à un calculateur doté de cellules photosensibles une des 26 lettres de l'alphabet latin sur un damier de \(32 \times 32\) carrés en niveaux de gris. Certains carrés seront noirs et vaudront \(1\), d'autres blancs et vaudront \(0\), et d'autres dans plusieurs nuances de gris, soit une valeur comprise entre \(0\) et \(1\) (un nuancier de 256 couleurs, en fait). On pourrait dire que la première étape d'entrée, celle qui correspond aux capteurs photosensibles, comprend \(32 \times 32 = 1024\) cases. La dernière couche, celle qui correspond aux valeurs de sortie, ne comprendra que 26 cases, correspondant aux 26 lettres (les résultats attendus, par exemple que telle image est un B). Les algorithmes qu'on peut utiliser dans cet exemple sont ceux qui permettent de segmenter l'image, de procéder à une détection des lignes et des formes, et de déterminer les caractéristiques statistiques de l'image, qui constituent autant de données de traitement d'image. Au bout du compte, si l'on souhaite analyser ainsi tout un document, nous aurons sa transcription numérique.
Maintenant, imaginons que nous voulions non plus seulement reconnaître des caractères, mais identifier un document, déterminer dans quelle langue il est écrit et établir la période de l'histoire à laquelle il peut appartenir.
Les choses vont se compliquer, n'est-ce pas ? On pourrait se contenter d'une grande base de données et comparer les matrices, mais si nous n'avons qu'un bout de manuscrit écrit en latin médiéval, il va nous faloir bien autre chose qu'un « simple » programme. C'est de l'apprentissage automatique. Le but de la manoeuvre consistera à :
- reconnaître des caractères et identifier dans quel alphabet ils sont écrits,
- anticiper le sens de la phrase par itérations successives, et identifier les époques possibles
- reconnaître et comparer des mots et des phrases qui ont un sens dans une langue et pas dans d'autres langues, qui sont employés à telle époque et pas dans d'autres, etc.
Pour cela, il faut entraîner notre machine à partir d'un très grand nombre d'exemples. L'algorithme d'apprentissage que nous allons utiliser va « découper » la procédure. Pour simplifier : d'abord reconnaître des formes, ensuite les comparer avec les formes trouvées dans différents alphabets, puis comparer les mots et les phrases avec un corpus très large d'œuvres écrites dans toutes les langues du monde. L'apprentissage proprement dit consistera ensuite à soumettre des données d'entrée et à comparer le résultat attendu. Par exemple, soumettre des mots en vietnamien (écrit en alphabet latin) et voir si la machine reconnaît cette langue et éventuellement la rapproche de l'un ou l'autre dialecte. On fait la même chose pour entraîner la machine à reconnaître l'état du manuscrit, la tournure des phrases, et tous les indices permettant la datation, etc.
Rappelez-vous que nous avons vu plus haut que les réseaux neuronaux consistent à trouver des chemins pour prédire un résultat tout en ajustant des coefficients synaptiques pour permettre des connexions entre neurones dans différentes couches neuronales. Dès lors, dans cette phase d'apprentissage, il s'agira de former un modèle (un modèle de « chemin synaptique ») qui, face à une nouvelle entrée inconnue, permettra par itérations de prédire le meilleur résultat possible. Cela suppose de nombreuses couches neuronales entre la couche d'entrée et la couche de sortie : il ne s'agit plus seulement de détecter des formes, mais d'identifier et de comparer des groupes nominaux, des groupes verbaux, des schémas de phrases, de trouver des points communs et finalement de produire un résultat. Et même… entre ces couches, on peut imaginer des couches cachées (hidden layers) qui permettent de rendre plus opérationnelles les abstractions (avec une aide statistique, ou des algorithmes plus spécialisés qui permettraient pour une langue donnée d'affiner le résultat ou d'émettre des biais d'apprentissage volontaires). C'est pourquoi il existe des formes d'apprentissage dites supervisées.
Plus ces couches sont nombreuses, plus l'apprentissage sera profond. C'est à cela que correspond le deep dans deep learning. Mais fondamentalement, le Deep Learning, c'est de l'apprentissage automatique utilisant par conséquent de très gros volumes de données.