Intégrer l’intelligence artificielle dans vos projets
- 10 mars 2019
- Envoyé par : TsipA
- Catégorie: Technologie
Au vu des avancées technologiques actuelles, l’acceptation de l’Intelligence Artificielle comme technologie et son utilisation dans des projets à grande échelle grandissent chaque jour. La possibilité d’utiliser des micro-services contenant de l’IA augmente grandement la flexibilité vis-à-vis de l’implémentation de cette technologie dans des projets existants.
Qu'est ce que l'IA ?
L’intelligence artificielle est définie par le Larousse comme « l’ensemble des théories et techniques pour réaliser des machines pour simuler l’intelligence humaine ». Ainsi, la notion d’IA en tant que telle regroupe un ensemble de sujets très vastes. Parmi ces applications de l’IA, on retrouve notamment les notions de machine learning, ainsi que celles de deep learning.
Figure 1 : Représentation des différents types d’intelligence artificielle
Les utilisations de l’IA aujourd’hui peuvent être regroupées en 3 catégories principales : l’identification, la prédiction et la génération de données.
Dans le cas de l’identification, l’IA est aujourd’hui utilisée pour tout ce qui a trait à la reconnaissance faciale, reconnaissance de texte (OCR) ainsi que de la détection vocale, ou bien de la traduction ; de manière générale, tout ce qui a trait au traitement de l’image et du son peut être lié à l’IA. Ce sont dans le cadre de ces applications que l’on utilise le plus souvent le deep learning.
Dans le cas de la prédiction, l’IA peut servir dans nombre infini de situations, comme par exemple le calcul prévisionnel du CA d’une entreprise, la prédiction de trafic automobile, ou bien la prévision météorologique.
Quelques petites précisions sur les termes :
Le Machine learning c’est…
Une technique reposant sur un réseau de neurones, lesquels sont des fonctions unitaires et paramétrables de décision. Le mot apprentissage vient du fait que ce réseau est « entraîné » à partir de données de tests.
Figure 2: Mécanisme d’apprentissage d’un réseau de neurone
Figure 3: Description d’un réseau de neurone
Chaque disque de couleur représente un neurone, il faut noter qu’un réseau de neurone entraîné par machine learning possède une couche de perception, qui permet de percevoir les caractéristiques du stimulus. Par exemple les caractéristiques peuvent être un attribut particulier, tel que la dimension de l’objet, la couleur ou la forme.
Le but est de pouvoir classifier ou prédire, exemple :
- Etant donné un objet possédant 4 roues, des vitres, qui se trouve sur une route, le réseau devrait « classer » cet objet comme étant une voiture.
- Étant donné les conditions économiques actuelles, et connaissant les fluctuations passées, quelle sera la marge brute dégagée sur les 3 prochains mois ?
Un des prérequis au machine learning est l’identification des caractéristiques du problème, permettant d’alimenter la couche de perception.
Deep learning :
Le Deep Learning repose sur le même principe d’apprentissage que le Machine Learning, mais la densité de neurone d’analyse est beaucoup plus importante. Cela permet d’éliminer la couche de perception. Dans ce cas le réseau de neurone identifie lui-même les caractéristiques discriminantes du problème.
Figure 4: Effet d’apprentissage sur un réseau de neurone : certains neurones ont un poids beaucoup plus important que d’autres
Comme montré dans le schéma ci-dessus le deep learning permet, en densifiant le réseau, de ne pas caractériser les données d’entrées.
Une des facultés remarquables du Deep Learning est la génération de caractéristiques en créant un modèle spécifique permettant d’inverser le procédé : de résultat de classification vers l’identification de caractéristiques.
La question citée précédemment s’inverse donc, passant de « Cet objet sur l’image est-il une voiture ? » à « Génère une image qui représente une voiture, et le réseau de neurone sera parcouru à l’envers pour générer »
C’est ce qu’on appelle un modèle « génératif ».
Niveau de maturité face à l’IA
Lorsque l’on décide d’implémenter une IA, il faut déterminer quel type d’IA sera choisie :
On distingue là 3 niveaux principaux d’utilisation de l’IA :
- SaaS (Software As A Service) : il s’agit d’utiliser une brique à son projet contenant déjà l’IA dont on veut se servir ; par exemple, dans le cas d’un logiciel qui doit avoir une reconnaissance d’image, on passe par un logiciel externe exécutant ce service (par un service web REST par exemple)
- Accélérateur d’IA : il s’agit d’utiliser un framework avec une IA déjà existante ; dans ce cas, l’IA est bien interne au projet, mais c’est une IA déjà toute faite.
- IA personnalisée : dans ce cas-là, on code soi-même sa propre IA, ce qui permet de la personnaliser selon le besoin du projet.
Plus on personnalise son IA, plus on pourra profiter d’une IA adaptée à ses besoins. Cependant, 2 choses sont à considérer lorsqu’on choisit son IA :
- L’effort que l’on souhaite mettre dans son IA – utiliser un SaaS est beaucoup moins contraignant que devoir coder son IA soi-même.
- Le montant de données dont on dispose – Afin de pouvoir coder son IA et de l’entraîner pour qu’elle soit performante, il faut disposer d’un montant de données suffisant au préalable – ce qui n’est pas le cas de SaaS ainsi que d’accélérateurs d’IA, qui proposent des IA déjà entrainées.
L’IA : Comment commencer ?
Trois niveaux d’intelligence artificielle ont été identifiés dans la section précédente : comment commencer à utiliser de l’IA pour chacun de ces niveaux ?
1ere étape : identifier le besoin et l’adéquation de l’IA en tant que solution
L’IA peut être un investissement lourd, il est donc nécessaire d’évaluer finement le besoin et de le mettre en balance avec les prérequis pour l’utilisation de l’Intelligence Artificielle.
Quelle est la nature du besoin ?
Pour répondre à cette question, il est nécessaire de se tourner vers la nature du problème adressé par ce besoin. L’utilisation de l’Intelligence artificielle est particulièrement nécessaire lorsque le problème n’est pas déterministe. Le fait que le problème ne soit pas déterministe implique qu’une approche algorithmique classique ne fonctionnera pas correctement, notamment dans les cas aux limites.
Comment identifier un problème non déterministe ?
Un problème non-déterministe repose sur la notion d’aléa, qui peut s’exprimer par des évènements purement aléatoires (mélange d’un jeu de carte) ou des évènements ne dépendant pas du périmètre initial du problème, et qui donc peuvent survenir d’une manière perçue comme aléatoire de ce point de vue-là (coupure de courant interrompant une machine, déclenchement d’une alarme incendie à un autre étage que celui considéré).
La problématique dans le cadre d’une programmation classique, apparaît au travers de deux aspects :
- La modélisation de cet évènement aléatoire, c’est-à-dire, comment il est possible de traduire la survenue de cet évènement dans le langage de programmation utilisé.
- La programmation de la réaction face à cet évènement : comment réagir à cet évènement, qui peut survenir dans n’importe quel contexte. Il est alors difficile d’avoir un code figé, puisque l’on ne dispose pas forcément d’éléments identiques (données, traitements déjà effectués), quel que soit le traitement engagé au moment de l’occurrence.
Lorsqu’une difficulté de ce type apparaît dans une modélisation, alors l’IA est éligible.
Détermination du volume de données disponibles pour l’entraînement du modèle
Une 2e condition doit être vérifiée si l’on souhaite utiliser une approche par apprentissage (Machine Learning ou Deep Learning) : c’est le volume de données dont on dispose pour « entraîner » le modèle.
En effet un entraînement précis d’une IA construite à partir d’un système d’apprentissage nécessite des volumes conséquents de données.
Comment connaître le volume de données requis pour un entraînement fiable ?
Il n’y a pas de réponse préconçue pour cette question, cela dépend :
- De la complexité de l’algorithme
- Du type d’algorithme d’apprentissage utilisé (les algorithmes linéaires « consomment » moins de données d’apprentissage)
- De la fiabilité des données d’entraînement.
Avantages et inconvénients des formats d’intégration de l’IA
Services « clé en main » en mode SaaS (ou AIaaS – comme « Artificial Intelligence as a Service »)
Si le besoin identifié est déjà traité par un service « sur étagère » disponible, il faut en priorité envisager de l’utiliser. En effet, le coût représenté par le redéveloppement d’une solution similaire est démesuré par rapport au gain immédiat fourni par une plateforme SAAS.
Les utilisations possibles dans le cadre de plateformes SAAS sont :
- Reconnaissance d’image
- Prédiction de tendances à partir de données d’historiques
- Traduction
- Reconnaissance de texte
- Reconnaissance vocale
- Agents de conversations (Chat bots)
Les avantages sont :
- Un service éprouvé et souvent amélioré continuellement par le fournisseur
- Des plateformes correctement dimensionnées
- Une utilisation immédiate du service
Inconvénients du mode SaaS :
Les inconvénients du mode SaaS pour l’intelligence artificielle sont plutôt liés aux implications que représentent une utilisation d’un SaaS , en effet :
- Les données (parfois sensibles), transitent sur le réseau et sont déposées chez un fournisseur
- Les volumes de données échangées pouvant être importants, les performances peuvent s’en trouver impactées
Parmi les SaaS les plus connus l’on trouve :
- Les services Amazon (Comprehend, polly, etc.)
- Les services Microsoft (Azure Cognitive Services)
- Services google (Google Cloud Vision API)
Fournisseurs de plateformes d’IA en mode SaaS
Il existe également des plateformes dans lesquelles, c’est à vous de développer votre technologie IA, avec un environnement adapté et des outils facilitant l’implémentation de votre modèle.
- Cloud AI de Google
- AWS SageMaker de Amazon
- Azure AI
La mise en place est dans ce cas plus « manuelle », même si l’environnement est prêt à l’emploi.
IA sur site ?
Le Machine Learning sur site impose de bonnes connaissances des besoins et des capacités de l’entreprise à prendre en charge un projet d’IA.
En effet, il faut dans ce cas définir le modèle, choisir les technologies et mettre en place la plateforme par soi-même.
Les avantages sont en revanche une liberté totale d’implémentation et surtout la conservation sur site de toutes les données, y compris critiques.
Les librairies de machine learning disponibles sont :
- TensorFlow (python, java),
- Pytorch (python),
- Keras (surcouche de TensorFlow),
- Scikit-learn (python),
-
Dl4j (java)
Pour conclure ...
L’intelligence artificielle, notamment les mécanismes d’apprentissages automatisés, permet de repousser la limite humaine, en trouvant des modèles permettant de regrouper, prédire et même générer des données adaptées à un métier.
L’IA n’est en revanche pas intégrable dans n’importe quel projet. Les prérequis sont assez nombreux, parmi eux, la capacité à fournir des données suffisantes d’entraînement ou encore le simple fait d’avoir un besoin de classification, prédiction ou génération de données. Toute autre utilisation serait inutile.
Les outils techniques utilisés pour réaliser des solutions à base d’Intelligence Artificielle sont dorénavant d’assez haut niveau, et il est possible de le mettre en place avec assez peu d’effort, quelle que soit la solution retenue (sur site, sur plateforme, ou en SaaS). Il faut en revanche bien comprendre les options offertes par ces outils, afin d’implémenter une solution fiable : la case mathématique est incontournable.
Malgré la fiabilité des systèmes de décisions construits sur de l’IA, certaines questions restent à résoudre, et ces questions reposent sur les aspects « humains » de cette technologie. En effet, la capacité à prendre des décisions de ces systèmes repose sur des données d’entraînement :
- Quelle est l’objectivité de ces données d’entraînement ?
- Quels sont les biais apportés par les programmeurs en appliquant tel ou tel algorithme d’entraînement et quelles en sont les conséquences sur le comportement du programme ?
- Si un système à base d’IA est défaillant, où est la responsabilité ? Après tout il ne s’agit que d’un système reposant sur des statistiques et que l’entrainement a permis de rendre plus robuste face à un problème non-déterministe.
Un autre domaine de l’intelligence artificielle, la programmation par contrainte, permet de résoudre des problématiques qui vont au-delà des capacités du Machine Learning, en calculant des solutions possibles à des problèmes étant donnés des faits et des règles pour déterminer la meilleure solution. Cette technologie fera l’objet d’un prochain article sur le Blog de Nat System