Stéphane TUFFÉRY
Université de Rennes 1 stephane.tuffery@univ-rennes1.fr
Big Data, Machine Learning et
Apprentissage profond
2019
Éditions TECHNIP
5 avenue de la République, 75011 PARIS
CHEZ LE MÊME ÉDITEUR • Média Planning J. F. CANGUILHEM, M.P. CUEFF
• Data science par analyse des données symboliques F. AFONSO, E. DIDAY, C. TOQUE
• Data mining et statistique décisionnelle S. TUFFÉRY
• Modélisation prédictive et apprentissage statistique avec R S. TUFFÉRY
• Étude de cas en statistique décisionnelle S. TUFFÉRY
• Probabilités, analyse des données et statistique G. SAPORTA
• Les techniques de sondage P. ARDILLY
• Économie générale O. HUEBER
• Approche pragmatique de la classification J.P. NAKACHE, J. CONFAIS
• Statistique explicative appliquée J.P. NAKACHE, J. CONFAIS
• Modèles statistiques pour données qualitatives J.-J. DROESBEKE, M. LEJEUNE, G. SAPORTA, Eds.
• Plans d’expériences. Applications à l’entreprise J.-J. DROESBEKE, J. FINE, G. SAPORTA, Eds.
• Méthodes bayésiennes en statistique J.-J. DROESBEKE, J. FINE, G. SAPORTA, Eds.
• Approches non paramétriques en régression J.-J. DROESBEKE, G. SAPORTA, Eds.
• Analyse statistique des données spatiales J.-J. DROESBEKE, M. LEJEUNE, G. SAPORTA, Eds.
Tous droits de traduction, de reproduction et d’adaptation réservés pour tous pays. Toute représentation, reproduction intégrale ou partielle faite par quelque procédé que ce soit, sans le consentement de l’auteur ou de ses ayants cause, est illicite et constitue une contrefaçon sanctionnée par les articles 425 et suivants du Code pénal. Par ailleurs, la loi du 11 mars 1957 interdit formellement les copies ou les reproductions destinées à une utilisation collective.
© Éditions Technip, Paris, 2019. ISBN 978-2-7108-1188-6
Avant-propos
Cet ouvrage couvre un champ qui va du Machine Learning au Deep Learning, c'est-à-dire de l’apprentissage statistique à l’apprentissage profond, et il décrit ses principales méthodes. Il est né de cours de Data Science et de Big Data donnés à l’Université de Rennes 1, à l’École Nationale de la Statistique et de l’Analyse de l’Information et à l’Institut des Actuaires, et il se développe dans deux directions : l’analyse des données massives et l’analyse des données complexes que sont les images et le langage naturel, présentes aujourd’hui dans de nombreuses applications de l’intelligence artificielle. Il rappelle les bases théoriques de ces méthodes tout en montrant comment les mettre en œuvre dans des situations concrètes. Le premier chapitre est un panorama du Big Data avec ses principes et ses applications dans les principaux secteurs de la finance, de l’assurance, de l’industrie, de l’automobile, de la médecine et de la recherche scientifique. Il présente aussi les systèmes de recommandation utilisés par les réseaux sociaux et le commerce en ligne. Le deuxième chapitre présente rapidement les outils informatiques développés pour la gestion des Big Data, sans entrer dans les détails qui intéresseront plutôt les informaticiens et sortent du cadre de l’ouvrage, mais en donnant le minimum de culture générale que doit posséder le data scientist sur ces questions. Nous consacrons donc quelques pages à l’algorithme MapReduce à la base du calcul distribué, son implémentation dans le système Hadoop, et aux systèmes de gestion de bases de données, dits NoSQL et orientés colonnes, particulièrement adaptés aux Big Data. Nous verrons que les applications « analytiques » telles que l’apprentissage statistique, ont des exigences informatiques particulières qui nécessitent des solutions spécifiques. Bien sûr, il ne faut pas négliger les risques informatiques inhérents à la collecte et au stockage, parfois dans un cloud, de grandes masses de données personnelles. L’actualité de certains réseaux sociaux le rappelle régulièrement. Le troisième chapitre aborde des notions que le data scientist doit connaître quand il traite des grands volumes de données : la complexité algorithmique, la parallélisation et les ressources informatiques matérielles et logicielles à mettre en œuvre. Nous avons aussi trouvé intéressant d’évoquer l’informatique quantique, pour laquelle des versions spécifiques d’algorithmes commencent à être conçus, notamment en algèbre linéaire, en machine learning, en optimisation et en cryptographie. Les perspectives de l’informatique quantique sont encore lointaines mais très prometteuses avec des possibilités de diminution considérable des temps de calcul. Le quatrième chapitre rappelle quelques principes essentiels du machine learning et de la science des données : le dilemme biais-variance de la modélisation et les méthodes de réduction de la complexité, les algorithmes d’optimisation tels que la descente du gradient, celui de Gauss-Newton ou de Levenberg-Marquardt, les méthodes d’agrégation bien connues par forêts aléatoires ou boosting, et des méthodes utiles pour les Big Data comme les algorithmes incrémentaux. Hormis ces rappels, les méthodes de machine
VI
Avant-propos
learning sont supposées connues, et si nécessaire des indications bibliographiques sont données en fin d’ouvrage et parfois en cours de chapitre pour des références précises. Le cinquième chapitre est un long et important chapitre sur l’apprentissage profond. Il expose les principes du Deep Learning et l’architecture des réseaux de neurones profonds, et surtout des réseaux convolutifs et récurrents, aujourd’hui les plus utilisés pour la reconnaissance d’image et le traitement du langage naturel. Les nombreux dispositifs destinés à optimiser leurs performances sont présentés, tels que le sous-échantillonnage, la normalisation, le dropout et l’apprentissage adaptatif, avec des indications sur la meilleure façon de les utiliser. Nous revenons sur le mécanisme d’apprentissage fondamental des réseaux de neurones, la rétropropagation, les difficultés rencontrées dans son application aux réseaux multicouches avec le phénomène d’évanouissement du gradient qui conduisit un temps à « l’hiver de l’intelligence artificielle », et les solutions apportées ces dix dernières années par de nouvelles idées et l’augmentation de la puissance informatique. Des réseaux particuliers sont décrits : les auto-encodeurs pour la compression de données, et les réseaux génératifs qui commencent à se développer pour faire produire par une intelligence artificielle des textes, des images ou de la musique. Des illustrations montrent l’intérêt de l’apprentissage profond pour des sujets allant de la reconnaissance d’image aux jeux de stratégie. Le sixième chapitre est une mise en œuvre, dans des problématiques de reconnaissance d’image, des outils et des principes vus dans le cinquième chapitre, à l’aide de MXNet, de Keras-TensorFlow et de PyTorch. Nous indiquons comment configurer un ordinateur avec un système d’exploitation Windows pour utiliser son processeur graphique (GPU) pour des calculs d’apprentissage profond, qui sont beaucoup plus rapides sur ces processeurs graphiques que sur les processeurs classiques (CPU). Cette configuration n’est pas très simple et il faut bien suivre les différentes étapes indiquées. Le chapitre se conclut par des exemples de calcul dans le cloud, exploitant la plate-forme Google Colab à partir d’un notebook Jupyter faisant tourner du code Python. Le septième chapitre s’intéresse au problème classique de reconnaissance de l’écriture manuscrite et des chiffres écrits sur les chèques bancaires et les codes postaux des enveloppes. Sur un jeu de données bien connu (MNIST), il compare les différentes méthodes déjà exposées dans l’ouvrage : les méthodes « classiques » de machine learning (régression pénalisée, forêts aléatoires, gradient boosting, machines à vecteurs de support…) et les méthodes « profondes » (réseaux de neurones convolutifs). Le huitième chapitre aborde le second thème de l’ouvrage, qui est le traitement de données massives et les méthodes de programmation appropriées. Le logiciel pris en exemple est R mais de nombreux principes sont généraux, concernant la gestion de la mémoire, le traitement des données par paquets, la vectorisation des calculs et la parallélisation. Certains packages de R optimisés pour le traitement des grands volumes de données sont présentés : data.table, bigmemory, ff… Le neuvième chapitre prolonge le précédent en présentant des bibliothèques logicielles, complémentaires ou proches de R, dédiées au traitement des Big Data. Il s’agit de la distribution R de Microsoft, de Spark et sa bibliothèque MLlib, et de H2O qui est une bibliothèque complète et très bien optimisée de machine learning, utilisable seule ou avec R ou Python. Ce dernier, déjà évoqué dans le chapitre 6, est présenté car il est souvent comparé à R. Nous indiquons dans un tableau synoptique en fin de chapitre les principales méthodes de machine learning implémentées dans R, Python (scikit-learn), H2O et Spark (MLlib).
Avant-propos
VII
Le dixième chapitre est une présentation des méthodes récentes de traitement du langage naturel. Les principes de l’analyse textuelle sont présentés, notamment la segmentation en unités ou tokenisation, l’étiquetage grammatical, la reconnaissance des entités nommées, la lemmatisation et d’autres opérations de simplification qui visent, préoccupation constante en statistique et en machine learning, à réduire le plus possible le volume de données et la complexité du problème tout en conservant le maximum d’information. Nous décrivons ensuite les opérations de représentation vectorielle des mots, qui vont de la classique matrice « documents x termes » jusqu’aux méthodes de plongement de mots, dont les plus connues sont Word2Vec, GloVe et fastText et dont la liste s’allonge continuellement. On parle de plongement car chaque mot est associé à un point d’un espace vectoriel de dimension assez petite, de l’ordre de quelques centaines, donc beaucoup moins que de termes différents, avec cette propriété remarquable que deux mots sémantiquement proches correspondent à des points proches dans l’espace vectoriel, et que les opérations arithmétiques dans cette espace vectoriel peuvent conduire à des identités telles que « Roi » – « Homme » + « Femme » = « Reine ». Ces plongements vectoriels préservent non seulement la proximité des mots mais aussi leurs relations. Ils sont donc un moyen efficace de transformer des documents en vue de leur analyse, par exemple pour les classer en catégories : spam ou non-spam, type de message, objet de la réclamation, etc. Nous abordons aussi la recherche de thématiques qui, par des méthodes telles que l’allocation de Dirichlet latente, permettent de détecter l’ensemble des thématiques présentes dans un corpus de documents. Nous présentons une autre méthode actuelle de traitement du langage naturel, l’analyse de sentiments qui cherche à détecter les sentiments exprimés dans un texte, soit sous une forme binaire de sentiments positifs ou négatifs, soit sous une forme plus élaborée de sentiments de joie, de peur, de colère, etc. Enfin, nous revenons aux modèles génératifs et aux réseaux de neurones récurrents du chapitre 5, avec une application à la création de poèmes par un réseau de neurones auquel on n’a fourni qu’un exemple d’apprentissage (Les Contemplations de Victor Hugo) mais aucune autre information sur la langue française, aucun dictionnaire ni aucune règle de grammaire. Nous montrons aussi comment appliquer les réseaux récurrents LSTM et GRU au classement de documents, et nous les comparons à des méthodes de machine learning. Le onzième chapitre montre comment analyser les réseaux sociaux, en présentant des notions de théorie des graphes et en prenant l’exemple de Twitter. On s’intéresse particulièrement aux mesures dites d’influence, car elles sont très importantes dans les réseaux sociaux et les moteurs de recherche sur le Web, ainsi qu’à la détection des communautés, qui sont les sous-graphes denses pouvant constituer une partition du graphe étudié. La recherche des communautés d’un graphe est un champ de recherche actif, dans des domaines variés (biologie, sociologie, marketing…), car les sommets d’une même communauté tendent à avoir en commun des propriétés intéressantes. Quelques considérations sont apportées sur le modèle économique des réseaux sociaux et sur la publicité digitale et ce que l’on appelle le marketing programmatique. Enfin, le dernier chapitre s’ouvre à l’intelligence artificielle avec ses concepts, ses rapports avec l’intelligence humaine, ses liens avec les méthodes symboliques, le machine learning et l’apprentissage profond, ses applications et bien sûr les espoirs et les débats qu’elle suscite.
VIII
Avant-propos
L’ouvrage se conclut par une bibliographie et un index. R a été préféré à Python pour les exemples fournis dans cet ouvrage. Même si les succès de Python sont grandissants en science des données, R reste le logiciel de référence dans ce domaine, le plus riche en statistique, et il a progressivement rattrapé son retard dans le domaine de l’apprentissage profond. En effet, les principales méthodes et en premier lieu les réseaux de neurones convolutifs et récurrents, initialement interfacés avec Python (les calculs eux-mêmes sont souvent implémentés en C++ et en CUDA) le sont aussi de plus en plus souvent avec R. Il faut toutefois signaler que l’utilisation de TensorFlow et de Keras, même avec R, nécessite l’installation préalable de Python, au moins dans une distribution minimale telle que Miniconda. Certaines plates-formes de cloud computing s’appuient également sur Python. Quant à la bibliothèque PyTorch d’apprentissage profond, elle n’a pas été portée sur R et nécessite d’écrire du code Python pour son utilisation, ce que nous faisons à la fin du chapitre 6. Une autre raison de ce choix de R est que d’autres ouvrages ont été écrits sur Python, tandis que, en français au moins, nous ne connaissons pas d’ouvrage décrivant à la fois l’utilisation de R dans l’apprentissage profond et dans le traitement des données massives. Bien sûr, ces questions font l’objet de nombreux articles et discussions dans des forums, mais les éléments intéressants sont dispersés et pas forcément complets et cohérents entre eux. Nous avons donc privilégié une approche peut-être plus circonscrite, mais, nous l’espérons, cohérente et susceptible de permettre au lecteur d’affronter les problématiques des bases de données massives, de la science des données et de l’apprentissage profond. Puisque c’est là l’objectif de cet ouvrage, et non une comparaison systématique des bibliothèques logicielles, nous avons donc choisi de nous limiter à R pour ne pas augmenter le volume de l’ouvrage en présentant tous les codes en version R et Python. Pour la même raison, nous n’avons pas présenté des exemples d’utilisation de toutes les bibliothèques d’apprentissage profond, mais seulement de trois des principales : Keras-TensorFlow, MXNet et PyTorch. De nombreux temps de calcul sont indiqués, pour illustrer les différences de performance calculatoire entre des méthodes ou des manières de programmer différentes, ou parfois entre des logiciels différents. Sauf mention contraire, ces temps de calcul sont mesurés sur une machine ordinaire : un ordinateur portable avec un processeur Intel i32330M double cœur cadencé à 2,2 GHz, avec 8 Go de mémoire vive et un système d’exploitation Windows 7 en version 64 bits. L’exception notable concerne les exemples d’apprentissage de réseaux de neurones profonds effectués sur un processeur graphique (GPU) à l’aide d’une machine plus puissante : un ordinateur portable avec un processeur Intel i5-8300H quadruple cœur cadencé à 2,3 GHz, avec 8 Go de mémoire vive, un système d’exploitation Windows 10 en version 64 bits et une carte graphique NVIDIA GeForce GTX 1050. Les temps de calculs seraient bien entendu très différents s’ils étaient mesurés sur d’autres machines, et il vaut mieux s’intéresser aux différences de temps de calcul entre deux approches qu’à leur valeur absolue. La durée et certains résultats de calculs peuvent aussi parfois dépendre de la version de R, et ceux présentés dans cet ouvrage ont pour la plupart été obtenus avec les versions 3.3.x et 3.4.x de R. Le lecteur ne devra pas être étonné de différences qu’il pourrait obtenir avec d’autres versions plus ou moins récentes. C’est particulièrement vrai
Avant-propos
IX
des packages de Big Data et d’apprentissage profond, qui sont en fréquente évolution comme les méthodes qu’ils implémentent. Les méthodes présentées dans cet ouvrage débordent largement le champ de la statistique pour couvrir ce qui dans la terminologie anglo-saxonne s’appelle « statistical learning » ou « machine learning » : l’apprentissage statistique ou apprentissage automatique. Grosso modo, on peut dire que si la statistique cherche à prédire des phénomènes, elle cherche avant tout à les expliquer et donc à en fournir une description sous forme de modèles. Un modèle est une représentation de la réalité qui suppose que les données suivent certaines lois probabilistes. Le statisticien effectue des tests pour mettre à l’épreuve cette supposition et s’assurer que sa modélisation est fondée. S’il est avéré que les données observées suivent bien la loi probabiliste supposée, ou du moins ne s’en écartent pas trop, il ne reste qu’à estimer le ou les paramètres de cette loi et à vérifier, là encore au moyen de tests statistiques, la significativité de cette estimation (en langage courant : sa fiabilité). Dans l’apprentissage automatique, on s’intéresse avant tout au pouvoir prédictif des méthodes et à la capacité de généralisation des modèles obtenus. On ne leur demande pas de fournir une description formalisée de la réalité et la notion de test d’hypothèse passe à l’arrière-plan1. Cela est d’autant plus vrai que l’on s’intéresse à des phénomènes parfois trop complexes pour être décrits par des lois probabilistes simples, et que ces phénomènes sont décrits par des mécanismes beaucoup plus complexes, des mécanismes d’apprentissage profond qui ne sont pas sans analogie avec le fonctionnement du cerveau et peuvent en partie expliquer leur place importante en intelligence artificielle.
Remerciements Je remercie chaleureusement Franck Berthuit et Ricco Rakotomalala pour leur lecture attentive et leurs remarques utiles.
1
Selon la boutade de Brian Ripley (useR! 2004, Vienne) : « Machine learning is statistics minus any checking of models and assumptions ».
Table des matières
Avant-propos .................................................................................................................... V Le Big Data ......................................................................................................................... 1 1.1. 1.2. 1.3.
Introduction.............................................................................................................................1 Exemples d’utilisation des Big Data .......................................................................................7 Le Big Data pour les entreprises et les organisations ..........................................................10 1.3.1. 1.3.2. 1.3.3. 1.3.4. 1.3.5.
1.4.
Le Big Data pour les individus ..............................................................................................26 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5
1.5.
Le Big Data pour les conducteurs .......................................................................................... 27 Le Big Data pour les citoyens ................................................................................................ 28 Géolocalisation et santé......................................................................................................... 29 Le Google Flu Trends ............................................................................................................ 31 Le Big Data dans la police ..................................................................................................... 35
Les systèmes de recommandation .......................................................................................37 1.5.1. 1.5.2.
1.6.
Le Big Data dans la finance ................................................................................................... 11 Le Big Data dans l’assurance ................................................................................................ 20 Le Big Data dans l’industrie ................................................................................................... 21 Le Big Data dans la santé ...................................................................................................... 22 Le Big Data dans la recherche scientifique et l’enseignement .............................................. 25
Généralités ............................................................................................................................. 37 Le challenge Netflix ................................................................................................................ 39
Les Open Data .....................................................................................................................40
Les outils informatiques pour le Big Data ..................................................................... 43 2.1. 2.2. 2.3. 2.4. 2.5. 2.6. 2.7. 2.8.
Nouveaux défis informatiques ..............................................................................................43 MapReduce ..........................................................................................................................44 Hadoop .................................................................................................................................46 Nouveaux outils informatiques .............................................................................................48 Les bases de données orientées colonnes ..........................................................................48 Le Big Data et « l’analytique » ..............................................................................................50 Autres enjeux informatiques .................................................................................................51 La protection des données personnelles ..............................................................................52
Le traitement des grands volumes de données ............................................................ 57 3.1. 3.2. 3.3. 3.4. 3.5. 3.6.
Problématique ......................................................................................................................57 Recherche d’un modèle parcimonieux .................................................................................58 Complexité algorithmique .....................................................................................................59 La parallélisation des traitements .........................................................................................60 Les ressources informatiques ..............................................................................................60 L’informatique quantique ......................................................................................................62
XII
Table des matières
Data science et méthodes pour le Big Data .................................................................. 63 4.1. 4.2. 4.3. 4.4.
Généralités ...........................................................................................................................63 Les algorithmes d’optimisation .............................................................................................67 Réduction de la complexité et régression pénalisée ............................................................68 Les méthodes d’agrégation ..................................................................................................72 4.4.1 4.4.2 4.4.3 4.4.4 4.4.5
Le bagging ............................................................................................................................. 73 Les forêts aléatoires ............................................................................................................... 73 Les Extra-Trees...................................................................................................................... 75 Le boosting............................................................................................................................. 76 Synthèse des méthodes d’agrégation ................................................................................... 82
L’apprentissage profond (Deep Learning)..................................................................... 85 5.1. 5.2. 5.3. 5.4. 5.5. 5.6. 5.7. 5.8. 5.9. 5.10. 5.11. 5.12. 5.13. 5.14. 5.15. 5.16. 5.17. 5.18. 5.19.
Les principes de l’apprentissage profond .............................................................................85 Vue d’ensemble des réseaux de neurones profonds ...........................................................88 Rappels sur les réseaux de neurones et leur apprentissage ...............................................91 Difficultés de la rétropropagation du gradient .....................................................................100 La structure d’un réseau de neurones convolutif ...............................................................102 Le mécanisme de convolution ............................................................................................105 Les paramètres de convolution ..........................................................................................108 La normalisation par lot ......................................................................................................110 Le pooling ...........................................................................................................................112 La convolution avec dilatation ............................................................................................113 Dropout et DropConnect ....................................................................................................114 La couche de normalisation ...............................................................................................116 L’architecture d’un réseau de neurones convolutif .............................................................116 Les algorithmes d’apprentissage adaptatifs .......................................................................119 Principes de l’apprentissage des réseaux profonds pour la reconnaissance d’image .......122 Les progrès dans la reconnaissance d’image ....................................................................125 Les réseaux récurrents .......................................................................................................136 Les auto-encodeurs ............................................................................................................143 Autres applications de l’apprentissage profond ..................................................................148 5.19.1 5.19.2 5.19.3 5.19.4 5.19.5 5.19.6 5.19.7
Détection d’objets ................................................................................................................148 Véhicule autonome ..............................................................................................................151 Analyse de l’activité du cerveau...........................................................................................152 Modèles génératifs ...............................................................................................................153 Analyse du style d’une œuvre picturale ...............................................................................155 Jeux de go et d’échecs ........................................................................................................157 Autres jeux ...........................................................................................................................159
L’apprentissage profond en pratique........................................................................... 161 6.1. 6.2.
Bibliothèques d’apprentissage profond ..............................................................................161 MXNet ................................................................................................................................163 6.2.1 6.2.2 6.2.3 6.2.4
Généralisés sur MXNet ........................................................................................................163 Création d’un réseau convolutif avec MXNet.......................................................................165 Reconnaissance des images CIFAR-10 avec MXNet .........................................................177 Gestion des modèles avec MXNet ......................................................................................181
Table des matières 6.3.
Keras et TensorFlow ..........................................................................................................183 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5
6.4.
Généralités sur Keras ..........................................................................................................186 Application de Keras au jeu de données MNIST .................................................................187 Application de modèles pré-entraînés .................................................................................191 Application de Keras aux images CIFAR-10 .......................................................................196 Reconnaissance de chats et de chiens ...............................................................................205
Configuration de la GPU d’une machine pour l’apprentissage profond .............................220 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5
6.5. 6.6.
XIII
Vérification de la compatibilité de la carte graphique ..........................................................221 Installation d’un driver NVIDIA .............................................................................................222 Installation de Visual Studio .................................................................................................222 Installation de NVIDIA CUDA Toolkit ...................................................................................223 Installation de cuDNN ..........................................................................................................223
Calculs dans un cloud ........................................................................................................225 PyTorch ..............................................................................................................................228
La reconnaissance de l’écriture manuscrite ............................................................... 237 7.1. Données .............................................................................................................................237 7.2. Problématique ....................................................................................................................238 7.3. Récupération et mise en forme des données .....................................................................239 7.4. Analyse discriminante linéaire ou quadratique ...................................................................244 7.5. Régression logistique multinomiale ....................................................................................246 7.6. Forêts aléatoires .................................................................................................................247 7.7. Extra-Trees .........................................................................................................................248 7.8. Gradient boosting ...............................................................................................................250 7.9. Machines à vecteurs de support (Support Vector Machines) .............................................254 7.10. Perceptron à une couche cachée.......................................................................................259 7.11. Réseau de neurones « deep learning » de H2O ................................................................263 7.12. Synthèse des méthodes « classiques » .............................................................................269 7.13. Réseau de neurones convolutif ..........................................................................................270
Big Data avec R .............................................................................................................. 275 8.1. 8.2. 8.3. 8.4. 8.5.
Pourquoi R ? ......................................................................................................................275 Rappels sur le fonctionnement de R ..................................................................................277 Gestion de la mémoire par R .............................................................................................280 Limites de la mémoire ........................................................................................................285 Programmation dans R ......................................................................................................287 8.5.1 8.5.2 8.5.3 8.5.4 8.5.5 8.5.6 8.5.7 8.5.8
8.6.
Généralités ...........................................................................................................................287 Les boucles dans R .............................................................................................................288 Vectorisation ........................................................................................................................290 Appel de code C++ dans R ..................................................................................................296 Comparaison des temps de calcul .......................................................................................296 Méthodes de Monte-Carlo ...................................................................................................297 Calcul rapide de dates .........................................................................................................299 Analyse factorielle ................................................................................................................300
Parallélisation dans R .........................................................................................................302
XIV
Table des matières 8.6.1 8.6.2
8.7. 8.8.
8.9. 8.10.
8.11. 8.12. 8.13.
Parallélisation des traitements .............................................................................................302 Parallélisation et génération de nombres aléatoires ............................................................307
Un jeu de données massif ..................................................................................................309 Traitement des données massives avec R ........................................................................313 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5
Traitements en mémoire ......................................................................................................313 Traitements optimisés en mémoire – le package data.table .........................................314 Lecture et écriture rapide avec le package readr ..............................................................324 Lecture et écriture rapide avec le package fst ..................................................................325 Traitements optimisés en mémoire – le package bigmemory............................................326
8.8.6 8.8.7
Traitements sans charger toutes les données en mémoire .................................................327 Traitements sur le disque dur – le package ff ...................................................................329
8.8.8
Traitements avec Hadoop ....................................................................................................333
Régression sur données massives avec R ........................................................................333 Régression sur données massives : comparaison des méthodes .....................................342 8.10.1 8.10.2 8.10.3 8.10.4 8.10.5
Package biglm sur data frame ...........................................................................................342 Package biglm sur big matrix.............................................................................................343 Packages ff et ffbase sur data frame ffdf ....................................................................344 Package speedglm sur data frame ....................................................................................347 Package fastLm sur data frame .........................................................................................347
8.10.6 8.10.7
Comparaison des temps de calcul .......................................................................................348 Utilisation des bibliothèques d’algèbre linéaire ....................................................................349
Autres méthodes prédictives sur données massives avec R .............................................349 Traitement des matrices creuses avec R ...........................................................................350 Calcul sur un processeur graphique (GPU) .......................................................................352
Big Data avec d’autres logiciels ................................................................................... 355 9.1. 9.2. 9.3. 9.4.
Microsoft Open et Microsoft Machine Learning Server ......................................................355 Utilisation d’une bibliothèque optimisée de calcul ..............................................................358 Oracle R Entreprise ............................................................................................................361 H2O ....................................................................................................................................362 9.4.1 9.4.2 9.4.3 9.4.4 9.4.5 9.4.6 9.4.7
9.5.
Spark et MLlib ....................................................................................................................373 9.5.1 9.5.2
9.6. 9.7. 9.8.
Présentation de H2O ...........................................................................................................362 Installation du package h2o .................................................................................................365 Démarrage avec le package h2o ........................................................................................366 Lecture de données avec h2o .............................................................................................368 Exécution de fonctions dans un cluster h2o ........................................................................369 Régression avec h2o ...........................................................................................................370 Apprentissage profond avec h2o.........................................................................................373 Le package sparklyr ........................................................................................................376 Le package SparkR ............................................................................................................383
Python ................................................................................................................................388 SAS et autres logiciels commerciaux .................................................................................391 Comparaison des logiciels .................................................................................................393
Le traitement du langage naturel ................................................................................. 401 10.1. 10.2.
De la statistique lexicale au traitement du langage naturel ................................................401 Utilisations du text mining et du traitement du langage naturel ..........................................403
Table des matières 10.3.
Les opérations de l’analyse textuelle .................................................................................404 10.3.1 10.3.2 10.3.3 10.3.4 10.3.5 10.3.6 10.3.7 10.3.8 10.3.9 10.3.10
10.4.
Représentation vectorielle ...................................................................................................421 Analyses sur la matrice « documents x termes » ................................................................422 Pondération TF-IDF .............................................................................................................430 Analyse sémantique latente .................................................................................................430 Allocation de Dirichlet latente...............................................................................................433 Analyses de fréquences d’apparitions de termes ................................................................441 Représentation Word2Vec ...................................................................................................443 Représentation GloVe..........................................................................................................455 Représentation fastText .......................................................................................................457
Méthodes neuronales en analyse textuelle ........................................................................462 10.5.1 10.5.2 10.5.3 10.5.4 10.5.5
10.6.
Collecte des données textuelles ..........................................................................................405 Identification de la langue ....................................................................................................406 Segmentation (tokenisation) ................................................................................................406 Identification des catégories grammaticales (étiquetage grammatical) ...............................408 Reconnaissance des mots composés et des entités nommées ..........................................409 Résolution des coréférences ...............................................................................................413 Lemmatisation ......................................................................................................................414 Racinisation..........................................................................................................................418 Simplifications ......................................................................................................................418 Suppression des mots-outils ................................................................................................420
Représentation vectorielle et plongement de mots ............................................................421 10.4.1 10.4.2 10.4.3 10.4.4 10.4.5 10.4.6 10.4.7 10.4.8 10.4.9
10.5.
XV
Génération de textes à l’aide d’un réseau de neurones récurrent LSTM ............................462 Classement de textes à l’aide d’un réseau de neurones récurrent LSTM ...........................469 Classement de textes à l’aide d’un modèle H2O .................................................................484 Application des réseaux de neurones convolutifs................................................................488 Détection de spams à l’aide d’un réseau de neurones récurrent LSTM .............................492
L’analyse de sentiments .....................................................................................................494
L’analyse des réseaux sociaux .................................................................................... 497 11.1. 11.2. 11.3. 11.4. 11.5. 11.6.
Les réseaux sociaux...........................................................................................................497 Caractéristiques des graphes .............................................................................................498 Caractérisation des réseaux sociaux .................................................................................500 Mesures d’influence dans un graphe .................................................................................501 Graphes avec R .................................................................................................................502 La détection des communautés .........................................................................................512 11.6.1 11.6.2 11.6.3 11.6.4 11.6.5
11.7. 11.8. 11.9. 11.10.
La modularité d’un graphe ...................................................................................................513 Détection des communautés par classification hiérarchique descendante .........................515 Détection des communautés par classification hiérarchique ascendante ...........................515 Autres méthodes ..................................................................................................................517 Détection des communautés avec R ...................................................................................518
Recherches et analyses sur les réseaux sociaux ..............................................................521 Le modèle économique des réseaux sociaux ....................................................................523 La publicité digitale .............................................................................................................526 L’analyse des réseaux sociaux avec R ..............................................................................527
XVI
Table des matières 11.10.1 11.10.2 11.10.3 11.10.4 11.10.5 11.10.6 11.10.7
Collecte des tweets ..............................................................................................................527 Mise en forme du corpus .....................................................................................................529 Racinisation et lemmatisation ..............................................................................................531 Exemple ...............................................................................................................................531 Classification de termes et de documents ...........................................................................540 Score d’opinion ....................................................................................................................545 Graphe des termes avec leur connotation ...........................................................................548
L’intelligence artificielle ................................................................................................ 551 12.1. 12.2. 12.3. 12.4. 12.5.
Les débuts de l’intelligence artificielle ................................................................................551 Intelligence humaine et intelligence artificielle ...................................................................554 Les différentes formes de l’intelligence artificielle ..............................................................555 Questions autour de l’intelligence artificielle ......................................................................559 Débats récents sur l’intelligence artificielle .........................................................................561
Conclusion ..................................................................................................................... 565 Bibliographie .................................................................................................................. 569 14.1. 14.2. 14.3. 14.4.
Sur le Big Data et la statistique en grande dimension ........................................................569 Sur l’apprentissage profond ...............................................................................................571 Sur l’intelligence artificielle .................................................................................................573 Sur l’utilisation de R en data science et sur les données massives ...................................573
Index .............................................................................................................................. 577
Chapitre 1
Le Big Data
Le premier chapitre de l’ouvrage est consacré à la présentation de ce qui est à la fois un domaine d’étude et d’applications en plein essor (le Big Data) et ce qui en est la matière première (les Big Data). Nous parlons donc de Big Data au singulier pour désigner la matière étudiée, qui est un mélange de technologie informatique et d’apprentissage statistique (machine learning2), et de Big Data au pluriel pour désigner les données ellesmêmes, que l’on traduit parfois par « données massives » ou « méga-données », cette traduction mettant plus l’accent sur l’aspect volumineux de ces données que sur leur variété, pourtant essentielle comme le montrent les pages qui suivent.
1.1. Introduction Le Big Data recouvre l’ensemble des problématiques associées à la collecte et à l’exploitation de très grands ensembles de données, de natures et de formats très variés (textes, photographies, clics, signaux de capteurs, d’objets connectés…), et en évolution très rapide, voire continue. Elles envahissent de nombreux domaines d’activités : santé, industrie, transport, finance, banque et assurance, grande distribution, politiques publiques, sécurité, recherche scientifique… Les enjeux économiques sont majeurs : McKinsey3 estime que le Big Data permettrait d’économiser chaque année 300 milliards de dollars aux politiques de santé aux ÉtatsUnis et d’engendrer 600 milliards de dollars de consommation en utilisant les données de localisation des consommateurs. Et selon l’Institut Montaigne4, les répercussions des objets connectés et du Big Data sur l’économie française pourraient atteindre les 3,6 % de PIB à échéance 2020 et environ 7 % en 2025. Nous verrons que les impacts du Big Data sont très importants dans la vie des personnes et des entreprises, et que les défis technologiques sont formidables. Avant de revenir en détail sur le Big Data, nous allons brosser un tableau historique rapide des évolutions qui ont conduit au Big Data.
2
Nous incluons ici dans le même vocable la statistique, l’apprentissage statistique (statistical learning) et l’apprentissage automatique (machine learning), pour faire court et parce que les frontières sont mouvantes, malgré notre tentative de tracé dans l’avant-propos. 3 Big Data, the next frontier for innovation, competition and productivity, 2011. 4 Big data et objets connectés, 2015.
2
1. Le Big Data
Depuis un siècle, l’escalade de la puissance informatique accompagne l’explosion de la production de données. Cette escalade a connu plusieurs époques : avant 1950, les débuts de la statistique avec quelques centaines d’individus et quelques variables, recueillies dans un laboratoire selon un protocole strict de plan d’expérience pour une étude scientifique ; dans les années 1960-1980, l’analyse des données avec quelques dizaines de milliers d’individus et quelques dizaines de variables, recueillies de façon rigoureuse pour une enquête précise ; dans les années 1980-2000, le data mining avec plusieurs millions d’individus et plusieurs centaines de variables, recueillies dans le système d’information des entreprises pour de l’aide à la décision ; à partir des années 2010, le Big Data avec plusieurs centaines de millions d’individus et plusieurs milliers de variables, de tous types, recueillies dans les entreprises, les systèmes, Internet, pour de l’aide à la décision et de nouveaux services. Depuis la fin du XIXème siècle jusqu’aux années 1950, on est donc dans l’ère de la statistique classique. Elle est antérieure à l’invention de l’informatique, les moyens de calculs y sont donc manuels et très limités, et elle est caractérisée par : les petits volumes étudiés ; les fortes hypothèses sur les lois statistiques suivies (triade : linéarité, normalité, homoscédasticité) ; les modèles issus de la théorie et confrontés aux données ; la nature probabiliste et statistique des méthodes ; l’utilisation en laboratoire. On y note la prédominance de la méthode hypothético-déductive et l’importance des tests et de la statistique inférentielle. Les données sont collectées et analysées dans un cadre strict, souvent scientifique, en vue de vérifier une théorie, laquelle peut être réfutée par le résultat d’un test. Les fondements de la statistique mathématique, mais aussi d’importantes méthodes prédictives remontent à cette période, telles que l’analyse discriminante linéaire et la régression logistique. Dans les années 1960-1980, l’apparition de l’informatique révolutionne la discipline, en permettant des calculs bien plus complexes et rapides qu’auparavant, sur des milliers d’individus analysés et des dizaines de variables, avec la construction de tableaux « Individus x Variables ». C’est une époque de grande créativité théorique, pendant laquelle sont inventées de nombreuses méthodes fondamentales encore très utilisées aujourd’hui. C’est l’âge d’or de l’analyse des données et notamment de l’analyse factorielle, et la représentation visuelle commence à prendre beaucoup d’importance. Les années 1990 voient l’avènement du concept de data mining, qui n’est pas seulement caractérisé par une explosion des ressources informatiques et de la quantité de données à traiter, mais aussi par une profonde évolution du rôle de l’analyse quantitative. Même s’il reprend les outils de la statistique, le data mining diffère de la statistique par maints aspects qualitatifs et quantitatifs :
Chapitre 2
Les outils informatiques pour le Big Data
Cet ouvrage étant plus destiné aux data scientists qu’aux informaticiens, les aspects purement informatiques du Big Data ne sont que rapidement évoqués dans ce chapitre. Nous pensons qu’il s’agit du minimum de culture générale que doit posséder le data scientist sur ces questions, d’autant que certains outils tels que le calcul distribué peuvent lui être utiles s’il doit manipuler des données massives.
2.1. Nouveaux défis informatiques Crawler le web et répondre aux requêtes des internautes requiert d’importantes capacités de collecte, de stockage et d’analyse de données, avec des données et des besoins de puissance changeants, ce qui a nécessité ces dernières années la mise en place de nouvelles architectures informatiques, matérielles et logicielles. Cette rupture technologique a été engagée par Google et Yahoo, suivis par Facebook, Twitter, Netflix et Amazon. Beaucoup de solutions sont en open source. Elles répondent à quatre besoins : le besoin de distribuer le stockage et les calculs pour une adéquation entre les besoins et les capacités, à un coût raisonnable, auquel répond l’algorithme MapReduce ; le besoin d’accéder à une puissance informatique importante à la demande, auquel répond le cloud computing ; le besoin de gérer des données plus évolutives et moins structurées que les données habituelles, auquel répondent les bases sans schéma ; le besoin d’analyser des données en streaming, auquel répondent de nouveaux outils comme le projet Apache Kafka. Avant de poursuivre, rappelons que dans une architecture distribuée, les données mais aussi les traitements sont distribués dans les nœuds d’un cluster (« grappe » de serveurs), répartis sur plusieurs machines, à la différence d’un serveur classique qui peut avoir plusieurs processeurs mais hébergés dans une seule machine. Enfin, une machine peut posséder un seul processeur qui peut avoir plusieurs cœurs. C’est maintenant souvent le cas des ordinateurs personnels. L’architecture distribuée ne doit pas non plus être confondue avec l’architecture en grille utilisée pour le grid computing : dans celle-ci, en dépit d’un objectif de partage des ressources, les machines hébergeant ces ressources sont autonomes (non contrôlées par une unité commune), faiblement connectées, souvent nombreuses, éloignées et
44
2. Les outils informatiques pour le Big Data
hétérogènes, avec des systèmes d’exploitation et de gestion des fichiers qui peuvent être différents. Les m machines achines d’un cluster sont au contraire homogènes et non autonomes.
2.2. MapReduce MapReduce est un algorithme de programmation développé par Google pour réaliser des serveurs. Il consiste à diviser et répartir les données sur opérations sur un cluster de serveurs. pération « Map ») puis à agréger les plusieurs nœuds où sont accomplies les tâches (o (opération résultats (opération « Reduce »). Les données sont représentées par des paires (clé, valeur) : l’étape Map lit les données et renvoie un résultat sous la forme d’une paire (clé, valeur) par enregistrement en entrée ; une étape intermédiaire « shuffle » trie les paires par clés et envoie à la même étape suivante les paires qui ont la même clé ; l’étape Reduce agrège les valeurs qui ont la même clé. On peut le présenter comme comme dans la Figure 2.1 et le noter ainsi : —map (k1, v1) ➔ list(k2, v2) —reduce(k2, list(v2)) ➔ list(k3, v3)
Figure 2.1 – MapReduce 37
(source : Clém IAGL )
On peut préciser ce principe en l’appliquant au comptage de mots : dans la phase Map : o k1 est le nom du fichier, v1 est le contenu du texte dans le fichier, o k2 est chaque mot, v2 vaut « 1 » pour chaque mot,
37
https://commons.wikimedia.org/w/index.php?curid=22688163. https://commons.wikimedia.org/w/index.php?curid=22688163.
Chapitre 5
L’apprentissage profond (Deep Learning)
L’apprentissage profond, ou Deep Learning (ou Deep Machine Learning) en anglais, est une branche du machine learning particulièrement adaptée à l’apprentissage de données complexes en vue de réaliser des modèles avancés supervisés ou non supervisés. Il est à la base des meilleurs modèles de reconnaissance d’image et de traitement du langage naturel, en particulier pour la traduction automatique et la génération de texte. Il permet aussi de vaincre les meilleurs joueurs humains de go, d’échecs, et fait des progrès rapides dans les jeux vidéo de stratégie. Il a pu se développer grâce à de nouvelles idées théoriques mais aussi grâce la puissance de calcul des processeurs récents, notamment ceux des cartes graphiques.
5.1. Les principes de l’apprentissage profond L’apprentissage profond cherche à modéliser des phénomènes complexes (reconnaissance de la voix, de l’image, du langage naturel…) par des mécanismes inspirés des neurosciences. Il repose sur l’observation que, face à la complexité, le cerveau fonctionne moins en simplifiant les signaux par du prétraitement que par des structures hiérarchiques d’unités qui chacune utilise en entrée la sortie de l’unité précédente. Le Deep Learning utilise à la fois des méthodes supervisées et non supervisées, et particulièrement les réseaux de neurones qui reviennent à la mode. Il comporte actuellement plus de résultats empiriques que théoriques, même si les travaux des théoriciens sont bien sûr attendus pour fonder cette discipline. On peut citer ceux de Stéphane Mallat72. L’amélioration des performances des modèles d’apprentissage profond passe souvent par la construction de réseaux plus complexes, rendue possible par l’augmentation de la puissance de calcul. Celle-ci profite du développement des processeurs graphiques (GPU) qui s’avèrent beaucoup plus efficaces que les processeurs centraux (CPU) pour l’apprentissage de modèles hiérarchiques développés, grâce à leurs capacités de calcul parallèle. Dans l’apprentissage machine, les architectures « profondes » et « classiques » (« superficielles ») s’opposent ainsi. Une architecture classique est un processus (plus ou moins manuel) d’extraction des caractéristiques pertinentes (réduction de la dimension, 72
Mallat S. (2016). Understanding Deep Convolutional Networks, Philosophical Royal Soc. A, 374:20150203.
86
5. L’apprentissage profond
sélection de variables) suivi d’un classificateur plus ou moins sophistiqué. Une architecture profonde consiste en un apprentissage simultané d’une hiérarchie de i) plusieurs niveaux pour l’extraction des caractéristiques (des plus simples aux plus complexes) et ii) d’un classificateur assez simple. L’apprentissage profond pourrait s’appeler apprentissage hiérarchique, ce qui correspondrait peut-être mieux à sa spécificité. Pourquoi une organisation hiérarchique ? Elle s’inspire des travaux de Hubel et Wiesel en 1959 (Prix Nobel en 1981), qui ont montré que la vision biologique est organisée hiérarchiquement, avec des cellules simples et des cellules complexes dans le cortex visuel. Les cellules simples distinguent les formes locales, spécifiques, tandis que les cellules complexes reconnaissent des formes plus globales, indépendamment de leur position précise (invariance spatiale). Cette organisation correspond à un fonctionnement dans lequel la détection des scènes visuelles est organisée hiérarchiquement, des caractéristiques fines et de bas niveau (haute résolution) vers les caractéristiques globales et plus invariantes (basse résolution). Cette représentation hiérarchique avec un niveau croissant d’abstraction se retrouve dans plusieurs contextes : pixel → trait → contour → partie d’un objet → objet caractère → mot → groupe de mots → proposition → phrase → discours onde → son → phonème→ phone → syllabe → mot. Une caractéristique des données susceptibles d’être modélisées par apprentissage profond est, outre leur grande quantité (en nombre d’observations et de caractéristiques), le fait qu’elles sont de bas niveau, tels les pixels d’une image, et non des données structurées et élaborées, telles par exemple les données sociodémographiques d’un individu. Pour modéliser ces situations, des modèles « profonds » ont été inventés au cours des dernières décennies. Qu’est-ce qui les caractérise ? Yann LeCun considère qu’un modèle est profond quand il comporte au moins deux niveaux de transformations non-linéaires. Ainsi, un arbre de décision n’est pas profond car toutes les décisions sont prises dans l’espace des variables en entrée : il n’y a pas de hiérarchie. Une machine à vecteurs de support (SVM) n’est pas profonde car elle a un seul niveau éventuellement non linéaire : son noyau. Un réseau de neurones classique à une couche cachée, ce que l’on appelle un perceptron, n’est pas profond. Nous rappelons dans la section 5.3 les notions de base sur les réseaux de neurones, qui vont beaucoup nous occuper car ils sont présents dans la plupart des méthodes d’apprentissage profond. Le théorème de Hornik73 montre que l’on peut approcher n’importe quelle fonction continue sur un espace fermé borné de ℝ avec un perceptron à une couche cachée (trois couches avec celles d’entrée et de sortie). Mais il ne dit rien du nombre d’unités dans cette couche cachée, sa « largeur », qui peut être très grande, avec un risque de surapprentissage que permettent d’éviter les architectures profondes. Les modèles profonds les plus utilisés aujourd’hui pour la reconnaissance et la complétion d’image, le traitement du langage naturel (NLP) et de la parole sont les réseaux de neurones à convolution (ou réseaux convolutifs) que nous allons décrire dans 73
Kurt Hornik (1991). Approximation Capabilities of Multilayer Feedforward Networks, Neural Networks, 4(2), 251–257.
Chapitre 6
L’apprentissage profond en pratique
De nombreuses bibliothèques d’algorithmes d’apprentissage profond ont été écrites en C++ avec une interface Python, mais un nombre grandissant sont aussi utilisables avec R175. Nous voyons dans ce chapitre comment programmer en quelques lignes de code des modèles de réseaux de neurones profonds afin de résoudre des problèmes de reconnaissance d’image, et nous donnons quelques indications sur les configurations et les paramètres permettant leur optimisation. Nous détaillons en particulier la configuration d’une machine sous Windows pour l’utilisation d’un processeur graphique (GPU) en apprentissage profond. Nous montrons aussi comment faire de l’apprentissage dans un cloud, en prenant l’exemple de Google Colab et de ses notebooks Jupyter en Python. Nous mettons en œuvre les opérations vues dans le chapitre précédent : pooling, normalisation par lot, dropout, apprentissage par transfert… Nous constaterons leur efficacité pour améliorer la reconnaissance d’image. Le traitement du langage naturel sera étudié dans le chapitre 10.
6.1. Bibliothèques d’apprentissage profond Avant de présenter l’implémentation de certaines d’entre elles dans R, nous commençons par comparer dans le Tableau 6.1 quatre des principales bibliothèques de réseaux de neurones profonds : MXNet, TensorFlow, Theano et Torch. Nous mentionnons Theano pour son importance historique, même si elle semble aujourd’hui vouée à disparaître, comme nous l’avons indiqué dans la section 5.2. Les deux bibliothèques aujourd’hui en plein essor sont TensorFlow et Torch, ou plutôt PyTorch qui est l’implémentation de Torch en Python et qui a absorbé la bibliothèque Caffe2 en mars 2018. Leur concurrence est d’autant plus vive que TensorFlow est soutenue par Google et PyTorch par Facebook. Leur principale différence est que les modèles de TensorFlow sont décrits par des graphes symboliques statiques qui doivent être « compilés » avant l’apprentissage du modèle, tandis que les modèles de PyTorch sont décrits par un code Python proche de NumPy qui est exécuté séquentiellement et qui pour cette raison est plus facile à déboguer (on peut l’exécuter pas à pas). Outre qu’il est plus familier aux programmeurs Python, le code de PyTorch est également plus simple, ce qui favorise sa popularité, et autorise plus de souplesse pour créer des architectures personnalisées de réseaux de neurones profonds. Il sera peut-être plus apprécié par les chercheurs. Il est aussi réputé plus rapide. Pour sa part, TensorFlow possède quelques 175
D’ailleurs, François Chollet, le créateur de Keras, est le co-auteur de l’ouvrage Deep Learning with R, paru en 2018 chez Manning.
162
6. L’apprentissage profond en pratique
fonctionnalités supplémentaires et sans doute une meilleure capacité de déploiement. Sa prise en main est aussi facilitée par TensorBoard pour la visualisation des résultats et par l’interface Keras que nous allons présenter. Quant à MXNet, qui combine ces deux approches (d’où son nom), il est actuellement, en dépit de ses qualités que nous allons voir, plutôt en position d’outsider. Mais tout ce que nous venons d’écrire sur les différentes bibliothèques d’apprentissage profond peut changer rapidement.
Tableau 6.1 – Logiciels d’apprentissage profond
Logiciel
MXNet
TensorFlow
Theano
Torch
Créateur (date)
DMLC (2015)
Google Brain Team (2015)
Université de Montréal (2007)
R. Collobert, K. Kavukcuoglu, C. Farabet (2002)
Open source
Oui
Oui
Oui
Oui
Plate-forme
Linux, macOS, Windows, AWS, Android, iOS, JavaScript
Linux, macOS,
Multiples
Linux, macOS, Android, iOS
Langage
C++11
C++ (et Python)
Python
C, Lua
Interface
C++, Python, Julia, Matlab, JavaScript, R, Scala, Go
Python, C/C++, Java, R, Go
Python
LuaJT
Multi-GPU
Oui
Oui
Oui
Oui
Modèles préentraînés
Oui
Oui
Model Zoo de la bibliothèque Lasagne
Oui
Réseaux récurrents
Oui
Oui
Oui
Oui
Réseaux convolutifs
Oui
Oui
Oui
Oui
Windows
Nous verrons que ces bibliothèques sont non seulement utilisables à l’aide de packages dédiés, notamment mxnet, tensorflow et keras, mais aussi dans l’environnement de développement intégré (IDE) RStudio, et à l’aide de la nouvelle fonction h2o.deepwater() qui donne accès à H2O aux bibliothèques TensorFlow, MXNet et Caffe (section 9.4.7), ou du moins à certaines de leurs fonctions.
Chapitre 7
La reconnaissance de l’écriture manuscrite
Dans ce chapitre nous mettons en œuvre les méthodes de machine learning décrites dans le chapitre 4, de la régression logistique multinomiale pénalisée aux Extra-Trees, ainsi que quelques autres telles que l’analyse discriminante linéaire et quadratique et les machines à vecteurs de support. Nous les appliquons au jeu de données MNIST, et nous comparons leurs performances dans la reconnaissance des chiffres manuscrits. Les meilleures méthodes ne sont toutefois pas vues dans ce chapitre, car elles relèvent de l’apprentissage profond et ont été abordées dans le chapitre 6, qui montre le gain qu’elles apportent dans ce type de problème complexe.
7.1. Données Du point de vue économique, l’intérêt de la reconnaissance de caractères est grand : tri automatique du courrier, traitement des chèques bancaires, reconnaissance des plaques d’immatriculation des véhicules… Du point de vue scientifique, c’est un problème classique en apprentissage statistique. De nombreuses méthodes de reconnaissance de caractères manuscrits ont été testées et publiées220. La base la plus connue est celle des codes postaux manuscrits et numérisés collectée par le National Institute of Standards and Technology (États-Unis). La base complète est disponible sur le site du NIST221 et est composée de 814 255 images écrites par 3699 personnes – elle est payante. Une base de 70 000 images extraite de la précédente par le MNIST (Modified National Institute of Standards and Technology) est composée de chiffres écrits par 250 personnes environ (des employés et des étudiants), gratuite, souvent utilisée par les chercheurs222. Elle est accompagnée d’explications, de références bibliographiques et de la mention des taux d’erreur obtenus sur cette base à l’aide d’un certain nombre de méthodes de modélisation. Les images de la base MNIST sont de plus prétraitées, avec des caractères centrés, redressés et de taille normalisée (Figure 7.1).
220
Voir par exemple l’ouvrage de Hastie, Tibshirani et Friedman, The Elements of Statistical Learning, en section 11.7, pp. 404-409. 221 http://www.nist.gov/srd/nistsd19.cfm. 222 http://yann.lecun.com/exdb/mnist/.
238
7. La reconnaissance de l’écriture manuscrite
Figure 7.1 – Images de la base MNIST
7.2. Problématique La reconnaissance de caractères est un problème de classement : il s’agit ici d’associer chaque image à un chiffre de 0 à 9, ou à un caractère dans d’autres exemples. Les méthodes les plus souvent citées dans la littérature sont les réseaux de neurones, les k-plus proches voisins, les machines à vecteurs de support SVM et le boosting d’arbres de décision. Sans prétraitement des données, les taux d’erreur publiés sur la base MNIST sont : d'environ 12 % par analyse discriminante linéaire ; supérieurs à 10 % pour un réseau de neurones classique (perceptron) avec une couche cachée ; de 7,7 % pour des stumps boostés ; de 5 % pour les k-plus proches voisins ; de 4,7 % pour un réseau de neurones à deux couches cachées. Un prétraitement des données ad hoc peut apporter un gain important en permettant de tirer parti des particularités présentes en plusieurs points dans l’écriture d’une personne. D’autres méthodes construisent des distances tangentielles223 invariantes par rotation, translation et homothétie, distances utilisées dans des méthodes supervisées telles que les k-plus proches voisins. 223
Voir par exemple Hastie, Tibshirani & Friedman (2009), The Elements of Statistical Learning, section 13.3.3.
Chapitre 12
L’intelligence artificielle
Nous concluons cet ouvrage par un aperçu des développements récents de l’intelligence artificielle, qui s’appuient beaucoup sur les méthodes d’apprentissage profond pour effectuer des tâches de plus en plus complexes de reconnaissance d’image, de vidéo, de texte ou de parole, de génération automatique de texte, de traduction, de conduite d’un véhicule, etc. Ces tâches sont même à présent couramment combinées dans des algorithmes qui, par exemple, peuvent analyser des images et en générer automatiquement une description textuelle. Ces tâches qui étaient naguère inaccessibles à un traitement automatique par une machine sont désormais accomplies par des algorithmes avec un niveau de performance qui s’approche parfois du niveau humain. Nous examinons ce qui a permis une telle évolution de l’intelligence artificielle, ses progrès, ses limites et les questions qu’elle suscite.
12.1. Les débuts de l’intelligence artificielle On peut définir l’intelligence artificielle comme l’ensemble des théories et techniques mises en œuvre afin d’élaborer des machines capables de réaliser des tâches cognitives de haut niveau telles que celles accomplies par l’intelligence humaine : reconnaissance de formes, identification d’un visage, compréhension du langage, dialogue automatique, raisonnement mathématique, jeux… La réalisation de ces premières tâches relève de ce que l’on appelle l’intelligence artificielle « faible ». Les tâches de raisonnement397 et de planification398 sont beaucoup plus complexes, et on ne parle pas ici pour une machine d’être dotée d’un libre arbitre, de la capacité de se fixer des objectifs, d’une conscience de soi et de ressentir (et pas simplement simuler) des sentiments : cela relève de l’intelligence artificielle « forte », qui pour longtemps sans doute restera un fantasme inaccessible. Une tâche très importante et un peu plus simple que le raisonnement et la planification à proprement parler est de prédire la situation suivante à partir d’une situation donnée. Il s’agit par exemple de prédire sur la base de certains signes qu’un piéton va traverser la route sans prévenir, ce qui est évidemment crucial pour un véhicule autonome.
397
« Faculté d'analyser le réel, de percevoir les relations entre les êtres, les rapports entre les objets,
présents ou non, de comprendre les faits… » CNRTL, http://www.cnrtl.fr/definition/raisonnement. 398
« Méthode consistant à choisir des objectifs et à proposer des moyens pour y parvenir. » CNRTL,
http://www.cnrtl.fr/definition/planification.
552
12. L’intelligence artificielle
Même si cela reste très loin de l’intelligence artificielle forte, certains travaux commencent à permettre à une intelligence artificielle de détecter les émotions d’une personne, par l’observation de ses sourires, des mouvements de son visage, de ses yeux. On peut envisager des interactions entre la machine et l’homme, qui commencent à être mises à profit dans le traitement de l’autisme. Il s’agit d’intelligence artificielle conversationnelle, dont l’objectif est d’interagir avec des humains et non de résoudre des problèmes. Elle peut s’appuyer sur la faculté de détecter d’imperceptibles mouvements et de les associer à un comportement. Dans des appels téléphoniques à un service d’urgence, l’intelligence artificielle peut aussi percevoir le risque d’arrêt cardiaque à partir des réponses de l’appelant mais aussi du ton de sa voix et de son rythme respiratoire. Les applications de l’intelligence artificielle sont nombreuses et variées : biométrie avec la reconnaissance faciale et d’empreintes digitales, reconnaissance et synthèse vocale permettant de dialoguer avec une machine, véhicule sans conducteur… Les domaines concernés sont bien sûr la robotique, mais aussi la médecine, les transports, les jeux, la finance, le marketing, le journalisme, le droit, etc. Mais une intelligence artificielle est (aujourd’hui) incapable d’avoir des « idées » et ne peut donc pas résoudre un problème par une méthode nouvelle. Elle peut parfois aider à vérifier une démonstration mathématique mais ne peut pas avoir l’idée d’une démonstration originale comme un mathématicien qui découvre une approche nouvelle pour résoudre un problème difficile. L’intelligence artificielle peut reproduire ce qu’on lui a montré sans qu’on ait dû lui en fournir les règles, en lui fournissant seulement les exemples, et c’est déjà remarquable. En matière de création, elle est capable de pastiche mais non d’original. Elle est capable de peindre « à la manière de » Van Gogh, Picasso ou Turner (section 5.19.5) mais un excellent amateur le peut aussi. Elle ne deviendra pas le Picasso de demain… jusqu’à preuve du contraire, même si le 25 octobre 2018 a été vendu aux enchères chez Christie’s à New York, pour 432 500 dollars (!), Le Portrait d’Edmond de Belamy399, premier tableau entièrement créé par une intelligence artificielle, plus précisément un réseau antagoniste génératif (section 5.19.4) mis au point par le collectif Obvious composé de Hugo Caselles-Dupré, Pierre Fautrel et Gauthier Vernier. La signature de ce tableau a d’ailleurs tout d’un GAN :
min max ¸
¦
H
zhl ¤
!+
¹
zhl 1 − ¤ – v
!
Son apprentissage s’est basé sur une sélection de 15000 portraits peints entre le XVème et le XXème siècle, d’où l’aspect très académique du Portrait d’Edmond de Belamy et le fait que ce n’est pas lui mais son auteur qui l’a fait vendre. La prouesse serait de vendre un tableau peint par une intelligence artificielle sans révéler qu’il a été peint par une intelligence artificielle. De même, l’intelligence artificielle peut produire des textes ressemblant à ceux d’un auteur existant (section 10.5.1) mais ne peut pas devenir elle-même un nouvel auteur, avec un style original et une sensibilité nouvelle. C’est vrai pour tout ce qui relève de l’apprentissage profond, lequel s’appuie sur des exemples et ne peut s’en détacher autant que Proust se détache de Flaubert. Et encore l’imitation n’est que locale, avec des phrases qui auraient pu avoir été écrites par l’auteur princeps mais qui mises bout à bout
399
Dont le nom est d’ailleurs un hommage à Goodfellow (« bel ami »), l’un des inventeurs des GAN.
12. L’intelligence artificielle
553
n’ont pas grand sens. On le voit dans un livre récent assez ardu à lire, 1 The Road400 écrit par une intelligence artificielle embarquée sur une Cadillac dans un road trip à la Kerouac, et connectée à un GPS, une horloge, des caméras et des micros qui lui fournissaient ses « sensations ». L’intelligence artificielle n’est même pas aujourd’hui capable d’une traduction véritablement littéraire, traduisant la lettre mais aussi l’esprit d’un auteur, et transformant un texte de haute qualité littéraire dans une langue en un texte d’une égale qualité littéraire dans une autre langue. On trouve des premières réflexions autour de l’intelligence artificielle dans les travaux d’Alan Turing qui dans les années 1950 se demanda si une machine pouvait penser, et traduisit cette interrogation dans la question plus opérationnelle de savoir si une machine pouvait tenir la place d’un être humain dans le « jeu de l’imitation ». Publiée dans son article Computing machinery and intelligence401 cette question devint le fameux test du Turing. Il consiste à faire converser une personne à l’aveugle avec une machine et un autre humain : si cette personne n’est pas capable de dire lequel de ses interlocuteurs est une machine, celle-ci a passé le test avec succès. Turing estimait qu’en l’an 2000 des machines avec 128 mégaoctets de mémoire seraient capables de tromper environ 30 % des juges humains durant un test de cinq minutes, et que l’on pourrait alors parler d’intelligence artificielle. Ce test est devenu un challenge pour les agents conversationnels et un défi pour la simulation du langage naturel. Des machines dépassent aujourd’hui les 50 % de réussite. Une autre source de l’intelligence artificielle se trouve dans une conférence qui se tint en 1956 au Dartmouth College aux États-Unis. De futurs grands noms de cette nouvelle discipline y assistaient : notamment John McCarthy et Marvin Minsky402 (MIT), et Allen Newell et Herbert Simon (Carnegie-Mellon University). Ils se demandèrent si « chaque aspect de l'apprentissage ou toute autre caractéristique de l'intelligence peut être si précisément décrit qu'une machine peut être conçue pour le simuler ». McCarthy inventa alors le terme d’intelligence artificielle. Les années qui suivirent cette conférence virent ses
400
Ross Goodwin, Jean Boîte Éditions, 2018. Mind, Oxford University Press, vol. 59, no 236, octobre 1950. 402 Vue l’importance des réseaux de neurones dans l’intelligence artificielle, il est amusant de se souvenir que Minsky est le co-auteur avec Seymour Papert d’un ouvrage, Perceptrons (1969), qui pointa les limites des réseaux de neurones de l’époque (depuis le perceptron de Rosenblatt en 1957) et refroidit pendant plus de dix ans l’enthousiasme pour leur utilisation. Il avait remarqué qu’il fallait introduire des couches cachées dans les perceptrons pour représenter des fonctions non-linéaires (dont le XOR) mais qu’il n’existait à l’époque pas de mécanisme d’apprentissage d’un réseau par rétropropagation sur plusieurs couches. Ce mécanisme fut progressivement découvert et diffusé entre 1974 et 1986 (section 5.3) et mit fin au premier hiver de l’intelligence artificielle. Un deuxième hiver commença au milieu des années 1990 en raison des problèmes d’évanouissement du gradient, rendant difficile la rétropropagation du gradient sur des réseaux profonds, jusqu’au printemps qui vers l’année 2006 vit apparaître plusieurs solutions à ces problèmes (section 5.4), liées à de nouvelles idées et l’augmentation de la puissance informatique. 401