Cet article a pour objectif de présenter l’intérêt et les bases de fonctionnement des réseaux de neurones qui sont de plus en plus présents dans le quotidien du numérique.
Certains experts du web sont allés jusqu’à déclarer qu’une application moderne et innovante ne peut aujourd’hui plus s’en passer. Ce domaine d’expertise peut sembler très hermétique. D’autant plus que la littérature sur le sujet est composée principalement d’articles scientifiques spécialisés. Cependant, ce n’est pas forcément hors de portée et en connaître les bases de fonctionnement ne peut être qu’enrichissant.
Précisons qu’à Imagile nous n’avons pas la prétention d’être des experts en IA (Intelligence Artificielle) ou en very deep learning. Ce sont plutôt les possibilités offertes et la curiosité qui nous ont poussés à tester cette technologie de plus en plus présente dans les applications que nous utilisons au quotidien.
Un réseau de neurones artificiels est un ensemble d’algorithmes complexes permettant d’entraîner un modèle inspiré d’un réseau de neurones biologique. On pourrait dire rapidement qu’on va apprendre au modèle ce que l’on souhaite, de façon temporaire ou en continu, pour ensuite lui demander d’interpréter des données à l’aide de ce qu’on lui a préalablement appris.
![Ilustration de réseau de neurones biologique par kerja otak Ilustration de réseau de neurones biologique par kerja otak](https://www.imagile.fr/wp-content/uploads/2017/05/beyondthinking-300x173.jpeg)
Concrètement, les réseaux de neurones sont utilisés pour faire de l’analyse et de la classification automatique d’image, de l’analyse sémantique de texte, des calculs statistiques, de la résolution d’équation complexe et de l’analyse vocale, voire même médicale.
Les modèles de réseaux de neurones peuvent être divisés en deux grandes catégories :
- Les réseaux de neurones supervisés : la phase d’apprentissage du modèle est contrôlée, le modèle est forcé de converger vers un état précis et l’entraînement du modèle ne se fait pas en continu. C’est ce type de neural network que nous allons vous présenter ici.
- Les réseaux de neurones non supervisés : la phase d’apprentissage ne s’arrête jamais. Le modèle est alimenté en permanence par des flux de données et est libre de converger vers n’importe quel état.
Qu’en est-il de la fiabilité de cette technologie qui est encore très jeune et qui est de plus en plus présente depuis ces deux dernières années ? Et bien les évolutions en la matière ont été démesurées. Là où il y a quelques années, les meilleurs modèles peinaient à atteindre les 60-70 % de précision, ils atteignent aujourd’hui les 97 % de précision (accuracy).
Voici le schéma simplifié d’un « Convolutional Neural Networks » qui est le modèle de référence pour la reconnaissance automatique d’image. Comme vous pouvez le constater, c’est assez compliqué et encore, je ne vous parle pas du reste ! Je ne vais donc pas vous parler du fonctionnement interne d’un réseau de neurones, mais plutôt des grandes étapes nécessaires à son développement grâce à des frameworks comme Tensorflow.
Voici les grandes étapes du développement d’un réseau de neurones :
- Préparation du jeu de données (dataset) : c’est l’une des étapes la plus importante et souvent la plus longue. Il s’agit simplement de réunir les données qui vont être utilisées pour l’apprentissage et la validation par notre modèle.
- Création du modèle : c’est une étape technique qui sert uniquement à définir la « forme » et les caractéristiques de notre futur modèle. Le type de modèle, le nombre et le type de couches (layer), le type d’optimiseur ou les indicateurs souhaités, par exemple.
- Paramétrage du réseau : c’est l’étape des réglages, on définit ici le rapport entre données de validation et d’apprentissage, le nombre de cycles d’apprentissage (epoch), la condition d’arrêt, la taille du batch (nombre de données apprises simultanément)…
- La phase d’apprentissage : le modèle s’entraîne sur les données mises à sa disposition en se basant sur le modèle et son paramétrage.
- La phase de validation : le modèle vérifie son apprentissage et génère des statistiques de validation pour chaque epoch.
- La phase de test : similaire à la phase de prédiction, elle nous permet de tester réellement notre modèle afin de vérifier son bon fonctionnement.
- La phase de prédiction : c’est l’état final du modèle, celui-ci est dit « entraîné » et peut être utilisé en l’état. Attention, un modèle entraîné ne veut pas dire un modèle pertinent, c’est à vous de déterminer si votre modèle est fonctionnel.
Il faut s’imaginer comme le mentor (le développeur) d’une autre personne (le modèle). Dans un premier temps, vous lui apprenez quelque chose (c’est la phase d’apprentissage) puis vous vérifiez qu’il a bien assimilé ces nouvelles connaissances (c’est la phase de validation). Lorsque ce n’est pas le cas, vous adaptez votre enseignement afin de lui faire comprendre autrement (on adapte les paramètres du réseau ou le jeu de données). Une fois cette étape d’enseignement terminée, vous testez le modèle sur un projet réel tout en continuant de surveiller son travail (c’est la phase de test). Si tout se passe toujours bien après cette étape, c’est que vous avez confiance en son jugement donc vous pouvez le laisser travailler plus librement (c’est la phase de prédiction). Enfin, comme tout bon mentor qui se respecte, vous devrez continuer à vérifier, de temps en temps, le fruit de son travail pour vous assurer que tout va bien (on vérifie la cohérence des prédictions régulièrement).
Si vous ne le saviez pas déjà, vous allez maintenant découvrir que vous utilisez des applications et des services basés sur des réseaux de neurones de façon quotidienne !
Le système de suggestion et recommandation de YouTube utilise un groupe de réseaux de neurones basés sur une analyse des goûts et du comportement de l’utilisateur. Le ranking des vidéos est déterminé dynamiquement par un autre réseau de neurones de type prédictif/probabiliste.
La SNCF utilise elle plusieurs réseaux de neurones de calculs afin de vérifier la géométrie des voies et ainsi calculer les réponses dynamiques des trains.
La célèbre application mobile Snapchat se sert d’un réseau de neurones afin de repérer dynamiquement tous les points clefs d’un ou plusieurs visages et ainsi y appliquer ses filtres.
Google Maps (ou Google de façon générale) utilise de très nombreux réseaux de neurones afin d’analyser les données récoltées en temps réel. C’est de cette façon que l’application est capable de vous calculer des itinéraires optimaux tenant compte des bouchons, des travaux ou autres ralentissements. Des réseaux de neurones d’analyse comportementale sont également la raison pour laquelle votre domicile, lieu de travail ou bistrot préféré apparaissent automatiquement sur votre application.
La validation et la vérification d’image, d’avis et de réponse d’avis de Tripadvisor utilisent également des réseaux de neurones d’analyse sémantique, de détection de commentaires abusifs ou inappropriés et de reconnaissance d’image.
Le business modèle de Airbnb repose entièrement sur la confiance de ses utilisateurs. Pour cette raison, ils utilisent un réseau de neurones de prévention et détection des risques (ce modèle est d’ailleurs capable de réagir à une situation jugée risquée de façon dynamique).
Dans l’article suivant, nous vous présentons comment et avec quelles technologies nous avons créé et entraîné notre propre réseau de neurones automatisé. Il est plus technique et plutôt orienté développement :