Ces dernières semaines, on a beaucoup parlé d’intelligence artificielle, avec les algorithmes génétiques et les réseaux neuronnaux, on avait par ailleurs vu que ces derniers pouvaient être couplés. Aujourd’hui, on va voir un autre moyen de faire apprendre un réseau neuronnal : la méthode par convolution.

Histoire

C’est en 1968, suite aux travaux de chercheurs en biologie, qu’on a découvert que le cortex visuel des animaux était en réalité doté de plusieurs cellules ayant chacunes leurs responsabilités, certaines pour détecter la lumière, d’autres pour les contrastes etc..

En d’autres terme, ces cellules agissent comme une série de filtres qui ne laisse au final passer qu’une image au cerveau de l’animal. Les réseaux neuronnaux convolutifs, de la même manière que les algorithmes génétiques, s’inspirent donc d’un phénomène naturel.

Vous vous souvenez de Yann Le Cun ? Je vous avais parlé de lui dans l’article sur les réseaux neuronnaux, pionnier du deep learning, c’est donc lui qui a réfléchi en premier à cette potentielle technologie. Il la présente donc d’abord sous une forme moins élaborée en 1980, appelée néocognitron, avant de la faire évoluer en 1998 sous le nom qu’on lui donne actuellement.

Nouveau ! Trouvez un webdesigner sur le BlogDuWebdesign

Trouvez gratuitement le prochain talent qui réalisera votre projet ou rejoindra votre équipe.

A noter que comme beaucoup d’idées de grands penseurs, Yann Le Cun a balayé nombre de mépris de la part de la communauté scientifique, son article a d’ailleurs été refusé avec pour commentaire « C’est quoi un réseau convolutif ? ». 

Actuellement, il travaille pour Facebook, et toutes les grosses entreprises s’investissent dans la recherche dans ce domaine.

Utilisation et fonctionnement

Le réseau neuronnal convolutif (en anglais Convolutional neural network, souvent abrégé Convnet), est donc principalement utilisé dans la reconnaissance d’images, comme on l’avait d’ailleurs vu dans l’article sur les réseaux neuronaux. Ce système est doté d’avantages non négligeables sur les autres moyens d’apprentissage.

Ainsi, il est beaucoup plus rapide, étant donné qu’il décompose l’image en filtres et qu’il ne l’analyse donc pas pixel par pixel (ce qui serait certes plus performant, mais surtout beaucoup plus (trop) long.

Comme on l’a vu, ce système utilise des filtres afin de décomposer l’image, le nombre de filtres et leurs caractéristiques (forme et taille) sont les 2 paramètres nécessaire à la conception d’un réseau neuronnal convolutif. Il existe beaucoup de configurations possibles, souvent, on utilise en complément des couches appelées "pool" (pooling -> mise en commun), qui sont là pour éviter le sur-apprentissage, elle vont donc limiter l'image d'entrée en la décomposant en petits carrés.

De plus, entre les couches de traitement, on va aussi souvent utiliser une couche de correction, qui va appliquer une formule mathématique sur l'image qui va permettre d'accélérer le processus sans perdre beaucoup de temps.

Exemples

L'exemple que je voulais vous présenter est toujours en train d’apprendre à l'heure où j'écris ces lignes. Vous pouvez d’ailleurs le voir évoluer en temps réel.

Il s’agit donc d’un réseau neuronnal convolutif jouant à Grand Theft Auto V, son rôle est uniquement de conduire le plus vite possible sans avoir d’accidents, la particularité est que l’algorithme ne voit QUE ce qu’on voit aussi, contrairement à une IA standart d’un jeux vidéo, qui est programmée du début à la fin.

Elle doit donc analyser chaque image qu'elle reçoit, et c'est là qu'on se rend compte de la réelle puissance de ce système, le robot doit effectivement faire ses calculs très rapidement de manière à garder la fluidité du jeu.