Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
7 à voir

A la découverte des technologies

Et si on ajoutait une Intelligence Artificielle ?

Et si on ajoutait une Intelligence Artificielle ?

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 c'est de l'intelligence artificielle

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.

Et si on ajoutait une Intelligence Artificielle ?

(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.

 

 

Pattern matching

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 si on ajoutait une Intelligence Artificielle ?

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 ?


Il faut beaucoup s'entraîner

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.

Et si on ajoutait une Intelligence Artificielle ?

(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.

 
Comment ajouter votre 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.

Et si on ajoutait une Intelligence Artificielle ?

(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.


Les limites

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 :

  • Le problème doit être adapté: L'Intelligence Artificielle est très bien adaptée lorsqu'il s'agit de faire de la classification. C’est-à-dire identifier un objet ou un phénomène, classer quelque chose, … Par contre contrairement à ce que le nom "Intelligence" laisse à penser il ne s'agit pas d'une Intelligence autonome qui va prendre des décisions toutes seules. Elle ne pourra prendre des décisions qu'à partir de cas similaires que vous lui aurait présenté. Si la résolution de votre problème doit faire appel à de la créativité, de l'intuition ou de l'autonomie, faites le plutôt traiter par de l'intelligence humaine :-)
  • Le jeu de données doit être conséquent: Pour pouvoir prendre des décisions, il faut disposer de données pour entraîner votre machine. On estime que pour reconnaître une image de chat dans 95% des cas, il faut présenter environ 100 000 images de chats à une Intelligence Artificielle. Pour pouvoir entraîner votre Intelligence sur vos données, il faudra donc disposer d'un grand nombre de données (images, valeurs de capteurs ou texte, selon votre contexte). Et évidemment ce n'est pas forcément facile de disposer de ces données lorsque précisément on veut créer une nouvelle fonctionnalité "intelligente" dans une application.
  • Le jeu de données doit être qualifié: Votre jeu de données doit non seulement être conséquent mais il doit aussi être "qualifié". C’est-à-dire que par exemple pour reconnaître des données valides il faut pouvoir disposer d'un jeu de données correspondant à des configurations valides, mais aussi à des configurations invalides pour que l'entraînement soit capable de faire la différence. J'ai été confronté par exemple à un client qui, très fier, est venu me dire: "Voilà j'ai réuni un ensemble de photos avec plein d'erreurs possibles, on peut entraîner une IA ?". Je lui alors demandé "Mais vous avez des photos avec des cas nominaux ?". Et évidemment, il n'avait jamais pensé à faire des photos lorsqu'il n'y avait aucun problème. Il faut également être vigilent car un entraînement sur des données incomplètes peut déclencher des biais d'apprentissage dangereux. Le triste accident d'un Uber autonome contre un vélo était par exemple dû à la faible probabilité détectée par l'IA qu'un vélo puisse se trouver à cet endroit là (une bretelle d'autoroute) puisqu'elle n'y avait jamais été confronté.
  • Il faut du temps: Vu les quantités de données manipulées et les opérations nécessaires, il est évident que la phase d'entrainement prend du temps et de la puissance. Surtout qu'elle nécessite souvent des allers/retours pour tester des modèles et des paramètres différents afin d'obtenir le meilleur résultat. On parle souvent de l'exemple de l'IA Alpha Go de Google qui a appris toute seule le jeu de Go et a battu le champion du monde de la discipline. Il n'est pas inutile de préciser que son entraînement s'est fait sur 30 millions de coups extraits de 160 000 parties et s'est exécuté sur 1500 CPU et 200 GPU !

 

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 ?

 

Article précédent Article suivant
Retour à l'accueil
Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article