Deep Learning, késako ?

Deep Learning, késako ?

Par Clément Bernard

Le deep learning, ou apprentissage profond en français, est l’une des principales technologies du machine learning et de l’intelligence artificielle. Il s’agit de l’ensemble des méthodes d’apprentissage automatique opérant à partir de réseaux de neurones. Le deep learning permet par exemple de créer des IA capables d’identifier des images, des éléments d’un texte, ou encore de prédire. L’IA est désormais employée dans presque tous les domaines. Par exemple, dans le domaine médical, où des systèmes d’intelligences artificielles apprennent à repérer des tumeurs ou prévoir des épidémies, ou dans le commerce, où des logiciels estiment le prix de vente des biens de particuliers. L’application Meilleur Agent, en récupérant quelques données sur votre logement peuvent vous fournir un intervalle de prix dans lequel vous serez en théorie sûr de vendre votre bien. 

Comment ces programmes parviennent-ils à faire preuve « d’intelligence » ? Grâce à leur cerveau ! Ou, de façon plus exacte, grâce à des réseaux de neurones. Les neurones ne sont ni plus ni moins que des cellules qui reçoivent des informations, les modifient, puis les transmettent ou non à la couche de neurones suivante. Par analogie, on peut désormais créer des réseaux de neurones artificiels que l’on va entraîner pour « imiter », dans une certaine mesure, l’intelligence humaine.

La structure des réseaux de neurones

– Les neurones de la couche d’entrées (input layer) reçoivent ou génèrent les données d’entrée. Chaque type de donnée, ou encore chaque paramètre, représente un neurone d’entrée. Autrement dit, la couche d’entrée est composée d’autant de neurone qu’il n’y a de paramètre d’entrée.

L’attribut alt de cette image est vide, son nom de fichier est image-4.png.
Réseau de neurones à quatre couche. Les réseaux de neurones, au coeur du deep learning, peuvent être constitués de dizaines de couches !

Dans le cas de Meilleur Agent, les données d’entrée sont, par exemple, la situation géographique du bien, sa superficie, le nombre de pièces, le diagnostic électrique, etc.

– Les couches cachées (hidden layers) sont les couches les plus importantes de la structure. Leur nombre est variable suivant le type et la complexité du système d’IA souhaité. Concrètement, c’est au niveau de ces couches que va s’opérer l’apprentissage.

– Les couches de sortie (output layers) constituent le résultat trouvé par le système en fonction des données d’entrée.

Maintenant que nous avons établi la structure de notre IA utilisant le deep learning, comment faire en sorte qu’elle soit efficace ?

A la base du deep learning, le training set

Le créateur de l’IA doit fournir au réseau de neurones un training set, c’est-à-dire un ensemble de données qui va permettre au réseau d’apprendre. Le créateur va en quelque sorte nourrir « manuellement » (feed forward) le système avec des donnée d’entrée (les inputs) et de sortie (les outputs) afin que celui apprenne lui-même à donner la « bonne réponse », c’est-à-dire l’output correct.

Dans le cas de Meilleur Agent, le training set va être constitué de données existantes sur des biens déjà vendus, à savoir les caractéristiques d’un bien immobilier donné (inputs) et le prix auquel il a été vendu (outputs). D’où l’importance de constituer une base de données suffisamment consistante avant de se lancer dans la création d’une IA !

Que se passe-t-il au niveau du réseau de neurones ? Tout d’abord, ces différentes informations enregistrées vont être transmises aux hidden layers qui vont, via les neurones qu’elles contiennent, les modifier. Chaque neurone de la première couche cachée va recevoir les données d’entrée, puis lui appliquer une fonction mathématique prédéfinie qui lui est propre, appelée fonction d’activation. Ensuite, le neurone va ajouter un biais au résultat. Suivant le résultat obtenu, le neurone va transmettre ou non la somme obtenue à chaque neurone de la couche suivante qui, à son tour, procédera de la même façon. Tous les neurones d’une couche cachée traitent donc les données issues de tous les neurones de la couche précédente grâce à la fonction d’activation et au biais, jusqu’à arriver à la couche de sortie. Mais rappelons-nous qu’il s’agit encore du training set, et que donc les outputs peuvent être erronés !


Quelques fonctions d’activation utilisées

Le rectificateur (rectified linear unit ou encore ReLU) :

L’attribut alt de cette image est vide, son nom de fichier est image-5.png.

→ Le neurone transmet la valeur d’entrée réelle si celle si est positive. Si  négatif, le neurone transmet la valeur 0.

La fonction tangente hyperbolique :

L’attribut alt de cette image est vide, son nom de fichier est image-6.png.

→ Le neurone transforme toute valeur réelle entrée en une valeur comprise entre -1 et 1 et la transmet.

La fonction sigmoïde :

L’attribut alt de cette image est vide, son nom de fichier est image-7.png.

→ Le neurone transforme toute valeur réelle entrée en une valeur comprise entre 0 et 1 et la transmet.


Par exemple, dans le cas de Meilleur Agent, la prédiction du prix de vente issue du training set va être loin de la réalité car, au départ, chaque critère d’entrée a le même poids (weight), comme illustré par le schéma situé plus haut. Il va donc falloir donner plus de poids à certains critères et moins à d’autres. En effet, la situation géographique et la superficie vont être très importantes dans l’estimation du bien, tandis que le diagnostic énergétique ou le nombre de pièces seront eux des critères secondaires dans la détermination du prix. Il convient donc de modifier le poids de chaque donnée suivant son importance pour le résultat final.

Dans le cas de l’apprentissage supervisé (supervised learning), durant la phase d’apprentissage, le réseau de neurones va comparer les outputs auxquels il aboutit avec les outputs renseignés par les ingénieurs, c’est-à-dire les outputs auquel il est censé aboutir in fine. Si l’output est incorrect, le réseau de neurone va retourner en arrière, voir à quel(s) endroit(s) il s’est trompé, ajuster le poids de tel ou tel critère au niveau de telle ou telle couche jusqu’à aboutir à l’output correct, et garder le tout en mémoire. C’est ce qu’on appelle le back propagation.

Le back propagation ne se fait pas fait de façon aléatoire. Il s’appuie sur une fonction d’erreur, construite au préalable, qui permet de calculer la marge d’erreur de la prédiction par rapport au résultat attendu. Puis, tout en gardant un œil sur cette marge d’erreur, le réseau de neurone modifie le poids de chaque. Le réseau de neurones aboutit finalement à un certain poids pour chaque neurone qui amène à une marge d’erreur proche de 0. Dans le cas de Meilleur Agent, en réalisant ce test sur un grand nombre de biens, il a été possible de réduire ce taux d’erreur et ainsi d’obtenir une optimisation du prix de vente pour le vendeur.

L’ensemble du procédé est répété pour chaque couple input/output du training set. A la fin de l’entraînement, le poids de chaque branche a été fixé par le réseau de neurones de façon à ce que chaque couple input/output soit correct.

Le terme deep learning prend tout son sens dans la phase d’apprentissage puisque c’est durant cette étape que le réseau de neurones apprend « tout seul ».