L'avenir de la robotique et de l'apprentissage par renforcement avec Chelsea Finn
22 mai 2023
Robotics & AI
Introduction et parcours académique
Merci de m'avoir rejoint ici à l'université de Stanford. Je suis avec la professeure Chelsea Finn, qui fait partie des départements d'informatique et de génie électrique. Chelsea dirige un laboratoire de recherche qui effectue des travaux de pointe en appliquant l'apprentissage automatique, en particulier l'apprentissage par renforcement, à une gamme d'applications robotiques. Je suis donc très heureux de vous avoir ici, Chelsea.
Ravie d'être ici.
Alors, je sais qu'avant de vous lancer dans l'informatique et l'apprentissage automatique, vous avez envisagé de nombreuses options de carrière, allant de la biologie à l'aérospatiale, en passant par l'informatique et le génie électrique. Qu'est-ce qui vous a poussée à faire ce choix ?
J'ai toujours été attirée par l'ingénierie parce que j'aime beaucoup résoudre des énigmes et des problèmes. Et quand je suis arrivée au MIT pour mon premier cycle, j'envisageais différentes spécialisations en ingénierie. Ce qui m'a d'abord attirée vers l'informatique, c'est la grande flexibilité qu'elle offre en termes de parcours possibles. Essentiellement, l'informatique vous permet de construire énormément de choses différentes avec des logiciels, du code. Et grâce à cela, je pouvais finalement me diriger vers la biologie si je le souhaitais, ou vers la robotique. Il y a toutes sortes de choses passionnantes que l'on peut faire avec l'informatique. C'est donc ce qui m'a amenée à l'informatique. Une fois cette décision prise, j'ai vraiment apprécié une grande partie des mathématiques derrière l'IA, comme les probabilités et les statistiques. J'ai également été très attirée par ce défi : comment construire un ordinateur capable de voir comme les humains, de percevoir des choses dans des images et d'entreprendre des actions dans le monde.
Ouais. C'était donc presque comme si votre choix était : si vous faites de l'informatique, vous pouvez tout faire. Et c'est ce qui fait, je suppose, ce que Marc Andreessen a dit, le logiciel dévore le monde. Et je pense que Jensen Huang a dit que l'IA dévore le logiciel. Et on a l'impression que lorsqu'on travaille dans l'apprentissage automatique, on peut mettre son nez dans tous les coins du monde et y faire des choses amusantes.
Absolument. Je pense que l'apprentissage automatique est un domaine vraiment passionnant. J'ai mentionné que l'informatique est très flexible et ouvre de nombreuses portes. Je pense que l'apprentissage automatique est très similaire. Il y a tellement de choses différentes que l'on peut faire avec l'apprentissage automatique et tellement d'applications diverses. Je suis très enthousiaste par les applications en robotique, mais nous avons vu beaucoup d'applications différentes dans le traitement du langage, en biologie et dans d'autres domaines.
Les limites actuelles de la robotique et les vidéos de démonstration
D'accord. Donc votre spécialisation, parmi les nombreuses choses que vous faites, une grande partie de votre travail porte sur la robotique. Et quand les gens regardent les médias populaires ou les réseaux sociaux, on voit ces vidéos de, par exemple, robots humanoïdes sautant partout, faisant du parkour et des choses incroyables. Comment doit-on percevoir ce que les robots peuvent et ne peuvent pas réellement faire aujourd'hui ? Parce qu'il y a ces vidéos de démonstration incroyables où ils semblent pouvoir tout faire. Mais comment décider de ce qui est réellement réalisable ?
Oui. Les vidéos que nous voyons en ligne de Boston Dynamics, par exemple, de robots faisant des saltos arrière ou du parkour sur un parcours d'obstacles sont vraiment impressionnantes parce qu'elles ont l'air très complexes. Et il est facile, d'une certaine manière, d'anthropomorphiser le robot et de se dire que si l'on voyait une personne faire cela, ce serait très impressionnant et qu'elle serait probablement capable de faire beaucoup d'autres choses tout aussi impressionnantes. Le piège est qu'en robotique, dans ces vidéos et dans de nombreuses démonstrations impressionnantes, le robot a été configuré pour cet environnement particulier et réglé pour réussir dans cette configuration précise. Si vous changez quelque chose à l'environnement, à la configuration, à ce qu'il est censé faire, alors la démo ne fonctionne plus. Le robot tombera à plat. Le défi majeur en robotique est donc d'amener les robots à généraliser, à être capables de gérer de nombreux scénarios différents avec de nombreux objets et environnements différents. Actuellement, les robots peuvent faire des choses dans des environnements très contrôlés comme dans les usines, et ils y sont très utiles. Ce qui me passionne et ce qui est vraiment difficile en robotique, c'est de leur donner la flexibilité et la généralité des compétences que les humains possèdent.
Ouais. Juste pour approfondir un peu plus ce point sur l'environnement unique et spécifique avant de passer à la généralisation. Quand quelqu'un voit la prochaine démo robotique géniale, comment devrait-il y réfléchir ? Quelles questions devrait-il se poser ?
Je pense que la première question que l'on peut se poser est : que se passera-t-il si quelque chose change dans l'environnement ? Que se passera-t-il si vous déplacez un bloc ou si vous placez le robot dans une position légèrement différente au départ ? Souvent, on ne voit pas ce genre de tests de robustesse ou de résilience du système face à ces variations. Et si vous commencez à voir ces démos où l'on bouscule le robot ou que l'on modifie un peu l'environnement et que cela fonctionne toujours, c'est là que je pense que nous pouvons être vraiment impressionnés.
Collecte de données et généralisation en robotique
Cool. Une grande partie de votre travail a donc porté spécifiquement sur la robustesse des robots pour qu'ils se généralisent ou s'appliquent à de nombreux environnements différents. Dites-m'en plus sur ce travail et sur la façon dont vous abordez ce problème.
Tout à fait. Dans d'autres domaines de l'apprentissage automatique, nous avons vu d'énormes succès en utilisant de très grands ensembles de données, comme prendre tout Wikipédia et entraîner un réseau neuronal pour modéliser les données de cet ensemble vaste et diversifié. En robotique, ce qui m'enthousiasme, c'est de voir si nous pouvons reproduire ce genre de succès. Si nous pouvons collecter un ensemble de données tout aussi diversifié et permettre aux robots d'apprendre à partir de cet ensemble. C'est difficile pour plusieurs raisons. La première est que nous n'avons pas encore d'ensemble de données existant. Nous n'avons pas de Wikipédia pour le contrôle moteur des robots. Il n'y a pas de données sur Internet montrant exactement comment bouger les doigts d'un robot pour lacer des chaussures, par exemple. Nous ne disposons donc pas encore de tonnes de données diversifiées. Mais heureusement, les robots devraient en principe être capables de collecter des données eux-mêmes. C'est une opportunité, car cela signifie que nous pourrions être en mesure de collecter une grande quantité de données diversifiées en laissant les robots collecter leurs propres données. Mais c'est aussi un défi, car cela signifie que nous devons trouver comment permettre aux robots de collecter des données utiles et diversifiées. Nous explorons donc de nombreuses pistes pour aborder ce problème. Certaines font de laisser les robots collecter leurs propres données dans de nombreux environnements différents. D'autres consistent à montrer des démonstrations à un robot sur la façon d'exécuter une tâche. Nous avons également exploré un peu l'utilisation de données provenant d'Internet, comme des vidéos d'humains, pour montrer à un robot comment accomplir une tâche. En intégrant toutes ces sources de données différentes pour permettre aux robots, une fois qu'ils auront espérons-le vu des ensembles de données très diversifiés comme ceux-là, de se généraliser non seulement au scénario unique qu'ils ont vu en laboratoire, mais peut-être au monde réel sur le long terme.
Le rôle et les limites de la simulation
L'une des choses que nous avons vues est que les algorithmes d'apprentissage automatique et d'apprentissage par renforcement sont excellents pour jouer aux jeux vidéo parce qu'on peut obtenir des données virtuellement infinies en jouant contre soi-même. Que pensez-vous du rôle de la simulation ?
Oui, nous avons certainement vu de nombreux succès de systèmes d'IA obtenant d'excellents résultats dans les jeux vidéo. Et la simulation est assez similaire car nous pouvons également collecter beaucoup de données en simulation. L'un des défis de la simulation est que la physique du moteur de simulation n'est pas exactement la même que celle du monde réel. Nous connaissons généralement les lois de la physique, mais la friction sur une table, par exemple, peut ne pas être connue avec précision. Ou la friction entre les rainures d'un bouchon et d'une bouteille d'eau, si vous essayez de visser une bouteille, modéliser cela est très difficile. Et c'est sujet à des erreurs. Ensuite, lorsque vous essayez d'entraîner une politique dans ce simulateur pour fermer une bouteille d'eau, par exemple, puis que vous la déployez dans le monde réel, cela ne fonctionne pas à cause de ces erreurs de simulation. Je pense donc que c'est une source de données prometteuse, mais à cause de ces inexactitudes et du défi de transférer ce qui a été appris en simulation vers le monde réel, je ne pense pas que ce soit la seule approche sur laquelle nous devrions parier. Je pense que nous devrions essayer de tirer parti de nombreuses données réelles.
Et je me demande si ce serait surprenant pour quelqu'un qui regarde ceci : pourquoi est-il si difficile de simuler le monde réel ? C'est juste une bouteille d'eau, deux morceaux de plastique, et pourtant nous ne semblons pas pouvoir comprendre ce qui se passe avec deux morceaux de plastique.
Oui, je pense qu'il y a beaucoup de défis. D'abord, il s'agit simplement de modéliser la physique de bas niveau. De nombreux moteurs de simulation modélisent le temps selon une certaine discrétisation. En réalité, le temps est beaucoup plus fluide que de fonctionner à 100 Hz ou quelque chose comme ça. Pour modéliser ces choses avec précision, il faudrait peut-être les modéliser avec une discrétisation temporelle très fine. Et cela devient très coûteux. Votre simulateur pourrait alors être plus lent que l'exécution réelle dans le monde réel. Il n'est alors plus aussi utile par rapport à la collecte de données dans le monde réel. Deuxièmement, le monde réel est extrêmement diversifié. Créer le contenu de tous les objets que vous rencontrez, même dans la vie quotidienne quand vous déjeunez ou rangez une table, est un effort très manuel. Généralement, dans les systèmes d'apprentissage automatique, on veut s'affranchir des tâches nécessitant beaucoup d'efforts manuels et essayer d'automatiser les choses pour qu'elles puissent être mises à l'échelle.
Robots dans les foyers et environnements non contrôlés
Et en fait, en ce qui concerne la diversité des environnements, aujourd'hui les usines fonctionnent très bien avec les robots là où l'environnement est relativement contrôlé, avec relativement peu d'imprévus en moyenne. Je sais que certains de vos travaux visent à envoyer des robots dans les foyers des gens et à faire des choses dans leurs cuisines. C'est l'un des environnements les plus incontrôlés au monde. Dites-m'en un peu plus à ce sujet.
Oui, absolument. Je pense que les environnements contrôlés sont ceux où nous avons vu beaucoup de succès. À long terme, j'aimerais voir des robots capables d'aller dans n'importe quel environnement, comme une maison ou un bureau, et d'être utiles aux gens. Pour cela, nous voulons commencer à collecter des données dans ces environnements. Souvent, dans la recherche en robotique, nous collectons les données une fois dans un environnement de laboratoire et apprenons à partir de ces données. Mais si nous ne collectons des données réelles qu'en laboratoire, nous ne ferons jamais sortir les robots dans le monde réel. Nous essayons donc de lancer des efforts de collecte de données en plaçant réellement des robots dans le monde réel afin qu'ils voient la diversité de tous ces foyers différents plutôt que les données limitées que l'on voit en laboratoire.
J'aimerais avoir votre instinct sur une chose : vous avez parlé de vouloir qu'un robot aille dans une toute nouvelle maison et prépare un bol de céréales, n'est-ce pas ? Tâche difficile : liquides, céréales, réfrigérateur. Quel est votre instinct sur le nombre de maisons différentes, de cuisines différentes qu'un robot devra voir ? Combien d'exemples d'entraînement pensez-vous qu'un robot aurait besoin pour avoir une bonne chance de réussir dans la n+1ème, dans la cuisine suivante ?
Oui, je pense que cela dépend vraiment de la difficulté de la tâche. Si la tâche est aussi simple que d'appuyer sur un bouton du micro-ondes, alors je pense que vous n'aurez pas besoin de tant de données que ça. Mais je pense que même pour une nouvelle cuisine, il faut probablement encore un nombre assez important de cuisines pour généraliser à une nouvelle. Peut-être 20, peut-être 100. S'il s'agit d'une tâche plus complexe, comme préparer un bol de céréales, c'est quelque chose de très simple pour les humains, mais c'est en fait très difficile pour les robots car il y a beaucoup d'étapes différentes. Pour cela, je pense qu'il faudrait plus de données et probablement aussi plus de cuisines. Peut-être des milliers. Et je pense aussi que même si nous avions des données de milliers ou de dizaines de milliers de cuisines, mon hypothèse est que le problème ne serait toujours pas entièrement résolu. Nous avons vu des applications comme la conduite autonome où il y a des tonnes de données et le problème n'est pas encore tout à fait résolu. Je pense donc que nous devons également essayer d'aller au-delà de la distribution des données et permettre aux robots de s'adapter à la volée dans un nouvel environnement.
Méta-apprentissage : Apprendre à apprendre
Wow, des milliers. C'est plus élevé que mon instinct, mais c'est intéressant de voir comment cela évolue. Et sur le thème de rendre les robots plus robustes, je sais qu'une grande partie de vos travaux de recherche portait également sur le méta-apprentissage, ou apprendre à apprendre, plutôt que de dire à un ordinateur 'voici un algorithme d'apprentissage', comment amener un ordinateur à s'améliorer lui-même en apprenant. Pouvez-vous en dire un mot ?
Oui, absolument. Une partie de la motivation est que si un robot rencontre une nouvelle cuisine, nous ne voulons pas qu'il exécute simplement ce qu'il a appris. Il pourrait avoir besoin de s'adapter et d'apprendre à la volée. Il pourrait avoir besoin, par exemple, s'il essaie d'ouvrir la porte d'un garde-manger et que la porte est un peu différente, d'un peu d'expérience et de tâtonnements sur cette porte afin de comprendre comment l'ouvrir. Et nous voulons permettre aux systèmes de réaliser ce type de processus d'apprentissage à la volée au moment du test dans de nouveaux scénarios. Malheureusement, si vous lancez simplement un apprentissage automatique à partir de zéro au moment du test sur une très petite quantité de données, cela ne fonctionnera pas très bien. Il faut de grandes quantités de données pour apprendre quelque chose. Le méta-apprentissage essaie donc de tirer parti de l'expérience acquise dans les cuisines précédentes ou les tâches précédentes et d'optimiser la capacité à apprendre de nouvelles choses. La capacité d'apprendre de nouvelles choses grâce au fait d'avoir déjà appris beaucoup de choses auparavant.
D'accord. Par exemple, quel est le meilleur taux d'apprentissage avec lequel s'adapter à une nouvelle cuisine et bien d'autres paramètres que l'on pourrait ajuster.
Oui, tout à fait. Le cas le plus simple est celui où l'on n'optimise qu'un seul paramètre comme le taux d'apprentissage dans une situation nouvelle. Et dans des algorithmes de méta-apprentissage plus complexes, on peut en quelque sorte optimiser l'intégralité de l'algorithme d'apprentissage.
Je vous considère comme l'une des expertes mondiales en méta-apprentissage. En fait, si je me souviens bien, c'était une part importante de votre thèse de doctorat, que vous avez faite il y a quelque temps avec Pieter Abbeel, qui était mon propre étudiant en doctorat à Stanford. Dites-nous en plus sur le fonctionnement du méta-apprentissage.
Oui, il existe plusieurs approches différentes du méta-apprentissage, mais celle de ma thèse consistait essentiellement à placer un problème d'apprentissage à l'intérieur d'un autre problème d'apprentissage. Cela forme en fait cette optimisation à deux niveaux, ce problème d'apprentissage sur deux niveaux où l'on essaie d'optimiser tous les paramètres de ce problème d'apprentissage interne afin d'obtenir un apprentissage plus rapide ou plus efficace.
La vie quotidienne dans un laboratoire de robotique
Oui, je me souviens avoir lu certains de vos premiers articles, très impressionnant. Beaucoup d'algorithmes logiciels, d'algorithmes d'apprentissage automatique, d'apprentissage par renforcement. Une partie de votre travail consiste aussi à diriger un laboratoire de robotique avec des robots qui circulent, des bras articulés. Je suis curieux, pour quelqu'un qui n'a pas encore passé beaucoup de temps dans un laboratoire de robotique, pouvez-vous nous dire à quoi cela ressemble ? Si un étudiant rejoignait votre laboratoire, à quoi ressemblerait une matinée de travail dans un labo de robotique ?
En plus des tâches quotidiennes, il y a aussi l'interface avec le robot réel. Souvent, de nombreux projets commencent par une simulation et l'itération d'algorithmes à l'aide d'un moteur physique, ce qui peut impliquer la conception d'aspects de la simulation pour tester les hypothèses que l'on souhaite vérifier. Parfois, certains projets n'incluent pas cette étape de simulation, ou bien l'itération a déjà eu lieu en simulation. Sur le robot réel, cela va de la configuration de la pile de contrôle pour pouvoir ordonner au robot de se déplacer vers une certaine position, à l'installation des caméras, jusqu'à la collecte de données avec le robot. Vous pourriez collecter des données en utilisant une manette de réalité virtuelle, par exemple, pour dire au robot de se déplacer vers certaines positions. Et puis, quand vient le moment d'évaluer un modèle, cela implique de l'exécuter réellement sur le robot et d'observer ce qu'il fait dans la vie réelle. C'est un processus assez amusant, du moins pour moi. Je trouve très gratifiant de voir le robot faire quelque chose plutôt que de simplement voir des chiffres ou la précision de son modèle. Mais cela demande aussi un peu de persévérance car les robots peuvent tomber en panne. Un moteur peut casser, la caméra peut être mal configurée et ne renvoyer que des zéros, par exemple. Il peut y avoir beaucoup plus de bugs que dans un système sans robot.
Beaucoup de gens ont de l'expérience dans le débogage de logiciels, et puis il y a le débogage d'algorithmes d'apprentissage automatique, qui a des pratiques et des idées différentes. Pouvez-vous nous dire à quoi ressemble le débogage matériel dans un laboratoire de robotique ?
Absolument. Je pense qu'en général, avec le débogage, on veut éliminer les sources d'erreurs et de bugs possibles. Souvent, on devine s'il s'agit du logiciel ou du matériel. À partir de là, je pense que beaucoup de principes de l'apprentissage automatique s'appliquent. Il faut regarder ses données. Comme beaucoup de données sont collectées en laboratoire, elles ne proviennent pas forcément d'un ensemble de données pré-existant, il peut donc y avoir un problème avec celles-ci. On peut vouloir regarder les images que le robot voit, peut-être visualiser certaines caractéristiques que le modèle a apprises. On peut aussi, par exemple une chose que nous avons faite récemment, déployer une politique sur plusieurs robots différents. Nous rejouions des actions sur un robot pour nous assurer qu'il reproduisait un certain mouvement souhaité. La façon de déboguer dépend beaucoup du problème. Je ne sais pas s'il y a une seule méthode ou un bug spécifique qui revient le plus, car les sources de bugs sont multiples. Mais cela vous donne une petite idée de ce à quoi cela ressemble.
J'ai toujours pensé que l'une des choses à la fois charmantes et frustrantes de la robotique, par rapport au logiciel, c'est qu'en logiciel, si on fait une erreur, on peut toujours revenir à une version précédente. Mais ce moment où l'on fait quelque chose et que le robot casse, et qu'on se dit : 'mince, ça va demander deux mois de travail pour reconstruire ça'. C'est une expérience unique au matériel.
Tout à fait. Et comme nous travaillons beaucoup sur le côté logiciel, nous essayons généralement d'avoir des robots qui ne cassent pas en achetant des robots haut de gamme très performants, afin de pouvoir nous concentrer sur le logiciel plutôt que sur le matériel. Mais s'il arrive qu'un robot casse, nous essayons d'avoir des modèles où l'on peut facilement remplacer les pièces ; si un moteur casse, on peut juste en mettre un nouveau plutôt que de devoir tout refaire. Mais il y a certainement beaucoup de défis qui surviennent.
C'est vrai. Vous savez que je faisais voler des hélicoptères autonomes. Chaque fois qu'un hélicoptère s'écrasait, même si nous arrivions heureusement à garder tout le monde en sécurité et à l'écart, on se retrouvait avec un hélicoptère franchement détruit qu'il fallait reconstruire. C'est agréable quand on n'a pas à le faire trop souvent.
Oui, heureusement les bras articulés ne s'écrasent pas trop.
Je vois. Ouais, j'aurais peut-être dû choisir de travailler sur ça à la place.
Apprentissage par renforcement et fonctions de récompense
Dans votre laboratoire de robotique, l'un des outils de choix que vous avez souvent utilisé est l'apprentissage par renforcement. Pouvez-vous nous parler des leçons pratiques, des trucs et astuces pour appliquer l'apprentissage par renforcement, ces algorithmes incroyables, à vos robots matériels ?
Oui, l'apprentissage par renforcement est un cadre vraiment attrayant pour la robotique car, en principe, il permettrait à un robot d'apprendre quelque chose de façon totalement autonome, par tâtonnements, à partir de données qu'il a lui-même collectées. C'est pour cette raison que nous en sommes très enthousiastes, mais c'est aussi très difficile pour plusieurs raisons. Premièrement, l'apprentissage par renforcement suppose généralement qu'on vous donne un signal de récompense, un feedback. Si vous essayez d'apprendre à jouer à un jeu comme Pong ou un autre jeu Atari, vous pouvez simplement utiliser le score comme fonction de récompense et essayer de maximiser votre score. Mais le monde réel ne vous donne pas de score. Il ne donne pas de score au robot lorsqu'il essaie d'apprendre quelque chose. Au lieu de cela, le robot pourrait devoir apprendre sa propre fonction de récompense. Il pourrait devoir apprendre ce que signifie accomplir une tâche tout en essayant d'apprendre comment accomplir cette tâche dans le monde physique. C'est donc un défi majeur et une façon dont nous l'abordons.
Et comment apprenez-vous la récompense ? À partir d'une démonstration ?
Oui, nous l'apprenons de différentes manières. Nous lui donnons souvent au moins quelques exemples de ce à quoi ressemble la réussite. Et nous lui donnons aussi parfois une démonstration complète du type 'voici un exemple de ce que nous voulons que tu fasses'. À partir de là, on peut utiliser des techniques comme l'apprentissage par renforcement inverse, sur lequel vous avez également travaillé il y a longtemps, et essayer d'inverser le processus d'apprentissage par renforcement pour comprendre quelle fonction de récompense sous-tend ce comportement. Au-delà de l'apprentissage des fonctions de récompense, un autre défi est l'autonomie dans le processus d'apprentissage par renforcement. On le conçoit généralement comme un processus de tâtonnement où l'on essaie de résoudre la tâche, puis on veut réessayer. Entre l'essai et la nouvelle tentative, il faut d'une manière ou d'une autre revenir à un point de départ. Par exemple, si vous essayez d'apprendre à faire un salto arrière, réessayer impliquera de se relever après être tombé. Mais parfois, apprendre ce comportement de réinitialisation est aussi assez difficile, et il y a cette interaction complexe entre apprendre à faire la tâche et apprendre à se remettre de tous les échecs survenus pendant tout le processus.
Il s'agit vraiment d'automatiser le processus de recherche pour pouvoir mener des expériences répétées sans avoir à déplacer le robot manuellement à chaque fois pour le remettre en place.
Exactement. Oui.
Apprentissage de bout en bout et standardisation
Cool. Très cool. En fait, dans votre application de l'apprentissage par renforcement, je pense que vous faites partie des premiers chercheurs à avoir fait de la robotique de bout en bout, ou de l'apprentissage par renforcement de bout en bout. Pouvez-vous nous dire à quoi cela ressemblait à l'époque et pourquoi vous avez choisi cette voie ?
Oui, au début de mon doctorat, l'apprentissage profond commençait tout juste à devenir populaire après qu'AlexNet a montré que l'on pouvait obtenir d'excellents résultats avec des réseaux neuronaux profonds entraînés de bout en bout pour la vision par ordinateur. Je venais d'arriver à Berkeley pour mon doctorat et certaines personnes travaillaient sur l'apprentissage par renforcement avec des réseaux neuronaux. J'étais assez enthousiaste par ces travaux et je voulais voir... dans les travaux précédents, tout était 'aveugle', le robot n'utilisait aucune caméra. Je voulais voir si nous pouvions apprendre un réseau neuronal qui ferait directement le lien entre les images prises par la caméra du robot et les couples appliqués aux articulations du robot. Pour ce premier projet, il a fallu beaucoup de travail pour obtenir ce résultat initial, mais nous étions ravis de voir que nous pouvions effectivement obtenir un seul réseau neuronal capable d'apprendre des tâches comme visser un bouchon sur une bouteille ou mettre un cintre sur un portant, avec un réseau neuronal unique faisant le lien direct entre les pixels et les couples. C'était un résultat très excitant. C'était très différent de ce sur quoi travaillait le reste de la communauté robotique. Je pense que l'article sur lequel nous avons travaillé a été rejeté deux fois parce que les gens n'aimaient pas l'apprentissage profond ; les roboticiens n'aimaient pas le fait que ces réseaux neuronaux soient des 'boîtes noires' incompréhensibles. Mais il a fini par être publié et accepté, et c'est aujourd'hui devenu un paradigme bien plus important en robotique, où beaucoup plus de gens entraînent désormais des réseaux neuronaux pour représenter la politique, c'est-à-dire la façon dont le robot choisit ses actions en fonction des images de la caméra.
Je pense que ce travail initial que vous avez fait était assez visionnaire et a tracé une nouvelle direction importante pour le domaine. Quelle est votre prédiction pour la suite ? Pensez-vous que le pourcentage de travaux pratiques en robotique entraînés de bout en bout va continuer à augmenter ?
Oui, je pense certainement que cela va continuer à se développer considérablement. Toute la communauté de recherche en robotique ne s'intéresse pas encore à ce type d'approches, en partie parce qu'il existe des techniques utiles en théorie du contrôle, particulièrement dans les scénarios contrôlés dont nous avons parlé. Mais je pense que cela va certainement croître. J'espère que, à mesure que le domaine de l'apprentissage automatique continue de réaliser des avancées impressionnantes, cela convaincra plus de gens que ce paradigme est également très prometteur pour la robotique, en particulier pour gérer la vaste diversité d'objets et d'environnements dans le monde. En regardant vers l'avenir, pour comprendre ce qui pourrait se passer dans les 10 ou 20 prochaines années en robotique, une chose qui m'enthousiasme beaucoup et que nous avons brièvement abordée est d'essayer d'entraîner des robots sur des ensembles de données plus larges. Une grande partie du domaine de l'apprentissage robotique consiste encore à collecter un ensemble de données pour un projet spécifique en laboratoire, puis à s'entraîner sur ce petit ensemble. Et il est petit par nécessité, parce que vous l'avez collecté juste pour ce projet. Je pense que si les chercheurs en vision par ordinateur devaient collecter ImageNet pour chaque projet qu'ils entreprennent, ils ne feraient probablement pas beaucoup de progrès. Ma prédiction pour les années à venir est donc de s'orienter vers un paradigme où l'on réutilise beaucoup les ensembles de données, où l'on utilise des ensembles beaucoup plus vastes, et idéalement où l'on partage les données entre institutions et entre plateformes robotiques, en augmentant l'échelle des données sur lesquelles ces systèmes sont entraînés afin qu'ils puissent généraliser plus largement.
C'est une vision passionnante. Et comment y parvient-on ? Pour les images, tout le monde utilise des fichiers PNG, GIF ou JPEG, les données sont donc très portables et faciles à partager. Si les différents laboratoires de recherche utilisent du matériel différent, comment faire en sorte que cela se produise pour la robotique ?
Oui, c'est un vrai défi. Le point de départ qui m'enthousiasme est d'abord d'essayer d'avoir un certain consensus, de rassembler la communauté pour dire : 'Commençons par cette plateforme robotique avec environ cette configuration', afin de pouvoir au moins standardiser certains éléments et essayer de collecter énormément de données diversifiées sur cette plateforme assez standardisée. On part de là, et si nous parvenons à obtenir des signes de réussite et des résultats positifs en collectant un large ensemble de données avec ces choix standardisés, on pourra alors commencer à standardiser de moins en moins : passer peut-être au même robot mais avec une pile de contrôle différente, puis vers différentes versions de ce robot, différents préhenseurs, et finalement vers de nombreux robots différents dans de nombreux environnements.
Conseils de carrière et avenir de l'IA
Cool. C'est vrai. Ce sont des visions passionnantes. En fait, c'est l'une des choses que vous faites en robotique. En regardant plus largement tout le travail que vous faites en apprentissage par renforcement, dont certains ne s'appliquent même pas à la robotique mais à d'autres domaines, où espérez-vous que l'apprentissage par renforcement et la robotique iront dans les prochaines années ?
Oui, j'espère que l'on se dirigera vers ces ensembles de données réutilisables et très larges. Je pense aussi qu'au-delà de la robotique, il existe de nombreuses autres applications pour l'apprentissage par renforcement. Par exemple, dans certains de nos travaux récents, nous avons appliqué l'apprentissage par renforcement, et plus précisément le méta-apprentissage par renforcement (une combinaison de méta-apprentissage et d'apprentissage par renforcement), à l'éducation. L'idée était de donner un feedback sur le travail des étudiants : ils programmaient un jeu comme Breakout, puis le système jouait au jeu, identifiait les bugs créés par les étudiants et leur donnait des conseils pour améliorer leur programme et continuer à apprendre à coder.
C'est très cool. En fait, les robots sont tellement visuels qu'il est parfois facile d'oublier que l'apprentissage par renforcement est une technique générale de prise de décision avec des récompenses différées, utile pour beaucoup d'autres choses que la robotique.
Oui, franchement, je veux voir plus de travaux en robotique.
J'avais l'habitude d'essayer de faire en sorte que tous mes étudiants en doctorat apprennent à souder. Je ne sais pas si c'était une...
J'ai appris à souder en premier cycle, bien que je ne pense pas l'avoir jamais utilisé dans mes travaux en robotique.
Oh wow. Je vois. Oh. Peut-être que les choses ont évolué, mais moi j'ai dû le faire.
Je pense que nous nous contentons d'acheter des robots qui n'ont pas besoin de soudures.
Votre parcours vous a donc amenée à réaliser des travaux de pointe en apprentissage par renforcement et en robotique. Je suis curieux de savoir quels conseils vous donneriez à quelqu'un qui cherche à se lancer dans l'apprentissage par renforcement ou la robotique. Tout le monde ne possède pas un robot génial facile à programmer, alors comment débuter ?
Oui, mon principal conseil serait simplement de se jeter à l'eau et d'essayer de construire quelque chose, de programmer et de coder quelque chose. Il y a beaucoup de choses différentes que l'on peut faire et je pense qu'apprendre en essayant de construire ou de réaliser quelque chose est l'une des meilleures façons d'apprendre parce qu'on a un but précis en tête.
Mais construiriez-vous quelque chose avec un robot simulé ou pensez-vous qu'on devrait simplement construire un petit robot ?
Je pense que commencer avec un robot simulé est probablement le plus simple, la courbe d'apprentissage est moins raide et il y a moins de choses à faire. On n'a pas besoin d'acheter du matériel. Cela dit, je pense qu'essayer de travailler un peu avec du matériel dès le départ est excellent, et cela vous apprend sans aucun doute à quel point la robotique est difficile. La robotique est vraiment difficile. Mais c'est aussi en luttant pour amener le robot à faire quelque chose que c'est d'autant plus gratifiant quand il réussit enfin quelque chose de cool, quelque chose que vous vouliez qu'il fasse. Certains des robots que nous utilisons sont assez chers, mais aujourd'hui il existe de nombreux robots abordables que les gens peuvent acheter. Ou alors vous pouvez construire votre propre robot en assemblant des roues, une caméra, et peut-être même un smartphone. J'ai commencé avec la robotique Lego au collège, et on peut aussi construire des robots avec des Legos pour débuter.
Oui, je me souviens d'être allé à des compétitions de robotique Lego quand j'étais au collège, c'était une expérience intéressante. Alors, pour quelqu'un qui suit la spécialisation en apprentissage automatique, si son but est de travailler dans l'apprentissage par renforcement et la robotique, que lui recommanderiez-vous d'autre ? Quelles sont les autres ressources qui seraient utiles ?
Tout à fait. Il existe des ressources pour apprendre l'apprentissage par renforcement, des cours en ligne, des vidéos de cours, des manuels comme celui de Sutton et Barto. Ce sont de nombreuses ressources. Je pense aussi qu'il y a beaucoup de vidéos en ligne, de tutoriels, de bases de code. Vous pouvez tester un moteur physique comme MuJoCo, qui est disponible gratuitement, et essayer d'explorer avec. Ce sont quelques ressources. Nous utilisons aussi beaucoup 'Robot Operating System' ou ROS pour l'interface avec les robots. Apprendre à s'en servir peut aussi être très utile.
C'est exact. Cela vient de mon laboratoire de recherche à l'époque où je travaillais avec Willow Garage. Oui, de bons moments. Désolé de vous avoir interrompue.
Oui, je pense que ce sont là quelques-unes des ressources, et voilà, pas grand-chose de plus.
Cool. C'est vrai. Très cool. On a l'impression qu'avec le monde qui avance et évolue, le nombre de voies pour s'impliquer dans ce domaine augmente, et il devient probablement un peu plus facile chaque année d'y entrer. C'est une période passionnante.
Oui, tout à fait.
Merci de m'avoir rejoint ici à l'université de Stanford. Je suis avec la professeure Chelsea Finn, qui fait partie des départements d'informatique et de génie électrique, et qui dirige un groupe de recherche effectuant des travaux de pointe sur l'application de l'apprentissage par renforcement et de l'apprentissage automatique à la robotique et à d'autres domaines. Merci de nous avoir rejoints, Chelsea.
Oui, ravie d'être ici.