L'ingénierie de l'apprentissage automatique et la pensée systémique
2 février 2016
Conférence
Introduction et Pensée Systémique
La dernière conférence d'aujourd'hui est donnée par Anatoly Levenchuk, qui est PDG de techinvestlab.ru, CSO de la branche russe d'INCOSE, et membre du comité exécutif de la branche russe de SEMAT.
SEMAT.
SEMAT.
Bonsoir.
Merci. Je donnerai cette conférence en anglais. C'est rare car je parle principalement en russe, mais c'est un cas particulier. Nous avons un événement international, plus international que je ne le pensais au début, mais maintenant c'est évident. Nous avons un public international, et je ferai de mon mieux. Vous voyez qu'il s'agit d'INCOSE, le Conseil international de l'ingénierie système. L'ingénierie système est l'ingénierie générale avec une approche systémique à l'esprit ; c'est une définition très courte. Si vous êtes ingénieur mais que vous n'utilisez pas d'approche systémique, ce n'est pas de l'ingénierie système. Si vous utilisez formellement une approche systémique et que vous avez, par exemple, une formation formelle en pensée systémique, c'est de l'ingénierie système. L'ingénierie système est une discipline qui traite d'autres domaines de l'ingénierie. Si vous avez des ingénieurs en mécanique, en électronique et en systèmes de contrôle, c'est l'ingénieur système qui les rassemble tous. C'est un poste spécial. Quand on voit un domaine émergent comme l'ingénierie de l'apprentissage automatique, il semble qu'il ne s'agisse pas de science mais d'ingénierie. C'est mon hypothèse, et nous devrions en tenir compte lorsqu'un nouveau domaine de l'ingénierie apparaît et comment le traiter. J'essaierai de parler non pas de la position d'un ingénieur système, mais de celle d'un ingénieur en apprentissage automatique : comment ils ont leur conscience, qui ils sont — des scientifiques, des ingénieurs ou des maîtres de l'art de l'apprentissage automatique. Commençons. Qu'est-ce que l'apprentissage automatique en tant qu'activité humaine ?
Définition de l'Apprentissage Automatique
À votre avis, qu'est-ce que c'est ? Généralement, cela suit une définition de type aristotélicien où vous avez une classe, puis une sous-classe et une spécialisation. X est Y qui diffère d'une certaine manière pour former X.
C'est l'apprentissage effectué par une machine.
L'apprentissage automatique est une activité humaine. Quel genre d'activité humaine ? Sauter ? Une activité politique ? C'est la question car quand je parle avec des gens de ce domaine, ils n'ont pas d'auto-désignation ; ils ne savent pas qui ils sont. Pourquoi est-ce important ? Ce n'est pas important quand on fait quelque chose, mais c'est important quand on communique. Premièrement, c'est important quand on commence à enseigner. Si vous enseignez à des ingénieurs, c'est une façon d'enseigner. Si vous enseignez l'art, c'est complètement différent. L'artisanat n'est pas de l'ingénierie. Si vous enseignez la science, c'est une approche scientifique, pas de l'ingénierie. C'est très important parce que l'argent suit les étiquettes. Différents ministères ont de l'argent pour différentes activités, et vous devriez vous nommer pour accéder à différents types de financement. Dans un an, il semble que nous devrions nous nommer.
Science, Recherche, Ingénierie ou Art
Concernant l'apprentissage automatique, nous avons plusieurs hypothèses. Premièrement, la science ; nous avons déjà un Master of Science en apprentissage automatique. On peut postuler dans une université et obtenir ce diplôme dès maintenant. Deuxièmement, la recherche ; ce n'est pas de la science car les laboratoires d'Edison étaient destinés à la recherche appliquée, contrairement à ceux d'Einstein. C'est un lieu pour les inventions. Troisièmement, l'ingénierie ; c'est mon point de vue. L'apprentissage automatique est un domaine de l'ingénierie, et ma présentation reflète cela. Enfin, l'art ; si vous traitez des mathématiques, vous pourriez avoir un Master of Arts. Si vous êtes mathématicien, vous êtes peut-être titulaire d'un Master of Science ou d'Arts. En ingénierie, il existe des certifications et des cours formels. En apprentissage automatique, bien qu'il n'y ait pas de certification formelle d'ingénierie professionnelle, vous avez les compétitions Kaggle, qui pourraient être une forme de certification plus stricte.
L'Ingénierie : Faire fonctionner le système
Quand j'étais étudiant, j'ai demandé à l'un de mes consultants pourquoi mon programme ne fonctionnait pas. Il m'a répondu par une contre-question : Ai-je besoin de savoir pourquoi mon programme ne fonctionne pas, ou ai-je besoin que le programme fonctionne ? Pour moi, cela semblait être la même chose avant cette question. Quand votre programme ne fonctionne pas, de quoi avez-vous besoin ? Avez-vous besoin de savoir pourquoi, ou devez-vous simplement le forcer à fonctionner ?
Le forcer.
Les deux ? Je ne sais pas, car on a généralement des contraintes de temps. Après avoir réfléchi un jour ou deux, j'ai réalisé que j'avais besoin que mon programme fonctionne et que je n'avais pas le temps d'étudier pourquoi il ne fonctionnait pas. C'est de l'ingénierie logicielle et de l'application ; c'était mon auto-définition : je suis un ingénieur logiciel. Cependant, nous avons des voies plus complexes. Par exemple, pour réparer un compilateur, j'ai besoin de savoir ce qui ne va pas ; c'est un ingénieur logiciel système, pas d'application. Ou pour faire avancer la théorie, je suis un informaticien. Nous avons deux disciplines avec des noms et des parcours professionnels complètement différents.
Les Méta-niveaux et la Réalité Physique
Qu'est-ce que la science ? Il y a mille réponses, mais je vais donner une perspective d'ingénierie logicielle en utilisant des niveaux orientés objet. M0 est la fabrication, pas la science. Les programmeurs sont des ingénieurs et le logiciel est un système physique. Le logiciel est un système physique car lorsqu'un ordinateur fonctionne, il réalise une expérience physique dans le temps et l'espace. Le code source n'est pas le programme ; c'est la description de l'expérience physique qui sera réalisée sur un ordinateur spécifique. Le mouvement DevOps parle de cela. Quand un programmeur finit de coder, ce n'est pas la fin car ce n'est pas encore dans le domaine physique ; c'est encore une abstraction. Un programme n'est le programme que lorsqu'il s'exécute dans son environnement opérationnel sur un support physique. C'est la fabrication. M1 est la conception et la recherche : notre code source. Ensuite, nous avons la recherche fondamentale : les langages, les métamodèles et les méta-métamodèles. Enfin, nous avons la logique philosophique ou les mathématiques au niveau méta-méta-méta-méta. Les scientifiques travaillent à ces hauts méta-niveaux sur les constructions de langage et la sémantique dénotationnelle. Mais quand on va au M0, on devient ingénieur. On s'intéresse au programme qui tourne, pas à la science. Billy Koen a dit que l'ingénierie n'est pas scientifique du tout. Considérons un ingénieur médiéval construisant un pont. Il n'a pas refusé parce que les mathématiques ou les systèmes de CAO n'avaient pas encore été inventés. La plupart de ces ponts fonctionnent encore aujourd'hui. L'ingénierie est basée sur des heuristiques, pas sur la science. Les ingénieurs utilisent la science, mais ils n'en dépendent pas uniquement. C'est une différence spectaculaire.
L'Ingénierie comme Discipline Omnivore
L'ingénierie est omnivore ; elle mange tout : l'art, la science et même les disciplines sociales comme la conflictologie et la sociologie. La Systems Engineering Vision 2025 suggère d'étudier les disciplines sociales car chaque système que vous construisez maintenant implique des personnes. Étudier simplement les sciences et les mathématiques ne suffit pas ; vous devez également étudier la psychologie et la politique. L'ingénierie est tout ce que vous apportez dans le monde physique. Voici un diagramme simple : nous avons des modèles, des théories et des pensées dans le domaine de la science. Ensuite, nous avons le domaine physique : l'espace et le temps en 4D. Les ontologies disent qu'on peut frapper des choses physiques, mais on ne peut pas frapper une classe ou un algorithme car ils sont abstraits. Cependant, vous pouvez frapper un algorithme lorsqu'un programme s'exécute sur un ordinateur ou qu'il est stocké sur un support physique. Passer du modèle à la réalité relève de l'ingénierie et de la recherche appliquée. J'inclus Edison dans l'ingénierie. Inversement, observer la réalité pour fournir une théorie sur les raisons pour lesquelles quelque chose fonctionne ou échoue relève de la science ou de la recherche fondamentale. C'est très simple.
Le Cycle entre Science et Ingénierie
C'est plus complexe car c'est un cycle qui se déplace rapidement dans de nombreuses directions. Vous êtes souvent ingénieur pendant cinq minutes, puis scientifique pendant cinq minutes. C'est courant. Si vous ne voulez pas de financement gouvernemental, vous n'avez pas besoin de vous étiqueter. Même les scientifiques ont besoin d'instruments. Qui a construit le Grand Collisionneur de Hadrons ? Les scientifiques en sont les propriétaires-exploitants, mais ils ont commandé le collisionneur à des ingénieurs. Dans l'apprentissage automatique, comme le montre NVIDIA, l'ingénierie a introduit des accélérateurs graphiques qui sont désormais des unités polyvalentes. Le rôle de l'ingénierie dans la science de l'apprentissage automatique continue de s'étendre.
L'Évolution des Professions et des Compétences
En pensant aux 20 prochaines années, serez-vous un scientifique ou un ingénieur en apprentissage automatique ? Je dois vous décevoir : l'ère des professions à vie touche à sa fin. Vous aurez plutôt un ensemble de compétences. De nombreuses professions, comme « webmaster », ne durent que quelques années. « Opérateur informatique » a duré 20 ans, et « chauffeur » est menacé par les pilotes automatiques. Vous aurez un mélange de compétences en science, en ingénierie et en art. Celles-ci ont des durées de vie plus courtes, vous devez donc maintenir un bon ensemble de compétences. Il est intéressant de considérer quelles sont les compétences pour l'apprentissage automatique et combien de temps elles dureront.
L'Ingénierie des Systèmes d'Apprentissage Automatique
L'ingénierie des systèmes d'apprentissage automatique est un terme intéressant. Nous avons d'autres disciplines comme « l'ingénierie des systèmes de contrôle ». Elles utilisent les mathématiques et les sciences, mais ont fini par réaliser qu'elles livraient des systèmes. Maintenant, elles utilisent les deux noms. Je pense que l'ingénierie de l'apprentissage automatique est la même chose. Vous livrez des systèmes d'apprentissage automatique — quelque chose qui peut apprendre ou appliquer l'apprentissage. Si vous regardez les sites d'emploi pour l'ingénierie des commandes, vous voyez un parcours de carrière allant d'ingénieur système senior à ingénieur système principal. Quel serait le parcours pour l'ingénierie des systèmes d'apprentissage automatique ? Ingénieur système en informatique ou ingénieur systèmes d'intelligence machine cognitive ? C'est délicat car la discipline est jeune. De nombreux praticiens se disent scientifiques, mais il y aura plus d'ingénieurs que de scientifiques dans cette industrie, comme dans n'importe quelle autre.
En ce qui concerne les emplois, si vous recherchez « apprentissage automatique », les sites suggèrent souvent « data scientist », « ingénieur logiciel » ou « data scientist principal » à la place. On ne voit pas souvent de titres « apprentissage automatique » ou « apprentissage profond ». C'est probablement temporaire, mais ce seront des postes d'ingénierie plutôt que des rôles pour scientifiques ou artistes.
Disciplines Voisines et Ingénierie des Connaissances
Qui sont les voisins des ingénieurs en apprentissage automatique ? En ingénierie, la liste est interminable : mécanique, agricole, aérospatiale et architecture aéronautique. L'ingénierie système et l'ingénierie des « systèmes de systèmes » sont des domaines contemporains impliquant des systèmes ayant différents propriétaires qui ne se plient pas simplement à vos conceptions. L'apprentissage automatique est proche de l'ingénierie logicielle et de l'architecture des systèmes de contrôle. L'ingénierie des connaissances n'est pas une véritable ingénierie car elle n'a pas de concept d'« architecture de connaissances ». Tous les autres domaines ont une architecture ; l'apprentissage automatique a une architecture de réseau neuronal. L'ingénierie des connaissances utilise des ontologies mais manque de structures architecturales. L'architecture des systèmes cognitifs est différente de l'ingénierie des connaissances. L'ingénierie neuronale traite généralement de systèmes biologiques. L'ingénierie des caractéristiques n'est pas vraiment de l'ingénierie ; il s'agit d'inventer ou de deviner des caractéristiques sans processus d'ingénierie.
Histoire et Convergence des Traditions
La situation est similaire à celle de l'ingénierie système, qui n'est devenue une profession reconnue qu'en 1990. Ils ont fêté leur 25e anniversaire l'année dernière. Avant cela, l'ingénierie système existait sans conscience de soi. Ils ont formé l'INCOSE il y a 25 ans, et elle compte aujourd'hui environ 10 000 membres. Le terme « génie logiciel » est apparu en 1968. Avant cela, il n'y avait pas de nom pour ceux qui développaient des programmes. Après une discussion lors d'un congrès de l'OTAN, ils ont décidé de former les programmeurs en tant qu'ingénieurs plutôt qu'en tant que scientifiques. Cela a marqué le début de la différenciation entre l'informatique et le génie logiciel. L'ingénierie de l'apprentissage automatique en tant que terme est apparue vers 2012. Nous ne savons pas quand il y aura une association spécifique ou un accord sur la manière de l'enseigner, mais cela se produira probablement plus rapidement que pour les ingénieurs logiciels ou systèmes.
Nous avons un problème en ingénierie car presque tous les systèmes ont désormais des ordinateurs et des contrôleurs à bord, des avions aux bâtiments. Cela a conduit à une convergence de différentes traditions d'ingénierie — système, logiciel et commande — chacune avec une terminologie et des cycles de vie différents. Qui est l'ingénieur en chef ? Le logiciel est souvent blâmé pour ses retards dans les projets d'avions militaires. Dans une Tesla, une mise à jour logicielle peut donner lieu à une voiture complètement nouvelle. Janosh Stepanovits a identifié cette convergence comme un problème massif pour les disciplines contemporaines. L'apprentissage automatique a ajouté un énorme bouleversement à ce désordre. L'apprentissage automatique perturbe l'ingénierie logicielle et de commande. Tous les systèmes de contrôle devraient éventuellement être des systèmes d'apprentissage automatique. Par exemple, les voitures sans conducteur et les drones apprennent désormais à se déplacer. Cependant, l'ingénierie repose traditionnellement sur la composition de modules. Dans l'apprentissage automatique, les représentations distribuées rendent difficile la répartition du travail via des interfaces prédites. Le Bottou parle de « contrats faibles » ; nous ne savons pas comment les systèmes d'apprentissage automatique se comporteront si les données changent légèrement. L'assemblage de deux réseaux neuronaux produit souvent des résultats imprévisibles par rapport aux systèmes matériels traditionnels ou de raisonnement symbolique.
Heuristiques d'Ingénierie et Bionique
Tout n'est pas mauvais. Si nous traitons cela comme de l'ingénierie, nous pouvons appliquer les heuristiques de centaines d'années de développement de l'ingénierie. Même si seulement 10 % de cette sagesse s'applique, c'est mieux que rien. L'ingénierie ne concerne pas seulement la construction ; elle concerne beaucoup de choses. Les ingénieurs en apprentissage automatique n'ont pas besoin de tout réinventer. Par exemple, le concept de « dette technique » du génie logiciel — le principe de « bricoler maintenant, payer plus tard » — est très pertinent. Je recommande de regarder des méthodologies qui adaptent les heuristiques du génie logiciel pour l'apprentissage automatique. Un autre point est la bionique. Dans l'apprentissage automatique, l'idée est souvent de s'inspirer du cerveau. En ingénierie générale, le rôle de la bionique est minime ; l'inspiration est utile, mais l'ingénierie va généralement au-delà de la nature. Plus d'inventions passent de l'ingénierie à la science que l'inverse. Fournir un prototype peut aider les scientifiques à comprendre le cerveau, ce qui est une direction différente. L'ingénierie des connaissances est trompeuse car ce n'est pas une véritable ingénierie ; elle repose sur un travail manuel pour chaque changement, ce qui évite l'apprentissage réel. J'ai abandonné l'ingénierie de l'ontologie pendant un certain temps parce que je ne sais pas encore comment la joindre efficacement à l'apprentissage automatique. Actuellement, les ontologies prennent beaucoup de temps pour des résultats non évidents.
La Gestion de la Complexité et l'Analogie Boeing
Dans l'apprentissage automatique, nous avons de nombreuses « tribus » : l'apprentissage profond, les Bayésiens, l'apprentissage superficiel, la neuroévolution et l'IA symbolique. Toutes tentent de gérer la complexité. L'ingénierie est une lutte contre la complexité. Nous devons comprendre si nous avons affaire à un système complexe. Pour un ingénieur, un système complexe est un système qui ne tient pas dans la tête d'une seule personne. S'il ne rentre pas, vous avez besoin d'un cycle de vie spécial et d'une division du travail. Nous avons des réseaux neuronaux artificiels avec 16 milliards de paramètres, mais nous avons aussi des FPGA avec 20 milliards de transistors. À cette échelle, c'est gérable car il a une structure régulière et n'est pas unique. Cependant, par rapport à d'autres domaines, l'apprentissage automatique n'est pas encore si complexe. Un avion Boeing compte 6 millions de pièces, a coûté 28 milliards de dollars à produire et nécessite 500 000 personnes pour sa fabrication. C'est un système complexe. Les architectures d'apprentissage automatique comme Inception v3 gagnent en complexité mais peuvent toujours être développées par un petit groupe de personnes.
Et si on compte tout le matériel, les systèmes d'exploitation et les bibliothèques, comme pour Boeing ?
Je ne pense pas que ce soit comme Boeing car la plupart des pièces Boeing sont développées spécifiquement pour Boeing. Même avec les GPU, nous utilisons actuellement des GPU de jeu pour l'apprentissage profond plutôt que du matériel développé spécifiquement. Nous devrions remercier les joueurs du monde entier de nous permettre d'utiliser leur matériel.
Toute la conception du produit est basée on des composants réutilisables, et le Boeing n'est pas construit uniquement de pièces uniques.
Oui, pas seulement des pièces uniques.
Donc seules quelques pièces sont conçues spécialement pour Boeing.
En fait, beaucoup sont spécifiques à Boeing.
Vous avez environ 6 millions de pièces.
Combien d'entre elles sont uniques à Boeing ?
Presque toutes, soit spécifiquement pour le Boeing 747, soit pour la série.
Les instruments et les outils passent de l'ingénierie à la science, mais rarement l'inverse. Plus d'inventions passent de l'ingénierie à la science. C'est une provocation : vous ne devriez pas simplement copier le cerveau, mais vous pouvez fournir des prototypes pour aider les scientifiques à le comprendre. L'ingénierie des connaissances est trompeuse ; il s'agit d'ontologies et d'inférences symboliques strictes plutôt que d'une véritable ingénierie. Dans les systèmes cyber-physiques, trouver une formule pour le mouvement d'un papillon robotisé est difficile. Si vous changez légèrement la forme du papillon, vous devez redévelopper toutes les équations. L'ingénierie des connaissances implique un travail manuel pour chaque changement ; évitez cela. Cela manque d'apprentissage. Je siège au conseil d'administration de l'Ontology Forum, mais j'ai abandonné pour le moment car je ne sais pas comment utiliser efficacement les ontologies avec l'apprentissage automatique. Actuellement, c'est un processus chronophage avec des résultats non évidents.
Dans l'apprentissage automatique, différentes tribus comme l'apprentissage profond, l'apprentissage superficiel et la neuroévolution essaient toutes de gérer la complexité. Les ingénieurs définissent un système complexe comme un système qui ne tient pas dans une seule tête. S'il est complexe, vous avez besoin d'une division du travail et d'un cycle de vie spécial. Un réseau neuronal artificiel avec 16 milliards de paramètres est grand, mais un FPGA possède 20 milliards de transistors à la même échelle. Ce n'est pas encore si énorme car il a une structure régulière. Nous pouvons le décrire.
Par rapport à d'autres domaines de l'ingénierie, l'apprentissage automatique n'est pas très complexe. Un avion Boeing compte 6 millions de pièces et nécessite 500 000 personnes pour être produit. C'est un système véritablement complexe. Les architectures d'apprentissage automatique comme GoogLeNet ou Inception peuvent encore être développées par un petit groupe de trois à cinq personnes.
Si vous comptez le matériel, les systèmes d'exploitation et les bibliothèques, n'est-ce pas comme Boeing ?
No, parce que les pièces Boeing sont souvent développées spécifiquement pour Boeing. En apprentissage profond, nous utilisons encore des GPU de jeu. Nous avons une dette envers les joueurs pour le matériel que nous utilisons.
Boeing est construit avec des composants réutilisables, pas seulement des pièces uniques.
Oui, mais de nombreuses pièces sont spécifiques à Boeing.
Seules quelques pièces sont conçues spécifiquement pour Boeing.
En fait, beaucoup sont uniques à Boeing.
Vous avez environ 6 millions de pièces.
Combien d'entre elles sont uniques ?
Presque toutes, du moins pour la série. Tous les Boeing ne sont pas identiques ; ils ont des options grâce à la personnalisation de masse. Ils ont un cycle de vie spécifique pour produire des avions uniques. On voit une chose similaire dans l'apprentissage automatique où vous devez entraîner et régler votre réseau pour chaque application spécifique.
Modularité, Contrats et AutoML
Boeing est construit sur des processus coûteux qui ne permettent pas la réutilisation, alors qu'en logiciel, nous utilisons des approches qui nous permettent d'isoler le travail de différentes personnes.
Il s'agit de modularité. Dans le logiciel et chez Boeing, nous avons d'énormes architectures grâce à de bonnes interfaces et des contrats solides. Dans l'apprentissage automatique, nous avons des contrats faibles ; nous ne savons pas comment des unités comme ReLU ou Softmax coopèrent. Cependant, nous avons maintenant l'AutoML et la conception générative. Au lieu que des personnes écrivent tout le code, un système ou un compilateur peut générer l'architecture. L'inférence bayésienne et la neuroévolution peuvent également guider la conception. Des frameworks comme Chainer permettent la création de réseaux neuronaux au moment de l'exécution. Dans les années à venir, nous verrons l'ingénierie de l'apprentissage automatique assistée par ordinateur, ou CAMLE, pour aider à gérer la complexité.
L'Algorithme Maître et la Pile d'Intellect
L'« algorithme maître » est une autre idée. Pedro Domingos dit qu'il existe cinq tribus d'apprentissage automatique, tandis que Sarath Chandar suggère qu'un algorithme maître devrait combiner l'apprentissage multitâche, par transfert et par renforcement. D'un point de vue technique, ce sont des fonctions et des besoins différents. Il n'y a pas de repas gratuit ; cela impliquera tout cela et plus encore.
L'ingénierie standard utilise des diagrammes pour les modules, les fonctions et les allocations. Les systèmes d'apprentissage automatique ont du mal avec les modules car toutes les parties sont enchevêtrées. En ingénierie, on parle de plates-formes et de piles technologiques. J'appelle cela la « pile d'intellect ». Chaque système est un « holon » — une partie de quelque chose de plus grand et contenant des parties en lui-même. Une plate-forme d'architecture cognitive est plus grande qu'une plate-forme d'algorithme d'apprentissage. Les bibliothèques informatiques font partie des systèmes d'apprentissage automatique. Cette hiérarchie est une pile de plates-formes.
Une pile d'apprentissage profond alternative pourrait s'arrêter au niveau du concepteur du réseau neuronal, mais c'est une erreur d'un point de vue technique. La rupture vient des couches inférieures, comme les GPU, les FPGA ou les puces neuromorphiques. L'informatique physique, comme l'informatique optique, pourrait même permettre d'apprendre à la vitesse de la lumière. La conversion de réseaux récurrents en réseaux neuronaux à impulsion peut également réduire considérablement la consommation d'énergie.
Je crois qu'il existe une couche pour les langages informatiques généraux. Je préfère Julia, qui succède à Python, MATLAB et FORTRAN, et prend déjà en charge l'apprentissage profond et la programmation probabiliste.
Langages, Bibliothèques et Frameworks
Les bibliothèques de calcul comme Torch et Theano sont des plates-formes distinctes utilisées en physique et en génétique pour l'algèbre linéaire et l'optimisation. En plus de cela, nous avons des frameworks d'apprentissage automatique. Il en existe des centaines, similaires aux premiers frameworks Web. Récemment, la situation a changé car de nombreux systèmes ont été mis en open-source et standardisés pour l'analyse comparative.
Nous devons ajouter d'autres types d'algorithmes à ce festin de l'apprentissage profond. Nous avons besoin de langages probabilistes, de langages différentiables et de mélanges de différentes architectures d'apprentissage. Personne ne sait encore comment combiner ces modules. Dans l'apprentissage automatique, nous n'assemblons pas des pièces comme une aile de Boeing ; nous faisons quelque chose qui se rapproche du « mélange » ou de l'hybridation. Nous devons inventer comment concevoir cela.
Une plate-forme est une construction technique spécifique qui cache les détails de bas niveau comme les pilotes et le matériel. CNTK se vend sur la base des performances matérielles, mais ce n'est pas seulement le logiciel qui est plus rapide ; le système global est plus rapide car il utilise plus de matériel.
Architectures Cognitives et Intelligence Machine
Ce qui est plus intéressant, c'est ce qui se trouve au-dessus de l'API. Les architectures de systèmes cognitifs impliquent plus que le simple apprentissage ; elles incluent les communications, le raisonnement et la planification. L'ingénierie des systèmes cognitifs, c'est l'ingénierie des systèmes d'apprentissage automatique plus autre chose.
Bengio a déclaré sur Quora que la recherche sur l'apprentissage profond s'étendra de la reconnaissance de formes à l'IA à grande échelle. Si nous pouvons apprendre à raisonner et à planifier, l'ingénierie de l'apprentissage automatique deviendra l'ingénierie des systèmes cognitifs. Actuellement, nous considérons le raisonnement comme symbolique et l'apprentissage comme plus biologique. Schmidhuber suggère que nous devrions permettre aux systèmes d'apprendre le raisonnement plutôt que de le programmer. Si la cognition est apprise, il s'agit d'une intelligence machine plutôt que d'une simple « intelligence artificielle ».
Si une machine apporte une solution, peu importe qu'elle soit artificielle ou naturelle. Le test de Turing montre que si vous communiquez avec quelqu'un, peu importe qu'il soit artificiel. Le système MANIC est une approche intéressante d'un système d'IA non basé sur des prototypes humains. Je ne sais pas encore si les architectures cognitives seront des architectures « dures » ou entièrement apprises.
Niveau Applicatif et Dictionnaire d'Ingénierie
Le niveau applicatif est celui où se trouvent les utilisateurs et l'argent. Les gens ne paient pas pour l'apprentissage automatique ; ils paient pour des applications. Dans le secteur des entreprises, les applications seront énormes. Ce niveau nécessite une ingénierie système pour la conception conceptuelle et la stratégie.
Dans des endroits comme Skolkovo, vous voyez l'ingénierie des exigences, l'architecture système et la vérification. Dans les systèmes cyber-physiques comme les robots et l'Internet des objets, l'apprentissage automatique a une place spécifique. Nous avons besoin d'un dictionnaire pour traduire les termes de l'apprentissage automatique pour les ingénieurs : la conception correspond aux exigences, l'entraînement à la fabrication, l'apprentissage par transfert à l'intégration et l'inférence à l'exploitation.
Ian Billiard a émis l'hypothèse que différents types d'ingénierie ont des préoccupations différentes. Bien que l'apprentissage automatique partage des préoccupations telles que la stratification et la résilience avec l'ingénierie générale, il en possède des uniques comme l'expressivité, l'aptitude à l'entraînement et la généralisation. Cela en fait une discipline distincte.
Spécialisation et Conclusion
Aucune équipe ne peut couvrir l'intégralité de la pile d'intellect, à l'exception peut-être d'IBM avec TrueNorth et Watson. Ce domaine change tous les cinq ans. Dans quelques années, je devrai réécrire ces diapositives car le paysage de l'ingénierie sera complètement différent. Nous devons nous spécialiser.
Où en êtes-vous dans cette pile aujourd'hui, et où serez-vous demain ? C'est la dernière diapositive de ma présentation. Oui, s'il vous plaît ?
Questions-Réponses : Acteurs du Marché et Stratégie
Google ne couvre-t-il pas tous les niveaux ?
Non. Jusqu'à présent, ils n'ont pas de matériel opérationnel. Ils y pensent, mais ils n'ont pas de matériel.
Qu'en est-il d'Intel ?
Intel gâche la vie de beaucoup et va jusque dans l'espace.
Je veux dire, ne couvrent-ils pas tous les niveaux ?
Non, ils fournissent juste le matériel. Passons au russe, puisqu'il n'y a plus d'anglophones. Je pourrais en dire dix fois plus et mieux en russe, mais j'ai dû le faire ainsi.
Ça a été plus rapide en anglais.
Plus rapide, oui. Moins de mots. Concernant Google : ils travaillent sur l'informatique quantique et ont récemment choisi Movidius comme partenaire pour les puces. Ils ont juste désigné un neuroprocesseur et ont dit qu'ils travailleraient avec lui, ils coopèrent donc plutôt que de tout faire en interne. Quand j'ai parlé de la pile Internet, c'était le point principal : en ce moment, le terrain est vide. Vous n'avez ni partenaires ni interfaces, vous êtes donc obligé de tout faire vous-même. Si vous faites tout vous-même, vous vous dispersez trop. Vous devez choisir où vous concentrer, comme sur les algorithmes d'apprentissage. Mais ensuite, vous réalisez que votre algorithme ne fonctionne que sur certains matériels, alors vous embauchez des gens pour le peaufiner, et soudain vous êtes à nouveau dispersé. Cela arrive à toutes les équipes ; elles commencent à un endroit puis s'étalent sur toute la pile parce qu'elles manquent de personnel et d'interfaces. C'est un gros problème ; les gens manquent d'autodétermination et de pensée d'ingénierie en termes de plates-formes. Si vous écrivez une présentation commerciale pour Skolkovo, vous y ferez face. Le pitch commercial sera au niveau applicatif, mais l'essentiel du travail se fait au troisième niveau. Il n'y a pas d'approche d'ingénierie pour les exigences ; il faut lier les préoccupations aux stratégies. Ensuite, il y a la cognition, un domaine que personne ne comprend. Après cela, nous passons à l'apprentissage, qui n'est que des mathématiques sans contexte commercial. Les couches ne sont pas divisées professionnellement. Les gens du matériel ont leur propre monde, et puis il y a les plates-formes de langages informatiques généraux et de CPU. Vous voyez comment les pilotes sont utilisés pour l'optimisation maintenant ; certaines personnes ne font qu'écrire des pilotes. C'est comme la Formule 1. Les niveaux inférieurs coûtent moins cher, sauf pour le matériel. La plupart des packages sont open source. À Skolkovo, il y a eu une discussion disant que l'apprentissage profond n'est plus un avantage concurrentiel car les bibliothèques sont accessibles à tous. N'importe quel étudiant peut le reproduire en deux semaines. L'avantage se situe au sommet : les applications et la couche cognitive. Les hackathons ne concernent pas l'apprentissage ; il s'agit de collecter correctement les connaissances, ce qui est un niveau supérieur aux systèmes d'apprentissage automatique. L'avantage concurrentiel se situe au sommet. Pourquoi le domaine d'application est-il important ? Considérez la différence entre une olympiade et une véritable éducation. Les étudiants des olympiades résolvent des problèmes bien posés avec des interfaces claires. Mais au sommet de la pile, il n'y a pas de tâches bien définies. À Skolkovo, vous devez d'abord formuler le problème vous-même avant de démontrer une solution de haut niveau. Peu de gens savent faire cela. Les universités enseignent à résoudre des problèmes de manuel scolaire, mais en apprentissage profond, personne ne pose le problème d'algèbre linéaire pour vous ; vous devez d'abord le définir.
Questions-Réponses : Opportunités Commerciales
Puis-je poser une question sur la pratique ? Puisque tout est si fragmenté et spécialisé, considérez l'analogie du Web, où une seule personne pouvait être tout un studio. Elle pouvait définir la tâche, la développer et même gérer l'administration.
C'était le « webmaster ». Maintenant, nous avons des rôles distincts pour le frontend, les éditeurs et les designers.
Exactement. La question est : une petite équipe peut-elle encore couvrir une tâche ciblée pour gagner de l'argent ? Si vous voulez un financement gouvernemental, vous utilisez des noms sophistiqués, mais pour un succès commercial, existe-t-il des tâches ciblées qui ont une réelle valeur commerciale et qui peuvent être réalisées maintenant ?
Pour les applications pures, il n'y a pas de limite. Cela commence par les logiciels et les services cloud où il n'y a pas besoin de déplacer la matière. Ce sont les sources de revenus actuelles. Mais le monde des atomes en mouvement — l'Internet des objets et les systèmes cyber-physiques — est également en pleine croissance. L'apprentissage automatique arrivera rapidement dans les zones avec peu de matière et d'énergie. Dans les industries lourdes comme la construction ou les mines, il arrivera plus tard. La conception assistée par ordinateur est passée des compilateurs à la modélisation 3D et n'atteint la construction que maintenant via le BIM (Building Information Models). Si vous allez là où tout le monde va — le Web — vous rivaliserez avec 100 000 personnes venant de Coursera. Moins de gens vont vers le génie mécanique, et très peu vers l'industrie lourde. Il y a moins de concurrence là-bas, mais c'est plus difficile d'en expliquer la valeur. Il faut de l'argent « à long terme ». C'est un marché en croissance, mais différents segments croissent à des moments différents. Les assistants virtuels apparaîtront rapidement car ils sont basés sur des logiciels. Mais pour qu'un assistant soit bon, il faut une couche cognitive solide, sinon il sera bien plus bête que ses concurrents. Beaucoup de gens se voient comme des scientifiques et publieront des algorithmes open-source pour des opérations tensorielles tout en étant financés par d'autres sources. Ils se concentrent sur le niveau de la bibliothèque de calcul. Je ne peux pas donner de conseils commerciaux, mais l'investissement pour l'industrie lourde nécessite une vision à long terme.
Questions-Réponses : Ontologies et Représentations
Concernant les ontologies, vous avez dit que c'était une « balle dans le pied » et peut-être une perte de temps.
Ce n'était pas un gaspillage ; cela finira peut-être par payer, même si certaines disciplines ne le font jamais. Regardez ABBYY. Nous avons été les premiers ontologues avec lesquels ils ont travaillé ; avant cela, ils n'avaient que des linguistes. Nous avons sorti un éditeur open-source, mais je me suis réorienté à temps. J'ai demandé à Matthew West pourquoi j'étais dans l'Ontology Forum alors que les gens font de l'ingénierie. Les ontologies prennent beaucoup de temps à expliquer. Je leur envoie des articles sur les représentations distribuées et l'inférence tensorielle. Certains trouvent cela intéressant, mais d'autres l'ignorent. Quand je leur parle de représentations distribuées, ils pensent à des bases de données distribuées. Ils ne comprennent pas que les coefficients ne sont pas liés à un seul symbole. Nous sommes à un tournant. L'ingénierie, le logiciel et notre façon de vivre seront tous bouleversés. C'est une chose d'offenser un chaton, mais c'en est une autre d'avoir un réseau qui réussit un examen de quatrième et qui a été nourri d'éthique et de sciences humaines.
Opposez-vous la conceptualisation des connaissances par les métamodèles et les ontologies à l'apprentissage profond ?
Je les oppose, mais je pense aussi qu'un « algorithme maître » devra inclure les deux pour communiquer avec les gens. Il faut de la logique pour que les gens puissent suivre. Il y a aussi la relation d'« amorçage ». Quand vous n'avez pas d'apprentissage automatique productif pour construire vos systèmes de CAO, vous utilisez l'ancienne ingénierie symbolique car la CAO est construite sur des ontologies. Vous utilisez des outils scientifiques discrets pour construire des systèmes continus jusqu'à ce qu'ils soient assez solides pour supporter le niveau d'ingénierie suivant. Concernant le cerveau : n'essayez pas de faire un analogue exact. Les gens ont essayé de fabriquer des avions qui battent des ailes comme les oiseaux pendant des milliers d'années. Cela n'a fonctionné que lorsque nous avons arrêté d'essayer de copier l'oiseau pour utiliser des châssis et des hélices. Les ailes sont restées, mais les battements ont cessé. Les combinaisons ailées pour les sauteurs « Batman » n'étaient pas basées sur les oiseaux ; elles étaient basées sur les parachutes et des principes d'ingénierie comme la surface. Il faut partir de la tâche.
Questions-Réponses : Vers l'Architecture Cognitive
Quelle est la tâche principale aujourd'hui ? Vous préconisez de partir de la tâche.
La tâche principale est de passer de la plate-forme d'algorithme d'apprentissage à une architecture cognitive. Plus précisément, la liaison de variables symboliques dans des représentations distribuées. C'est le « déclic » qui permet l'intelligence. L'intelligence ne doit pas être de simples métaphores ; elle doit fournir des résultats logiques via la vérification de modèles. Une fois que vous avez la vérification de modèle logique, l'humanité fait un bond. Vous avez besoin de raisonnement et de communication, qui sont séquentiels et symboliques, pas distribués. Notre civilisation a fait une percée lorsque nos réseaux neuronaux ont commencé à traiter des choses du domaine des ontologies. L'induction est une chose, mais la déduction est très rapide et efficace.
Je pense qu'il s'agit de traiter des informations redondantes provenant de différents canaux et de les résumer dans la tête.
Elles se résument au niveau du réseau neuronal, mais il faut encore vérifier et communiquer ces informations. Les représentations distribuées sont très difficiles à transmettre. Auparavant, je pensais que nous devions construire des définitions logiquement comme des mathématiciens. Mais les non-mathématiciens ne comprennent pas cela. Quand on écrit un texte, les gens comprennent le contexte de chaque mot à travers le texte ; le réseau neuronal apprend. J'ai des désaccords avec mon partenaire qui veut que chaque texte soit mathématique. Je crois que nous avons aussi une tâche de communication pour fournir de la matière à apprendre à un réseau neuronal. La conscience de ces différents mécanismes est ce qui mène à un algorithme maître. Passer de l'apprentissage automatique à l'architecture cognitive est la clé. On pourrait même utiliser l'apprentissage par renforcement ou la neuroévolution pour « apprendre » ce mécanisme supérieur.
Vous pouvez commencer à le faire dès maintenant, selon vos ressources et votre équipe.
Mais chez DeepMind, ils ne font pas de travail technique ; ils ne font que de la recherche.
Chacun doit décider pour soi-même. Mon diagramme est assez délibéré.
On leur a donné beaucoup d'argent.
Une percée dans la plate-forme d'architecture cognitive nécessite généralement que quelque chose d'important se produise aux niveaux inférieurs. Si vous n'avez pas d'aluminium, vous restez coincé avec des avions en bois. Quand l'aluminium apparaît, tout décolle. Si un ordinateur optique devient disponible, la plate-forme d'algorithme d'apprentissage changera radicalement.
Ce doit être une coïncidence de circonstances.
C'est un choix conscient d'algorithmes. Si du matériel rapide est disponible, des algorithmes spécifiques se développeront. Ensuite, quelqu'un fabrique un compilateur pour ce matériel. Les gens n'aimaient pas Pascal parce qu'il était restrictif. Mais Turbo Pascal a gagné car il était dix fois plus rapide que les autres compilateurs. Vous pouviez même écrire du code assembleur directement dans Pascal pour l'accélérer. Julia fait cela maintenant ; vous pouvez écrire des commandes LLVM ou machine directement dedans pour prioriser la vitesse. Donc, les bons packages réussiront, mais s'ils ne sont pas rapides, ils ne survivront pas. Lisp était un excellent langage mais il n'a pas survécu car les machines Lisp étaient lentes. Nous allons terminer ici. J'ai probablement pris la mauvaise décision de parler en anglais.