Introduction à l'apprentissage artificiel

Publié : 07/04/2016 · Modifié : 25/04/2016


Introduction

Si vous suivez régulièrement les nouvelles dans le domaine de l'informatique, vous êtes sans doute déjà tombé sur un article parlant d'un programme utilisant le principe d'apprentissage artificiel (ou machine learning en anglais) afin de résoudre efficacement une tâche qui parait compliquée voire impossible pour un ordinateur. Si ce n'est pas le cas, il suffit de taper "machine learning" dans un moteur de recherche et regarder les résultats dans la section "actualités" pour apercevoir un nombre impressionnant d'articles récents à ce propos et sur des thèmes très variés. Mais qu'est-ce que l'apprentissage artificiel ? Dans quel domaine peut-on l'appliquer ? Et surtout quels sont concrètement les algorithmes mis en place par ce type d'apprentissage ?

Principe

En général, lorsqu'on cherche à résoudre un problème avec un ordinateur, on lui demande de réaliser une suite d'opérations bien précise pour avoir une sortie voulue. Cependant, dans certains cas il est très compliqué de définir cette suite d'opérations pour un problème donné, même si nous sommes capables en tant qu'humain de le résoudre sans difficulté. Par exemple, essayez de décrire à votre machine comment reconnaître un visage sur une photo, pour l'ordinateur l'image n'est qu'un amas de pixels, et la notion de visage ne lui évoque rien du tout, cependant vous êtes capable instantanément de le faire et cela depuis tout petit. Le but de l'apprentissage artificiel n'est pas de décrire directement des opérations afin de résoudre un problème, mais plutôt de donner la capacité à l'ordinateur d'apprendre à résoudre ce problème par lui-même. Pour apprendre, il va procéder comme vous et moi lorsqu'on essaie de s'améliorer dans une discipline, c'est-à-dire en essayant, en échouant, et en adaptant sa stratégie dans le but d'être meilleur la prochaine fois.

L'apprentissage artificiel (ou parfois appelé apprentissage automatique) désigne un domaine de l'intelligence artificielle visant à reproduire un comportement spécifique à partir de données. Ce comportement est en général créé de toute pièce, et sera ensuite amélioré automatiquement lors du processus d'apprentissage.

On peut alors comprendre à quel point ce domaine est intéressant vu la complexité aujourd'hui d'automatiser certaines tâches (d'autant plus qu'on a accès rapidement à énormément de données grâce à Internet, rendant l'apprentissage toujours plus efficace). Cependant, l'apprentissage artificiel n'est pas uniquement utilisé pour automatiser une tâche complexe qu'un humain peut faire, mais il est aussi capable d'atteindre des niveaux d'efficacité bien supérieurs à ceux d'un humain (et c'est là tout l'intérêt de la discipline).

Type d'apprentissage

Il existe de nombreuses manières de faire apprendre quelque chose à votre ordinateur, et il faudra choisir la plus adaptée en fonction du but de votre intelligence artificielle. Voici quelques exemples de différentes méthodes :

Problèmes à résoudre

Avec ces différents types d'apprentissages apparait plusieurs algorithmes, mais avant de comprendre comment fonctionnent ces algorithmes, cherchons à savoir ce qu'ils essaient de résoudre. Il y a plusieurs problèmes importants dans le domaine de l'apprentissage artificiel, en voici une liste non exhaustive :

L'apprentissage artificiel utilise les mathématiques afin de résoudre ces problèmes, par exemple un exercice de classification pourrait être représenté graphiquement par la séparation efficace (grâce à une ligne, courbe, etc.) de deux ensembles distincts :

/img/algo/ia/apprentissage_artificiel/intro/exemple_classification.png
Exemple de classification

Les deux paramètres de l'entrée sont l'axe x et l'axe y, et les sorties sont les classes correspondantes (rond ou croix).

Dans un problème de régression, on cherchera par exemple à généraliser l'entrée (l'axe x dans notre cas) à l'aide d'une fonction, ici elle est linéaire, mais on peut trouver des fonctions polynomiales complexes pour créer des modèles plus sophistiqués :

/img/algo/ia/apprentissage_artificiel/intro/exemple_regression.png
Exemple de régression

Ce modèle nous permettra de générer une sortie (l'axe y) sur de nouveaux paramètres, en utilisant la fonction calculée (ici elle sera donc de la forme \(y = ax + b\)).

Enfin, un exemple de partitionnement serait de regrouper des points entre eux, et de les différencier en groupe, comme ici avec trois différents clusters (rouge, bleu, et vert) :

/img/algo/ia/apprentissage_artificiel/intro/exemple_partitionnement.png
Exemple de partitionnement

Domaine d'application

L'apprentissage artificiel est présent partout :

La liste des exemples de tous les jours pourrait continuer longtemps, mais on retrouve aussi cette forme d'intelligence artificielle dans des applications plus surprenantes et très intéressantes :

Encore une fois, la liste peut continuer car les exemples ne manquent pas.

Conclusion

L'apprentissage artificiel est donc un domaine extrêmement vaste de l'intelligence artificielle, et qui est encore en plein développement aujourd'hui. Ce dernier est particulièrement efficace lorsqu'on cherche à résoudre un problème difficile à exprimer concrètement, et qu'on est capable de regrouper des données assez importantes dessus, afin qu'un ordinateur puisse apprendre par lui-même comment résoudre ce problème (et parfois même bien plus efficacement qu'un humain). Avec des données de plus en plus importantes et riches en informations, cette discipline ne fait que s'améliorer d'années en années, et son utilisation ne fait que s'élargir et se diversifier.

Cependant, cette forme d'intelligence ne sait pas tout faire et nécessite toujours l'aide d'un humain afin de l'améliorer, de lui fournir des données pertinentes, et l'idée d'une intelligence artificielle autonome capable d'apprendre, communiquer et prendre des décisions importantes en effraie plus d'un. Ceci a poussé à la création d'une organisation très particulière dans le but d'éviter des risques majeurs dûs à des intelligences artificielles, et cette dernière est supportée par plusieurs personnalités importantes comme Stephen Hawking, ou encore Elon Musk. Même si l'apprentissage artificiel, voire l'intelligence artificielle de manière générale, peut nous apporter énormément d'améliorations et d'innovations impensables dans la vie de tous les jours, ceci peut tout à fait apporter de grands risques et une lettre ouverte de la fondation Futur of Life dénonce l'automatisation d'armes de guerre qui marquent selon eux "une troisième révolution dans l'armement après la poudre à canon et le nucléaire". Les États-Unis notamment utilisent déjà des intelligences artificielles afin de remplacer les humains dans des programmes de drones, car les pilotes étaient souvent affectés mentalement et développaient des traumatismes les forçant à arrêter.

L'avenir de cette discipline est cependant loin d'être sombre, et beaucoup de projets ambitieux sont lancés avec des objectifs tous plus fous les uns que les autres (imitation artificielle du cerveau humain, le transhumanisme, transfert de conscience humaine dans des ordinateurs, etc.).

Vu l'omniprésence de ce domaine aujourd'hui, et dans le futur, il est important pour un programmeur d'en comprendre la base ainsi que les principaux algorithmes afin de résoudre des problèmes d'apprentissage artificiel.