Il ne se passe pas une seule journée sans qu’une actualité sur les prouesses de l'Intelligence Artificielle ne paraisse. Beaucoup d’évangélistes promettent un avenir radieux aux entreprises grâce au Machine Learning et au Deep Learning. Mais de quoi s’agit-il exactement ? VeryFrog vous présente ici toutes ces notions ainsi que l’implémentation phare du Deep Learning : le réseau neuronal.
IA, Machine et Deep Learning.
On rencontre souvent ces 3 termes dans la littérature et parfois ils sont même confondus. Pourtant ils représentent des domaine bien particuliers, tout en étant entremêlés.
L’Intelligence Artificelle (IA) regroupe l’ensemble des techniques visant à reproduire le comportement humain par des machines. Le Machine Learning (ML) est un sous domaine de l’IA cherchant à implémenter cet intelligence grâce à des algorithmes entraînés avec des données massives. Enfin, le Deep Learning (DL) est à sont tour un sous domaine du ML s’inspirant de la structure du cerveau humain.
Le cerveau humain est organisé autour de neurones connectés entre eux par des synapses. Il y en a près de 100 milliards dans notre cerveau ! Ces connexions de neurones forment alors un réseau que le Deep Learning va tenter de transposer informatiquement. Le résultat s’appelle alors un réseau neuronal artificiel.
Le Réseau Neuronal
Structure d’un réseau neuronal
Un réseau neuronal artificiel va être naturellement composé de neurones reliés entre eux. Ces derniers vont êtres organisés en différentes couches (layers). Chaque neurones d’une couche est alors connecté aux neurones de la couche suivantes comme sur l’illustration suivante:
La première couche, nommée couche d’entrée, (input layer) permet d’entrer les données dans le réseau neuronal. La dernière couche (couche de sortie ou output layer) restitue le résultat de l’entraînement. Les couches intermédiaires effectuent alors le calcul mais nous n’avons pas accès à ces dernières. C’est pourquoi on les appelles les couches cachées (hidden layers).
Fonctionnement du réseau
Chaque connexion dispose d’une valeur numérique, nommé poids et chaque neurone dispose d’une fonction mathématique appelée fonction d’activation. Ainsi, chaque neurone récupère la valeur des neurones de la couche précédentes qu’il multiplie par le poids des connexions avec ces neurones. Il fournit toutes ces valeurs à sa fonction d’activation. Le résultat de cette fonction détermine si le neurone peut transmettre sa valeur aux neurones de la couche suivante. On dit alors qu’il est activé.
Le réseau neuronal est alimenté via sa couche d’entrée. Par exemple, si on veut entraîner le réseau sur des images, on va prendre chaque pixel de cette image et donner la valeur de ce dernier (sa couleur par exemple) à un neurone de l’input layer. On effectue alors le calcul précédent pour tous les neurones, couche par couche jusqu’à la couche de sortie. On appelle cela la propagation avant (forward propagation). La couche de sortie permet alors de lire le résultat. Elle comporte souvent peu de neurone. Par exemple, un réseau neuronal chargé de reconnaître une image de chat n’aura que 2 neurones : un qui sera activé si c’est un chat et un autre qui sera activé sinon (on peut même l’implémenter avec 1 seul neurone !)
Entraînement du réseau neuronal
On comprend alors que les calculs du réseau neuronal dépendent en fait des poids des synapses. Au tout début, ces poids sont choisis aléatoirement pour permettre la propagation avant et obtenir un résultat. L’idée est maintenant de confronter ce résultat avec le résultat attendu.
La différence entre le résultat du calcul et celui attendu fournit alors une erreur et donc une marge de correction. Cette marge est alors répercutée (via des calculs mathématiques) sur les poids des connexions, en partant de la couche de sortie vers la couche d’entrée. On appelle cette phase la propagation arrière (back propagation).
Ce processus de propagation avant suivi d’une propagation arrière est alors répété avec toutes les données à disposition afin de réduire la marge d’erreur. L’entraînement prend alors fin lorsque l’erreur atteint un seuil minimal sur l’ensemble du jeu de données.
Limitations du Réseau Neuronal
Une fois l’entraînement terminé, on peut présenter de la nouvelle donnée au réseau neuronal et on obtient le résultat via une simple propagation avant. Cette propagation est rapide à calculer, du coup le réseau neuronal est très efficace dans ce rôle et peut être exécuté par des appareils léger comme les téléphones.
En revanche, la propagation arrière impose plus de contraintes de calcul. C’est pourquoi l’entraînement d’un réseau neuronal va nécessiter de posséder une certaine puissance. Concrètement, un tel réseau va être implémenter sous forme de matrice (la matrice des poids des connexions) et les propagations vont donc être du calcul matriciel. Ce type de calcul est plutôt gourmand, d’autant plus si on utilise beaucoup de couches cachées. Cependant, on peut facilement porter ce type de calcul sur des GPUs pour accélérer les entraînements. Mais le coûts de ces GPUs est encore conséquent, sans compter les coûts cachés comme le refroidissement et la consommation électrique. Ce n’est donc pas à la portée de toutes les bourses.
Enfin, pour être réellement pertinent, un réseau neuronal doit être entraîné avec énormément de données. Si on utilise trop peu de données, le réseau neuronal va performer sur le jeu d’entraînement mais pas sur d’autres données. En fait, le réseau aura appris par cœur les données et sera perdu avec de nouvelles. Le problème va donc être de disposer et de stocker tout en ensemble de données pour nourrir le réseau. Là encore, il est nécessaire de disposer d’une infrastructure conséquente, dédiée au Big Data, mais aussi d’avoir un impact fort dans votre domaine de recherche pour obtenir toutes ces données. Là encore, il faudra prévoir de forts investissements et avoir une certaine renommée pour que le données viennent à vous facilement.
Conclusion
Les réseaux neuronaux sont donc des outils incroyables, même s’ils ne peuvent être entraînés qu’à un seule tâche. La capacité à émuler un cerveau humain est attirante mais cela ne peut se faire qu’avec des investissements conséquents. C’est pourquoi émergent depuis quelques années des Clouds dédiés à l’entraînement de tels réseaux. La barrière à l’entrée d’une telle technologie devient donc chaque jour de plus en plus basse, et votre entreprise pourra certainement en bénéficier à court terme. N’hésitez pas à nous contacter si vous souhaitez mettre en place vous aussi une infrastructure Deep Learning dans votre entreprise.