Conception du programme phénotrope

15

J'ai récemment rencontré une idée avancée par Jaron Lanier appelée «programmation phénotrope».

L'idée est d'utiliser des interfaces «de surface» au lieu d'interfaces à point unique dans des programmes informatiques utilisant des statistiques pour détecter des erreurs mineures qui entraîneraient généralement un crash «catastrophique» d'un programme «classique».

La description en deux lignes est ici:

Selon Jaron, la «vraie différence entre l'idée actuelle de logiciel, qui est l'adhésion au protocole, et l'idée [qu'il discute], la reconnaissance des formes, a à voir avec les types d'erreurs que nous créons» et si «nous ne faisons pas 'ne trouvons pas une manière différente de penser et de créer des logiciels, nous n'écrirons pas de programmes de plus de 10 millions de lignes de code, quelle que soit la vitesse de nos processeurs.'

L'explication un peu plus longue est ici . Et l'explication encore plus longue est ici .

Donc, la question, en passant devant les connotations évidentes de robot-suzerain que les gens ont tendance à choisir, comment pourrait-on réellement concevoir et écrire un "programme phénotrope?"

adv
la source
1
Aucune infraction mais les articles que vous avez liés sont très vagues et naïfs. Pourriez-vous être plus précis sur ce que vous comprenez phenotropic program?
Simon Bergot
Lisez le plus long. Il le décrit en détail sanglant.
adv
4
Je pense que la seule façon d'y répondre est de définir ce qu'est un "programme phénotrope". Dans ce cas, la réponse devient basée sur l'opinion. Donc avant de demander comment écrire un "programme phénotrope", demandez ce qu'est un "programme phénotrope".
Euphoric
1
@Simon: La question pose essentiellement la même chose, donc je ne sais pas si votre demande est possible sans que le PO réponde lui-même à la question.
Robert Harvey
1
Sujet connexe (considérez l'auteur du texte): mail-archive.com/[email protected]/msg03808.html
Thiago Silva

Réponses:

23

Lanier a inventé un mot de 50 cents dans le but de jeter un filet autour d'un ensemble spécifique d'idées qui décrivent un modèle informatique pour créer des programmes informatiques ayant certaines caractéristiques identifiables.

Le mot signifie:

Mécanisme d'interaction de composants qui utilise la reconnaissance de formes ou la cognition artificielle à la place de l'invocation de fonctions ou de la transmission de messages.

L'idée vient en grande partie de la biologie. Votre œil s'interface avec le monde, non pas via une fonction comme See(byte[] coneData), mais à travers une surface appelée rétine. Ce n'est pas une distinction triviale; un ordinateur doit analyser tous les octets coneDataun par un, tandis que votre cerveau traite toutes ces entrées simultanément.

entrez la description de l'image ici

Lanier affirme que cette dernière interface est plus tolérante aux pannes, ce qui est le cas (un seul bit glissé coneDatapeut casser tout le système). Il prétend qu'il permet la correspondance de modèles et une foule d'autres capacités qui sont normalement difficiles pour les ordinateurs, ce qu'il fait.

Le mécanisme «phénotrope» par excellence dans un système informatique serait le réseau de neurones artificiels (ANN). Il prend une "surface" en entrée, plutôt qu'une interface définie. Il existe d'autres techniques pour atteindre une certaine mesure de reconnaissance des formes, mais le réseau neuronal est le plus étroitement aligné sur la biologie. Faire un ANN est facile; il est difficile de lui faire exécuter la tâche que vous souhaitez effectuer de manière fiable, pour plusieurs raisons:

  1. À quoi ressemblent les "surfaces" d'entrée et de sortie? Sont-ils stables ou varient-ils en taille au fil du temps?
  2. Comment obtenez-vous la bonne structure de réseau?
  3. Comment formez-vous le réseau?
  4. Comment obtenez-vous des caractéristiques de performances adéquates?

Si vous êtes prêt à vous séparer de la biologie, vous pouvez vous passer du modèle biologique (qui tente de simuler le fonctionnement de neurones biologiques réels) et construire un réseau qui est plus étroitement lié aux «neurones» réels d'un système informatique numérique (logique portes). Ces réseaux sont appelés réseaux de logique adaptative (ALN). La façon dont ils fonctionnent consiste à créer une série de fonctions linéaires qui se rapprochent d'une courbe. Le processus ressemble à ceci:

entrez la description de l'image ici

... où l'axe X représente une entrée dans l'ALN et l'axe Y représente une sortie. Imaginez maintenant le nombre de fonctions linéaires s'étendant au besoin pour améliorer la précision, et imaginez ce processus se produisant à travers n dimensions arbitraires, implémenté entièrement avec des portes logiques ET et OU, et vous avez une idée de ce à quoi ressemble un ALN.

Les ALN ont certaines caractéristiques très intéressantes:

  1. Ils sont assez facilement entraînables,
  2. Ils sont très prévisibles, c'est-à-dire que de légères variations dans les entrées ne produisent pas de fluctuations sauvages de la sortie,
  3. Ils sont rapides comme l'éclair, car ils sont construits sous la forme d'un arbre logique et fonctionnent un peu comme une recherche binaire.
  4. Leur architecture interne évolue naturellement grâce à l'ensemble de formation

Un programme phénotrope ressemblerait donc à quelque chose comme ceci; il aurait une "surface" pour l'entrée, une architecture et un comportement prévisibles, et il tolérerait les entrées bruyantes.

Lectures complémentaires
Introduction aux réseaux de logique adaptative avec une application pour l'audit de l'évaluation des risques
«orientée objet» vs «orientée message», par Alan Kay

Robert Harvey
la source
1
Corrigez-moi si je me trompe, mais une entrée "de surface" ressemble à une collection - de composants indépendants (ou principalement indépendants). Dans l'exemple de l'œil, cela aurait pu ressembler à cela See(List<Cone> cones)(où chacun Coneest indépendant les uns des autres), oui?
FrustratedWithFormsDesigner
1
@Frustrated Vous pouvez évidemment simuler une surface avec un tableau d'octets, mais revenez à la définition de Lanier, qui remplace le passage de messages et l'invocation de fonctions par la cognition et la reconnaissance de formes. Cela rejoint le problème d'évolutivité décrit ici . La tolérance aux pannes fait également partie de l'équation. Pensez «Interfaces plus intelligentes».
Robert Harvey
3
Re: "plus tolérant aux pannes". Lanier a-t-il déjà vu des illusions d'optique? A-t-il déjà étudié la psychologie du cerveau. Le cerveau essaiera TOUJOURS de donner un sens à ce que ses entrées lui disent, QUELLE QUE SOIT LA FAUXTE DE CES CONCLUSIONS. Le fonctionnement du cerveau est extrêmement défectueux. Ainsi, tant qu'il importe peu que le programme ne fonctionne pas assez fréquemment, tout comme un humain typique, je suppose que le modèle auquel il est fait référence est correct. Cependant, la plupart du temps, les gens s'attendent à ce que les ordinateurs soient corrects. Il sera difficile de vendre une voiture pilotée par ordinateur qui évite les accidents la plupart du temps.
Dunk
2
@Dunk: ... mais il est toujours légal de construire et de vendre des voitures pour les conducteurs humains qui parviennent à éviter les accidents la plupart du temps.
Doc Brown
2
@Dunk, le point n'est pas la présence de défauts - sinon nous irions dans la voie mathématique classique pour tout prouver. Le point est 1: l'ampleur de l'impact de l'échec (l'univers ne tombe pas en panne si je prends un lapin pour un gorille - en fait, je fonctionne toujours comme un être humain après cela, mon cerveau et mon fils aussi), 2 : les entités physiques / biologiques de la salle doivent récupérer, fournir des informations en retour et sonder des alternatives qui "font avancer les choses - même de manière non optimale"; et 3: l'idée que ces caractéristiques nous obligent à les vouloir dans nos systèmes artificiels
Thiago Silva
1

Je pense que nous sommes au tout début d'une des étapes qu'il faudra pour y arriver et qui consiste à rassembler de nombreuses données dans des formats qui peuvent être analysés. Internet, les recherches Google, Fitbit (chaque étape que vous faites, chaque mouvement que vous faites, je vous surveillerai.), FourSquare, une géolocalisation pour téléphone intelligent, des publications Facebook et des données de question SO sont tous en cours de collecte. Nous ne sommes pas du tout près de la quantité de données sensorielles que l'humain moyen compile sur une durée de vie, mais nous nous rapprochons.

Commencez à catégoriser des millions de photos d'oiseaux et à obtenir des commentaires de personnes vous disant que ce n'est pas un oiseau et vous pouvez commencer à créer un algorithme. De là, une impression plus floue (je l'appellerais un modèle, mais c'est trop exact pour ce que nous essayons de coder.) Peut être créée.

class Birdish

Comment un chien de compagnie sait-il autant de choses sur le propriétaire? Parce que ça la regarde beaucoup. Le chien a écouté les voitures se garer dans l'allée et corrélant avec le fait que le propriétaire ouvrant la porte d'entrée, il semble que le chien puisse reconnaître une voiture par son son. Nous pourrions le faire aussi, mais nous ne voyons aucune raison de nous y atteler. Et c'est ce qui ne va pas avec le logiciel actuel, il ne fait pas attention à ce que fait l'utilisateur. Il attend simplement que l'utilisateur fasse ce que l'informatique attend de lui.

Quelque chose d'aussi simple que de régler un réveil pourrait être fait par une petite observation / analyse de mes habitudes actuelles. Nous avons renoncé à régler les minuteries du magnétoscope avant que la technologie ne soit remplacée par le numérique. Et cela se serait-il produit aussi rapidement si nous avions pu interfacer le TV Guide avec le magnétoscope? J'ai regardé la même émission de télévision 4 semaines de suite en même temps, mais la 5e, je n'ai même pas allumé le téléviseur. Évidemment, je veux qu'il soit enregistré. Ne pouvez-vous pas dire que je reste en retard au travail en écrivant cet article et avec mon trajet typique ne rentrera pas à temps? Vous avez les données, faites le calcul.

Rassemblez de plus en plus de données et vous pourrez alors trouver de meilleures façons de les analyser, de les reconnaître et de les convertir. Nous allons au-delà de ce qui ne peut être entré qu'à partir d'un clavier avec nos caméras de téléphone et bientôt nos caméras en verre oculaire. C'est juste le début.

JeffO
la source
1

Voici un ensemble de diapositives pour définir un langage de programmation probabiliste dans Scala .

C'est le premier exemple de mise en œuvre décente pour certains des composants de base du système que Jaron Lanier propose.

New Alexandria
la source
C'est très joli. Je vais peut-être essayer de concevoir une bibliothèque pour Java qui fait de même.
adv
@adv comment le trouverions-nous, si vous le faites?
New Alexandria
1
Je publierai un lien vers un référentiel github lorsque je le ferai pour le créer.
adv
-1

Une pensée que j'avais récemment:

Si vous avez utilisé des idées de haut niveau comme Maybe Monad de Haskell pour encapsuler les appels de procédure à distance vers d'autres systèmes. Vous envoyez une demande au serveur. Mais rien ne revient (le serveur est cassé). Ou une promesse revient (le serveur est occupé) et vos programmes continuent de fonctionner avec ces valeurs Aucune ou Promise. C'est un peu comme la tolérance aux pannes que Lanier recherche.

Il existe peut-être des moyens d'encapsuler d'autres éventualités. Par exemple, les appels distants qui reviennent avec une approximation qui est de plus en plus affinée au fil du temps par une sorte de négociation en arrière-plan. c'est à dire. ce qui revient est quelque chose comme une promesse mais pas seulement "continuez à tenir et à travailler avec cela et une valeur appropriée apparaîtra bientôt" mais "continuez à tenir et à travailler avec cela et une meilleure approximation apparaîtra bientôt". (Et encore et encore). Cela pourrait cacher beaucoup de défauts au programmeur, tout comme les protocoles de mise en réseau cachent beaucoup d'échecs de mise en réseau de bas niveau au programmeur.

interstar
la source
comment cela répond-il à la question posée?
moucher
Si je comprends bien, la programmation phénotropique est un moyen de programmer de gros systèmes (souvent multi-ordinateurs) robustes. Le problème est que toutes les métaphores biologiques la rendent vague et difficile à traduire en termes de programmation pratique. Ici, je suggère que certaines constructions de programmation qui ne sont pas vagues (c.-à-d. Monades, Promesses, etc.) pourraient être un moyen de rendre certaines de ces idées concrètes et pratiquement programmables de Lanier.)
Interstar