L'intelligence Artificielle a quelque chose de magique. Elle semble la réponse à tellement de problèmes que de plus en plus de personnes imaginent qu'il suffit d' "ajouter une IA" à une application pour qu'elle puisse résoudre tous les problèmes.
Mais qu'est-ce que veut dire "ajouter une IA" et qu'est-ce que cela va permettre ? Tentative de démystification dans cet article.
L'informatique a toujours été là pour résoudre des problèmes complexes. Ainsi, même si on ne parle pas d'intelligence artificielle, un traitement informatique est toujours un automate qui prend en entrée un certains nombres de paramètres et y applique des opérations - généralement trop complexes pour un être humain - pour calculer une sortie. On parle non pas d'intelligence mais "d'algorithme".
Le principe général des algorithmes est d'utiliser des conditions pour déterminer des choix à réaliser.
Un peu comme cela:
// Ma première IA Si (une condition) alors Une réponse Sinon Une autre réponse
Évidemment, cela marche bien quand les conditions sont simples mais quand, par exemple, il s'agit de reconnaître un chat dans une image cela devient compliqué de trouver des conditions.
Comment traduire une image, qui est un grand nombre de pixels, en une série de conditions ?
Impossible par exemple de tester la couleur ou la manière dont sont alignés les pixels pour écrire une algorithme avec un ensemble de conditions simples pour déterminer si on a affaire à un chat.
(extrait de Introduction to Deep Learning for Computer Vision)
C'est précisément là, lorsque l'algorithmique est dépassée, que l'Intelligence Artificielle et plus particulièrement, le Machine Learning a son rôle à jouer.
Reconnaître une forme dans une image, détecter la nature d'un geste à partir des valeurs de capteurs, identifier des tournures de phrases similaires, retrouver des séquences de jeux gagnantes, … voilà quelques exemples de choses que savent particulièrement bien faire l'Intelligence Artificielle comme vous avez déjà pu le lire dans la presse.
Mais tous ces exemples reviennent finalement à la même chose: faire du "pattern matching". Autrement dit, reconnaître un modèle dans un ensemble de données.
Et pour reconnaître un modèle avec de l'Intelligence Artificielle, il n'y a pas besoin d'écrire un algorithme informatique pour expliquer à la machine comment reconnaître le modèle.
Avec le Machine Learning, on va simplement devoir présenter le modèle plein (beaucoup beaucoup !) de fois différentes à une Intelligence Artificielle et après elle saura toute seule reconnaître le modèle dans un ensemble de données.
D'où le nom de "Machine Learning": une machine qui apprend.
Magique non ?
Evidemment l'entraînement est donc l'étape clé du Machine Learning.
Si nous prenons notre exemple de reconnaissance d'un chat, cela veut dire concrètement qu'il va falloir disposer de plusieurs milliers de photos de chats de forme, taille, couleur et position différentes dans des endroits différents et les présenter à notre Intelligence Artificielle.
Dans la forme la plus courante de Machine Learning, le Deep Learning, le fait de présenter toutes ces photos permet à un réseau de neurones d'ajuster les poids des connexions entre les couches de neurones pour trouver la configuration idéale pour détecter un chat dans une image.
(extrait de Image Net)
Une fois les milliers de photos de chats utilisées pour l'entrainement, on en utilise d'autres pour vérifier l'efficacité de l'apprentissage et tant que l'on n'est pas satisfait du taux de reconnaissance, on ajuste les paramètres et on refait l'apprentissage.
A la fin, on peut présenter une nouvelle photo de chat et l'Intelligence Artificielle va reconnaître automatiquement qu'il y a un chat (avec une certaine probabilité).
Et ce qui marche pour de la reconnaissance de chat marche de la même manière pour les autres exemples où les modèles à reconnaître sont des données plutôt que des images.
Voilà comment on entraîne une IA.
Maintenant comment ajouter une IA à une application ?
La bonne nouvelle est qu'il n'est pas indispensable d'être un expert ou un data scientist pour intégrer de l'Intelligence Artificielle dans une application.
De très nombreux outils aujourd'hui vous mâchent le travail en proposant des réseaux pré-entraînés pour reconnaître des images ou du texte. Microsoft Azure Computer Vision, Vision AI de Google ou Amazon Rekognition vous proposent par exemple des API d'analyse d'images/vidéos pour détecter automatiquement des personnes ou des objets et intégrer ces traitements dans votre application.
De même si vous voulez construire votre propre Intelligence Artificielle à partir de vos jeux de données, Azure Machine Learning ou Amazon SageMaker vous proposent graphiquement de construire vos phases d'apprentissages et de comparer simplement différents modèles et paramètres pour choisir le plus performant et le packager dans votre application.
(extrait de Getting Started with Azure ML)
A plus bas niveau, mais nécessitant un peu plus d'expertise, des outils comme TensorFlow de Google ou MXNet d'Apache, vous permettent de construire et configurer votre réseau de neurones et le déployer simplement sur tout type de machine.
Tout semble donc réuni pour pouvoir ajouter facilement une Intelligence Artificielle dans votre application. Il y a néanmoins plusieurs limites à bien prendre en compte avant de se lancer :
Voilà, j'espère que cela aura éclaircit le sujet pour vous et vous aura donné envie vous aussi d'intégrer de l'Intelligence Artificielle dans votre application.
Et si vous veniez au Spot Bouygues pour l'expérimenter ?