Introduction
Avant-propos
Les ingénieurs, les data scientists, les roboticiens, les économistes, les financiers, les physiciens ou les hommes et femmes du marketing partagent comme bien d’autres de nombreuses pratiques mathématiques, probabilistes et algorithmiques.
Au travers de son aptitude à manipuler d’immenses tenseurs et structures multidimensionnelles, ou ses capacités de différentiation automatique, TensorFlow permet de créer des programmes embarquant ces techniques d’algèbre, d’analyse, de topologie, de statistique et d’intelligence artificielle autrefois réservées aux experts de ces domaines. Cet outil est polymorphe et utilisable dans de nombreux contextes professionnels et techniques : il n’est donc pas dédié à l’IA, mais il en est un grand serviteur.
Les modèles créés peuvent être utilisés sur les minuscules configurations embarquées de l’Internet des objets, au sein de robots, dans des téléphones, sur votre PC, dans un réseau de machines propre au big data ou dans de supercalculateurs scientifiques.
Quand ces modèles relèvent des réseaux neuronaux ou du deep learning, l’API Keras, intégrée dans TensorFlow 2, nous permet de les créer puis de les manipuler simplement en quelques lignes de code.
Nous sommes aujourd’hui confrontés à la manipulation de grandes quantités de données, aussi bien en termes de volume que de dimensions sémantiques (l’espace, le temps, les matériaux, l’argent, les sentiments, le sens des mots ou des images...). Il nous faut trier, comprendre, prédire et agir au travers de la médiation de machines dont la puissance de calcul s’approche inexorablement de celle d’organismes vivants et relativement évolués.
Le sujet est d’importance : en effet, la science-fiction...
L’esprit de l’ouvrage
Bien que nous ne supposions pas que notre lecteur possède la moindre des connaissances spécifiques aux sujets que nous traitons dans cet ouvrage, celui-ci n’est pas une introduction formelle ou systématique à l’intelligence artificielle, au machine learning, à la science des données, à la robotique ou même à TensorFlow : c’est un parcours didactique, une promenade élaborée pour vous permettre de progresser sur des points qui nous semblent importants dans la définition d’une Intelligence Artificielle (IA) en partie construite avec un outil comme TensorFlow.
Pour autant, le lecteur pourra y trouver, from scratch :
-
la mise en œuvre pragmatique d’une version majeure de TensorFlow : TensorFlow 2 et son API intégrée Keras,
-
une sélection, que nous espérons judicieuse, de concepts clés du machine learning, du deep learning, de la robotique et de l’IA,
-
des formulations mathématiques simplifiées mais explicites lui permettant d’envisager la lecture d’articles de recherche sans trop de stress,
-
un plan d’ensemble évidemment partial et partiel, mais honnête : le blueprint des savoirs minimum à aborder pour fabriquer la partie algorithmique de la création d’une Intelligence Artificielle incarnée (plus ou moins anthropomorphique : robot humanoïde, homme augmenté, avatar ludique…).
Nous nous sommes attachés à concevoir un texte avec plusieurs niveaux de lecture : dans les transports en commun, au bureau devant une machine de développement ou enfin comme table d’orientation vers vos propres recherches sur le Web. C’est en pensant à cette dernière option que nous avons sélectionné avec soin une bibliographie...
L’Intelligence Artificielle dans cet ouvrage
L’intelligence artificielle, même incarnée dans un artefact proche du monde animal, n’a pas aujourd’hui pour objet de créer un être vivant, ni même de simuler la vie chez un artefact. Nous nous contentons de vouloir conférer une certaine autonomie à des objets réels ou virtuels.
Cette recherche d’autonomie passe par de nombreuses facultés, comme pouvoir :
-
capter des données,
-
traduire des données en informations,
-
apprendre,
-
décider,
-
réagir à des évènements,
-
communiquer,
-
interagir physiquement avec son environnement,
-
transformer son environnement,
-
explorer,
-
abstraire,
-
créer,
-
collaborer,
-
s’adapter.
Ce point de vue fonctionnel et intimiste écarte les sujets clés, par ailleurs traités dans les œuvres d’anticipation et par de nombreux gourous, que sont :
-
la reproduction des IA,
-
le "darwinisme" chez les IA,
-
la conscience d’exister,
-
la sociologie et les phénomènes de groupe chez les IA,
-
la volonté de survivre d’une IA,
-
les objectifs qui seraient spécifiques à une IA et non appréhendables facilement par l’homme,
-
la variété des environnements où l’on peut déployer une IA,
-
la collaboration fine homme/IA,
-
l’homme augmenté,
-
la conscience collective chez les IA,
-
la singularité (le moment où l’IA nous dépasserait).
Mais de façon opérationnelle, le point de vue fonctionnel développé dans les pages suivantes occulte également l’aspect systémique d’une IA, caractérisé par l’extraordinaire complexité des interactions entre ses composants et notre incapacité à déterminer formellement comment converger vers une architecture optimale de l’agencement de ceux-ci.
Les IA que nous concevons actuellement possèdent des facultés atomiques fascinantes, mais l’intégration de ces facultés reste difficile.
Peut-être...
Les promesses de TensorFlow
TensorFlow ambitionne d’être un des frameworks de référence du deep learning, mais pas seulement. En effet, la richesse de ses fonctionnalités le rend apte à résoudre de nombreux problèmes, par exemple en physique et dans des branches de l’intelligence artificielle ou de la recherche opérationnelle qui ne relèvent pas strictement des data sciences.
Ce logiciel permet de répondre avec efficacité à tous les problèmes de manipulation de base de grands tenseurs (que vous pouvez imaginer comme la généralisation de concepts comme les vecteurs, les matrices ou les tableaux multidimensionnels). TensorFlow est aussi redoutablement efficace sur la différentiation de ces tenseurs (celle-ci étant perçue comme la généralisation de la notion de dérivée), ce qui en fait un outil de choix pour la mise en place de nombreuses démarches d’optimisation.
L’API TensorFlow a été publiée sous la forme d’un progiciel libre sous la licence Apache 2.0 en novembre 2015 et rendue disponible à l’adresse suivante : www.tensorflow.org.
C’est un produit dont les orientations ont légèrement évolué par rapport à l’annonce d’origine (GoogleResearch 2015). Le texte de cette annonce mettait en évidence...
Zoom sur Keras
Keras est une API proposant un haut niveau d’abstraction. Elle s’avère très utilisée, puisqu’elle permet d’invoquer aisément divers frameworks de machine learning (TensorFlow, CNTK, Theano). Keras peut s’exécuter sur CPU ou GPU, l’exécution sur GPU permettant des gains importants de performance dans de nombreuses configurations d’entraînement de modèles.
Keras peut être utilisée à partir de Python, mais aussi à partir de R. Ces deux implémentations sont très bien documentées par son créateur, ce qui en fait un "espéranto" qui s’impose de facto dans l’univers du machine learning et permet à chacun de garantir la pérennité de ses investissements.
Aujourd’hui, Keras est intégrée dans la distribution TensorFlow (tf.keras) et devient une des API "phare" intégrées à TensorFlow 2 : l’esprit étant de disposer de niveaux d’abstraction plus ou moins complexes en fonction de la difficulté, de l’originalité et de la complexité de la tâche de machine learning à mettre en œuvre.
En consultant la documentation de Keras, on remarque que cette API est globalement dédiée aux high-level neural networks. TensorFlow possède quant à lui un champ d’application beaucoup plus important et permet de traiter une grande part des aspects numériques de l’algèbre linéaire et de l’analyse dans de bonnes conditions de performance. C’est en conséquence un framework applicable dans presque tous les domaines de l’ingénierie.
Il est possible d’utiliser Keras de différentes manières, ce qui facilite son introduction au sein de projets comportant des personnes aux compétences variées. Ainsi, si l’on souhaite répartir harmonieusement les tâches liées aux réseaux neuronaux au sein des équipes, on peut facilement utiliser Keras dans différentes configurations de travail collaboratif et se donner des objectifs de natures diverses, concrétisés dans différents workflows, afin...
Comment l’esprit vient aux machines
Dans un article plaisant à parcourir (Munier-Temime 2006) Brigitte Munier cite Lamartine : "Objets inanimés, avez-vous donc une âme ?", puis fait allusion à l’un des romans fondateurs de la science-fiction, l’Eve future de l’écrivain français Auguste de Villiers de L’Isle-Adam, publié en 1886, où l’on découvre pour la première fois le concept d’andréide (aujourd’hui orthographié androïde).
Sans entrer dans une polémique stérile autour du fond et de la forme, ou de la réalité de l’intelligence d’un objet qui en présente tous les attributs mais pas la genèse biologique, cette section va tenter de déconstruire notre perception technique d’une intelligence incarnée dans un robot plus ou moins humanoïde. Pour cela, nous vous proposons de parcourir quelques traces des dernières années de recherche autour de l’intelligence artificielle et de la robotique. Notre présupposé est le suivant : il est plus facile de comprendre la technologie actuelle et de la mettre en application quand on perçoit la façon dont elle a été échafaudée.
1. Des origines du robot humanoïde moderne et de la nécessité de le doter d’une certaine intelligence
Entre 1967 et 1970 apparaissent des bras humanoïdes, l’université japonaise Waseda dote ces bras de muscles artificiels en caoutchouc, puis leur procure sept degrés de liberté (DOF = degrees of freedom) ainsi qu’un contrôle effectué grâce à un ordinateur qui commande des actionneurs électriques (actuators) permettant la mise en mouvement de ces bras dans le respect des degrés de liberté que leur confèrent leurs articulations.
Ces bras possèdent des capteurs de position et des capteurs de pression aux extrémités de leurs doigts. Ils sont capables d’attraper un objet et de le déplacer d’une position à une autre sans demander l’intervention d’un opérateur humain.
L’utilisation des capteurs laisse penser qu’une boucle de contrôle/commande assez précise a dû être codée par les concepteurs de ces artefacts. Le lien entre IA et robotique est ici patent : bien que ces robots ne communiquent pas, ne soient pas mobiles et ne prennent pas de décision macroscopique, il a fallu que quelqu’un les dote de la capacité à s’adapter à de petites variations de leur contexte pour qu’ils puissent saisir un objet et le reposer sans heurt à un endroit donné.
Nous verrons plus loin comment TensorFlow pourra nous permettre d’embrasser l’ensemble des calculs matriciels nécessaires à la modélisation des DOF et comment les calculs de différentielles nécessaires à la boucle d’optimisation de l’ensemble sont traités avec TensorFlow.
Dans les années suivantes, ces bras se trouvent complétés par des capteurs visuels. Ces images n’étant pas visionnées et interprétées par un être humain en charge de manipuler les bras mais directement interprétées par l’artefact, il faudra donc les traduire en termes d’éléments contextuels appréhendables par les autres algorithmes en charge du fonctionnement des bras du robot.
La gamme de situations à reconnaître était relativement faible et l’on pourrait penser qu’une configuration aussi simple est facile à traiter avec nos outils actuels, toutefois un tel problème reste aujourd’hui encore un challenge pour ce qui est des robots évoluant dans des contextes non industriels.
Les réseaux neuronaux actuels, que nous implémenterons dans les chapitres suivants, permettent d’aller assez loin dans la reconnaissance d’objets et ce sera sans doute une des aptitudes que vous pourrez revendiquer sans crainte après avoir abordé les codes que nous vous proposerons plus loin.
Dès cette époque, la reconnaissance d’objets devait déjà répondre à quatre questions :
-
Quel est cet objet ?
-
Où est-il (par la localisation de son centre de masse ou de son barycentre par exemple) ?
-
Comment est-il orienté ?
-
Quel est son mouvement (direction, vitesse et accélération de translation, vitesse et accélération angulaire) ?
Pour cette dernière question, la formulation du problème sous forme tensorielle, que nous étudierons au chapitre Introduction à la robotique anthropomorphiste, permettra de simplifier notre travail du fait de sa grande compacité, mais aussi parce qu’elle incitera à traiter l’ensemble de ces variables d’une façon cohérente et homogène (d’autant plus que c’est une des caractéristiques de TensorFlow que de voir le monde sous forme de tenseurs).
Dans le cadre du contrôle/commande on peut d’ailleurs présumer que ces questions se posent à la fois pour les objets extérieurs au robot, comme ce gobelet que le robot veut attraper, mais aussi pour le robot lui-même, typiquement pour s’assurer que sa main (effector) aborde précisément le lieu où se trouve cet objet, ici le fameux gobelet qu’il ne faut ni renverser ni broyer !
Mais tout cela n’était rien en comparaison des problèmes qui allaient se poser dans les années suivantes.
2. De l’évolution des robots humanoïdes et de leurs besoins croissants en intelligence
En 1972, le robot WAM-4 du Waseda est bilatéralisé, il possède deux bras connectés via une poitrine portant les épaules de ces deux bras ; il est capable de verser le contenu d’un gobelet tenu dans une main dans un autre gobelet tenu dans une autre main. Cela doit nous interpeller, car le niveau de complexité...
En guise de conclusion… de l’introduction !
Nous voici maintenant armés pour aborder avec un certain recul la mise en œuvre des pratiques associées à l’IA et à la robotique que nous implémenterons avec TensorFlow 2.
Dans la suite, les informations énoncées dans cette introduction ne seront pas répétées, il vous faudra donc peut-être revenir à celle-ci pour contextualiser votre travail.
À vous de jouer !
Bibliographie du chapitre
Cyrulnik, Boris. 2018. Psychologie de La Connerie. Collection Barbara. http://www.sudoc.fr/231522584.
GoogleResearch. 2015. "TensorFlow: Large-scale machine learning on heterogeneous systems." http://download.tensorflow.org/paper/whitepaper2015.pdf.
Hüttenrauch, Maximilian, Adrian Sosic, and Gerhard Neumann. 2018. "Deep Reinforcement Learning for Swarm Systems." CoRR abs/1807.06613. http://arxiv.org/abs/1807.06613.
Inaba, Masayuki, Takashi Igarashi, Satoshi Kagami, and Hirochika Inoue. 1997. "Design and Implementation of a 35 Dof Full-Body Humanoid That Can Sit, Stand up and Grasp an Object." Advanced Robotics 12 (1): 1-14.
Jang, J-SR. 1993. "ANFIS: Adaptive-Network-Based Fuzzy Inference System." IEEE Transactions on Systems, Man, and Cybernetics 23 (3): 665-85.
Laude, Henri., and Eva. Laude. 2018. Data scientist et langage R : guide d’autoformation à l’exploitation intelligente des big data. 2e édition. Éditions ENI.
Mathivet, Virginie. 2014. L’Intelligence Artificielle pour les développeurs - Concepts et implémentations en C#. DataPro. Saint-Herblain : Éditions ENI. http://www.sudoc.fr/183397649.
Munier-Temime, Brigitte. 2006. "Comment l’esprit vient aux machines - L’imaginaire de l’objet et de la machine aux débuts de la modernité." https://doi.org/10.3406/colan.2006.5363.