24 avril 2018
(modifié le 8 mai 2018)

Apprendre aux machines

Si vous êtes développeur et que vous vous intéressez un tant soit peu à l'actualité des nouvelles technologies, vous n'avez pas pu passer à coté d'une étrangeté peu commune : nous parlons à des machines. Et, encore plus étrange, celles-ci nous répondent (le plus souvent correctement). Cette incroyable prouesse est liée à une évolution importante de la puissance de calcul de nos ordinateurs conjuguée à un ensemble récent de percées significatives dans une science très particulière : l'apprentissage automatique, ou Machine Learning.

Il était une fois...

L'histoire de l'intelligence artificielle (et notamment des réseaux de neurones qui seront le sujet principal de ce blog) ne date pas d'hier. De nombreuses années de recherches ont permis les avancées spectaculaires dont nous avons été témoins récemment.

Tout commence en 1943, lorsque McCulloch et Pitts introduisent la première modélisation mathématique d'un neurone simplifié [McCulloch et Pitts 1943, 115‑33]. Ce neurone formel ne fonctionne pas comme un neurone réel - un tel modèle serait d'un autre niveau de complexité - mais il offre déjà certains services intéressants. Les deux auteurs montrent notamment que ces neurones formels sont une alternative plausible aux machines de Turing.

En 1957, Rosenblatt [Rosenblatt 1957] étend le travail de ses prédécesseurs et invente le perceptron - un neurone artificiel capable d'apprendre par expérience. S'ensuivent de nombreuses recherches dont le but est d'étudier ce nouvel objet afin d'en cerner les contours et les possibilités.

Malheureusement, si l'outil paraît puissant, il n'est pas aisément domesticable. Il se heurte à deux problèmes majeurs - le premier, démontré par Minsky et Papert [Minsky et Papert 1969], est qu'il est intrinsèquement limité. Certaines de ces limites peuvent être levées si on chaine les perceptrons entre eux - ce qui nous amène au second problème : l'apprentissage par expérience d'un réseau de perceptrons est compliqué et aléatoire. On peut prouver aisément qu'un perceptron peut être entraîné avec une méthode simple, mais ce n'est plus garanti dès lors qu'on chaîne les perceptrons. En effet, la méthode d'entraînement régulièrement utilisée a besoin, pour fonctionner correctement, de savoir quel(s) perceptron(s) du réseau provoque(nt) une erreur ; ce qui, dans le cas général, revient à connaître la solution d'un problème alors même que l'on cherche cette solution. C'est le début d'une ère de disette sévère, où les médias oublient presque l'existence des réseaux de neurones. Les gouvernements gèlent les budgets, et la recherche dans ce domaine ralentit grandement.

Il faut attendre LeCun en 1986 [LeCun 1986] et son article "Learning Processes in an Asymmetric Threshold Network" pour que soit développée une nouvelle méthode d'apprentissage des perceptrons. Cette découverte, associée à l'augmentation graduelle mais continue de la puissance des ordinateurs, ouvre la voie à de nombreuses autres améliorations.

La véritable révolution sonne au début des années 2010. Internet, la quantité grandissante de données, la puissance de plus en plus impressionnante des CPUs, la versatilité toujours plus grande des GPUs : tout se conjugue pour la naissance d'une grande première : les réseaux de neurones convolutifs profonds sont enfin exploitables, et obtiennent des résultats spectaculaires dans des domaines tels que la classification d'images ou de vidéos. Les réseaux de neurones récurrents résolvent des tâches qu'on pensait pratiquement impossibles (par exemple effectuer une traduction automatique de qualité dans et à partir de centaines de langues [Sutskever, Vinyals et Le 2014, 3104‑12] [Cho et al. 2014, 1724‑34]).

Le futur, c'est maintenant

Aujourd'hui, il est inconcevable d'imaginer le futur sans y rattacher d'une manière ou d'une autre plusieurs intelligences artificielles. Il est d'ores et déjà possible en utilisant les API de Google de créer un petit système équipé d'un micro et d'un écouteur qui effectue des traductions simultannées bi-directionnelles.1

L'intelligence artificielle est partout : on la trouve dans les systèmes de traduction automatique, mais aussi dans les moteurs d'analyse comportementale ou de recommandations (tel que ceux de Netflix ou d'Amazon), dans les systèmes de reconnaissance d'image et d'identification, dans les voitures autonomes, etc.

Et son importance ne va que grandir dans les années qui viennent. Aujourd'hui, on sait modéliser en 3D le visage d'une personne à partir d'une photo n'offrant qu'une vue partielle de son visage [Feng et al. 2018]. On sait transformer une photo ou une vidéo pour changer la saison ou l'heure de l'enregistrement [Zhu et al. 2017, 465‑76] [Yijun Li et al. 2018] [Liu, Breuel et Kautz 2017]. On sait laisser la machine jouer à des jeux vidéo (et le plus souvent obtenir de meilleurs scores que nous) [Plappert et al. 2017] [Ha et Schmidhuber 2018]. On sait modifier le style d'une image ou d'une vidéo, passant par exemple d'un dessin au crayon à une peinture dans le style de Van Gogh [Gatys, Ecker et Bethge 2015] [Ruder, Dosovitskiy et Brox 2016], ou d'une image extraite d'un jeu vidéo à une photo [Liu, Breuel et Kautz 2017]. On sait générer du texte "à la manière de" [Karpathy 2015]. On sait même créer des photos de personnes célèbres qui, au final, n'existent pas [Karras et al. 2017].

Même si la bibliographie donnée dans le paragraphe ci-dessus semble impressionnante, ce ne sont là que quelques applications parmi des centaines d'autres.

Si vous souhaitez en apprendre davantage sur les récentes avancées dans le domaine de l'intelligence artificielle, je ne puis que vous conseiller de suivre la chaine Youtube de Karoly Zsolnai Two Minutes Papers (en anglais).

Ce blog...

... fait la part belle aux réseaux de neurones et à l'intelligence artificielle.

Certains articles, que je souhaite didactiques, auront pour objet l'étude des réseaux de neurones et leur fonctionnement. Ces articles seront à destination des programmeurs et de ceux qui souhaitent en savoir plus sur la manière dont les réseaux de neurones fonctionnent. Ils contiendront une bonne dose de mathématiques et de programmation.

D'autres seront plus généraux, voire prospectifs. Le discours sera alors orienté vers l'utilité de l'intelligence artificielle, les problèmes éthiques associés, ses dérives, les espoirs qu'elle permet, etc.

D'autres encore présenteront les recherches récentes dans ces domaines, avec potentiellement encore plus de mathématiques et, lorsque c'est possible, de code source.

Quoi qu'il en soit, l'ensemble des articles qui seront postés ici (avec une périodicité aléatoire) auront pour objet de vous éclairer sur ces sujets importants.

Cho, Kyunghyun, Bart van Merriënboer, Çağlar Gülçehre, Dzmitry Bahdanau, Fethi Bougares, Holger Schwenk et Yoshua Bengio. « Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation ». Dans Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP), 1724‑34. Doha, Qatar: Association for Computational Linguistics, 2014. http://emnlp2014.org/papers/pdf/EMNLP2014179.pdf.

Feng, Yao, Fan Wu, Xiaohu Shao, Yanfeng Wang et Xi Zhou. « Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network ». CoRR abs/1803.07835 (2018). http://arxiv.org/abs/1803.07835.

Gatys, Leon A., Alexander S. Ecker et Matthias Bethge. « A Neural Algorithm of Artistic Style ». CoRR abs/1508.06576 (2015). http://arxiv.org/abs/1508.06576.

Ha, David et Jürgen Schmidhuber. « World Models ». CoRR abs/1803.10122 (2018). http://arxiv.org/abs/1803.10122.

Karpathy, Andrej. « The Unreasonable Effectiveness of Recurrent Neural Networks », 2015. http://karpathy.github.io/2015/05/21/rnn-effectiveness/.

Karras, Tero, Timo Aila, Samuli Laine et Jaakko Lehtinen. « Progressive Growing of GANs for Improved Quality, Stability, and Variation ». CoRR abs/1710.10196 (2017). http://arxiv.org/abs/1710.10196.

LeCun, Y. « Learning Processes in an Asymmetric Threshold Network ». Dans Disordered Systems and Biological Organization. Sous la direction de E. Bienenstock, F. Fogelman-Soulié. et G. Weisbuch. Springer Verlag, 1986. http://yann.lecun.org/exdb/publis/pdf/lecun-86.pdf.

Li, Yijun, Ming-Yu Liu, Xueting Li, Ming-Hsuan Yang et Jan Kautz. « A Closed-form Solution to Photorealistic Image Stylization ». CoRR abs/1802.06474 (2018). http://arxiv.org/abs/1802.06474.

Liu, Ming-Yu, Thomas Breuel et Jan Kautz. « Unsupervised Image-to-Image Translation Networks ». CoRR abs/1703.00848 (2017). http://arxiv.org/abs/1703.00848.

McCulloch, Warren S. et Walter H. Pitts. « A Logical Calculus of the Ideas Immanent in Nervous Activity ». Bulletin of Mathematical Biophysics 5 (1943), 115‑33. http://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf.

Minsky, M. et S.A. Papert. Perceptrons: An Introduction to Computational Geometry. MIT Press, 1969. https://amzn.to/2q8WCFZ.

Plappert, Matthias, Rein Houthooft, Prafulla Dhariwal, Szymon Sidor, Richard Y. Chen, Xi Chen, Tamim Asfour, Pieter Abbeel et Marcin Andrychowicz. « Parameter Space Noise for Exploration ». CoRR abs/1706.01905 (2017). http://arxiv.org/abs/1706.01905.

Rosenblatt, F. « The Perceptron: A Perceiving and Recognizing Automaton », 1957. https://blogs.umass.edu/brain-wars/files/2016/03/rosenblatt-1957.pdf.

Ruder, Manuel, Alexey Dosovitskiy et Thomas Brox. « Artistic style transfer for videos ». CoRR abs/1604.08610 (2016). http://arxiv.org/abs/1604.08610.

Sutskever, Ilya, Oriol Vinyals et Quoc V. Le. « Sequence to Sequence Learning with Neural Networks ». Dans Proceedings of the 27th International Conference on Neural Information Processing Systems - Volume 2, 3104‑12. NIPS’14. Cambridge, MA, USA: MIT Press, 2014. https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf.

Zhu, Jun-Yan, Richard Zhang, Deepak Pathak, Trevor Darrell, Alexei A Efros, Oliver Wang et Eli Shechtman. « Toward Multimodal Image-to-Image Translation ». Dans Advances in Neural Information Processing Systems 30. Sous la direction de I. Guyon, U. V. Luxburg, S. Bengio, H. Wallach, R. Fergus, S. Vishwanathan et R. Garnett, 465‑76. Curran Associates, Inc., 2017. http://papers.nips.cc/paper/6650-toward-multimodal-image-to-image-translation.pdf.


  1. il s'agit d'une utilisation assez simple des API Cloud Speech et Cloud Translate proposées par Google