Ce matin, en route vers le campus de Berkeley, j'ai passé mes doigts le long des feuilles d'un buisson parfumé, puis j'ai inhalé l'odeur familière. Je fais cela tous les jours, et chaque jour le premier mot qui me vient dans la tête et agite la main en guise de salutation est de la
sauge . Mais je sais que cette plante n'est pas de la sauge, mais du romarin, alors je commande à la
sauge de se calmer. Mais trop tard. Après le
romarin et la
sauge, je ne peux pas arrêter l'apparition du
persil et du
thym sur la scène, après quoi les premières notes de la mélodie et du visage apparaissent sur la couverture de l'album, et maintenant j'étais de retour au milieu des années 1960, vêtu d'une chemise avec des concombres. Pendant ce temps, le
romarin soulève un écart de 13 minutes dans la mémoire de Rose Mary Woods (bien que
maintenant , après avoir consulté la mémoire collective, je sais que ce devrait être Rose Mary Woods et
un espace de 18 minutes et demie ). De Watergate, je passe aux histoires sur la page principale. Puis je remarque dans un jardin bien entretenu une autre plante aux feuilles gris-vert duveteuses. Ce n'est pas non plus de la sauge, mais un nettoyant (oreille d'agneau). Cependant, la
sauge obtient enfin son moment de gloire. Des herbes, je passe au logiciel mathématique
Sage , puis au système de défense aérienne des années 50 appelé
SAGE , l'environnement terrestre semi-automatique, qui était géré par le plus grand ordinateur jamais construit.
En psychologie et en littérature, ces errances mentales sont appelées le
courant de conscience (l'auteur de cette métaphore est William James). Mais je choisirais une métaphore différente. Ma conscience, pour autant que je le ressens, ne circule pas en douceur d'un sujet à un autre, mais flotte plutôt à travers le paysage des pensées, plus comme un papillon qu'une rivière, parfois cloué sur une fleur puis sur un autre, parfois emporté par des rafales, parfois en visite au même endroit encore et encore.
Pour explorer l'architecture de ma propre mémoire, j'ai essayé de mener une expérience plus tranquille avec des associations libres. J'ai commencé avec la même recette florale - persil, sauge, romarin et thym - mais pour cet exercice je n'ai pas flâné dans les jardins des collines de Berkeley; Je me suis assis à table et j'ai pris des notes. Le diagramme ci-dessous est la meilleure tentative pour reconstruire le cours complet de mes pensées.
persil, sauge, romarin, thym - quatre herbes, ainsi qu'une réplique de la chanson Simon et Garfunkel.
Simon et Garfunkel - Paul Simon et Art Garfunkel, un duo de chanteurs dans le genre folk rock des années 60 et 70.
Madame Robinson est une chanson de Simon et Garfunkel, ainsi qu'un personnage du film de Mike Nichols "The Graduate".
"Où êtes-vous allé, Joe DiMaggio?" - la question posée dans "Mme Robinson. "
Simon and Schuster est une maison d'édition fondée en 1924 par Richard Simon et Max Schuster (à l'origine pour la publication de mots croisés).
Jackie Robinson est le légendaire joueur des Brooklyn Dodgers.
Robinson Crusoe - roman de Daniel Defoe sur les naufragés (1719).
Famille Swiss Robinsons - roman de Johan David Weiss sur les naufragés (1812).
herbes - plantes aromatiques
Monsieur Wizard est une émission scientifique pour enfants du samedi 1950 organisée par Don Herbert.
Alpert - trompettiste Armoiries d'Alpert.
Les plastiques sont les conseils de carrière proposés par The Graduate.
coo-coo-ca-choo - ligne de «Mme Robinson. "
Frank Robinson est un voltigeur des Orioles de Baltimore dans les années 1970.
Greig Nettles est le troisième joueur de baseball des Yankees de New York dans les années 1970.
Dustin Hoffman est un acteur qui a joué dans The Graduate.
Abby Hoffman - "Yipee!"
Leominster est une ville du Massachusetts qui est devenue le berceau de la fabrication de matières plastiques aux États-Unis.
Brooks Robinson est le troisième joueur de baseball des Orioles de Baltimore dans les années 1970.
Papillon ("The Moth") - un film de 1973 dans lequel Dustin Hoffman a joué un rôle secondaire; "Papillon" en français, "papillon".
Nabokov - Vladimir Nabokov, écrivain d'origine russe et entomologiste étudiant les papillons.
papillon, Schmetterling, mariposa, farfalla - «papillon» en anglais, allemand, espagnol et italien; il semble que tous (et le mot français aussi) sont d'origine indépendante.
Comment s'appelle le papillon en russe - je ne sais pas. Ou ne savait pas quand cette question s'est posée.
«I am the Walrus» est une chanson des Beatles de 1967 qui a également la phrase «coo-coo-ca-choo».
Carly Simon est chanteuse. Aucun lien avec Paul Simon, mais est la fille de Richard Simon.
"You're so vain" est une chanson de Carly Simon.
Le graphique de haut en bas représente les sujets dans l'ordre dans lequel ils apparaissent dans le cerveau, mais les connexions entre les nœuds ne créent pas une seule séquence linéaire. La structure ressemble à un arbre avec de courtes chaînes d'associations successives, se terminant par un retour brutal à un nœud antérieur, comme si j'étais tiré par une bande de caoutchouc tendue. Ces interruptions sont marquées sur le graphique par des flèches vertes; le X rouge ci-dessous est l'endroit où j'ai décidé de terminer l'expérience.
Je m'excuse auprès de ceux qui sont nés après 1990, bon nombre des sujets mentionnés peuvent vous sembler dépassés ou mystérieux. Des explications sont présentées sous le graphique, mais je ne pense pas qu'elles clarifieront les associations. Au final, les souvenirs sont personnels, ils vivent à l'intérieur de la tête. Si vous souhaitez collecter une collection d'idées pertinentes pour votre propre expérience, il vous suffit de créer votre propre calendrier d'associations gratuites. Je recommande fortement de faire ceci: vous pouvez constater que vous ne saviez pas que vous savez quelque chose.
Le but de ma marche quotidienne sur la colline de Berkeley est le Simons Institute et le Computational Theory Course, auxquels je participe à un programme d'un semestre sur le cerveau et le calcul. Un tel environnement suscite des pensées de pensées. J'ai commencé à réfléchir: comment construire un modèle de calcul du processus de libre association? Parmi les différentes tâches proposées à résoudre par l'intelligence artificielle, celle-ci semble assez simple. Il n'y a pas besoin de rationalisation profonde; tout ce que nous devons simuler, c'est juste rêver et errer dans les nuages - c'est ce que fait le cerveau lorsqu'il n'est pas chargé. Il semble qu'une telle tâche soit facile à résoudre, n'est-ce pas?
La première idée qui me vient à l'esprit (du moins à
ma tête) concernant l'architecture d'un tel modèle de calcul est un mouvement aléatoire le long d'un graphe ou d'un réseau mathématique. Les nœuds de réseau sont des éléments stockés en mémoire - idées, faits, événements - et les communications sont différents types d'associations entre eux. Par exemple, un nœud
papillon peut être connecté avec un
papillon de nuit, une chenille, un monarque et une
nacre, ainsi qu'avec les transitions mentionnées dans mon calendrier, et peut-être avoir des connexions moins évidentes, par exemple
, l'exploration australienne »,« Shrimp »,« Mohammed Ali »,« pellagra »,« choke » et
« stage fear » . La structure des données de l'hôte contiendra une liste de pointeurs vers tous ces hôtes associés. Les pointeurs peuvent être numérotés de 1 à n; le programme générera un nombre pseudo-aléatoire dans cet intervalle et ira au nœud correspondant, dans lequel toute la procédure recommencera.
Cet algorithme reflète certaines caractéristiques de base des associations libres, mais beaucoup d'entre elles ne sont pas prises en compte. Le modèle suppose que tous les nœuds cibles sont également probables, ce qui semble peu plausible. Pour prendre en compte la différence de probabilités, on peut demander à chaque arête
je poids
w i , puis rendre les probabilités proportionnelles aux poids.
Plus compliqué encore est le fait que les poids dépendent du contexte - de l'histoire récente de l'activité mentale humaine. Si je n'avais pas de combinaison de Mme Robinson et Jackie Robinson, penserais-je à Joe Di Maggio? Et maintenant, quand j'écris ceci, Joltin 'Joe (surnom Di Maggio) rappelle Marilyn Monroe, puis Arthur Miller, et encore une fois je ne peux pas arrêter le train de la pensée. Pour reproduire cet effet dans un modèle informatique, un mécanisme de régulation dynamique des probabilités de catégories entières de nœuds en fonction des autres nœuds récemment visités sera nécessaire.
Vous devez également considérer les effets d'une nouveauté d'un type différent. Un élastique devrait être trouvé dans le modèle, me ramenant constamment vers Simon et Garfunkel et Mme. Robinson Probablement, chaque site récemment visité devrait être ajouté à la liste des options cibles, même s'il n'est en aucun cas connecté au site actuel. D'un autre côté, la dépendance est également une possibilité: les pensées trop souvent mémorisées deviennent ennuyeuses, elles doivent donc être supprimées dans le modèle.
Un autre test final: certains souvenirs ne sont pas des faits ou des idées isolés, mais des parties de l'histoire. Ils ont une structure narrative avec des événements se déroulant dans l'ordre chronologique. Pour les nœuds de tels souvenirs épisodiques, le bord
suivant , et éventuellement
précédent , est requis. Une telle chaîne de côtes unit toute notre vie, y compris tout ce dont vous vous souvenez.
Un modèle informatique similaire peut-il reproduire mes errances mentales? La collecte de données pour un tel modèle sera un processus assez long, et cela n'est pas surprenant, car il m'a fallu toute une vie pour remplir mon crâne d'entrelacement d'herbes, d'armoiries, de Simons, de Robinsons et de Hoffmanns. Bien plus que la quantité de données, je me soucie de la minutie de l'algorithme de traversée de graphe. Il est très facile de dire: «choisissez un nœud en fonction de l'ensemble des probabilités pondérées», mais quand je regarde les détails sales de la mise en œuvre de cette action, je peux difficilement imaginer que quelque chose comme ça se passe dans le cerveau.
Voici l'algorithme le plus simple que je connaisse pour la sélection pondérée aléatoire. (Ce n'est pas le plus efficace de ces algorithmes, mais les méthodes sont encore plus chaotiques. Keith Schwartz a écrit un excellent
tutoriel et une revue sur ce sujet.) Supposons qu'une structure de données simulant un nœud de réseau comprend une liste de liens vers d'autres nœuds et une liste correspondante de poids . Comme le montre la figure ci-dessous, le programme génère un certain nombre de sommes de poids accumulées:

. L'étape suivante consiste à normaliser cette série en divisant chaque nombre par la somme totale des poids. Maintenant, nous avons une série de chiffres
p i passant de zéro à l'unité de façon monotone. Ensuite, le programme sélectionne un nombre réel aléatoire
x de l'intervalle
[ 0 , 1 ) ;
x doit être dans l'un des intervalles normalisés
p i , et cette valeur
je définit le prochain nœud sélectionnable.
Dans le code du
langage de programmation Julia, la procédure de sélection de nœud ressemble à ceci:
function select_next(links, weights) total = sum(weights) cum_weights = cumsum(weights) probabilities = cum_weights / total x = rand() for i in 1:length(probabilities) if probabilities[i] >= x return i end end end
Je décris ces détails ennuyeux des sommes accumulées et des nombres pseudo-aléatoires si lentement pour souligner de cette façon que cet algorithme de parcours de graphe n'est pas aussi simple qu'il y paraît à première vue. Et nous n'avons pas encore examiné le sujet du changement des probabilités à la volée, bien que notre attention flotte d'un sujet à l'autre.
Il est encore plus difficile de comprendre le processus d'apprentissage - en ajoutant de nouveaux nœuds et arêtes au réseau. J'ai terminé ma session d'associations libres quand je suis arrivé à une question à laquelle je n'ai pas pu répondre: quel est le nom d'un papillon en russe? Mais
maintenant je peux lui répondre. La prochaine fois que je jouerai à ce jeu, j'ajouterai le mot
babochka à la liste. Dans un modèle de calcul, l'insertion d'un nœud pour le mot
babochka est une tâche assez simple, mais notre nouveau nœud doit également être connecté à tous les nœuds papillon existants. De plus, la
babochka ajoute elle-même de nouvelles côtes. Elle est phonétiquement proche de
babouchka (grand-mère) - l'un des nombreux mots russes de mon dictionnaire. Le suffixe
-ochka est diminutif, il doit donc être associé aux français
-ette et italien
-ini . Le sens littéral du mot
babochka est «petite âme», ce qui implique un nombre encore plus grand d'associations. Après tout, l'apprentissage d'un seul nouveau mot peut nécessiter une réindexation complète de tout l'arbre des connaissances.
Essayons une autre méthode. Oubliez la traversée aléatoire d'un réseau avec ses spaghettis des pointeurs aux nœuds. Au lieu de cela, nous allons simplement stocker toutes les choses similaires dans le quartier. Du point de vue des banques de mémoire informatique numérique, cela signifie que des choses similaires seront stockées à des adresses voisines. Voici un segment de mémoire hypothétique centré sur le concept de
chien . Les lieux voisins sont occupés en d'autres termes, concepts et catégories qui sont le plus susceptibles d'être causés par la pensée d'un chien (
chien ):
chat évident (chat) et
chiot (chiot), différentes races de chiens et plusieurs chiens spécifiques (Skippy est notre chien de famille, qui était dans mon enfance), ainsi que, éventuellement, des associations plus complexes. Chaque article a une adresse numérique. L'adresse n'a pas de signification profonde, mais il est important que toutes les cellules de mémoire soient numérotées dans l'ordre.
l'adresse | le contenu |
---|
19216805 | dieu |
19216806 | le chien qui n'a pas aboyé dans la nuit |
19216807 | Skippy |
19216808 | Lassie |
19216809 | canin |
19216810 | chat |
19216811 | chien |
19216812 | chiot |
19216813 | loup |
19216814 | grotte canem |
19216815 | Basset hound |
19216816 | Braque de Weimar |
19216817 | dogmatique |
La tâche de se promener tranquillement autour de ce tableau en mémoire peut être assez simple. Il peut traverser des adresses mémoire de manière aléatoire, mais l'avantage sera donné à de petites étapes. Par exemple, la prochaine adresse visitée peut être déterminée par échantillonnage à partir d'une distribution normale centrée sur l'emplacement actuel. Voici le code de Julia. (La fonction
randn()
renvoie un nombre réel aléatoire obtenu à partir d'une distribution normale avec une valeur moyenne
m u = 0 et écart type
s i g m a = 1 .)
function gaussian_ramble(addr, sigma) r = randn() * sigma return addr + round(Int, r) end
Un tel schéma présente des caractéristiques intéressantes. Il n'est pas nécessaire de tabuler tous les nœuds cibles possibles avant de choisir l'un d'entre eux. Les probabilités ne sont pas stockées sous forme de nombres, mais codées par la position dans le tableau, et également modulées par le paramètre
s i g m a , qui détermine jusqu'où la procédure veut se déplacer dans le tableau. Bien que le programme exécute toujours l'arithmétique pour échantillonner à partir de la distribution normale, une telle fonction est susceptible d'être une solution plus simple.
Mais encore, cette procédure a un défaut terrifiant. Après avoir entouré le
chien de toutes ses associations directes, nous n'avons laissé aucune place à
leurs associations. Les termes de chien sont bons dans leur propre contexte, mais qu'en est-il du
chat de la liste? Où met-on
chaton ,
tigre ,
neuf vies et
Félix ? Dans un tableau unidimensionnel, il n'y a aucun moyen d'incorporer chaque élément de mémoire dans un environnement approprié.
Passons donc à deux dimensions! En divisant les adresses en deux composantes, nous définissons deux axes orthogonaux. La première moitié de chaque adresse devient la coordonnée
y et la deuxième coordonnée
x . Maintenant, le
chien et le
chat sont toujours des voisins proches, mais ils ont aussi des espaces personnels dans lesquels ils peuvent jouer avec leurs propres «amis».
Cependant, deux mesures ne suffisent pas non plus. Si nous essayons de remplir tous les éléments liés au
chat dans le chapeau , ils commenceront inévitablement à entrer en collision et à entrer en conflit avec les éléments connexes du
chien qui n'ont pas aboyé dans la nuit . De toute évidence, nous avons besoin de plus de dimensions - beaucoup plus.
C'est le bon moment pour l'admettre - je ne suis pas le premier à penser à la façon dont les souvenirs peuvent être organisés en mémoire. La liste de mes prédécesseurs peut être commencée avec Platon, qui a comparé la mémoire avec un oiseau; nous reconnaissons les souvenirs par leur plumage, mais parfois il nous est difficile de les récupérer s'ils commencent à voltiger dans la cellule de notre crâne. Le jésuite Matteo Ricci du XVIe siècle a parlé du «palais de la mémoire» dans lequel nous nous promenons dans diverses salles et couloirs à la recherche des trésors du passé. Les théories modernes de la mémoire sont généralement moins imaginatives, mais plus détaillées et visent le passage de la métaphore au mécanisme. Personnellement, ce que j'aime le plus, c'est le modèle mathématique obtenu dans les années 1980 par
Pentti Canerva , qui travaille maintenant au Redwood Center for Theoretical Neuroscience ici à Berkeley. Il a eu l'idée d'
une mémoire distribuée clairsemée , que j'appellerai SDM. Il applique avec succès la géométrie étonnante des espaces de grande dimension.
Imaginez un cube en trois dimensions. Si nous supposons que la longueur du côté est égale à l'unité de mesure, alors huit vecteurs peuvent être désignés par des vecteurs de trois chiffres binaires, en commençant par
000 et se terminant
111 . À n'importe quel sommet, la modification d'un seul bit du vecteur nous amène au sommet qui est le plus proche voisin. Changer deux bits nous déplace vers le prochain voisin le plus proche, et remplacer les trois bits conduit au coin opposé du cube - au sommet le plus éloigné.
Un cube en quatre dimensions fonctionne de manière similaire -

les sommets sont indiqués par des vecteurs contenant toutes les combinaisons de chiffres binaires, commençant
0000 et se terminant
1111 . Cette description est en fait généralisée à
N dimensions où chaque sommet a
N vecteur de coordonnées de bits. Si nous mesurons la distance selon la métrique de Manhattan - en se déplaçant toujours le long des bords du cube et en ne coupant jamais le long de la diagonale - alors la distance entre deux vecteurs sera le nombre de positions dans lesquelles deux vecteurs de coordonnées diffèrent (on l'appelle également la distance de Hamming). (Pour un OU exclusif, le symbole , parfois appelé
chignon , est généralement utilisé. Il affiche l'opération XOR sous forme d'addition binaire modulo 2. Kanerva préfère ∗ ou ⊗ sur la base que le rôle de XOR dans l'informatique à haute dimension ressemble plus à la multiplication qu'à l'addition . J'ai décidé de me débarrasser de cette contradiction en utilisant le symbole & veebar; - une façon alternative d'écrire XOR, familier des logiciens. Il s'agit d'une modification du symbole ∨ - y compris OR. Il est pratique que ce soit aussi un symbole XOR dans les programmes Julia.) Ainsi, l'unité la mesure de la distance est un bit et le calcul de la distance est une tâche pour l'opérateur OU exclusif binaire (XOR, & veebar;), qui nous donne une valeur pour différents bits
1 , et pour des paires identiques - la valeur
0 :
0 ⊻ 0 = 0 0 ⊻ 1 = 1 1 ⊻ 0 = 1 1 ⊻ 1 = 0
La fonction sur Julia pour mesurer la distance entre les sommets applique la fonction XOR à deux vecteurs de coordonnées et renvoie la quantité en conséquence
1 .
function distance(u, v) w = u ⊻ v return count_ones(w) end
Quand
N devenir assez grand, certaines propriétés curieuses apparaissent
N -cube. Considérez
1000 -Cube dimensionnel ayant
2 1000 pics. Si nous sélectionnons au hasard ses deux sommets, quelle sera la distance attendue entre eux? Bien qu'il s'agisse d'une question de distance, mais nous pouvons y répondre sans plonger dans la géométrie - c'est juste la tâche de calculer les positions auxquelles deux vecteurs binaires sont distingués. Pour les vecteurs aléatoires, chaque bit peut également être égal
0 ou
1 par conséquent, il est prévu que les vecteurs différeront dans la moitié des positions de bits. En cas de
1000 la distance standard de vecteur de bit est

bits. Ce résultat ne nous surprend pas. Cependant,
il convient de noter que toutes les distances entre les vecteurs sont étroitement accumulées autour de la valeur moyenne de 500.
En cas de
1000 -vecteurs de bits presque toutes les paires sélectionnées au hasard sont à une distance de

avant

peu. Dans un échantillon de cent millions de paires aléatoires
(voir graphique ci-dessus), aucune d’elles n’est plus

peu ou plus loin que

peu. Rien dans notre vie dans un espace à faible résolution ne nous a préparé à une telle accumulation de probabilités dans la distance moyenne. Ici sur Terre, nous pouvons trouver un endroit où nous serons complètement seuls, quand presque tous seront à quelques milliers de kilomètres de nous; cependant, il n'y a aucun moyen de redistribuer la population de la planète pour que
tout le monde soit en même temps dans un tel état. Mais dans
1000 -espace dimensionnel la situation est juste cela.
Inutile de dire qu'il est difficile d'imaginer
1000 -cube dimensionnel, mais nous pouvons avoir une petite compréhension intuitive de la géométrie, au moins pour l'exemple de cinq dimensions. Ci-dessous, un tableau de toutes les coordonnées des sommets dans un cube à cinq dimensions de dimension unitaire, arrangé en fonction de la distance de Hamming du point de départ

. La plupart des pics (20 sur 32) sont à des distances moyennes - deux ou trois bits. Le tableau aurait la même forme à tout autre sommet pris comme point de départ.
Une sérieuse objection à toutes ces discussions.
1000 -Les cubes dimensionnels sont que nous ne pouvons jamais construire quelque chose comme ça; dans l'univers, il n'y a pas assez d'atomes pour la structure de
2 1000 pièces. Mais Kanerva souligne que nous avons besoin d'espaces pour stocker uniquement les éléments que nous voulons stocker. Nous pouvons concevoir des équipements pour un échantillonnage aléatoire, par exemple

sommets (dont chacun a
1000 -bit) et laissez le reste du cube avec une infrastructure fantomatique et inachevée. Kanerva appelle un tel sous-ensemble des sommets qui existe dans les
cellules dures "matérielles"
(emplacements durs) . Beaucoup de

les cellules solides aléatoires présenteront toujours la même distribution de distance compressée qu'un cube complet; c'est exactement ce qui est montré dans le tableau ci-dessus.
L'isolement relatif de chaque sommet dans un cube de grande taille nous donne un indice d'un avantage possible de la mémoire distribuée déchargée: l'élément stocké a suffisamment d'espace et peut être distribué sur une vaste zone sans déranger ses voisins. C'est vraiment une caractéristique exceptionnelle de SDM, mais il y a autre chose.
Dans la mémoire informatique traditionnelle, les adresses et les éléments de données stockés sont mappés un à un. Les adresses sont des entiers ordinaux d'une plage fixe, disons
[ 0 , 2 64 ) . Chaque entier de cette plage définit un seul endroit séparé en mémoire, et chaque endroit est associé à exactement une adresse. De plus, à chaque endroit, une seule valeur est stockée à la fois; lors de l'écriture d'une nouvelle valeur, l'ancienne est écrasée.
SDM viole toutes ces règles. Il a un immense espace d'adressage - pas moins
2 1000 - mais seule une infime fraction aléatoire de ces lieux existe en tant qu'entités physiques; c'est pourquoi la mémoire est appelée
clairsemée . Une seule information n'est pas stockée dans un seul endroit en mémoire; de nombreux exemplaires sont distribués sur la zone - il est donc
distribué . De plus, dans chaque adresse distincte, plusieurs éléments de données peuvent être stockés en même temps. Autrement dit, les informations sont réparties sur une vaste zone et regroupées en un seul point. Cette architecture brouille également la distinction entre les adresses mémoire et les contenus mémoire; dans de nombreux cas, la configuration binaire stockée est utilisée comme sa propre adresse. Enfin, la mémoire peut répondre à une adresse partielle ou approximative et est très susceptible de trouver le bon article. Alors que la mémoire traditionnelle est le «mécanisme de correspondance exacte», SDM est le «meilleur mécanisme de correspondance», renvoyant l'élément le plus similaire à celui demandé.
Dans son livre de 1988, Kanerva fournit une analyse quantitative détaillée de la mémoire distribuée clairsemée avec
1000 mesures et

cellules solides. Les cellules solides sont sélectionnées au hasard dans tout l'espace.
2 1000 vecteurs d'adresse possibles. Chaque cellule solide dispose d'un espace de stockage pour plusieurs
1000 vecteurs de bits. La mémoire dans son ensemble est conçue pour le stockage d'au moins

motifs uniques. Ci-dessous, je considérerai cette mémoire comme un modèle SDM canonique, malgré le fait que selon les normes des mammifères, cela ne suffit pas, et dans un travail plus récent, Kanerva a souligné les vecteurs avec au moins

mesures.
C'est ainsi que la mémoire fonctionne dans une implémentation informatique simple. La commande
store(X)
écrit un vecteur en mémoire
X , le considérant à la fois comme une adresse et un contenu. Valeur
X stocké dans toutes les cellules solides à une certaine distance
X . Dans le modèle canonique, cette distance est de 451 bits. Il définit un «cercle d'accès» destiné à unir en lui-même environ
1000 cellules solides; en d'autres termes, chaque vecteur est stocké approximativement dans

l'une d'un million de cellules solides.
Il est également important de noter que l'élément stocké
X pas nécessairement choisir parmi

vecteurs binaires qui sont des adresses de cellules solides. Au contraire.
X peut être l'un des
2 1000 modèles binaires possibles.
Supposons que mille copies soient déjà écrites dans le SDM
X , après quoi un nouvel élément arrive
Oui , qui doit également être stocké dans son propre ensemble de milliers de cellules solides. Entre ces deux ensembles, il peut y avoir une intersection - les endroits où
X et
Oui . La nouvelle valeur n'écrase ni ne remplace la précédente; les deux valeurs sont enregistrées. Lorsque la mémoire est pleine à sa capacité

chacun d'eux est enregistré
1000 fois, et dans une cellule dure typique, les copies seront stockées

motifs uniques.
Maintenant, la question est: comment utiliser cette mémoire mixte? En particulier, comment obtenir la bonne valeur
X sans affecter
Oui et tous les autres articles qui se sont accumulés dans un seul endroit de stockage?
L'algorithme de lecture utilisera la propriété d'une curieuse distribution des distances dans un espace de grande dimension. Même si
X et
Oui sont les voisins les plus proches de

les modèles stockés, ils différeront très probablement de 420 ou 430 bits; par conséquent, le nombre de cellules solides dans lesquelles les deux valeurs sont stockées est assez faible - généralement quatre, cinq ou six. Il en va de même pour tous les autres motifs se croisant avec
X . Il y en a des milliers, mais aucun des modèles influents n'est présent en plus de quelques exemplaires dans le cercle d'accès
X .
La commande
fetch(X)
doit renvoyer la valeur précédemment écrite par la commande
store(X)
. La première étape de la reconstruction de la valeur consiste à collecter toutes les informations stockées à l'intérieur du cercle d'accès de 451 bits centré sur
X . Depuis
X a déjà été enregistré dans tous ces endroits, nous pouvons être sûrs que nous recevrons
1000 ses copies. Nous nous déplacerons également

des copies d'
autres vecteurs stockés dans des endroits où les cercles d'accès se croisent avec des cercles
X . Mais comme les intersections sont petites, chacun de ces vecteurs n'est présent qu'en quelques exemplaires. Puis généralement chacun d'eux
1000 peu également susceptibles d'être
0 ou
1 . Si nous appliquons la fonction du principe de la majorité à toutes les données collectées à chaque position de bit, le résultat sera dominé par
1000 copies
X . Probabilité de se différencier de
X le résultat est approximativement égal

.
La procédure du principe de la majorité est présentée plus en détail ci-dessous sur un petit exemple de cinq vecteurs de données de 20 bits chacun. La sortie sera un vecteur différent, dont chaque bit reflète la plupart des bits correspondants dans les vecteurs de données. (Si le nombre de vecteurs de données est pair, les "tirages" sont autorisés par sélection aléatoire
0 ou
1 .) Le schéma alternatif d'écriture et de lecture présenté ci-dessous refuse de stocker tous les motifs individuellement. Au lieu de cela, il stocke le nombre total de bits.
0 et
1 dans chaque position. La cellule solide a
1000 compteur de bits initialisé par tous les zéros. Lorsqu'un modèle est écrit en place, chaque compteur de bits est incrémenté pour
1 ou diminue pour
0 . L'algorithme de lecture regarde simplement le signe de chaque compteur de bits, retournant
1 pour une valeur positive,
0 pour une valeur négative et aléatoire lorsque le bit de compteur est égal
0 .
Ces deux schémas de stockage donnent des résultats identiques.
En termes d'informatique, cette version de la mémoire distribuée clairsemée ressemble à une blague mûrement réfléchie. Se souvenir

éléments dont nous avons besoin d'un million de cellules solides, dans lesquelles nous allons stocker un millier de copies redondantes de chaque motif. Pour récupérer un seul élément de la mémoire, nous collectons des données par

modèles enregistrés et appliquer le mécanisme du principe de la majorité pour les démêler. Et tout cela se fait à l'aide d'un tas de manœuvres acrobatiques uniquement pour obtenir le vecteur que nous avons déjà. La mémoire traditionnelle fonctionne beaucoup moins au hasard: les accès en écriture et en lecture au même endroit.
Mais SDM peut faire ce dont la mémoire traditionnelle est incapable. En particulier, il peut extraire des informations sur la base de données partielles ou approximatives. Disons un vecteur
Z est une version endommagée
X dans lequel ont changé

de
1000 vecteurs. Comme les deux vecteurs sont similaires, la commande
fetch(Z)
visitera plusieurs des mêmes endroits où elle est stockée
X .
Avec une distance de Hamming de 100, on peut s'attendre à ce que X et
Z sera partagé par environ 300 cellules solides. Grâce à cette grande intersection, le vecteur est revenu(appelons-lefetch(Z)
Z ′ ) sera plus proche deX ce qui estZ .
Maintenant, nous pouvons répéter ce processus avec une équipe fetch(Z′)
qui retournera le résultatZ ′ ′ , encore plus proche deX .
En quelques itérations, la procédure atteindra X .
Kanerva a montré qu'une séquence convergente d'opérations de lecture récursive réussirait avec une certitude presque totale si le modèle initial n'était pas trop éloigné de la cible. En d'autres termes, il existe un rayon critique: toute vérification de la mémoire, à partir d'un endroit à l'intérieur du cercle critique, convergera presque exactement vers le centre et le fera assez rapidement. Une tentative de restauration d'un élément stocké en dehors du cercle critique échouera, car le processus de rappel récursif s'éloignera à une distance moyenne. L’analyse de Kanerv montre que pour le SDM canonique, le rayon critique est de 209 bits. En d'autres termes, si nous connaissons environ 80% des bits, nous pouvons recréer le motif entier.L'illustration ci-dessous suit l'évolution des séquences de mémoires récursives avec des signaux sources autres que la cible. X sur
0 , 5 , 10 , 15 ... 1000 .
Dans cette expérience, toutes les séquences commençant par la distance 205 ou moins convergent versX pour
ou moins d'itérations (traces bleues) . Toutes les séquences commençant à une distance initiale plus grande errent sans but à travers de vastes espaces videsCube de 1000 dimensions, restant environ 500 bits de n'importe où.La transition des chemins convergents aux chemins divergents n'est pas parfaitement claire, et cela est visible dans le graphique en lambeaux présenté ci-dessous. Ici, nous avons zoomé pour regarder le sort des trajectoires en commençant par les décalages175 , 176 , 177 , ... 225 bits. Tous les points de départ à moins de 209 bits de la cible sont indiqués en bleu; commençant à une distance plus longue sont orange. La plupart des chemins bleus convergent, se déplaçant rapidement vers une distance nulle, contrairement à la plupart des chemins orange. Cependant, à proximité de la distance critique, il existe de nombreuses exceptions.Le graphique ci-dessous montre un autre regard sur la façon dont la distance initiale de la cible affecte la probabilité de convergence vers la bonne adresse mémoire. À une distance de170 bits réussissent dans presque toutes les tentatives; à240 presque tous ont échoué. Il semble que le point d'intersection (où le succès et l'échec sont également probables) se situe à peu près203 bits, légèrement en dessous du résultat de Kanerva, égal à209 .
(Il n'y a rien de mystérieux dans cet écart. Dans les calculs de Kanerv, le cercle d'accès est censé limiter exactement 1000 cellules solides. Toutes les cellules solides à distance sont incluses dans mes expériences.r ≤ 451 ; il y a en moyenne1070 de ces endroits.)
La capacité de recréer des souvenirs à partir d'informations partielles est un élément familier de la vie humaine. Vous remarquez un acteur dans une émission de télévision, et vous comprenez que vous l'avez déjà vu, mais vous ne vous souvenez pas où. Quelques minutes plus tard, il vous apparaît: voici M. Bates de Downton Abbey , mais sans costume de majordome. Réunion des diplômés du secondaire: en regardant un monsieur chauve serré de l'autre côté de la pièce, pouvez-vous le reconnaître comme un ami que vous ne connaissiez que quand vous étiez adolescent en short de sport? Parfois, il faut beaucoup d'efforts pour combler les lacunes. J'ai déjà écrit sur ma propre «tache aveugle» inexplicable en mémoire de la croissance des glycines, que je n'ai pu nommer qu'après avoir patiemment feuilleté un catalogue de fausses odeurs: hortensia, verveine et forsythie.Notre capacité à récupérer des souvenirs d'une entrée incomplète ou bruyante peut-elle fonctionner comme un processus récursif de mémorisation de vecteurs de grande dimension? Ce serait une hypothèse intéressante, mais il y a des raisons de s'en méfier. Par exemple, le cerveau semble être capable d'extraire du sens de signaux beaucoup plus maigres. Je n'ai pas besoin d'écouter les quatre cinquièmes de la "Cinquième Symphonie" pour l'identifier, les quatre premières notes suffisent. La couleur qui scintille dans les arbres vous rappelle instantanément les espèces d'oiseaux correspondantes - cardinal, geai bleu, carduelis. Le moindre souffle avec l'odeur de la poussière de craie me ramène dans une salle de classe étouffante et endormie, dans laquelle j'ai peint pendant une demi-journée à mon bureau. De tels souvenirs sont déclenchés par de minuscules fractions des informations qui les représentent, bien moins de 80%.Kanerva mentionne encore une autre caractéristique de la mémoire humaine qui peut être modélisée à l'aide de SDM: le phénomène de «rotation sur le bout de la langue», dont l'essence est que vous savez que vous savez quelque chose, bien que vous ne puissiez pas l'appeler immédiatement. Ce sentiment est plutôt mystérieux: si vous ne trouvez pas ce que vous cherchiez, comment savoir que tout est stocké dans le cerveau? Le processus de rappel récursif de SDM nous offre une réponse possible. Lorsque des motifs consécutifs récupérés dans la mémoire se rapprochent constamment les uns des autres, nous pouvons raisonnablement être sûrs qu'ils convergeront vers l'objectif avant même qu'ils ne l'atteignent.Dans leurs tentatives d'extraire un fait obstiné de la mémoire, beaucoup de gens trouvent que frapper constamment à la même porte n'est pas une stratégie judicieuse. Au lieu d'exiger des réponses immédiates - pour commander votre cerveau - il vaut souvent mieux mettre la tâche de côté, faire une promenade, peut-être faire une sieste; la réponse peut venir comme si elle n'était pas invitée. Cette observation peut-elle être expliquée par le modèle SDM? Peut-être au moins partiellement. Si la séquence des motifs rappelés ne converge pas, son étude ultérieure peut s'avérer infructueuse. Si vous recommencez à partir d'un point voisin de l'espace mémoire, vous pouvez arriver à un meilleur résultat. Mais il y a un mystère ici: comment trouver un nouveau point de départ avec de meilleures perspectives? Vous pourriez penser qu'il est assez simple de remplacer au hasard quelques bits dans le modèle d'entrée et espéronsqu'en conséquence, il sera plus proche de l'objectif, mais la probabilité que cela soit faible. Si le vecteur est en250 bits de la cible puis750 bits est déjà vrai (mais nous ne savons pastoutde750 bits); avec tout changement aléatoire, nous avons une probabilité de3 / 4 se rapprochent et disparaissent encore plus loin. Pour progresser, vous devez savoir dans quelle direction aller etL' espace à 1000 dimensions est une question difficile.Un aspect de l'architecture SDM est qu'elle semble correspondre à l'effet de la répétition ou de l'écoute de la mémoire. Si vous répétez le poème plusieurs fois ou si vous vous entraînez à jouer un morceau de musique, vous pouvez vous attendre à ce que vous vous en souveniez plus facilement à l'avenir. Le modèle informatique devrait présenter un effet d'entraînement similaire. Mais cela n'est pas possible dans la mémoire informatique traditionnelle: il n'y a aucun avantage à réécrire plusieurs fois la même valeur à la même adresse. Dans SDM, en revanche, chaque répétition d'un motif ajoute une autre copie à toutes les cellules solides dans le cercle d'accès du motif. Par conséquent, il y a moins d'influence des motifs qui se croisent et le rayon de rappel critique augmente. L'effet a un effet significatif:lors de l'écriture dans la mémoire d'une seule copie du motif, le rayon critique augmente d'environ200 bits à plus de300 .
De même, jouer un motif peut rendre difficile la restauration du reste. Cela rappelle d'oublier lorsqu'un motif activement imprimé remplit ses voisins et capture une partie de leur territoire. Cet effet affecte également de manière significative SDM, à tel point qu'il semble même irréaliste. Il semble qu'un vecteur stocké huit ou dix fois monopolise la majeure partie de la mémoire; il devient une obsession, la réponse à toutes les questions.Un avantage important de la mémoire distribuée clairsemée est sa résistance aux pannes ou erreurs matérielles. Je serais contrarié si la perte d'un seul neurone dans mon cerveau laissait un trou dans ma mémoire et je ne pouvais pas reconnaître la lettre gou rappelez-vous comment attacher des lacets. SDM ne souffre pas de cette fragilité. Lorsque chaque motif stocké contient mille copies, aucun endroit n'est important. Et en fait, vous pouvez effacer toutes les informations stockées dans 60% des cellules solides, et avoir toujours le rappel parfait10000 , si nous supposons que nous transmettons une adresse absolument précise en tant que signal. Avec des signaux partiels, le rayon critique diminue à mesure que les taches perdues augmentent. Après avoir détruit 60% des sites, le rayon critique est compressé avec200 + bits à environ150 bits. Après la destruction de 80% des lieux, la mémoire est gravement endommagée, mais pas détruite.Qu'en est-il de flotter dans les nuages? Pouvons-nous errer paresseusement à travers les prairies d'une mémoire clairsemée, sautant par chance d'un modèle stocké à un autre? Je reviendrai sur cette question.
La plupart de ce qui précède est écrit il y a quelques semaines. À cette époque, j'ai lu sur diverses théories concurrentes de la mémoire et discuté de leurs mérites avec des collègues de l'Institut Simons. J'ai écrit mes réflexions sur ce sujet, mais j'ai reporté leur publication en raison de doutes persistants: ai-je bien compris les mathématiques de la mémoire distribuée clairsemée? Maintenant, je suis content de ne pas être pressé.Le programme Brain and Computing s'est terminé en mai. Ses participants sont partis: je suis retourné en Nouvelle-Angleterre, où la sauge et le romarin sont de petites plantes en pot et non des buissons luxuriants suspendus au-dessus des sentiers. Mes promenades matinales vers le campus de Berkeley, les occasions quotidiennes de réfléchir sur la nature de la mémoire et de l'apprentissage, sont devenues des «engrammes» stockés quelque part dans ma tête (cependant, je ne sais toujours pas où les chercher).Cependant, je n'ai pas abandonné ma recherche. Après avoir quitté Berkeley, j'ai continué à lire sur les théories de la mémoire. J'ai également écrit des programmes pour étudier la mémoire distribuée clairsemée de Pentti Canerva et ses idées plus approfondies de «calcul hyperespace». Même si ce projet ne me révèle pas les secrets de la mémoire humaine, il m'apprendra certainement quelque chose sur l'art mathématique et informatique de la navigation dans les espaces de grande dimension.Le schéma ci-dessous montre la manière «correcte» d'implémenter SDM, si je comprends bien. L'élément principal est une matrice croisée, dans laquelle les lignes correspondent à des cellules de mémoire solide, et les colonnes transportent des signaux qui simulent des bits individuels du vecteur d'entrée. Il y a un million de lignes dans la mémoire canonique, chacune étant assignée au hasardAdresse 1000 bits, et1000 colonnes Cette version de démonstration comprend 20 lignes et 8 colonnes.Le processus illustré dans le diagramme consiste à stocker un vecteur d'entrée dans une mémoire vide. Huit bits d'entrée sont comparés simultanément aux 20 adresses des cellules solides. Lorsque le bit d'entrée et le bit d'adresse coïncident - zéro avec zéro ou un avec un - nous mettons un point à l'intersection de la colonne et de la ligne. Ensuite, nous comptons le nombre de points dans chaque ligne, et si le nombre est égal ou supérieur à la valeur de seuil, alors nous écrivons le vecteur d'entrée dans le registre associé à cette ligne (champs bleus) . Dans notre exemple, la valeur seuil est 5 et dans 8 adresses sur 20, il y a au moins 5 correspondances. DansLa valeur du seuil de mémoire de 1000 bits sera égale451 , et seulement environ un millième de tous les registres seront sélectionnés.La magie de cette architecture est que toutes les comparaisons de bits - et il y en a un milliard dans le modèle canonique - se produisent simultanément. Par conséquent, le temps d'accès pour la lecture et l'écriture ne dépend pas du nombre de cellules solides et peut être très petit. Une telle disposition générale, connue sous le nom de mémoire associative ou d'adressage de contenu, est utilisée dans certains domaines informatiques, comme l'activation de détecteurs de particules dans le grand collisionneur de hadrons et la transmission de paquets via des routeurs sur Internet. Et le schéma de circuit peut être associé à certaines structures cérébrales. Kanerva indique que le cervelet est très similaire à une telle matrice. Les lignes sont des cellules de Purkinje plates en forme d'éventail, rassemblées comme les pages d'un livre; les colonnes sont des fibres parallèles qui s'étendent à travers toutes les cellules de Purkinje. (Cependant, le cervelet n'est pas une région du cerveau des mammifères,où l'on pense que la mémoire cognitive est située.)Ce serait formidable de construire une simulation SDM basée sur cette architecture croisée; Malheureusement, je ne sais pas comment l'implémenter sur le matériel informatique à ma disposition. Dans un processeur traditionnel, il n'existe aucun moyen de comparer simultanément tous les bits d'entrée avec des bits de cellule dure. Au lieu de cela, je dois parcourir un million de cellules solides en séquence et comparer des milliers de bits à chaque endroit. Cela équivaut à un million de comparaisons de bits pour chaque élément qui est stocké ou récupéré de la mémoire. Ajoutez à cela le temps d'écrire ou de lire un million de bits (milliers d'exemplairesVecteur 1000 bits), et vous obtenez un processus assez lent. Voici le code pour enregistrer le vecteur: function store(v::BitVector) for loc in SDM if hamming_distance(v, loc.address) <= r write_to_register!(loc.register, v) end end end
Cette implémentation prend environ une heure pour inventorier la mémoire avec 10 000 motifs mémorisés. (Le programme complet sous la forme d'un bloc-notes Jupyter est disponiblesur GitHub.)Existe-t-il un meilleur algorithme pour simuler SDM sur un matériel ordinaire? Une des stratégies possibles permet d'éviter la recherche répétée d'un ensemble de cellules solides dans le cercle d'accès d'un vecteur donné; au lieu de cela, lorsqu'un vecteur est écrit pour la première fois dans la mémoire, le programme stocke un pointeur sur chacun des milliers d'endroits où il est stocké. À l'avenir, avec toute référence au même vecteur, le programme pourra suivre1000 pointeurs enregistrés, et ne pas scanner l'intégralité du tableau d'un million de cellules solides. Le prix de ce schéma de mise en cache est la nécessité de stocker tous ces pointeurs - dans leur SDM canonique
des millions. Ceci est tout à fait réel et peut valoir la peine si vous souhaitez stocker et récupérer uniquement les valeurs exactes et connues. Mais pensez à ce qui se passe en réponse à une demande de mémoire approximative avec rappel récursifZ ′ et
Z ′ ′ et
Z ′ ′ ′ , et ainsi de suite.
Aucune de ces valeurs intermédiaires ne sera trouvée dans le cache, donc une analyse complète de toutes les cellules solides sera toujours requise.Il existe peut-être un moyen plus délicat de tracer le chemin. Dans un récent article de revue, " Approximate Nearest Neighbour Search in High Dimensions " par Alexander Andoni, Peter Indyk et Ilya Razenstein, une technique intrigante est mentionnée appelée hachage sensible à la localité (hachage basé sur la localité), mais jusqu'à présent, je ne comprends pas très bien comment l'adapter à la tâche SDM.
La capacité de récupérer des souvenirs à partir de signaux partiels est douloureusement une caractéristique humaine du modèle de calcul. Peut-être qu'il peut être élargi pour fournir un mécanisme plausible d'errance oisive dans les couloirs de l'esprit, dans lequel une pensée mène à la suivante.Au début, je pensais savoir comment cela pouvait fonctionner. Modèle stocké SDMX crée une zone d'attraction autour d'elle dans laquelle converge toute étude récursive de la mémoire à partir d'un rayon critique versX .
À 10000 de ces attracteurs, je peux imaginer comment ils divisent l'espace mémoire en une matrice de modules individuels comme une mousse à bulles de savon de grande taille. La zone de chaque élément stocké occupe un volume séparé, entourée de tous les côtés par d'autres zones et en butée contre elles, avec des limites claires entre les domaines adjacents. À l'appui de cette proposition, je peux voir que le rayon moyen de la région d'attraction, lorsque de nouveaux contenus sont ajoutés à la mémoire, est compressé, comme si les bulles étaient compressées en raison de l'encombrement.Une telle vision des processus à l'intérieur du SDM suggère un moyen simple de passer d'un domaine à un autre: vous devez basculer au hasard un nombre suffisant de bits du vecteur pour le déplacer de l'attraction actuelle vers l'attraction voisine, puis appliquer l'algorithme de rappel récursif. La répétition de cette procédure générera une traversée aléatoire de nombreux sujets stockés en mémoire.Le seul problème est que cette approche ne fonctionne pas. Si vous le vérifiez, alors il errera sans butGrille 1000 dimensions, mais nous n'y trouverons jamais rien. L'ensemble du plan est basé sur une compréhension intuitive erronée de la géométrie SDM. Les vecteurs stockés avec leurs régions d'attractionnesontpasserrés comme des bulles de savon; au contraire, ce sont des galaxies isolées suspendues dans un univers vaste et libre, séparées par d'immenses étendues d'espace vide entre elles. De brefs calculs nous montrent la vraie nature de la situation. Dans le modèle canonique, le rayon critique déterminant la région d'attraction est approximativement égal à200 .
Le volume d'une seule région, mesuré par le nombre de vecteurs à l'intérieur, estsum200k=1(1000k)
qui est à peu près égal 10216 .
Par conséquent, tous 10000 les zones occupent le volume 10220 .
C'est un grand nombre, mais c'est encore une toute petite fraction 1000-Cube dimensionnel. Parmi tous les sommets du cube, seulement1 de
1080se trouve à moins de 200 bits du modèle enregistré. Vous pouvez vous promener pour toujours sans tomber sur aucun de ces domaines.(Pour toujours? Oh, oui, oui, cela peut ne pas être éternel. Puisqu'un hypercube est une structure finie, tout chemin à travers elle doit tôt ou tard devenir périodique, ou tomber dans un point fixe d'où il ne part jamais, ou se perdre dans un cycle répétitif Les vecteurs stockés sont des points fixes, en plus, il y a beaucoup d'autres points fixes qui ne correspondent à aucun schéma significatif. Quoi qu'il en soit, dans toutes mes expériences avec les programmes SDM, je n'ai jamais réussi à "accidentellement" entrer dans une pat enregistrée tourner.)En essayant de sauver cette mauvaise idée, j'ai mené plusieurs autres expériences. Dans un cas, j'ai sauvegardé arbitrairement plusieurs concepts liés à des adresses voisines («voisin», c'est-à-dire à 200 ou 300 bits). Peut-être que dans ce cluster, je peux sauter d'un point à un autre en toute sécurité. Mais en fait, l'ensemble de la grappe est condensé en une grande région d'attraction pour le motif central, qui devient un trou noir qui aspire tous ses compagnons. J'ai aussi essayé de jouer avec la valeurr(rayon du cercle d'accès pour toutes les opérations de lecture et d'écriture). Dans le modèle canoniquer=451 .
Je pensais qu'écrire dans un cercle légèrement plus petit ou lire dans un cercle légèrement plus grand laisserait suffisamment de place au hasard dans les résultats, mais cet espoir ne s'est pas non plus matérialisé.Toutes ces tentatives étaient basées sur une mauvaise compréhension des espaces vectoriels de grande dimension. Une tentative pour trouver des grappes de valeurs voisines dans un hypercube est sans espoir; les motifs stockés sont trop espacés en volume. La création arbitraire de grappes denses est également inutile, car elle détruit la propriété même qui rend le système intéressant - la capacité de converger vers un élément stocké de n'importe où dans la zone d'attraction environnante. Si nous voulons créer un algorithme d'errance dans le cloud pour SDM, nous devons trouver une autre manière.
À la recherche d'un mécanisme alternatif du flux de conscience, vous pouvez essayer d'ajouter une petite théorie des graphes au monde de la mémoire répartie clairsemée. Ensuite, nous pouvons prendre du recul, revenir à l'idée originale de l'errance mentale sous la forme d'une marche aléatoire autour d'un graphique ou d'un réseau. L'élément clé pour l'intégration de tels graphiques dans SDM s'avère être un outil familier pour nous: un opérateur OU exclusif.Comme mentionné ci-dessus, la distance de Hamming entre deux vecteurs est calculée en prenant leur XOR au niveau du bit et en comptant les unités résultantes. Mais l'opération XOR donne non seulement la distance entre deux vecteurs, mais aussi d'autres informations; il détermine également l'orientation ou la direction de la ligne qui les relie. En particulier, l'opérationu⊻v donne un vecteur listant les bits qui doivent être modifiés pour convertir u dans
vet vice versa. Peut également être perçu1 et
0 dans le vecteur XOR comme une séquence de directions que vous devez suivre pour suivre le chemin depuis u avant
v .
XOR a toujours été mon préféré de toutes les fonctions booléennes. C'est un opérateur de différence, mais contrairement à la soustraction, XOR est symétrique:u⊻v=v⊻u .
De plus, XOR est sa propre fonction inverse. Ce concept est facile à comprendre avec des fonctions avec un seul argument:f(x) est sa propre fonction inverse si f(f(x))=x, c'est-à-dire qu'après avoir appliqué la fonction deux fois, nous pouvons revenir à notre point de départ. Pour une fonction avec deux arguments, comme XOR, la situation est plus compliquée, mais il est toujours vrai que l'exécution de la même action deux fois restaure l'état d'origine. En particulier, siu⊻v=w alors u⊻w=v et
v⊻w=u .
Trois vecteurs - u ,
v et
w- créez un petit univers fermé. Vous pouvez appliquer l'opérateur XOR à n'importe quelle paire d'entre eux et obtenir le troisième élément de l'ensemble. Ce qui suit est une tentative d'illustrer cette idée. Chaque carré imite10000vecteur de bits aligné sous forme de tableau 100 x 100 de pixels clairs et sombres. Les trois modèles semblent aléatoires et indépendants, mais en fait, chaque panneau est XOR des deux autres. Par exemple, dans le carré le plus à gauche, chaque pixel rouge correspond au vert ou au bleu, mais jamais aux deux.La propriété d'auto-invertibilité nous indique une nouvelle façon d'organiser les informations dans SDM. Supposons que le mot papillon et son homologue français papillon soient stockés dans des vecteurs arbitraires et aléatoires. Ils ne seront pas proches les uns des autres; la distance entre eux est susceptible d'être d'environ 500 bits. Maintenant, nous calculons le XOR de ces vecteurs papillon ⊻ papillon ; le résultat est un autre vecteur qui peut également être enregistré dans SDM. Ce nouveau vecteur code une connexion anglais-français . Nous avons maintenant un outil de traduction. Ayant un vecteur pour papillon , nous effectuons un XOR pour celui-ci avec le vecteur anglais-français et obtenons papillon . La même astuce fonctionne dans la direction opposée.Cette paire de mots et la connexion entre eux forment le cœur du réseau sémantique. Augmentons-le un peu. Nous pouvons enregistrer le mot chenille dans une adresse arbitraire , puis calculer le papillon ⊻ chenille et appeler cette nouvelle relation adulte-jeune . Comment s'appelle chenille en français ? La chenille en français est chenille . Nous ajoutons ce fait au réseau en stockant la chenille chez chenille ⊻ Anglais-français . Il est maintenant temps pour la magie: si nous prenons papillon ⊻ chenille , nous apprenons que ces mots sont liés par une relation adulte-jeune , même s'ils ne l'indiquent pas explicitement. Cette limitation est imposée par la géométrie de la structure elle-même.Le graphique peut être développé davantage en ajoutant plus de mots apparentés anglais-français ( chien-chien, cheval-cheval ) ou plus de couples adultes-jeunes: ( chien-chiot, jeune arbre ). Vous pouvez également explorer de nombreuses autres relations: synonymes, antonymes, frères et sœurs, cause-effet, prédateur-proie, etc. Il existe également un excellent moyen de joindre plusieurs événements dans une séquence chronologique en exécutant simplement XOR sur les adresses du prédécesseur et du successeur du nœud.La façon dont XOR connecte les concepts est un hybride de géométrie et de théorie des graphes. Dans la théorie mathématique des graphes ordinaires, les distances et les directions ne sont pas significatives; la seule chose qui compte est la présence ou l'absence de bords de connexion entre les nœuds. En SDM, en revanche, une arête représentant une connexion entre des nœuds est un vecteur de longueur finie et de directivité dans1000-espace dimensionnel. Pour un nœud et un lien donnés, l'opération XOR «lie» ce nœud à une position spécifique ailleurs dans l'hypercube. La structure résultante est absolument rigide - nous ne pouvons pas déplacer le nœud sans changer toutes les connexions auxquelles il participe. Dans le cas des papillons et des chenilles, une configuration de quatre nœuds se révèle inévitablement être un parallélogramme, où les paires de côtés opposés ont la même longueur et la même direction.Une autre caractéristique unique d'un graphe associé à une opération XOR est que les nœuds et les arêtes ont exactement la même représentation. Dans la plupart des implémentations informatiques d'idées issues de la théorie des graphes, les deux entités sont très différentes; un nœud peut être une liste d'attributs, et un bord peut être une paire de pointeurs vers les nœuds connectés par lui. Dans SDM, les nœuds et les bords sont simplement des vecteurs de grande dimension qui peuvent être stockés dans le même format.Lorsqu'elle est utilisée comme modèle de mémoire humaine, la liaison XOR nous donne la possibilité de connecter deux concepts via n'importe quelle connexion à laquelle nous pouvons penser. De nombreuses connexions dans le monde réel sont asymétriques; ils n'ont pas la propriété d'auto-invertibilité de XOR. Le vecteur XOR peut déclarer qu'Edward et Victoria sont le parent et l'enfant, mais ne dit pas qui est qui. Pire encore, le vecteur XOR relie exactement deux nœuds et plus jamais, donc le parent de plusieurs enfants nous met dans une position désagréable. Une autre difficulté est de maintenir l'intégrité de toutes les branches d'un grand graphique entre elles. Nous ne pouvons pas simplement ajouter arbitrairement des nœuds et des arêtes; ils doivent être attachés au graphique dans le bon ordre. L'insertion d'un stade nymphal entre un papillon et une chenille nécessitera la réécriture de la plupart des motifs;vous devrez déplacer plusieurs nœuds vers de nouveaux endroits à l'intérieur de l'hypercube et recalculer les vecteurs de connexion les reliant, tout en vous assurant que chaque changement du côté de la langue anglaise se reflète correctement sur le français.Certains de ces problèmes sont résolus dans une autre technique basée sur XOR que Kanerva appelle le regroupement. L'idée est de créer une sorte de base de données pour stocker les paires attribut-valeur. Une entrée de livre peut avoir des attributs tels que l' auteur , le titre et l' éditeur, chacun étant associé à une valeur correspondante. La première étape du regroupement de données est un XOR distinct de chaque paire attribut-valeur. Ensuite, les vecteurs obtenus à partir de ces opérations sont combinés pour créer un seul vecteur de synthèse en utilisant le même algorithme décrit ci-dessus pour stocker plusieurs vecteurs dans une cellule SDM solide. En effectuant le XOR du nom d'attribut avec ce vecteur combiné, nous obtenons une approximation de la valeur correspondante suffisamment proche pour la déterminer par la méthode de rappel récursif. Dans des expériences avec le modèle canonique, j'ai trouvé que1000 Un vecteur binaire peut stocker six ou sept paires attribut-valeur sans grand risque de confusion.La reliure et le regroupement ne sont pas mentionnés dans le livre de 1988 de Kanerva, mais il en parle en détail dans de nouveaux articles. (Voir la section «Lecture supplémentaire» ci-dessous.) Cela indique qu'avec ces deux opérateurs, de nombreux vecteurs de haute dimension prennent la structure d'un champ algébrique, ou au moins l'approximation d'un champ. Un exemple canonique d'un champ est un ensemble de nombres réels au lieu des opérations d'addition et de multiplication, ainsi que leurs opérateurs inverses. Les nombres réels créent un ensemble fermé sous ces opérations: l'addition, la soustraction, la multiplication ou la division de deux nombres réels donne un autre nombre réel (à l'exception de la division par zéro, qui est toujours un farceur dans le jeu). De même, l'ensemble des vecteurs binaires est fermé pour la liaison et le regroupement, saufque parfois, afin de restaurer un membre d'un ensemble, le résultat extrait du vecteur de bande doit être «effacé» par le processus de rappel récursif.
La liaison et le regroupement peuvent-ils nous aider à obtenir un algorithme d'errance dans le cloud? Ils nous donnent des outils de base pour naviguer dans un graphe sémantique, y compris la possibilité d'effectuer une traversée aléatoire. À partir de n'importe quel nœud du graphe XOR connecté, l'algorithme de parcours aléatoire sélectionne parmi tous les liens disponibles dans cette piqûre. Un choix aléatoire du vecteur de communication et de l'exécution XOR de ce vecteur avec l'adresse du nœud nous conduit à un autre nœud où la procédure peut être répétée. De même, dans les paires «attribut-valeur» du regroupement, un attribut sélectionné au hasard appelle la valeur correspondante, qui devient le prochain nœud à étudier.Mais comment un algorithme sait-il quelles relations ou quels algorithmes sont disponibles pour la sélection? Les relations et les attributs sont représentés sous forme de vecteurs et sont stockés en mémoire comme tous les autres objets, il n'y a donc aucun moyen évident d'obtenir ces vecteurs à moins de savoir ce qu'ils sont réellement. Nous ne pouvons pas dire la mémoire de "montrez-moi toutes les connexions." Nous pouvons seulement montrer le motif et demander «existe-t-il un tel vecteur? Avez-vous vu quelque chose comme ça? "Dans la mémoire informatique traditionnelle, nous pouvons obtenir un vidage de la mémoire: accédez à toutes les adresses et affichez la valeur trouvée à chaque endroit. Mais pour la mémoire distribuée, il n'y a pas une telle procédure. Ce fait déprimant m'a été donné avec difficulté. Lors de la construction du modèle de calcul SDM, j'ai réussi à devenir suffisamment bon pour avoir la possibilité de stocker plusieurs milliers de modèles générés aléatoirement dans ma mémoire. Mais je n'ai pas pu les extraire car je ne savais pas quoi demander. La solution était de créer une liste distincte en dehors du SDM lui-même, dans laquelle tout ce que j'enregistrer serait écrit. Mais l'hypothèse que le cerveau aurait gardé à la fois la mémoire et l'index de cette mémoire semble farfelue. Pourquoi ne pas simplement utiliser un index, car c'est tellement plus facile?En raison de cette limitation, il semble que la mémoire distribuée clairsemée soit équipée pour servir les sens, mais pas l'imagination. Il peut reconnaître des modèles familiers et en enregistrer de nouveaux qui seront reconnus lors de futures réunions, même à partir de signaux partiels ou endommagés. Grâce à la liaison ou au regroupement, la mémoire peut également suivre les liens entre des paires d'éléments stockés. Mais tout ce qui est écrit en mémoire ne peut être récupéré qu'en transmettant un signal approprié.Quand je regarde l' affiche Graduate , je vois Dustin Hoffman regarder la jambe d'Anne Bancroft en bas. Ce stimulus visuel excite des sous-ensembles de neurones dans le cortex cérébral, correspondant à mes souvenirs d'acteurs, de personnages, d'intrigue, de bande sonore et de 1967. Toute cette activité cérébrale peut être expliquée par l'architecture de la mémoire SDM, si nous supposons que des sous-ensembles de neurones peuvent être représentés sous une forme abstraite comme de longs vecteurs binaires aléatoires. Mais on ne peut pas expliquer aussi facilement le fait que je peux provoquer toutes les mêmes sensations dans le cerveau sans voir cette image. Comment puis-je extraire spécifiquement ces longues séquences aléatoires d'une énorme imbrication de vecteurs, sans savoir exactement où ils se trouvent?
Ceci conclut mon long voyage - une note de doute et de déception. Cela ne vous surprend guère que je ne sois pas parvenu à l'essentiel. C'est un sujet très complexe.Le tout premier jour du programme Brain and Computing au Simons Institute, Jeff Lichtman, qui a travaillé sur le traçage des circuits dans le cerveau des souris, a posé la question: les neurosciences ont-elles déjà atteint le moment Watson-Crick? En génétique moléculaire, nous avons atteint le point où nous avons pu retirer un brin d'ADN d'une cellule vivante et y lire de nombreux messages. Nous pouvons même enregistrer nos propres messages et les réinsérer dans le corps. Une capacité similaire en neuroscience serait d'étudier les tissus cérébraux et de lire les informations qui y sont stockées - connaissances, souvenirs, visions du monde. Peut-être pourrions-nous même écrire des informations directement dans le cerveau.La science n'a même pas réussi à atteindre cet objectif, à la joie de beaucoup. Y compris moi: je ne veux pas que mes pensées soient aspirées de ma tête à travers des électrodes ou des pipettes et remplacées par #fakenews. Cependant, je veux vraiment savoir comment fonctionne le cerveau.Le programme de l'Institut Simons m'a aveuglé avec le récent succès des neurosciences, mais il m'a aussi fait réaliser qu'une des questions les plus sérieuses reste sans réponse. Les projets de connectivité de Lichtmann et d'autres créent une carte détaillée de millions de neurones et de leurs connexions. De nouvelles techniques d'enregistrement nous permettent d'écouter les signaux émis par les neurocytes individuels et de suivre les vagues d'excitation à travers de vastes zones du cerveau. Nous avons un catalogue assez complet de types de neurones et nous en savons beaucoup sur leur physiologie et leur biochimie. Tout cela est impressionnant, mais il reste des énigmes. Nous pouvons enregistrer des signaux neuronaux, mais pour la plupart, nous ne savons pas ce qu'ils signifient. Nous ne savons pas comment les informations sont encodées et stockées dans le cerveau. Cela revient à essayer de comprendre le schéma de circuit d'un ordinateur numérique sans connaître l'arithmétique binaire et la logique booléenne.Le modèle de mémoire distribuée clairsemée de Pentti Canerva est une tentative pour combler certaines de ces lacunes. Ce n'est pas la seule tentative de ce genre. Une alternative mieux connue est l'approche de John Hopfield - le concept d'un réseau de neurones en tant que système dynamique, prenant la forme d'un attracteur minimisant l'énergie. Ces deux idées ont des principes de base communs: l'information est dispersée sur un grand nombre de neurones et encodée sous une forme qui n'est pas évidente pour un observateur externe, même lui aura accès à tous les neurones et aux signaux qui les traversent. Des schémas similaires, qui sont essentiellement mathématiques et informatiques, sont conceptuellement situés entre la psychologie de haut niveau et l'ingénierie neuronale de bas niveau. Cette couche contient la valeur.Lecture complémentaireHopfield, JJ (1982). Neural networks and physical systems with emergent collective computational abilities.
Proceedings of the National Academy of Sciences 79(8):2554–2558.
Kanerva, Pentti. 1988.
Sparse Distributed Memory . Cambridge, Mass.: MIT Press.
Kanerva, Pentti. 1996. Binary spatter-coding of ordered
K -tuples. In C. von der Malsburg, W. von Seelen, JC Vorbruggen and B. Sendhoff, eds.
Artificial Neural Networks—ICANN 96 Proceedings , pp. 869–873. Berlin: Springer.
Kanerva, Pentti. 2000. Large patterns make great symbols: An example of learning from example. In S. Wermter and R. Sun, eds.
Hybrid Neural Systems , pp. 194–203. Heidelberg: Springer.
PDFKanerva, Pentti. 2009. Hyperdimensional computing: An introduction to computing in distributed representation with high-dimensional random vectors.
Cognitive Computation 1(2):139–159.
PDFKanerva, Pentti. 2010. What we mean when we say “What's the Dollar of Mexico?”: Prototypes and mapping in concept space. Report FS-10-08-006, AAAI Fall Symposium on Quantum Informatics for Cognitive, Social, and Semantic Processes.
PDFKanerva, Pentti. 2014. Computing with 10,000-bit words. Fifty-second Annual Allerton Conference, University of Illinois at Urbana-Champagne, October 2014.
PDF Plate, Tony. 1995. Holographic reduced representations. IEEE Transactions on Neural Networks 6(3):623–641. PDF
Plate, Tony A. 2003. Holographic Reduced Representation: Distributed Representation of Cognitive Structure . Stanford, CA: CSLI Publications.