Les tutoriels pour apprendre un algorithme précis ne manquent pas, et pourtant on me pose souvent la question : comment me mettre à l’IA ? Que dois-je apprendre, utiliser ? Qu’est-ce qui sert à quoi et est à l’état de l’art ?

Le but de cet article est de vous fournir un tour d’horizon complet de l’intelligence artificielle, pour que vous ayez la vision globale de tout ce qu’il y a à savoir et puissiez construire votre propre plan. N’hésitez pas à ignorer les parties qui ne vous concernent pas pour l’instant et à approfondir les autres (car le but ici est vraiment d’avoir la vision globale) 🙂 Bonne lecture !

Remarque : la série est divisée en plusieurs articles :

Tutoriel 1 (ici) = celui-ci, sur l’IA en général et les choix techniques (langage, framework…)

Tutoriel 2 = sur les notions transverses (la donnée, les lois, la data science, hadoop…)

Tutoriel 3 = sur comment se former à l’IA, comment valoriser son savoir et surtout comment se démarquer en restant pro-actif !

Tutoriel 4 = sur le machine learning, avec tous ses algorithmes principaux en exemple : k-means, random forest, SVM…

Tutoriel 5 = sur le deep learning en détail (avec son utilisation) : réseaux de neurones artificiels, convolutifs, récurrents, etc…

Tutoriel 6 (à venir) = des grandes questions que l’on se pose sur l’IA, avec des pistes de réflexion et mon avis personnel ouvert au débat 🙂

0. L’IA en très général : histoire et domaines

Petit historique

Même si les légendes d’êtres artificiels intelligents remontent à la nuit des temps (en particulier à l’Antiquité), l’intelligence artificielle en tant que domaine de recherche est assez récente : 1956, à la suite d’une célèbre conférence à Dartmouth. Parfois, on considère qu’elle démarre en 1958 avec le premier réseau de neurones (le perceptron) de Frank Rosenblatt.

L’IA naît ainsi des conséquences des travaux d’Alan Turing, fondateur de l’informatique moderne, ainsi que des réalisations d’autres mathématiciens et programmeurs (dans les années 1950).

Elle connaît alors un premier âge d’or jusqu’en 1974 où l’on pense qu’une IA « sentiente » est accessible et où l’on investit des millions dans la recherche. De nombreuses théories sont formulées, mais la faible puissance des ordinateurs de l’époque va rapidement mettre un terme à cette vague et provoquer le premier hiver de l’IA jusqu’en 1980, où les investisseurs se détournent.

En 1980, les systèmes experts voient le jour. Ce sont simplement des règles à suivre dans certaines situations, inspirées des connaissances qu’ont des experts humains d’une problématique. Par exemple :

  • « Si la fleur est rouge et a 4 pétales, alors c’est un coquelicot avec une probabilité de 50% »
  • « Si de plus elle se trouve dans un champ de blé, c’est un coquelicot à 95% »
  • « Pour en être sûr à 100%, vérifiez qu’il y a 4 sépales ».

Leur utilité indéniable (et accessible) pour les entreprises permet à l’IA de connaître un nouvel essor, jusqu’en 1987 : c’est le deuxième âge d’or.

Une fois encore, les systèmes experts qui portaient tant d’espoirs connaissent rapidement leurs limites (autant dans les applications que dans leur applicabilité) et la recherche subit de nombreuses coupes budgétaires, provoquant un deuxième hiver de l’IA qui s’arrêtera en 1993.

A partir de là et jusqu’en 2011, l’IA connaît un nouvel âge d’or durant lequel elle va prendre de l’ampleur, se diversifier, voir ses premiers succès médiatisés (dont la victoire de Deep Blue aux échecs contre Kasparov en 1997), et profiter de l’ère du Big Data pour s’apparenter à la Business Intelligence et profiter de nouvelles capacités de calculs et de jeux de données.

Depuis 2011, on est toujours dans l’âge d’or de l’IA mais on a dorénavant accès au Deep Learning (DL), un type d’algorithmes d’intelligence artificielle plus autonome et plus versatile que tout ce qui précède. Trop gourmand en données et en calculs, le DL peut enfin être appliqué à des cas concrets et remporte ses premières compétitions dans de la reconnaissance d’images (déterminer les nombres écrits à la main, octobre 2012, considérés par plusieurs comme le vrai départ du DL) ou encore dans la chimie (prédire la cible thérapeutique d’une molécule de médicament).

histoire de l'IA
Chronologie de l’intelligence artificielle (crédit : Lambert Rosique)

IA vs ML vs DL

Un algorithme est une suite d’actions (dont des calculs) à réaliser pour parvenir à un résultat. Par exemple :

  • Choisir un nombre
  • Le multiplier par 3
  • S’il est pair, y enlever 4

IA = Intelligence Artificielle : désigne un algorithme qui imite le comportement d’un humain, non pas dans son calcul mais dans son résultat. Par exemple, une IA prédira la météo (un algorithme prendra en compte les vents, les nuages, etc… pour donner en résultat la probabilité qu’il fasse beau), dira si l’image est celle d’un chat (un autre algorithme regardera les pixels dans l’image, fera des calculs dessus, et en fonction des résultats déduira s’il a affaire à un chat ou non), etc…

De nombreuses définitions de l’IA existent et aucune n’est plus juste que les autres. Il faut simplement, lorsqu’on en parle, avoir la même idée en tête !

ML = Machine Learning (ou apprentissage automatique) : sous-branche de l’IA, le machine learning est un ensemble de méthodes statistiques appliquées à l’IA. Elles permettent en particulier à l’IA d’apprendre à partir de données d’exemple (apprentissage supervisé : on montre à l’IA plein d’appartements avec leur prix, puis elle peut deviner le prix d’un nouvel appartement). L’algorithme le plus simple et le plus connu du ML est la régression linéaire, qui consiste à trouver la droite approximant un nuage de points (grâce à ça, on peut facilement « classifier » des données en fonction de si elles sont en-dessous ou en-dessus).

DL = Deep Learning (ou apprentissage profond) : sous-branche du ML, le deep learning repose principalement sur l’utilisation de réseaux de neurones (on se rapproche donc de la neuroscience plutôt que des statistiques) pour résoudre les problèmes. Le principe reste identique, avoir des données d’exemples et adapter son modèle interne pour qu’il prédise correctement ses sorties. L’apprentissage non-supervisé est également possible (comme en ML) : l’IA va grouper des données en fonction de leur similarité pour former des groupes, par exemple. Les applications les plus étonnantes de l’IA aujourd’hui sont possibles grâce au DL (dont la reconnaissance faciale et classification d’images, la génération de texte, la prédiction de pannes complexes, un robot qui va découvrir tout seul comment marcher, etc…).

Pour plus de détail sur les trois domaines de recherche, un article a déjà été publié pour présenter les différences.

La datascience dont tout le monde parle

data science vs maths vs informatique
La Data Science, au coeur des Mathématiques, de l’Informatique et de l’Expertise (crédit : à la courtoisie de Compta-Online.com)

La data science (ou science des données) (DS) a le vent en poupe ces dernières années, à tel point que la demande en data scientists a explosé.

Il s’agit d’une matière transverse à l’IA car elle regroupe :

  • la capacité à gérer et stocker les données (rôle du data engineer, parfois suppléé par le data scientist)
  • la capacité à les analyser, grâce à des outils statistiques et plus généralement de Machine Learning
  • la capacité à les visualiser ainsi que les résultats, via des graphes et d’autres modèles de représentation

De manière générale, la data science est très souvent vue comme du machine learning appliqué : trouver le bon algorithme à utiliser, l’implémenter et l’optimiser puis le mettre en production i.e. le rendre accessible à d’autres applications.

Elle se distingue de la BI (Business Intelligence) en ce sens qu’elle repose sur du ML (donc il y a une notion d’apprentissage automatisé), et que la BI est tournée vers l’explication des données passées tandis que la DS s’oriente vers des prédictions du futur. On dit souvent d’ailleurs que la BI est la parente de la DS (chronologiquement et en termes de domaine d’étude).

I. Point de vue pratique / terre-à-terre

Comme vous vous en doutez, nous allons parler essentiellement de Deep Learning et parfois un peu de Machine Learning, car la plupart des innovations récentes et des applications dans l’industrie tournent autour du DL : « réseaux de neurones artificiels, convolutifs, récurrents… ».

Avant d’entrer dans le détail, cette partie vous donne le bagage « informatique » à avoir/utiliser.

Remarque : en fin de paragraphe, vous trouverez en citation la recommandation que j’ai à vous faire (surtout si vous débutez). Libre à vous de ne pas la suivre !

Quel langage utiliser ? Python 3 ? Java ? Javascript ? R ?

top ML languages on github
Github fournit la liste des langages les plus utilisés dans les projets de ML (crédit : Github)

En IA il est possible d’utiliser une grande variété de langages. Les principaux sont, comme dans beaucoup d’autres secteurs :

  • Python : le langage de référence absolue en IA. Il permet de gérer beaucoup de choses (en plus de l’IA, dont par exemple des micro-services, des bases de données), il est facile à installer, n’est pas compilé, est rapide/léger… Tous les outils d’IA sont disponibles en Python, généralement bien avant les autres langages !
  • Javascript : langage web, il permet maintenant de faire de l’IA… dans une certaine mesure. De nombreux algorithmes sont absents, et les temps de calculs sont longs à cause du langage et de son incapacité à accéder à la carte graphique efficacement. Cependant, il reste utilisable, et permet de déporter les calculs de votre service directement chez vos internautes.
  • Java : en retard sur beaucoup d’algorithmes, avec des problèmes de performance. Les applications principales sont là, donc si vous avez un besoin en Java ça sera probablement faisable. Par contre le code sera moins lisible et moins rapide.
  • C++ : si un algorithme majeur n’est pas codé en Python, il l’est en C++. Très rapide et optimisé, C++ est souvent le complément de Python : plusieurs modules accessibles en Python font appel à du code C++ ! Par exemple, Caffe, un framework de deep learning, est codé en C++ et dispose d’une interface Python.

Il existe aussi certains langages plus ou moins dédiés :

  • R : langage fortement orienté statistiques. On vous dira, à juste titre, qu’il permet de faire d’autres choses, mais sa sur-spécialisation l’entraîne progressivement vers les cas particuliers plutôt qu’un véritable langage de l’IA.
  • Julia : ce langage est récent mais connaît une forte croissance, certains voyant en Julia le successeur de Python. Pour l’instant je n’ai pas beaucoup de retours dessus, à part qu’il va vite.
  • Scala : ayant connu des hauts et des bas, scala est une alternative viable à Julia (pour l’instant en tout cas). Je n’ai pas beaucoup de retours à en faire non plus, le mieux étant de regarder par soi-même en fonction des usages voulus et de la familiarité au langage.

A noter, pour Python, qu’il existe la possibilité d’utiliser Python 3 ou Python 2. De nos jours, la question ne devrait plus se poser : utilisez Python 3, par pitié !

En réalité, le débat vient de l’histoire de Python, originellement utilisé pour des statistiques. Tous les outils étaient disponibles en Python 2, et la migration vers Python 3 a pris du temps… ce qui a fait que les deux versions ont coexisté un moment. La transition est terminée, il n’y a donc pratiquement plus d’intérêt à aller sur du Python 2 à mon avis (et on prend le risque de ne pas avoir accès à certaines librairies ou à leurs dernières versions).

un bon choix de langage est python 3

Quelles sont les bibliothèques principales de l’IA ? Comment les installer ?

github machine learning packages
Les modules les plus importés dans les projets de ML sur Github (crédit : Github)

A partir de maintenant, je vais considérer que vous voulez utiliser Python 3. Si ce n’est pas ce que vous voulez, il faudra regarder au cas par cas comment installer les différentes bibliothèques (le mot « librairies » est un anglicisme à ne pas utiliser car il n’est pas correct) : on parle aussi de dépendances ou de packages en Python.

Voici les principaux modules à connaître ainsi que leur utilisation générale :

  • Numpy : package supportant les opérations mathématiques sur des données multidimensionnelles. On en utilise quasiment tout le temps les « array » (pour faire des matrices).
  • Scipy : ressemble un peu à numpy, à ceci près qu’il est dédié aux calculs scientifiques
  • Pandas : qui gère les jeux de données (par exemple, importer un CSV et effectuer certaines opérations sur les données ou en extraire des informations basiques)
  • Matplotlib : pour la visualisation des données par le biais de graphiques (plots)
  • Scikit-learn : contient de nombreux algorithmes de machine learning. Il s’oppose aux frameworks de deep learning que nous verrons par la suite (dont Tensorflow)
  • NLTK : pour manipuler du texte
  • OpenCV : pour manipuler des images (les transformer)

Puis dans les utilitaires transverses nous avons :

  • Requests : sert à faire des appels http
  • BeautifulSoup4 : qui parse efficacement des pages html
  • Pillow : qui manipule des images sans problème
  • Six : qui permet d’écrire du code compatible Python 2 et 3 en même temps !
  • Redis : un petit serveur avec lequel on peut communiquer, notamment pour stocker des données
  • Virtualenv : jamais utilisé dans les imports d’un projet mais directement sur son ordinateur, il permet de créer des environnements Python indépendants que l’on peut charger (avec leurs modules). Voir la partie sur Anaconda pour plus de détails
  • Pickle : sert à sauvegarder et charger des objets Python dans des fichiers

Pour les installer, il suffit d’ouvrir une console Windows (tapez Invite de commandes dans la recherche de Windows), en ayant installé Python 3 et en l’ayant ajouté au PATH (case à cocher lors de l’installation avancée), et de saisir les lignes suivantes (prenez uniquement celles qui vous intéressent) :

pip install numpy
pip install scipy
pip install pandas
pip install matplotlib
pip install scikit-learn
pip install nltk
pip install opencv-python

pip install requests
pip install bs4
pip install pillow
pip install redis
pip install virtualenv
pip install pickle

Les librairies à installer sont numpy, matplotlib, pandas, opencv/pillow et requests

Quels sont les principaux frameworks de Deep Learning ? Lequel dois-je utiliser ?

Si les librairies précédentes suffisent pour du machine learning, en deep learning il faut avoir recours à des frameworks plus complets. A noter que certains d’entre eux sont plutôt spécialisés dans un domaine précis du DL.

Les trois principaux sont les suivants :

  • Tensorflow : créé par Google, il est le numéro 1. Cependant, il est assez difficile et laborieux de coder avec Tensorflow, donc son utilisation est réservée aux cas où « on a besoin d’un contrôle total sur ce qui est fait/à faire ». Je ne le recommande que dans de rares cas.
  • Keras : Devant la complexité de Tensorflow, Keras est né pour en simplifier les mécaniques (en masquant une partie des paramètres, et en accélérant certains algorithmes). Keras est le meilleur framework pour implémenter rapidement une solution de deep learning, procéder à des proof-of-concept, et souvent même pour aller en production. Le projet gagne chaque année en reconnaissance et est un incontournable de l’IA. Pour ma part, je l’utilise quasiment tout le temps !
  • PyTorch : framework très récent créé par Nvidia, il connaît une envolée fulgurante, de plus en plus de développeurs passant sous PyTorch. Très rapide (puisqu’il utilise la carte graphique de votre ordinateur, comme la version « GPU » de Tensorflow), plutôt simple d’utilisation, il risque de devenir incontournable cette année en comblant son retard.

On retrouve ensuite d’autres frameworks assez répandus (à ne pas utiliser) :

  • Caffe : principalement utilisé dans les débuts du deep learning, il décline davantage chaque année et est moins mis à jour que ses concurrents. De plus, il est prévu pour fonctionner en Python 2 sur Linux, et est difficile à convertir pour du Python 3 Windows. Heureusement, nous avons fait un tutoriel pour expliquer comment le mettre en place… si besoin (par exemple si vous téléchargez un modèle caffe). A noter qu’un Caffe2 a vu le jour mais ne connait pas plus de succès, remplacé par PyTorch.
  • Theano : peut-être le plus ancien de la liste, Theano était utilisé jusqu’à l’arrivée de Tensorflow/Keras/Pytorch. Les mises à jours principales ne faisant plus partie de la roadmap, le framework devrait bientôt laisser la place aux concurrents.
  • DeepLearning4J : sert à faire du deep learning en… Java ! C’est le seul vrai framework du langage, donc vous n’aurez pas le choix si vous venez de ce monde. A noter qu’il peut importer des modèles Keras (fait en Python), ce qui le rend assez pratique.

Puis certains moins populaires :

  • CNTK (Microsoft Cognitive Toolkit) : inventé par Microsoft pour se faire une place, je ne l’ai jamais vu utilisé sauf pour sa facilité d’intégration avec les autres outils Microsoft…
  • Chainer : spécifique au Japon et généralement à la robotique (japonaise encore une fois).
  • FastAI : si Keras est basé sur Tensorflow, FastAI est basé sur PyTorch ! D’ailleurs, FastAI inspire son interface simplifiée de Keras, et son créateur n’est autre que Jeremy Howard, président de Kaggle (une plateforme où des entreprises proposent des jeux de données et récompensent les meilleurs résultats d’IA sur ces data). La version 1 data de fin 2018, on ignore encore quel engouement connaîtra le framework.

keras ou pytorch sont les deux choix de framework

Quels sont les IDE pour programmer de l’IA ? A quoi sert Anaconda ?

IDE (Integrated Development Environment) = un environnement de développement est un ensemble d’outils qui servent à développer des programmes. On a généralement à disposition un éditeur, un débogueur, un compilateur ou une console

Pour coder en Python, n’importe quel IDE est possible (tant qu’il y a la coloration syntaxique) mais certains sortent vraiment du lot. En effet, il faut savoir que le code est exécuté dans un environnement Python (qui lance le code puis « oublie » tout)… ou dans un environnement IPython ! C’est la possibilité d’exécuter des bouts de codes, de conserver la valeur de ses variables (voire de la restaurer depuis un dump), l’auto-complétion, l’introspection…

On retient deux IDE répandus :

  • Spyder 3 : simple d’utilisation et pratique (et léger !), il est complet. J’aime tout particulièrement l’explorateur de variable qui permet de les voir et d’en voir le contenu.
  • Jupyter Notebook : cet « IDE » est en fait une page internet hébergée par votre ordinateur qui permet de créer des notebooks (vous l’ouvrirez alors dans Chrome ou Firefox). Ce sont des pages avec du code exécutable et du texte (en markdown), que l’on retrouve très souvent dans des tutoriels Kaggle ou sur Github. A noter que le notebook peut être utilisé avec de très nombreux langages.

Pour les installer, il faut savoir qu’ils sont en… python ! Vous pouvez donc ouvrir une invite de commande Windows et saisir les lignes suivantes qui les installeront.

pip install spyder3
pip install jupyter-notebook

Ensuite pour les ouvrir, toujours dans une invite de commande écrivez :

spyder3
notebook

Remarque : je n’ai pas trop expliqué le fonctionnement de Python, donc il vous faudra chercher plus en détail, mais si ça ne marche pas essayez « pip3 » au lieu de « pip » (si la commande n’est pas trouvée, car son nom dépend de ce que vous avez installé antérieurement), ou « spyder » au lieu de « spyder3 » pour lancer le programme (surtout si vous avez Anaconda).

D’autre part, il est possible d’utiliser des IDE plus généralistes (en installant un plugin pour avoir une console IPython à disposition), dont :

  • PyCharm
  • Microsoft Visual Code
  • Eclipse
  • etc…
anaconda navigator
Anaconda 3 (crédit : Lambert Rosique)

Enfin, Anaconda 3 est à part dans ce classement. Il ne s’agit pas d’un IDE mais d’une plateforme regroupant plusieurs outils. Lorsque vous l’installerez, vous aurez accès (entre autre) à :

  • des programmes utiles, comme Spyder 3 et Jupyter Notebook !
  • une console « Anaconda Prompt » si vous ne voulez pas utiliser le programme complet d’Anaconda (vous pouvez tout faire depuis la console)
  • des environnements que vous créerez : comme avec virtualenv vu tout à l’heure, vous pourrez créer un environnement Python (dans la version que vous voulez !) avec ses modules sans impacter les autres environnements. Ceci est très pratique pour tester des compatibilités ou des montées de version sans perdre le difficile équilibre de notre projet.

Très utilisé dans les entreprises, il faut cependant noter qu’Anaconda a parfois tendance à rencontrer des difficultés avec python (messages d’erreurs, impossibilité d’installer certaines dépendances…). Généralement, je préfère installer mon propre Python 3 avec virtualenv plutôt que de passer par Anaconda, mais parfois il n’y a pas le choix (plus pratique, surtout lorsqu’on veut plusieurs versions de Python en parallèle).

Spyder 3 est l’IDE à utiliser, sauf si vous faîtes un tutoriel (prenez alors Jupyter)

Comment bien entraîner son IA ? Du CPU au GPU au Cloud

Pour travailler avec son IA, il y aura deux parties importantes.
La première est l’entraînement de l’IA, lorsqu’on lui apprend à devenir meilleure. Cela requiert beaucoup de ressources et donc des solutions adaptées.

La seconde est l’utilisation/la mise à disposition de l’IA, qui peut nécessiter une « scalabilité » i.e. la possibilité d’ajouter des ordinateurs pour répondre aux requêtes des utilisateurs. Cette dernière passe par le Cloud.

Les framework de deep learning que l’on a vu peuvent fonctionner en mode CPU ou GPU.

  • Le CPU est le processeur de votre ordinateur. Il est fort pour faire des calculs, mais a du mal à en paralléliser (ce qui est indispensable en DL).
  • Le GPU est la carte graphique de votre ordinateur. Elle réussit beaucoup mieux à paralléliser, ce qui permet de diviser le temps d’entraînement par… 10. Cependant, toutes les cartes graphiques ne sont pas compatibles avec le deep learning (il faut des « cuda cores » soit des petites unités de calcul spécifiques dans votre GPU)

Pour installer par exemple Tensorflow en mode GPU, il faudra réaliser une manipulation particulière qui « débloquera » votre carte graphique. Un tutoriel a déjà été écrit pour vous aider, donc n’hésitez pas à le consulter !

Dans certains cas, les calculs ne peuvent pas être faits sur notre machine car cela prendrait beaucoup trop de temps. Il faut alors s’appuyer sur le Cloud, qui offre des solutions payantes (souvent au temps d’utilisation) mais efficaces. On a en particulier :

  • Google Cloud avec notamment ses « Cloud Deep Learning VM Image », des machines directement prêtes à faire du Deep Learning
  • Amazon AWS (WebServices)
  • IBM Cloud
  • Microsoft Azure Cloud Computing

Il est à noter également que certaines plateformes proposent des IA entraînées, prêtes à être intégrer à nos projets, comme par exemple Google Cloud AI et IBM Watson Analytics.

Privilégier les entraînements avec votre carte graphique (GPU)

Conclusion de cette première partie

Cette partie touche à sa fin, j’espère qu’elle aura été instructive et suffisamment claire. Dans la suite, nous verrons plus en détail ce qui tourne autour de la donnée, de la loi et de l’écosystème « data science », puis surtout comment se former, comment travailler dans l’IA.

Crédit de l’image de couverture : deepak palCC BY-SA 2.0