• Aucun résultat trouvé

variante de CNN qui gère la position relative des objets et évite les défauts actuels des CNNs (fin 2017)

ajoute des couches de convolution "vectorielles" pas encore testé à grande échelle

Modes d’apprentissage

Comme pour le machine learning, l’apprentissage de solutions de deep learning suit l’une des ap- proches suivantes :

L’apprentissage supervisé qui repose sur l’entraînement d’un réseau avec un jeu de données d’entraînement qui est associé à une donnée de résultat souhaité. Pour la reconnaissance d’images, il s’agit des descriptifs d’objets contenus par les images ou leur classe. Pour de la tra- duction automatique, ce sont des couples de phrases traduites d’une langue à l’autre. La labelli- sation est généralement manuelle et d’origine humaine. Tout du moins, dès lors que l’on ex- ploite du langage. Le tagging de données peut exploiter des sources non humaines, comme des capteurs sensoriels divers.

L’apprentissage non supervisé qui est utilisé dans certains types de réseaux de neurones de deep learning ou certaines parties de réseaux, comme les stacked autoencoders qui permettent d’identifier automatiquement des patterns dans des objets et de réaliser du clustering automa- tique d’objets. C’est un moyen de découvrir des classes d’objets alors que dans l’apprentissage supervisé, on entraîne le modèle avec des classes préétablies manuellement. Cet apprentissage non supervisé ne va pas identifier automatiquement le nom des classes identifiées. L’apprentissage totalement non supervisé est plus que rare. Le non supervisé est souvent le complément du supervisé.

L’apprentissage non supervisé semble indiquer qu’une machine peut faire preuve de créativité ou d’intuition. En fait, il n’en est rien. L’apprentissage non supervisé permet d’identifier auto- matiquement des variables discriminantes d’un élément spécifique. Dans les chatbots et le trai- tement du langage, l’apprentissage non supervisé est une forme d’apprentissage par renforce- ment. C’est le cas si le chatbot s’entraîne à mieux répondre en examinant la manière dont évo- luent les conversations avec les utilisateurs en fonction de leurs réponses. Cela implique donc encore une boucle avec des humains.

L’apprentissage par renforcement qui consiste à faire évoluer un modèle en fonction de re- tours externes, en général avec le monde physique. Cette méthode vise à optimiser une récom- pense quantitative (reward) obtenue par le système en fonction de ses interactions avec son en- vironnement. C’est une technique qui est par exemple utilisée pour optimiser le réalisme des dialogues de chatbots, dans les jeux vidéo ou en robotique.

 Elle l’est dans les robots qui apprennent à éviter les obstacles ou à réaliser des tâches méca- niques en tâtonnant. L’agent à entraîner par renforcement cherche à maximiser par itérations successives une récompense qui est incarnée par sa performance, telle que le temps pour réaliser une tâche donnée ou la qualité de cette tâche. L’apprentissage par renforcement peut nécessiter un grand nombre d’essais et de données128.

Applications du deep learning

Depuis 2012, le deep learning est mis à toutes les sauces, la plus symbolique étant la victoire de DeepMind contre le champion du monde de Go à la mi-mars 2016.

Le deep learning est surtout utilisé aujourd’hui pour la reconnaissance des formes dans les images et celle de la parole, donc dans les sens artificiels.

Il peut aussi servir à exploiter des données textuelles non structurées et à alimenter des bases de connaissances qui elles-mêmes seront exploitées par des moteurs de règles dans des systèmes ex- perts utilisant une logique formelle ! IBM liste quelques-unes de ces applications dans son marke-

ting.

On y retrouve des études de cas dans l’éducation pour créer des MOOC auto-adaptatifs, dans le retail avec un assistant d’achats, dans la santé avec la personnalisation de traitements contre certains cancers ou encore dans l’analyse de diverses données dans la smart city.

Pour comprendre le fonctionnement du deep learning dans le détail, il faut avoir beaucoup de temps et un bon bagage mathématique et logique ! On peut commencer par parcourir Deep Learning in

Neural Networks de Jürgen Schmidhuber, publié en 2014 qui fait 88 pages dont 53 de bibliogra-

phie ou bien Neural Networks and Deep Learning, un livre gratuit en ligne qui expose les prin- cipes du deep learning. Il explique notamment pourquoi l’auto-apprentissage est difficile.

Il y a aussi Deep Learning Methods and Applications publié par Microsoft Research (197 pages) qui démarre en vulgarisant assez bien le sujet. Mais elle commence à dater, la troisième et dernière édition étant de 2009. Il y a aussi la masse Deep Learning de Ian Goodfellow, Yoshua Bengio et Aaron Courville, de 802 pages129.

Vous pouvez aussi visionner la conférence inaugurale de Yann LeCun au Collège de France en février 2016 où il excelle dans la vulgarisation même si l’on peut avoir du mal à suivre jusqu’à la fin la première fois.

Le deep learning est très coûteux en ressources marchines, surtout pendant les phases d’entraînement. Nous avons vu que celui-ci passe par l’optimisation des poids de centaines de mil- lions de neurones qui doit être réalisée en testant chaque objet de référence en entrée et il peut y en avoir plusieurs millions. Chaque traitement d’une image de référence peut nécessiter des milliards d’opérations. Les processeurs traditionnels ne sont pas bien adaptés à ces traitements. En effet, ils vont tester et adapter séquentiellement le poids des synapses de chaque neurone et la construction des « feature maps » des couches convolutionnelles.

Du côté du livre des records :

En 2011, Google Deep Brain reconnaissait des chats dans des vidéos YouTube avec un réseau comprenant 1,7 milliards de connexions, 10 millions d'images de 200x200 pixels, 1000 ma- chines et 16 000 cœurs, 170 serveurs, 20 000 catégories d'objets et 3 jours de calcul130.

129 Téléchargeable ici : http://www.iro.umontreal.ca/~bengioy/talks/lisbon-mlss-19juillet2015.pdf. 130 Voir Google’s artificial brain learns to find cat videos, Wired, 2012.

génératifs

variations – augmentation

modification d'images et de textes

récurrents

temporels

ECG, finance, bruit

LSTM

contexte - bidirectionnel

traduction, dialogue, recherche

convolutionnels spatial reconnaissance images fully connected classification et prédictions transfer networks apprentissage incrémental changement de domaine

En 2013, une équipe de Stanford sous la direction d’Andrew Ng créait un réseau de neurones de reconnaissance d’images de 11,2 milliards de paramètres tournant sur 16 serveurs à base de GPU Nvidia131.

En 2015, le Lawrence Livermore Lab créait un système gérant 15 milliards de paramètres132

pour reconnaître des objets dans une base de 100 millions d’images issue de Flickr.

Toujours en 2015, la startup Digital Reasoning de Nashville exploitait un réseau de neurones de traitement du langage cherchant des analogies parmi 20 000 mots et avec 160 milliards de pa- ramètres, entraîné sur trois serveurs en une journée133. Avec un taux d’erreur de moins de 15%,

un record à l’époque.

Encore en 2015, on passait à la reconnaissance de visages avec Nvidia, toujours sur 100 mil- lions d'images, avec 10 niveaux de neurones, un milliard de paramètres, 30 exaflops et 30 GPU- jours de calculs pour l’entraînement134.

En 2017, ce sont les réseaux génératifs qui ont le plus impressionné avec leurs capacités à gé- nérer des visages de synthèse, à compléter des images incomplètes ou à coloriser des photos noir et blanc.

En 2018, Samsung présentait une TV 8K censée faire de l’upscaling d’images SD, HD et UHD en 8K grâce à des réseaux de neurones génératifs. On est en droit de douter mais avec une bonne base d’entraînement, pourquoi pas.

Ces performances vertigineuses s’expliquent notamment par la vague de l’usage de GPU et de pro- cesseurs neuromorphiques dont la structure interne est plus adaptée aux calculs des réseaux de neu- rones que les CPU traditionnels. Ces processeurs savent paralléliser les calculs et multiplier des matrices entre elles, ce qui est utile pour les réseaux de neurones convolutionnels. Nous verrons dans une partie suivante comment progressent ces GPU, surtout issus de Nvidia, et les processeurs neuromorphiques.

Jusqu’à présent, nous avons évoqué les applications du deep learning dans la reconnaissance des formes. Le deep learning a-t-il d’autres usages, notamment dans le cognitif et dans l’intelligence symbolique, jusqu’ici l’apanage des systèmes experts ? Oui, dans une certaine mesure.

Ces techniques dites cognitives sont des techniques avancées de traitement du langage avec une vision plus statistique que logique. Il reste un sacré che- min à parcourir pour intégrer de la logique et du raisonne- ment dans les réseaux de neu- rones. Nous en parlerons dans la partie dédiée à l’intelligence artificielle générale.

De même, l’application du deep learning pour des besoins industriels comme la maintenance pré- dictive, le marketing, l’analyse des bases clients est tout à fait embryonnaire.

131 Voir GPU-Accelerated Machine Learning and Data Mining Poised to Dramatically Improve Object, Speech, Audio, Image and

Video Recognition Capabilities, Nvidia, 2013.

132 Voir Large-scaled deep learning ont the YFCC100M dataset, 2015.

133 Voir Biggest Neural Network Ever Pushes AI Deep Learning, et Modeling Order in Neural Word Embeddings at Scale, 2015. 134 Voir Deep learning image classification, Nvidia, 2016.

Outils du deep learning

Poursuivons cette partie sur le deep learning en évoquant l’offre des outils de création des solutions les mettant en œuvre. Il s’agit d’outils de développement exploitant des langages déclaratifs comme Python. Ils permettent de créer des modèles de réseaux de neurones avec leurs différentes couches. La programmation consiste surtout à définir la structure du réseau de neurones : le nombre de couches cachées, la taille des filtres et des feature maps pour les réseaux de neurones convolution- nels, les fonctions de pooling (réduction de résolution), puis à déclencher son entraînement avec une boucle de programme qui va scanner un jeu d’entraînement taggé et faire de la rétropropagation de gradient dans le réseau de neurones. Une fois entraîné, on évalue le taux d’erreurs généré sur un jeu de test et on affine tous les éléments ci-dessus dans ce que l’on appelle l’optimisation des hyperpa- ramètres.

Les outils disponibles pour créer des solutions de deep learning sont le plus souvent disponibles en open source, installables sur les machines et serveurs des utilisateurs ou accessibles via des res- sources serveur en cloud.

Les grands acteurs du numérique proposent tous leurs frameworks et outils open source de création de réseaux de neurones : TensorFlow chez Google, Torch chez Facebook, Cortana NTK chez Mi- crosoft, la plateforme Watson chez IBM ou encore DSSTNE chez Amazon. Mais les startups ne sont pas en reste, comme H2O, même si les outils de développement open source semblent avoir largement pris le dessus comme c’est le cas pour le développement Internet depuis 1995.

Les modèles de réseaux de neurones se définissent soit avec des fichiers de configuration (Caffe, CNTK) soit par langage de programmation et notamment Python (Torch, Theano, TensorFlow) ou encore Lea (pour Torch). Python est le langage le plus utilisé dans ce domaine.

Ça tombe bien car il sert aussi à développer la partie back-end de nombreux sites web. Il est d’ailleurs aussi utilisé de manière standard dans la programmation d’ordinateurs quantiques.

DSSTNE

L’un des frameworks sort du lot, tout du moins côté usage chez les star- tups, est TensorFlow dont le dévelop- pement a été initialisé par Google. Il fonctionne en embarqué aussi bien que sur serveurs et dans le cloud135.

C’est le framework avec le spectre fonctionnel qui semble le plus large, et qui se déploie facilement sur des architectures parallèles, et notamment celles qui sont à base de GPU comme ceux de Nvidia.

Cela explique qu’il ressorte du lot dans la petite comparaison ci-contre (source). Le nom TensorFlow vient de Tensor qui décrit les matrices multi- dimentionnelles gérées par le système. Google a annoncé au Google I/O de juin 2017 la sortie de TensorFlow Lite, une version allégée dédiée aux smartphones tournant sous Android. On peut imaginer qu’elle sera utili- sable dans d’autres objets voire sur d’autres systèmes d’exploitation.

Une autre solution populaire est PyTorch, un surensemble de Torch exploitable en Python. Alors que les données sont définies de manière statique dans Tensorflow, elles le sont de manière dyna- mique dans PyTorch, apportant une plus grande souplesse dans le développement.

135 Voici une source récente qui indique la popularité des frameworks d’IA : AI frameworks and hardware : who is using what?, mai 2018.

framework OSS de machine learning lancé en novembre 2015 provient de Google adapté au deep learning fonctionne en embarqué et dans le cloud associable aux GPU et aux processeurs neuromorphiques TPU

2016

2017

fin des évolutions en 2018 !

D’un point de vue pratique, à haut niveau, la programmation d’un réseau de neurones de deep lear- ning revient à définir le modèle du réseau lui-même en décrivant de manière quasiment littérale une à une toutes ses couches (ci-dessous, un exemple en Tensorflow et Python).

Il faut ensuite programmer son entraînement, ce qui peut requérir de l’optimisation programma- tique, puis son exécution en mode run-time (ci-dessous, toujours avec du code Python utilisant Ten- sorflow).

L’optimisation d’un réseau de neurones peut dépendre des capacités de l’architecture matérielle exploitée. Ainsi, la taille des filtres dans les réseaux convolutionnels pourra être liée à celle des mul- tiplicateurs de matrices des GPU ou processeurs neuromorphiques utilisés dans les serveurs d’entraînement.

De son côté, Theano est un projet académique lancé par l’Université de Montréal. Il était initiale- ment très bien supporté et apprécié pour sa rapidité de fonctionnement. Il est aussi assez couram- ment utilisé dans les startups jusqu’en 2016. Mais TensorFlow a pris le dessus depuis 2016 à une vitesse incroyable et l’équipe de Theano a annoncé qu’il ne serait plus supporté à partir de 2018. Un retournement de marché en moins de deux ans ! Cela montre le côté impitoyable des batailles de plateformes et la difficulté que peuvent avoir des laboratoires de recherche à l’origine de projets open source lorsqu’ils sont face à de grands acteurs du numérique avec leur force marketing. C’est une leçon à retenir pour les laboratoires français, comme l’INRIA et son framework scikit-learn qui jusqu’ici résiste plutôt bien.

Certains outils sont exploités de ma- nière combinée. Ainsi, la biblio- thèque de prototypage de deep lear- ning Keras, créé par le Français François Chollet (qui travaille chez Google depuis 2015), peut-elle s’appuyer sur TensorFlow.

Ces différents outils sont aussi dis- ponibles dans des offres en cloud, notamment chez Google, Amazon, Microsoft, IBM et même chez OVH.

Voici quelques-unes des solutions de deep learning les plus courantes pour les développeurs de so- lutions extraites de l’édition 2018 du Guide des Startups.

Outil Usage

TensorFlow est une bibliothèque open source de développement d’applications de machine learning déployable dans le cloud de manière répartie ainsi que dans l’embarqué. Elle est proposée sous forme de service en cloud par Google. Elle sert notamment à détecter des pat- terns, à faire de la classification automatique et des prévisions. Les Tensor Processing Units sont des processeurs dédiés au traitement avec TensorFlow qui ont été développés par Google pour son offre en cloud. Ils ont été notamment utilisés pour faire gagner DeepMind au jeu de Go en 2016. En 2017, les TPU en étaient déjà à leur seconde génération. Les applications TensorFlow sont faciles à déployer sur des architectures réparties sur plusieurs CPU et GPU. scikit-learn est un kit de développement d’applications de machine learning et de deep lear- ning mettant en œuvre les méthodes de classification, de régression (prévisions) et de cluste- ring. Il s’exploite en Python. La solution est en open source sous license BSD et est issue de l’INRIA et de Telecom Paritech. Sa communauté internationale comprend 1135 contributeurs depuis sa création avec environ 70 actifs par version. La documentation de scikit-learn fait 2373 pages (release 0.20.0, 27 septembre 2018) !

Keras est une bibliothèque open source écrite en Python qui s’appuie sur Deeplearning4j, Tensorflow ou Theano. Elle permet de créer des solutions de deep learning avec un plus haut niveau d’abstraction que TensorFlow. Elle est issue du projet ONEIROS (Open-ended Neuro- Electronic Intelligent Robot Operating System), et son principal auteur et contributeur est un français, François Chollet, qui travaille chez Google.

CNTK est un framework open source de Deep Learning de Microsoft qui fait partie de leur Cognitive Toolkit qui permet notamment de créer des agents conversationnels (chatbots). Microsoft propose une gamme d’API complète pour presque toutes les applications de ma- chine learning et de deep learning.

IBM Watson est la solution d’intelligence artificielle d’IBM. C’est en fait un ensemble de briques logicielles assez complet permettant de bâtir différentes formes d’applications d’intelligence artificielle, avec ce qui concerne la reconnaissance des images, de la parole ou de textes ainsi que l’automatisation du raisonnement avec des moteurs de règles et des sol- veurs. La solution a des usages multiples : création de robots conversationnels, aide au dia- gnostic et à la prescription dans l’imagerie médicale, prévisions dans la finance, aide juridique automatisée, cybersécurité, etc. Watson est notamment fourni en cloud. Il est assez couram- ment utilisé par les startups, IBM étant très actif dans leur recrutement.

MxNet est une bibliothèque supportée par Amazon supportant le développement en Python, C, C++ et Julia. Il est distribuable sur plusieurs GPU et CPU.

Clarifai est une solution de deep learning en cloud qui sert notamment à la reconnaissance d’images, en particulier dans la santé et pour la création de moteurs de recherche d’images. PaddlePaddle est la bibliothèque de deep learning de Baidu adaptée aux traitements distribués. Elle est fournie avec un outil de visualisation de l’état de l’entraînement de son réseaux de neurones.

PyBrain est une bibliothèque de réseau de neurones bâtie en Python.

Caret (Classification And REgression Training) est une bibliothèque permettant de développer des applications de prévisions.

Vowpal Wabbit est une bibliothèque open source provenant de Yahoo! Research et gérée par Microsoft Research. Elle permet de créer des solutions de machine learning en ligne. Comme la grande majorité des bibliothèques de machine learning, elle sert à faire de la classification automatique, de la prévision, de la segmentation. Elle exploite des CPU multi cœurs et est compilée à partir de C++.

Caffe2 est un framework open source générique de deep learning. La première version prove- nait du Berkeley Vision and Learning Center et avait été développée avec l’aide financière de Nvidia et Amazon. La seconde a bénéficié de la contribution de Facebook. Le framework sait notamment exploiter les serveurs GPU Nvidia et en mode distribué. Les réseaux entraînés sont aussi facilement déployables sur architectures mobiles. On utilise Caffe en Python ou C++. Le framework facilite la distribution de traitement sur plusieurs processeurs.

Torch est un framework de deep learning utilisé notamment dans la vision artificielle. Il est utilisé chez Facebook, Google et Twitter et provient de l’Université de New York. On l’exploite notamment avec le langage Lua qui est une sorte de Python simplifié. C’est le fra- mework préféré de Yann LeCun ! A noter la déclinaison PyTorch qui est exploitable avec Python, un langage plus populaire. PyTorch est apprécié pour le prototypage de solutions de deep learning. PyTorch permet de générer dynamiquement les graphes des réseaux de neu- rones programmés au moment de l’exécution du code ce qui facilite leur mise au point. H2O.ai est un framework open source de machine et deep learning couramment utilisé par les