Chapter Content
Bon, alors, on va parler du Chapitre 5... euh... qui s'appelle... "Une Solution d'un Genre Différent". Ouais, c'est ça.
Si on voit la solution, c'est que c'est faux. Hein ? Bizarre comme titre, non ? Mais on va comprendre.
Alors, on parle des gants, du bonhomme de neige, du Rubik's Cube... Tu vois, des problèmes de difficulté croissante, comme on a dit dans le chapitre précédent. Mais, malgré leurs différences, tous ces trucs demandent la même approche pour trouver la solution : un processus de haut niveau, quoi, couplé avec des heuristiques, pour se balader plus facilement dans l'espace des possibilités. Plus le problème est dur, plus il faut chercher pour trier toute cette complexité.
Rappelle-toi, une solution, c'est la chose physique, tu vois, qui met en œuvre le processus interne pour résoudre le problème. Les gants, c'est une solution parce que c'est des objets physiques, avec des morceaux connectés qui produisent le résultat voulu : des mains chaudes. Les solutions du Rubik's Cube, celles trouvées par les humains, c'est des règles écrites sur une feuille de papier.
Mais alors, la solution du *deep learning* pour le Rubik's Cube, c'est carrément autre chose. On ne peut pas l'écrire. La solution humaine est interprétable, mais celle du *deep learning*, c'est une boîte noire, quoi. On a beau essayer de regarder de plus près, d'inspecter le modèle, on n'arrive pas à comprendre ce qu'il fait, vraiment. On ne peut pas le décrypter, quoi.
C'est bizarre, hein ? Le cerveau humain, c'est l'objet le plus complexe qu'on connaisse, et pourtant, il trouve une solution qu'on peut comprendre. Le *deep learning*, il approche la vraie complexité, mais ses solutions sont opaques, indéchiffrables. On se dirait que les humains et le *deep learning* devraient produire des solutions plus semblables que différentes, non ?
En fait, le *deep learning*, il produit des solutions qui ressemblent plus à celles des humains, mais seulement si le problème est vraiment, vraiment dur. Le Rubik's Cube, ce n'est pas un problème catégoriquement dur. C'est un puzzle avec un nombre limité d'états et de transitions entre ces états. Son espace des possibilités est grand, oui, mais seulement par rapport à des problèmes plus simples.
Donc, comme le Rubik's Cube n'est pas un problème hyper complexe, il pourrait avoir une solution simple ou complexe. La solution simple, c'est la version avec les règles qu'on peut déchiffrer. La solution complexe, c'est celle du *deep learning*, qu'on ne comprend pas. Alors, pourquoi le *deep learning* produirait la solution complexe plutôt que la simple ?
Parce que le *deep learning* utilise un processus externe de variation, d'itération et de sélection pour construire ses modèles. Et comme on a vu avant, c'est ça qui produit la complexité. On s'attend à ce que ce processus donne une solution dont la complexité est proche de celle du problème. Comme l'espace des possibilités du Rubik's Cube a une certaine complexité, la solution du *deep learning* va naturellement utiliser cette complexité.
C'est pour ça que la solution du *deep learning*, même si elle est opaque, c'est la meilleure possible en termes de performance. Les solutions de *deep learning* peuvent résoudre le Rubik's Cube en moins d'une seconde. Plus vite que les *speedcubers* les plus rapides au monde ! Et ce n'est pas une question de dextérité robotique ou de machines qui ne sont pas distraites. La vitesse vient d'une capacité de calcul supérieure, qui permet de faire des essais-erreurs plutôt que des analyses et des calculs poussés. On voit ça aussi chez les humains. Les algorithmes les plus rapides trouvés par les humains utilisent plus d'heuristiques et de reconnaissance de motifs que les algorithmes de débutant. Les *cubers* avancés utilisent beaucoup plus leur intuition pour se déplacer dans le cube, en utilisant des indices subtils et des motifs récurrents pour anticiper les prochains mouvements tout en effectuant les mouvements actuels.
Les humains, ils cherchent un ensemble de règles sympa, comme si on avait fait la meilleure tarte aux pommes par accident et qu'on voulait se rappeler comment on avait fait. Mais les humains font ça parce que, aujourd'hui, on s'attend à ce qu'on produise des explications, et qu'on apprenne aux autres comment faire une tâche de manière déterministe. Mais il n'y a aucune raison de penser qu'une solution expliquable serait la plus performante. En fait, on devrait plutôt s'attendre au contraire, surtout quand on passe des jeux à la vie réelle.
Le *deep learning*, il utilise toute la complexité qui existe dans le problème du Rubik's Cube. Il capture des motifs et des relations complexes dans les données utilisées pour représenter les positions du cube, y compris des relations non linéaires qu'on ne peut pas exprimer avec des règles simples. Le *deep learning* découvre des stratégies qui exploitent la complexité d'une manière qu'on ne peut pas déchiffrer après coup. C'est ce que fait le cerveau humain quand il est confronté à des défis réels. On pourrait lancer une lance sur un adversaire sur le champ de bataille, le toucher parfaitement, mais être incapable d'expliquer comment on a fait. Si on essayait de décomposer le lancer de lance en une technique, avec des mouvements isolés qui s'additionnent, on aurait une approche du lancer de lance qui serait vraiment moins bien.
Le *deep learning*, il encode une sorte de connaissance implicite dans ses paramètres appris. La connaissance implicite sera toujours supérieure dans les contextes complexes parce qu'elle est latente. Les choses latentes se matérialisent, elles ne sont pas assemblées délibérément. Cette vérité est tellement fondamentale que l'explicabilité elle-même devrait être considérée comme une marque d'une vision trop simpliste du monde réel.
Résoudre des problèmes vraiment difficiles demande des solutions vraiment complexes. Ce qu'on construit à l'ère de la complexité ne peut pas être un assemblage simpliste (c'est-à-dire compliqué) de morceaux et d'interactions bien pensés. Quel que soit le processus interne utilisé par nos inventions, on devrait s'attendre à ce qu'il soit indéchiffrable. Les explications qui cherchent à définir comment les choses complexes fonctionnent en interne sont des contes de fées, et ne peuvent que limiter nos innovations.
La nature n'est pas une approximation.
Les approches qu'on utilise pour résoudre les problèmes difficiles ont toujours été considérées comme des approximations. On parle d'approximation quand le processus qu'on utilise pour arriver à une réponse n'est pas aussi bon ou exact qu'il le serait si on avait abordé le problème directement. Le *deep learning* se base sur des heuristiques et de l'optimisation mathématique pour arriver à ses solutions. Comme on a dit avant, ces méthodes sont des versions plus "douces" des approches plus directes, basées sur des règles, qu'on utilise en informatique traditionnelle. On nous dit que les formes de calcul et de raisonnement plus "douces" sont plus approximatives. Que ce qu'on trouve par approximation devrait être considéré comme sous-optimal.
Ça s'applique aux humains et aux machines. Du côté humain, les heuristiques se basent sur nos jugements et nos intuitions personnels, ce qui introduit des biais, des "erreurs" et de la variabilité dans le processus de prise de décision. Différentes personnes peuvent utiliser les heuristiques différemment, et ça peut mener à des résultats variés dans la même situation. Les heuristiques privilégient la vitesse à la précision. Elles cherchent à trouver rapidement une solution qui est "assez bonne", plutôt que de passer du temps et des ressources à trouver la meilleure. La version machine de ça, c'est à peu près la même chose. L'utilisation d'heuristiques apparaît comme une sorte de "sauter-par-dessus-l'essentiel" qui nous permet d'avoir une solution plus rapidement.
Penser aux approches plus "douces" comme des approximations reflète ce que je crois être l'une des erreurs fondamentales du paradigme scientifique et technique actuel. On ne considérerait l'utilisation des heuristiques comme une approximation que si on croyait que la meilleure façon de résoudre un problème était de manière déterministe. Que c'est seulement en regardant les détails du système, et en voyant exactement comment les différents morceaux travaillent ensemble pour produire le résultat, qu'on est rigoureux dans notre approche.
Ça s'applique à la découverte et à l'application d'une solution. Trouver une solution en utilisant un raisonnement déductif, basé sur des règles, est considéré comme plus méticuleux et exact que de se balader dans un espace de possibilités, en basant ses décisions sur des motifs de haut niveau. Et déployer un système propre, basé sur des règles, semble plus rationnel et prudent qu'un modèle opaque dont on ne peut pas déchiffrer les méthodes internes.
Mais ce n'est pas comme ça que la complexité fonctionne. La complexité, ce n'est pas une version super boostée de ce qu'on voit dans les systèmes simples. La complexité est indéchiffrable, pas parce qu'il y a trop de détails et de règles à voir clairement, mais parce que le mécanisme par lequel les systèmes complexes traitent la matière et l'information est complètement différent. Le "flou statistique" qu'on voit dans les systèmes complexes n'est pas une version floue du discret, c'est la chose même qui se manifeste pour résoudre le problème. Essayer de regarder à l'intérieur et de trouver des petits morceaux qui travaillent de manière déterministe, c'est chercher quelque chose qui n'est pas là. Oui, il y a des petits morceaux. Et oui, ils interagissent. Mais pas comme une chaîne linéaire de cause à effet. Les interactions à l'intérieur des systèmes complexes font apparaître des concepts qui n'existent pas aux échelles plus petites.
Les solutions de la nature ne sont pas des solutions approximatives à des problèmes difficiles, elles sont exactement ce qui calcule la réponse nécessaire. La nature n'est pas les morceaux réduits et isolés qu'on utilise pour définir la connaissance actuelle. Ce n'est pas parce qu'on peut inspecter une molécule et définir ses atomes constituants qu'on peut expliquer la structure et le comportement d'une molécule en utilisant les atomes. Ce n'est pas parce que la cellule a des organites qui semblent avoir des rôles spécifiques qu'on peut (correctement) expliquer la fonction cellulaire en utilisant les organites.
Les constructions computationnelles de la nature émergent comme leur propre chose, à toutes les échelles auxquelles une solution existe. C'est difficile pour les humains d'imaginer le traitement comme autre chose qu'une série d'opérations mécaniques effectuées pour changer les entrées en sorties. Mais le traitement signifie juste que la matière et/ou l'information sont en train d'être transformées, pas que ça doit se faire par des moyens mécaniques ou causals.
Déterminisme flexible
Dans le chapitre 1, on a regardé la différence entre les processus déterministes et non déterministes. Les processus déterministes sont ceux où le résultat est prévisible, de sorte que les mêmes entrées produisent toujours les mêmes sorties. Les processus non déterministes sont ceux où le résultat n'est pas entièrement prévisible, de sorte que les mêmes entrées peuvent produire des résultats différents à chaque fois. Les processus déterministes n'autorisent pas le hasard dans leur fonctionnement normal, tandis que les processus non déterministes l'utilisent.
Mais les choses ne sont pas aussi claires quand il s'agit des solutions de la nature. Les solutions de la nature ont à la fois du déterminisme et du non-déterminisme. Les solutions de la nature ont ce que j'appelle le déterminisme flexible. Les choses sont flexiblement déterministes quand elles ont à la fois un comportement reproductible et non reproductible. Prends le castor, par exemple. Il y a évidemment beaucoup de reproductibilité chez cet organisme, puisqu'on sait toujours reconnaître un castor quand on en voit un. Un castor a une apparence et un ensemble de comportements bien définis. Le castor ne produit pas des sorties complètement différentes pour ses entrées.
Mais le castor est aussi très non déterministe. Il doit l'être, parce que tous ses défis ne pourraient jamais être résolus en utilisant un déterminisme strict. Imagine essayer de convertir les entrées de prédateurs, de nourriture, de territoire, de variations de température, de sécheresses et de parasites en utilisant un moteur de règles qui fait toujours la même chose. Les prédateurs peuvent approcher sous des angles innombrables, les variations de température sont très imprévisibles et les parasites peuvent infecter à n'importe quel moment. Un système déterministe ne pourrait jamais tenir compte de la pluralité des facteurs à travers un nombre quasi infini de scénarios possibles.
Et pourtant, le castor survit. Malgré la complexité des entrées arbitraires, accidentelles, irrégulières et non planifiées, le castor convertit de manière fiable les mêmes quelques sorties à chaque fois. Ce genre de transformations "beaucoup-vers-peu" n'est possible que grâce à l'abstraction. Les structures dans la montagne, le lit de la rivière et le castor fonctionnent parce que ce sont des abstractions physiques qui abrègent la matière, l'énergie et l'information en quelques sorties fiables, comme le font les abstractions. Les abstractions physiques sont la construction centrale du calcul de la nature parce que c'est la seule façon d'atteindre son déterminisme flexible caractéristique.
La reconnaissance faciale est réalisée par les humains, pas par une analyse détaillée et des procédures apprises par cœur, mais en détectant des motifs invariants de haut niveau qui sont robustes aux changements d'angles et d'éclairage. Si la personne qu'on regarde bouge la tête, a des ombres sur le visage ou est trempée par la pluie, on peut quand même la reconnaître. C'est l'abstraction en action. L'essence d'un visage ne peut pas être expliquée en utilisant une analyse ou des descriptions verbeuses parce qu'il n'y a pas de mécanismes déterministes exacts qui peuvent identifier les visages. C'est seulement en s'ancrant sur quelque chose de beaucoup plus abstrait que le problème de la reconnaissance faciale peut être résolu.
Pour être capable de remarquer des motifs de haut niveau, comme un visage, il doit exister un niveau formidable de compression d'information. Les détails comme la distance entre les yeux, la largeur du nez, etc., doivent tous être compressés en très peu de signaux de haut niveau que l'esprit peut utiliser pour attribuer l'identité de quelqu'un. C'est exactement ce qu'est l'abstraction. La compression de l'information en quelques points d'ancrage sur lesquels on peut agir.
Tous les problèmes dans la nature sont difficiles. Ce ne sont pas des situations qui sont résolues par une analyse lente. Les problèmes difficiles sont résolus rapidement parce qu'ils s'appuient sur des abstractions de haut niveau sous forme d'heuristiques et de reconnaissance de motifs. Un problème qui prend longtemps à résoudre est en fait un problème simple. Ça semble contraire à la façon dont on utilise le terme "difficile" dans le langage courant, mais en termes computationnels, c'est vrai. Seuls les problèmes simples peuvent être disséqués et analysés dans le sens réductionniste. Les problèmes vraiment difficiles ne peuvent pas être résolus par de tels moyens. Les problèmes difficiles demandent des constructions de haut niveau pour être résolus. C'est seulement en faisant abstraction des détails internes en des choses d'ordre supérieur que les problèmes difficiles peuvent être gérés. Pour être clair, on ne parle pas de trouver une solution pour la première fois. Ici, on parle de la mise en œuvre de la solution déjà trouvée (par exemple, un modèle déployé ou un cerveau humain identifiant des visages). Trouver la solution à un problème difficile prend longtemps, mais mettre en œuvre la solution trouvée ne prend pas autant de temps.
On a des exemples créés par l'homme de déterminisme flexible. Les solutions produites par les modèles de *deep learning* sont assez fiables pour être considérées comme effectivement déterministes, tout en étant assez flexibles pour résoudre des problèmes difficiles lorsqu'elles sont mises en œuvre. Il ne s'agit pas de la différence entre la phase d'entraînement et la phase de déploiement du *deep learning*, il s'agit juste de la solution déployée. Le genre de déterminisme qu'on voit dans les modèles de *deep learning* opérationnalisés n'a rien en commun avec le déterminisme de l'ingénierie traditionnelle. L'ingénierie traditionnelle produit des solutions dont les sorties sont entièrement prévisibles. Bien que les erreurs et les facteurs environnementaux incontrôlables puissent atténuer la prévisibilité pure, le fonctionnement interne des systèmes simples est conçu pour être des machines entièrement déterministes.
Mais le *deep learning* est flexible dans sa forme statique. La configuration des paramètres qui convertissent les entrées en sorties est figée, mais elle apporte une flexibilité extrême en mappant beaucoup d'informations en beaucoup moins d'informations. C'est le genre de déterminisme qu'on trouve dans la nature, celui qui n'est pas atteint par le comportement des règles.
Les règles peuvent encore être impliquées au niveau inférieur. Les fourmis et les termites ont des règles d'interaction locales qui dictent comment ils interagissent. Mais, de façon critique, il n'y a pas de ligne directe de ces interactions au comportement qui émerge. Les règles d'interaction locales mettent simplement en place l'interdépendance utilisée par les systèmes complexes. Ce n'est pas ce qui mène aux sorties qui résolvent le problème de niveau supérieur. Ce ne sont pas les règles qui convertissent les entrées en sorties, cette transformation se passe au niveau supérieur de l'abstraction physique.
C'est pourquoi toute tentative d'expliquer explicitement le fonctionnement interne des modèles de *deep learning* est complètement irrationnelle. Le mécanisme par lequel le *deep learning* calcule ne peut pas être expliqué dans le sens interne et causal. Pourtant, cette vérité échappe à beaucoup de scientifiques et d'ingénieurs. Il ne manque pas de chercheurs qui essaient de donner une explication plus "scientifique" de ce que font les modèles de *deep learning*. Leur concrétisme mal placé vient de notre paradigme scientifique et technique réductionniste. Si jamais une description est donnée de la façon dont le *deep learning* fonctionne en interne, ce ne pourrait être que parce que 1) c'est faux ou 2) le *deep learning* n'est en fait pas complexe. Tout indique que #1 est le cas.
Les systèmes de *deep learning* ne seront jamais conçus dans le sens déterministe parce que quel que soit le niveau de déterminisme qu'ils abritent, il n'a pas été placé là explicitement. Il n'y a pas de chemin de l'entrée à la sortie dans le *deep learning*, parce que ce qu'un modèle de *deep learning* manifeste est un mécanisme émergent qui transforme l'information d'une manière que les règles ne peuvent pas.
Bien sûr, ce n'est pas seulement le *deep learning*. Le *deep learning* est la version créée par l'homme de ce qu'on voit dans la nature. Ça ne veut pas dire que le *deep learning* est aussi capable que la nature, seulement que ça nous montre des indices du genre de complexité nécessaire pour atteindre le déterminisme flexible qu'on voit dans les solutions de la nature. Le cerveau humain est bien sûr le meilleur exemple de tous. Le cerveau humain est l'objet le plus complexe qu'on connaisse, étant donné son nombre de neurones, de connexions et de propriétés émergentes. Le cerveau humain est un objet avec un déterminisme flexible extrême, ce qui nous permet de nous déplacer à travers notre complexité environnementale avec une grande généralité.
Beaucoup de scientifiques et d'ingénieurs parlent comme si l'incertitude qui se produit dans les systèmes complexes était due à des choses comme des perturbations externes, du bruit ou un hasard inhérent dans la dynamique du système. C'est vrai pour les systèmes déterministes, mais pas pour les systèmes complexes. Encore une fois, la complexité n'est pas une version désordonnée du déterminisme, elle fonctionne plutôt d'une manière fondamentalement différente. Il y a une transition abrupte quand un système passe de simple à complexe. On va voir ce qui se passe pendant cette transition dans la partie 2.
On a besoin d'ingénierie d'émergence
On ne peut plus concevoir des solutions de la même façon qu'on l'a fait tout au long de notre histoire. Les sorties dont on a besoin doivent être obtenues par l'émergence, et seuls les objets complexes peuvent atteindre l'émergence. On ne peut pas faire des choix spécifiques sur les morceaux et les connexions qui produisent des résultats connus, on doit plutôt sortir de l'interne des systèmes qu'on crée, comme le fait la nature.
Construire à l'ère de la complexité demande que nos processus partagent des similitudes profondes avec la sélection naturelle, où la variation, l'itération et la sélection sont les préoccupations principales, tandis que les configurations internes de nos solutions émergent d'elles-mêmes.
Construire de la technologie, c'est résoudre des problèmes avec des choses tangibles. Ça a toujours dépendu de la conception, pour fabriquer le prochain niveau d'abstraction physique. Mais le nombre de morceaux et d'interactions qui doivent maintenant être à l'intérieur des choses qu'on construit éradique complètement la notion de conception. Les paramètres à l'intérieur de nos créations ne peuvent pas être fixés explicitement. Il n'y a pas d'accès au genre d'information interne nécessaire pour fixer ces spécificités, et même s'il y en avait, ce n'est pas comme ça que la nature fonctionne. Les approches basées sur la conception sont ancrées dans la pensée réductionniste, et il ne peut y avoir aucune philosophie réductionniste qui mène à des créations viables qui fonctionnent sous la complexité.
Mais construire des choses demande toujours des connaissances sur les principes, les matériaux et les processus impliqués dans la construction. Différentes choses se comportent différemment dans diverses conditions, et ce genre de connaissances est nécessaire pour prendre des décisions rationnelles sur la façon de procéder. Comme avec l'ingénierie traditionnelle, construire des choses complexes qui fonctionnent demande toujours une appréciation de la façon dont l'intégrité structurale, la sécurité, la fonctionnalité et l'efficacité se manifestent, dans les environnements où on place les choses qu'on crée.
La différence maintenant, c'est que ces connaissances ne peuvent pas être basées sur les détails internes de nos créations. Ça va à l'encontre de la façon dont la science et l'ingénierie fonctionnent aujourd'hui. Pour construire une tour de bureaux avec intégrité structurale, il faut utiliser des connaissances sur la façon dont les charges sont distribuées à l'intérieur du bâtiment. Les interactions causales entre des composants structurels spécifiques comme les poutres, les colonnes et les fondations sont utilisées pour concevoir et fabriquer une structure viable.
Créer des objets qui répondent aux normes de sécurité signifie comprendre comment divers éléments à l'intérieur des structures interagissent, et comment ils pourraient faillir dans différentes situations. Pour prévoir les dangers potentiels et atténuer les risques, il faut prendre des décisions conscientes concernant les morceaux à utiliser et la façon de les connecter. Prends les murs coupe-feu, les systèmes de sprinklers et les itinéraires d'évacuation à l'intérieur des bâtiments d'aujourd'hui. Nos créations ont été rendues efficaces en optimisant le fonctionnement interne des structures qu'on façonne. Pour identifier les zones à améliorer, on a dû raisonner sur les connexions causales entre les morceaux et utiliser ces connaissances pour rationaliser les processus, minimiser les déchets et réduire les coûts. Quand il s'agit que nos créations fonctionnent comme prévu, cette fonctionnalité a toujours été possible en comprenant les mécanismes et les processus internes par lesquels les sorties sont produites.
Tous ces exemples sont basés sur la connaissance interne de la façon dont les choses fonctionnent. Alors qu'on avance dans l'ère de la complexité, on ne peut pas simplement jeter les connaissances sur les principes, les matériaux et les processus. La différence, c'est qu'on doit maintenant recadrer ces connaissances en termes de propriétés externes concernant les matériaux et les processus qui font fonctionner les choses. Tout comme la sélection naturelle arrive à une vraie sophistication sans s'appuyer sur des connaissances internes, nous aussi on doit sortir des systèmes qu'on crée et y placer nos normes.
Pour faire ça, on doit s'assurer qu'on comprend ce qu'est l'émergence. Pas en utilisant une histoire réductionniste en morceaux qui essaie de connecter les petites et les grandes échelles par des connexions causales, mais en utilisant la connaissance des propriétés universelles de l'information, du calcul et de l'évolution.
C'est seulement en prenant du recul et en regardant ce que la nature fait pour atteindre ses structures et ses comportements émergents qu'on peut comprendre comment la nature calcule. Ce n'est pas quelque chose qu'on trouve dans les annales de la science. Pas parce que d'autres n'ont pas essayé, mais parce que leurs tentatives sentent encore le vieux réductionnisme qui contrecarre les tentatives intellectuellement honnêtes de comprendre la complexité. Ce qu'il faut, c'est un regard objectif sur ce que la nature fait avec l'information, le calcul et l'évolution pour créer ses solutions. C'est seulement en sortant du paradigme actuel et en voyant la nature pour ce qu'elle est qu'on peut se débarrasser de notre lentille réductionniste dépassée, et faire ressortir des vérités indéniables concernant la façon dont la nature travaille. Voilà, hein! C'était un peu long, mais j'espère que c'était clair. À la prochaine!