Cubo de 1000 dimensiones: ¿es posible crear un modelo computacional de la memoria humana hoy?

imagen

Esta mañana, de camino al campus de Berkeley, pasé los dedos por las hojas de un fragante arbusto y luego inhalé el olor familiar. Hago esto todos los días, y todos los días la primera palabra que aparece en mi cabeza y saluda con la mano es sabia . Pero sé que esta planta no es salvia, sino romero, así que le ordeno que se calme. Pero muy tarde. Después del romero y la salvia, no puedo evitar la aparición de perejil y tomillo en el escenario, después de lo cual aparecen las primeras notas de la melodía y la cara en la portada del álbum, y ahora estaba de regreso a mediados de la década de 1960, con una camisa con pepinos Mientras tanto, el romero muestra una brecha de 13 minutos en la memoria de Rose Mary Woods (aunque ahora , después de consultar con la memoria colectiva, sé que debería ser Rose Mary Woods y un espacio de 18 minutos y medio ). Desde Watergate, salto a las historias en la página principal. Luego noto en un jardín bien cuidado otra planta con hojas esponjosas de color verde grisáceo. Esto tampoco es salvia, sino un limpiador (oreja de cordero). Sin embargo, el sabio finalmente obtiene su momento de gloria. De pastos, paso al software matemático Sage , y luego al sistema de defensa aérea de los años 50 llamado SAGE , el Semi-Automatic Ground Environment, que fue administrado por la computadora más grande jamás construida.

En psicología y literatura, tales divagaciones mentales se llaman la corriente de la conciencia (el autor de esta metáfora es William James). Pero elegiría una metáfora diferente. Mi conciencia, por lo que siento, no fluye suavemente de un tema a otro, sino que revolotea a través del paisaje de los pensamientos, más como una mariposa que un río, a veces clavada en una flor y luego a otra, a veces arrastrada por ráfagas, a veces visitando El mismo lugar una y otra vez.

Para explorar la arquitectura de mi propia memoria, intenté realizar un experimento más relajado con asociaciones libres. Comencé con la misma receta floral: perejil, salvia, romero y tomillo, pero para este ejercicio no paseé por los jardines de las colinas de Berkeley; Me senté a la mesa y tomé notas. El diagrama a continuación es el mejor intento de reconstruir el curso completo de mis pensamientos.


perejil, salvia, romero, tomillo: cuatro hierbas, así como una línea de la canción Simon and Garfunkel.

Simon y Garfunkel: Paul Simon y Art Garfunkel, un dúo de cantantes del género folk rock de los años sesenta y setenta.

Señora Robinson es una canción de Simon y Garfunkel, así como un personaje de la película de Mike Nichols "The Graduate".

"¿Dónde has ido, Joe DiMaggio?" - la pregunta hecha en "Sra. Robinson ".

Simon and Schuster es una editorial fundada en 1924 por Richard Simon y Max Schuster (originalmente para publicar crucigramas).

Jackie Robinson es el legendario jugador de los Brooklyn Dodgers.

Robinson Crusoe - Novela de Daniel Defoe sobre los náufragos (1719).

Familia suiza Robinsons - Novela de Johan David Weiss sobre el naufragio (1812).

hierbas - plantas aromáticas

Señor Wizard es un espectáculo de ciencia de los sábados de los años 50 para niños organizado por Don Herbert.

Alpert - trompetista Escudo de armas de Alpert.

Plásticos es el consejo profesional sugerido por The Graduate.

coo-coo-ca-choo - línea de "Mrs. Robinson ".

Frank Robinson es jardinero en los Orioles de Baltimore en la década de 1970.

Greig Nettles es el tercer jugador de béisbol de los Yankees de Nueva York en la década de 1970.

Dustin Hoffman es un actor que jugó en The Graduate.

Abby Hoffman - "¡Yipee!"

Leominster es una ciudad en Massachusetts que se ha convertido en la cuna de la fabricación de plásticos en los Estados Unidos.

Brooks Robinson es el tercer jugador de béisbol de los Orioles de Baltimore en la década de 1970.

Papillon ("The Moth") - una película de 1973 en la que Dustin Hoffman desempeñó un papel secundario; "Papillon" en francés, "mariposa".

Nabokov - Vladimir Nabokov, escritor nacido en Rusia y entomólogo que estudia mariposas.

mariposa, Schmetterling, mariposa, farfalla - "mariposa" en inglés, alemán, español e italiano; parece que todos ellos (y la palabra francesa también) son de origen independiente.

Cómo se llama la mariposa en ruso, no lo sé. O no sabía cuándo surgió esta pregunta.

"I am the Walrus" es una canción de los Beatles de 1967 que también tiene la frase "coo-coo-ca-choo".

Carly Simon es una cantante. No tiene conexión con Paul Simon, pero es hija de Richard Simon.

"Eres tan vanidoso" es una canción de Carly Simon.

El gráfico de arriba hacia abajo representa los temas en el orden en que aparecen en el cerebro, pero las conexiones entre los nodos no crean una secuencia lineal única. La estructura se asemeja a un árbol con cadenas cortas de asociaciones sucesivas, que termina con un fuerte retorno a un nodo anterior, como si una banda elástica me tirara hacia atrás. Dichas interrupciones están marcadas en el gráfico con flechas verdes; la X roja a continuación es el lugar donde decidí completar el experimento.

Pido disculpas a los nacidos después de 1990, muchos de los temas mencionados pueden parecerle obsoletos o misteriosos. Las explicaciones se presentan debajo del gráfico, pero no creo que aclaren las asociaciones. Al final, los recuerdos son personales, viven dentro de la cabeza. Si desea recopilar una colección de ideas que sean relevantes para su propia experiencia, solo necesita crear su propio programa de asociaciones gratuitas. Recomiendo encarecidamente hacer esto: puede descubrir que no sabía que sabía algo.



El objetivo de mi caminata diaria cuesta abajo en Berkeley es el Instituto Simons y el Curso de teoría computacional, en el que participo en un programa de un semestre sobre cerebro y computación. Tal ambiente plantea pensamientos de pensamientos. Comencé a reflexionar: ¿cómo podemos construir un modelo computacional del proceso de asociación libre? Entre las diversas tareas propuestas para resolver mediante inteligencia artificial, esta parece bastante simple. No hay necesidad de una racionalización profunda; todo lo que necesitamos para simular es soñar despierto y deambular en las nubes: esto es lo que hace el cerebro cuando no está cargado. Parece que tal tarea es fácil de resolver, ¿no?

La primera idea que me viene a la cabeza (al menos a mi cabeza) con respecto a la arquitectura de dicho modelo computacional es el movimiento aleatorio a lo largo de una red o gráfico matemático. Los nodos de red son elementos almacenados en la memoria (ideas, hechos, eventos) y las comunicaciones son varios tipos de asociaciones entre ellos. Por ejemplo, un nodo de mariposa se puede conectar con una polilla, una oruga, una monarca y una madreperla, así como con las transiciones mencionadas en mi programa, y ​​posiblemente tener conexiones menos obvias, por ejemplo , el rastreo australiano "," Camarones "," Mohammed Ali "," pelagra "," asfixia " y " miedo escénico " . La estructura de datos del host contendrá una lista de punteros a todos estos hosts relacionados. Los punteros pueden numerarse del 1 al n; el programa generará un número pseudoaleatorio en este intervalo e irá al nodo correspondiente, en el que comenzará todo el procedimiento nuevamente.

Este algoritmo refleja algunas características básicas de las asociaciones libres, pero muchas de ellas no se tienen en cuenta. El modelo supone que todos los nodos objetivo son igualmente probables, lo que parece inverosímil. Para tener en cuenta la diferencia en las probabilidades, podemos preguntar a cada borde yo peso w i , y luego hacer las probabilidades proporcionales a los pesos.

Aún más complicado es el hecho de que los pesos dependen del contexto, de la historia reciente de la actividad mental humana. Si no tuviera una combinación de señora Robinson y Jackie Robinson, ¿pensaría en Joe Di Maggio? Y ahora, cuando escribo esto, Joltin 'Joe (apodo Di Maggio) recuerda a Marilyn Monroe y luego a Arthur Miller, y nuevamente no puedo detener el flujo de pensamiento. Para reproducir este efecto en un modelo de computadora, se requerirá algún mecanismo de regulación dinámica de las probabilidades de categorías enteras de nodos dependiendo de qué otros nodos hayan sido visitados recientemente.

También debe considerar los efectos de la novedad de un tipo diferente. Se debe encontrar una banda elástica en el modelo, que constantemente me atrae hacia Simon, Garfunkel y la Sra. Robinson Probablemente, cada sitio visitado recientemente debe agregarse a la lista de opciones de destino, incluso si no está conectado de ninguna manera con el sitio actual. Por otro lado, la adicción también es una posibilidad: con demasiada frecuencia los pensamientos recordados se vuelven aburridos, por lo tanto, deben ser suprimidos en el modelo.

Otra prueba final: algunos recuerdos no son hechos o ideas aisladas, sino partes de la historia. Tienen una estructura narrativa con eventos que se desarrollan en orden cronológico. Para los nodos de tales recuerdos episódicos, se requiere el borde siguiente , y posiblemente anterior . Tal cadena de costillas une toda nuestra vida, incluido todo lo que recuerdas.



¿Puede un modelo computacional similar reproducir mis divagaciones mentales? La recopilación de datos para un modelo de este tipo será un proceso bastante largo, y esto no es sorprendente, porque me llevó toda una vida llenar mi cráneo con entretejidos de hierbas, escudos de armas, Simons, Robinsons y Hoffmanns. Mucho más que la cantidad de datos, me importa la minuciosidad del algoritmo transversal del gráfico. Es muy fácil decir: "elija un nodo de acuerdo con el conjunto de probabilidades ponderadas", pero cuando miro los detalles sucios de la implementación de esta acción, apenas puedo imaginar que algo así ocurra en el cerebro.

Aquí está el algoritmo más simple que conozco para la selección ponderada aleatoria. (Este no es el más eficiente de estos algoritmos, pero los métodos son aún más caóticos. Keith Schwartz escribió un excelente tutorial y revisión sobre este tema). Suponga que una estructura de datos que simula un nodo de red incluye una lista de enlaces a otros nodos y una lista correspondiente de pesos . Como se muestra en la figura a continuación, el programa genera una cantidad de sumas de pesos acumuladas: 0 , w 1 , w 1 + w 2 , w 1 + w 2 + w 3 , p u n t o s  . El siguiente paso es normalizar esta serie dividiendo cada número por la suma total de los pesos. Ahora tenemos una serie de números. p i aumentando monotónicamente de cero a la unidad. Luego, el programa selecciona un número real aleatorio x del intervalo [ 0 , 1 ) ; x debe estar en uno de los intervalos normalizados p i y este valor yo define el siguiente nodo seleccionable.


En el código del lenguaje de programación Julia, el procedimiento de selección de nodos se ve así:

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 

Describo estos aburridos detalles de sumas acumuladas y números pseudoaleatorios tan lentamente para enfatizar de esta manera que este algoritmo transversal de gráfico no es tan simple como parece a primera vista. Y todavía no hemos considerado el tema de cambiar las probabilidades sobre la marcha, aunque nuestra atención flota de un tema a otro.

Es aún más difícil entender el proceso de aprendizaje: agregar nuevos nodos y bordes a la red. Terminé mi sesión de asociaciones libres cuando llegué a una pregunta que no podía responder: ¿cómo se llama una mariposa en ruso? Pero ahora puedo responderle. La próxima vez que juegue, agregaré la palabra babochka a la lista. En un modelo computacional, insertar un nodo para la palabra babochka es una tarea bastante simple, pero nuestro nuevo nodo también debe estar conectado a todos los nodos mariposa existentes. Además, el babochka en sí agrega nuevas costillas. Ella es fonéticamente cercana a babushka (abuela), una de las varias palabras rusas en mi diccionario. El sufijo -ochka es diminutivo, por lo que debe asociarse con el francés -ette y el italiano -ini . El significado literal de la palabra babochka es "alma pequeña", lo que implica un número aún mayor de asociaciones. Después de todo, aprender una sola palabra nueva puede requerir una reindexación completa de todo el árbol de conocimiento.



Probemos con otro método. Olvídate de atravesar aleatoriamente una red con sus espaguetis de punteros a nodos. En cambio, almacenemos todas las cosas similares en el vecindario. Desde el punto de vista de los bancos de memoria de la computadora digital, esto significa que cosas similares se almacenarán en direcciones vecinas. Aquí hay un segmento hipotético de memoria centrado en el concepto de perro . Los lugares vecinos están ocupados en otras palabras, conceptos y categorías que es más probable que sean causados ​​por el pensamiento de un perro ( perro ): gato obvio (gato) y cachorro (cachorro), diferentes razas de perros y varios perros específicos (Skippy es nuestro perro familiar, que era en mi infancia), así como, posiblemente, asociaciones más complejas. Cada artículo tiene una dirección digital. La dirección no tiene ningún significado profundo, pero es importante que todas las celdas de memoria estén numeradas en orden.

la direccionlos contenidos
19216805dios
19216806el perro que no ladró en la noche
19216807Skippy
19216808Lassie
19216809canino
19216810gato
19216811perro
19216812perrito
19216813lobo
19216814cueva canem
19216815Basset Hound
19216816Weimaraner
19216817dogmático

La tarea de deambular tranquilamente por esta matriz en la memoria puede ser bastante simple. Puede atravesar al azar direcciones de memoria, pero la ventaja se dará a pequeños pasos. Por ejemplo, la siguiente dirección visitada se puede determinar mediante el muestreo de una distribución normal centrada en la ubicación actual. Aquí está el código para Julia. (La función randn() devuelve un número real aleatorio obtenido de una distribución normal con un valor promedio  m u = 0 y desviación estándar  s i g m a = 1 .)

 function gaussian_ramble(addr, sigma) r = randn() * sigma return addr + round(Int, r) end 

Tal esquema tiene características atractivas. No es necesario tabular todos los nodos de destino posibles antes de elegir uno de ellos. Las probabilidades no se almacenan como números, sino que están codificadas por la posición en la matriz, y también moduladas por el parámetro  s i g m a , que determina qué tan lejos quiere moverse el procedimiento en la matriz. Aunque el programa todavía realiza operaciones aritméticas para muestrear a partir de la distribución normal, es probable que dicha función sea una solución más simple.

Pero aún así, este procedimiento tiene un defecto aterrador. Habiendo rodeado al perro con todas sus asociaciones directas, no dejamos espacio para sus asociaciones. Los términos del perro son buenos en su propio contexto, pero ¿qué pasa con el gato de la lista? ¿Dónde ponemos gatito , tigre , nueve vidas y Felix ? En una matriz unidimensional, no hay forma de incrustar cada elemento de memoria en un entorno adecuado.

¡Así que pasemos a dos dimensiones! Dividiendo las direcciones en dos componentes, definimos dos ejes ortogonales. La primera mitad de cada dirección se convierte en la coordenada. y y la segunda coordenada x . Ahora, el perro y el gato siguen siendo vecinos cercanos, pero también tienen espacios personales en los que pueden jugar con sus propios "amigos".


Sin embargo, dos medidas tampoco son suficientes. Si tratamos de completar todos los elementos relacionados con El gato en el sombrero , inevitablemente comenzarán a chocar y entrar en conflicto con elementos relacionados del perro que no ladraron en la noche . Obviamente, necesitamos más dimensiones, mucho más.



Ahora es el momento adecuado para admitir: no soy el primero en pensar cómo se pueden organizar los recuerdos en la memoria. La lista de mis predecesores se puede comenzar con Platón, que comparó la memoria con un pájaro; reconocemos los recuerdos por su plumaje, pero a veces es difícil para nosotros obtenerlos si comienzan a revolotear en la célula de nuestro cráneo. El jesuita del siglo XVI, Matteo Ricci, escribió sobre el "palacio de la memoria" en el que deambulamos por varias salas y pasillos en busca de tesoros del pasado. Las teorías modernas de la memoria suelen ser menos imaginativas, pero más detalladas y tienen como objetivo la transición de la metáfora al mecanismo. Personalmente, lo que más me gusta es el modelo matemático obtenido en la década de 1980 por Pentti Canerva , quien ahora trabaja en el Centro Redwood para la Neurociencia Teórica aquí en Berkeley. Se le ocurrió la idea de una memoria distribuida escasa , que llamaré SDM. Aplica con éxito la sorprendente geometría de los espacios de alta dimensión.

Imagina un cubo en tres dimensiones. Si suponemos que la longitud del lado es igual a la unidad de medida, entonces ocho vectores se pueden denotar por vectores de tres dígitos binarios, comenzando con 000 y terminando 111 . En cualquier vértice, cambiar un solo bit del vector nos lleva al vértice que es el vecino más cercano. Cambiar dos bits nos mueve al próximo vecino más cercano, y reemplazar los tres bits conduce a la esquina opuesta del cubo, al vértice más distante.


Un cubo de cuatro dimensiones funciona de manera similar: 16 los vértices se indican mediante vectores que contienen todas las combinaciones de dígitos binarios, comenzando 0000 y terminando 1111 . Esta descripción está realmente generalizada a N dimensiones donde cada vértice tiene N vector de coordenadas de bits Si medimos la distancia de acuerdo con la métrica de Manhattan, siempre moviéndose a lo largo de los bordes del cubo y nunca cortando a lo largo de la diagonal, entonces la distancia entre dos vectores será el número de posiciones en las que difieren dos vectores de coordenadas (también se conoce como la distancia de Hamming). (Para OR exclusivo, generalmente se usa el símbolo , a veces llamado bollo . Muestra la operación XOR como módulo de suma binaria 2. Kanerva prefiere ∗ o ⊗ sobre la base de que el papel de XOR en la computación de alta dimensión se parece más a la multiplicación que a la suma Decidí deshacerme de esta contradicción usando el símbolo y la barra vee; una forma alternativa de escribir XOR, familiar entre los lógicos. Esta es una modificación del símbolo ∨ que incluye OR. Es conveniente que también sea un símbolo XOR en los programas de Julia.) Por lo tanto, la unidad la medición de distancia es un bit, y el cálculo de distancia es una tarea para el operador OR exclusivo binario (XOR, & veebar;), que nos da un valor para diferentes bits 1 y para pares idénticos: el valor 0 0 :

 0 ⊻ 0 = 0 0 ⊻ 1 = 1 1 ⊻ 0 = 1 1 ⊻ 1 = 0 

La función en Julia para medir la distancia entre vértices aplica la función XOR a dos vectores de coordenadas y devuelve la cantidad como resultado 1 .

 function distance(u, v) w = u ⊻ v return count_ones(w) end 

Cuando N creciendo lo suficiente, aparecen algunas propiedades curiosas N -cubo Considerar 1000 tridimensional que tiene 2 1000 picos Si seleccionamos al azar sus dos vértices, ¿cuál será la distancia esperada entre ellos? Aunque esta es una pregunta sobre la distancia, podemos responderla sin profundizar en la geometría: esta es solo la tarea de calcular las posiciones en las que se distinguen dos vectores binarios. Para vectores aleatorios, cada bit puede ser igualmente probable que sea igual 0 0 o 1 , por lo tanto, se espera que los vectores difieran en la mitad de las posiciones de bit. En caso de 1000 la distancia estándar del vector de bits es 500 bits Este resultado no nos sorprende. Sin embargo, vale la pena señalar que todas las distancias entre los vectores se acumulan estrechamente alrededor del valor promedio de 500.


En caso de 1000 -bit vectores casi todos los pares seleccionados al azar están a una distancia de 450 antes 550 poco En una muestra de cien millones de pares aleatorios (ver gráfico anterior), ninguno de ellos está más cerca que 400 poco o más lejos que 600 poco Nada en nuestra vida en el espacio de baja resolución nos preparó para tal acumulación de probabilidades en la distancia promedio. Aquí en la Tierra, podemos encontrar un lugar donde estaremos completamente solos, cuando casi todos estén a unos pocos miles de kilómetros de nosotros; sin embargo, no hay forma de redistribuir la población del planeta para que todos estén al mismo tiempo en ese estado. Pero en 1000 -dimensional espacio la situación es solo eso.

No hace falta decir que es difícil de imaginar. 1000 de tres dimensiones, pero podemos obtener un poco de comprensión intuitiva de la geometría, al menos para el ejemplo de cinco dimensiones. A continuación se muestra una tabla de todas las coordenadas de los vértices en un cubo de dimensión tridimensional, ordenado de acuerdo con la distancia de Hamming desde el punto de partida. 00 , 000 . La mayoría de los picos (20 de 32) están a distancias medias, dos o tres bits. La tabla tendría la misma forma en cualquier otro vértice tomado como punto de partida.


Una seria objeción a todas estas discusiones. 1000 -Los cubos dimensionales es que nunca podemos construir algo así; en el universo no hay suficientes átomos para la estructura de 2 1000 partes Pero Kanerva señala que necesitamos espacios para almacenar solo aquellos elementos que queremos almacenar. Podemos diseñar equipos para muestreo aleatorio, por ejemplo 10 8 vértices (cada uno de los cuales tiene 1000 -bit dirección) y deje el resto del cubo con una infraestructura fantasmal, inacabada. Kanerva llama a un subconjunto de los vértices que existe en las celdas duras (ubicaciones duras) del "hardware". Muchos de 10 8 las celdas sólidas aleatorias aún exhibirán la misma distribución de distancia comprimida que un cubo completo; Esto es exactamente lo que se muestra en el cuadro anterior.

El relativo aislamiento de cada vértice en un cubo de gran tamaño nos da una pista de una posible ventaja de la escasa memoria distribuida: el elemento almacenado tiene suficiente espacio y puede distribuirse en un área extensa sin molestar a sus vecinos. Esta es realmente una característica sobresaliente de SDM, pero hay algo más.



En la memoria de la computadora tradicional, las direcciones y los elementos de datos almacenados se asignan uno a uno. Las direcciones son enteros ordinales de un rango fijo, digamos [ 0 , 2 64 ) . Cada número entero en este rango define un solo lugar separado en la memoria, y cada lugar está asociado con exactamente una dirección. Además, en cada lugar solo se almacena un valor a la vez; al escribir un nuevo valor, el antiguo se sobrescribe.

SDM viola todas estas reglas. Tiene un gran espacio de direcciones, nada menos. 2 1000 - pero solo existe una pequeña fracción aleatoria de estos lugares como entidades físicas; Es por eso que la memoria se llama escasa . Una sola pieza de información no se almacena en un solo lugar en la memoria; muchas copias se distribuyen en el área, por lo tanto, se distribuye . Además, en cada dirección separada se pueden almacenar varios elementos de datos al mismo tiempo. Es decir, la información se extiende sobre un área amplia y se comprime en un punto. Esta arquitectura también desdibuja la distinción entre direcciones de memoria y contenidos de memoria; En muchos casos, el patrón de bits almacenado se utiliza como su propia dirección. Finalmente, la memoria puede responder a una dirección parcial o aproximada y es muy probable que encuentre el elemento correcto. Mientras que la memoria tradicional es el "mecanismo de coincidencia exacta", SDM es el "mecanismo de mejor coincidencia", devolviendo el elemento más similar al solicitado.

En su libro de 1988, Kanerva proporciona un análisis cuantitativo detallado de la memoria distribuida escasa con 1000 medidas y 1 , 000 , 000 células sólidas Las celdas sólidas se seleccionan aleatoriamente de todo el espacio. 2 1000 posibles vectores de dirección. Cada celda sólida tiene espacio de almacenamiento para múltiples 1000 vectores de bits La memoria en su conjunto está diseñada para almacenar al menos 10 , 000 Patrones únicos. A continuación consideraré esta memoria como un modelo SDM canónico, a pesar del hecho de que para los estándares de los mamíferos no es suficiente, y en un trabajo más reciente, Kanerva enfatizó los vectores con al menos 10 , 000 medidas

Así es como funciona la memoria en una implementación de computadora simple. El comando store(X) escribe un vector en la memoria X , considerándolo tanto una dirección como un contenido. Valor X almacenado en todas las celdas sólidas dentro de una cierta distancia a X . En el modelo canónico, esta distancia es de 451 bits. Define un "círculo de acceso" destinado a unirse en sí mismo aproximadamente 1000 células sólidas; en otras palabras, cada vector se almacena aproximadamente en 1 / 1000 Una de un millón de células sólidas.

También es importante tener en cuenta que el artículo almacenado X no necesariamente elegir 1 , 000 , 000 vectores binarios que son direcciones de células sólidas. Por el contrario. X puede ser cualquiera de 2 1000 posibles patrones binarios.

Supongamos que ya hay mil copias escritas en el SDM X , después de lo cual llega un nuevo elemento Y , que también debe almacenarse en su propio conjunto de miles de celdas sólidas. Entre estos dos conjuntos puede haber una intersección: los lugares en los que X y Y . El nuevo valor no sobrescribe ni reemplaza el anterior; ambos valores se guardan. Cuando la memoria está llena a su capacidad en 10 , 000 cada uno de ellos se guarda 1000 veces, y en una celda dura típica se almacenarán copias 10 Patrones únicos.

Ahora la pregunta es: ¿cómo usamos esta memoria mixta? En particular, ¿cómo obtenemos el valor correcto? X sin afectar Y y todos los otros artículos que se han acumulado en un lugar de almacenamiento?

El algoritmo de lectura utilizará la propiedad de una curiosa distribución de distancias en un espacio de alta dimensión. Incluso si X y Y son los vecinos más cercanos de 10 , 000 patrones almacenados, probablemente diferirán en 420 o 430 bits; por lo tanto, el número de celdas sólidas en las que se almacenan ambos valores es bastante pequeño, generalmente cuatro, cinco o seis. Lo mismo se aplica a todos los otros patrones que se cruzan con X . Hay miles de ellos, pero ninguno de los patrones influyentes está presente en más de unas pocas copias dentro del círculo de acceso. X .

El comando fetch(X) debe devolver el valor previamente escrito por el comando store(X) . El primer paso para reconstruir el valor es recopilar toda la información almacenada dentro del círculo de acceso de 451 bits centrado en X . Desde X se grabó previamente en todos estos lugares, podemos estar seguros de que recibiremos 1000 sus copias También nos acercaremos 10 , 000 copias de otros vectores almacenados en lugares donde los círculos de acceso se cruzan con círculos X . Pero como las intersecciones son pequeñas, cada uno de estos vectores está presente en solo unas pocas copias. Entonces generalmente cada uno de ellos 1000 poco igualmente probable que sea 0 0 o 1 . Si aplicamos la función del principio de mayoría a todos los datos recopilados en cada posición de bit, el resultado estará dominado por 1000 copias X . Probabilidad de ser diferente de X el resultado es aproximadamente igual 10 - 19 .

El procedimiento del principio de mayoría se muestra con más detalle a continuación en un pequeño ejemplo de cinco vectores de datos de 20 bits cada uno. La salida será un vector diferente, cada bit del cual refleja la mayoría de los bits correspondientes en los vectores de datos. (Si el número de vectores de datos es par, entonces los "sorteos" se permiten mediante selección aleatoria 0 0 o 1 .) El esquema alternativo de escritura y lectura que se muestra a continuación se niega a almacenar todos los patrones individualmente. En cambio, almacena el número total de bits. 0 0 y 1 en todas las posiciones Célula sólida tiene 1000 contador de bits inicializado por todos los ceros. Cuando se escribe un patrón en su lugar, cada contador de bits se incrementa para 1 o disminuye para 0 0 . El algoritmo de lectura simplemente mira el signo de cada contador de bits, devolviendo 1 por un valor positivo, 0 0 para valor negativo y aleatorio cuando el bit de contador es igual 0 0 .


Estos dos esquemas de almacenamiento dan resultados idénticos.



En términos de computación, esta versión de memoria distribuida dispersa parece una broma cuidadosamente pensada. Para recordar 10 , 000 elementos necesitamos un millón de celdas sólidas, en las que almacenaremos mil copias redundantes de cada patrón. Para recuperar solo un elemento de la memoria, recopilamos datos por 11 , 000 patrones guardados y aplicar el mecanismo del principio de mayoría para desentrañarlos. Y todo esto se hace con la ayuda de un montón de maniobras acrobáticas solo para obtener el vector que ya tenemos. La memoria tradicional funciona mucho menos aleatoriamente: tanto la escritura como la lectura acceden a un lugar.

Pero SDM puede hacer lo que la memoria tradicional es incapaz de hacer. En particular, puede extraer información basada en datos parciales o aproximados. Digamos un vector Z es una versión dañada X en el que han cambiado 100 de 1000 vectores Como los dos vectores son similares, el comando fetch(Z) visitará muchos de los mismos lugares donde está almacenado X . Con una distancia de Hamming de 100, podemos esperar que X y Z será compartido por aproximadamente 300 células sólidas. Gracias a esta gran intersección, el vector regresó(llamémoslofetch(Z)Z ' ) estará más cerca deX que esZ .Ahora podemos repetir este proceso con un equipo fetch(Z′)que devolverá el resultado.Z , aún más cerca deX . En solo unas pocas iteraciones, el procedimiento alcanzará X .

Kanerva demostró que una secuencia convergente de operaciones de lectura recursiva tendría éxito con una certeza casi completa si el patrón inicial no está demasiado lejos del objetivo. En otras palabras, hay un radio crítico: cualquier verificación de memoria, comenzando desde un lugar dentro del círculo crítico, convergerá casi exactamente al centro, y lo hará con bastante rapidez. Un intento de restaurar un elemento almacenado fuera del círculo crítico fallará, porque el proceso de recuperación recursiva se alejará a una distancia promedio. El análisis de Kanerv muestra que para el SDM canónico, el radio crítico es de 209 bits. En otras palabras, si conocemos aproximadamente el 80 por ciento de los bits, podemos recrear todo el patrón.

La siguiente ilustración sigue la evolución de las secuencias de recuerdos recursivos con señales de origen distintas del objetivo. X en0 , 5 , 10 , 15 ... 1000 . En este experimento, todas las secuencias que comienzan con la distancia 205 o menos convergen aX para10 o menos iteraciones(trazas azules). Todas las secuencias que comienzan a una distancia inicial mayor vagan sin rumbo por vastos espacios vacíos.Cubo de 1000 dimensiones, que queda aproximadamente a 500 bits de cualquier parte.


La transición de caminos convergentes a caminos divergentes no está perfectamente clara, y esto se nota en el gráfico andrajoso que se muestra a continuación. Aquí nos acercamos para ver el destino de las trayectorias que comienzan con desplazamientos en175 , 176 , 177 , ... 225 bits. Todos los puntos de partida dentro de 209 bits del objetivo se indican en azul; comenzando a una distancia más larga son de color naranja. La mayoría de los caminos azules convergen, moviéndose rápidamente a distancia cero, mientras que la mayoría de los caminos naranjas no. Sin embargo, cerca de la distancia crítica, hay muchas excepciones.


El siguiente gráfico muestra otra mirada a cómo la distancia inicial desde el objetivo afecta la probabilidad de convergencia a la dirección de memoria correcta. A una distancia de170 bits tienen éxito en casi todos los intentos; a las240 casi todos fracasan. Parece que el punto de intersección (en el que el éxito y el fracaso son igualmente probables) se encuentra en aproximadamente203 bits, ligeramente por debajo del resultado de Kanerva, igual a209 . (No hay nada misterioso en esta discrepancia. En los cálculos de Kanerv, se supone que el círculo de acceso limita exactamente 1000 células sólidas. Todas las células sólidas dentro de la distancia están incluidas en mis experimentos.r 451 ; en promedio hay 1070 tales lugares.)




La capacidad de recrear recuerdos a partir de información parcial es un elemento familiar de la vida humana. Ves a un actor en un programa de televisión y entiendes que lo viste antes, pero no recuerdas dónde. Unos minutos más tarde se te ocurre: este es el Sr. Bates de Downton Abbey , pero sin un traje de mayordomo. Reunión de graduados de la escuela secundaria: mirando a un caballero calvo y apretado al otro lado de la sala, ¿puede reconocerlo como un amigo al que solo conocía de adolescente en pantalones cortos deportivos? A veces toma mucho esfuerzo llenar los vacíos. Ya escribí sobre mi propio "punto ciego" inexplicable en memoria de la creciente glicina, que solo pude nombrar después de hojear pacientemente un catálogo de olores falsos: hortensias, verbena, forsitia.

¿Puede nuestra capacidad de recuperar recuerdos de entradas incompletas o ruidosas funcionar como un proceso recursivo de recordar vectores de alta dimensión? Esta sería una hipótesis atractiva, pero hay razones para desconfiar de ella. Por ejemplo, el cerebro parece ser capaz de extraer significado de señales mucho más escasas. No necesito escuchar cuatro quintos de la "Quinta Sinfonía" para identificarla, las primeras cuatro notas son suficientes. El color que parpadea en los árboles al instante te hace recordar las especies de aves correspondientes: cardenal, arrendajo azul, carduelis. El menor aliento con el olor a polvo de tiza me lleva de vuelta a un aula adormecida y con sueño, en la que pinté durante medio día en mi escritorio. Dichos recuerdos son provocados por pequeñas fracciones de la información que los representa, mucho menos del 80 por ciento.

Kanerva menciona otra característica de la memoria humana que se puede modelar usando SDM: el fenómeno de "girar en la punta de la lengua", cuya esencia es que sabes que sabes algo, aunque no puedes llamarlo de inmediato. Este sentimiento es bastante misterioso: si no puede encontrar lo que estaba buscando, ¿cómo puede saber que todo está almacenado en el cerebro? El proceso de recuperación recursiva de SDM nos ofrece una posible respuesta. Cuando los patrones consecutivos recuperados de la memoria se acercan constantemente entre sí, podemos estar razonablemente seguros de que convergerán en el objetivo incluso antes de que lo alcancen.

En un intento por extraer un hecho obstinado de la memoria, muchas personas encuentran que llamar constantemente a la misma puerta no es una estrategia acertada. En lugar de exigir respuestas inmediatas, para controlar su cerebro, a menudo es mejor dejar la tarea a un lado, dar un paseo, tal vez tomar una siesta; la respuesta puede venir como si no hubiera sido invitada. ¿Puede esta observación ser explicada por el modelo SDM? Quizás al menos parcialmente. Si la secuencia de los patrones retirados no converge, entonces su estudio adicional puede resultar infructuoso. Si comienza de nuevo desde un punto vecino en el espacio de memoria, puede obtener un mejor resultado. Pero aquí hay un misterio: ¿cómo encontrar un nuevo punto de partida con mejores perspectivas? Puede pensar que es bastante simple reemplazar aleatoriamente algunos bits en el patrón de entrada y esperarque como resultado, él estará más cerca de la meta, pero la probabilidad de esto es pequeña. Si el vector está en250 bits del objetivo entonces750 bits ya son ciertos (pero no sabemoscuálde750 bit); con cualquier cambio aleatorio, tenemos una probabilidad de3 / 4 se acercan y se quita aún más. Para avanzar, necesita saber en qué dirección moverse, y enEl espacio de 1000 dimensiones es una pregunta difícil.

Un aspecto de la arquitectura SDM es que parece corresponder al efecto de repetir o escuchar la memoria. Si repite el poema varias veces o practica tocar una pieza musical, puede esperar que en el futuro lo recuerde más fácilmente. El modelo computacional debería exhibir un efecto de entrenamiento similar. Pero esto no es posible en la memoria de la computadora tradicional: no hay ventajas en reescribir el mismo valor varias veces en la misma dirección. En SDM, por otro lado, cada repetición de un patrón agrega otra copia a todas las celdas sólidas dentro del círculo de acceso del patrón. Como resultado, se produce menos influencia de los patrones de intersección y aumenta el radio crítico de recuperación. El efecto tiene un efecto significativo:Al escribir en la memoria de una sola copia del patrón, el radio crítico aumenta de aproximadamente200 bits a más de300 .

Del mismo modo, jugar un patrón puede dificultar la restauración del resto. Esto recuerda al olvido cuando un patrón impreso activamente llena a sus vecinos y captura parte de su territorio. Este efecto también afecta significativamente a SDM, tanto que incluso parece poco realista. Parece que un vector almacenado ocho o diez veces monopoliza la mayor parte de la memoria; se convierte en una obsesión, la respuesta a todas las preguntas.

Una ventaja importante de la escasa memoria distribuida es su resistencia a fallas o errores de hardware. Me molestaría si la pérdida de una sola neurona en mi cerebro dejara un agujero en mi memoria y no pudiera reconocer la letra go recuerda cómo atar los cordones de los zapatos. SDM no sufre de esta fragilidad. Cuando cada patrón almacenado tiene mil copias, no es importante un solo lugar. Y de hecho, puede borrar toda la información almacenada en el 60 por ciento de las células sólidas, y aún así tener el recuerdo perfecto10000 , si suponemos que estamos transmitiendo una dirección absolutamente precisa como señal. Con señales parciales, el radio crítico se reduce a medida que aumentan los puntos perdidos. Después de destruir el 60 por ciento de los sitios, el radio crítico se comprime con200 + bits aproximadamente150 bit. Después de la destrucción del 80 por ciento de los lugares, la memoria está seriamente dañada, pero no destruida.¿Qué hay de flotar en las nubes? ¿Podemos pasear ociosamente por los prados de una memoria distribuida escasa, saltando por fortuna de un patrón almacenado a otro? Volveré a esta pregunta.





La mayor parte de lo anterior se escribió hace unas semanas. En ese momento, leí sobre varias teorías competidoras de la memoria y discutí sus méritos con colegas del Instituto Simons. Escribí mis pensamientos sobre este tema, pero pospuse su publicación debido a dudas persistentes: ¿entendí correctamente las matemáticas de la escasa memoria distribuida? Ahora me alegro de no tener prisa.

El programa Brain and Computing terminó en mayo. Sus participantes se fueron: regresé a Nueva Inglaterra, donde la salvia y el romero son pequeñas plantas en macetas, y no exuberantes arbustos que cuelgan sobre los caminos. Mis caminatas matutinas al campus de Berkeley, las oportunidades diarias para reflexionar sobre la naturaleza de la memoria y el aprendizaje, se convirtieron en "engramas" almacenados en algún lugar de mi cabeza (sin embargo, todavía no sé dónde buscarlos).

Sin embargo, no abandoné mi búsqueda. Después de dejar Berkeley, seguí leyendo sobre teorías de la memoria. También escribí programas para estudiar la escasa memoria distribuida de Pentti Canerva y sus ideas más amplias de "computación hiperespacial". Incluso si este proyecto no me revela los secretos de la memoria humana, definitivamente me enseñará algo sobre el arte matemático y computacional de la navegación en espacios de alta dimensión.

El diagrama a continuación muestra la forma "correcta" de implementar SDM, según tengo entendido. El elemento principal es una matriz cruzada, en la que las filas corresponden a celdas de memoria sólida, y las columnas llevan señales que simulan bits individuales del vector de entrada. Hay un millón de líneas en la memoria canónica, cada una de las cuales se asigna aleatoriamenteDirección de 1000 bits, y1000 columnas Esta versión demo consta de 20 filas y 8 columnas.


El proceso ilustrado en el diagrama consiste en almacenar un vector de entrada en la memoria vacía. Ocho bits de entrada se comparan simultáneamente con las 20 direcciones de celdas sólidas. Cuando el bit de entrada y el bit de dirección coinciden, cero con cero o uno con uno, colocamos un punto en la intersección de la columna y la fila. Luego contamos el número de puntos en cada línea, y si el número es igual o excede el valor umbral, entonces escribimos el vector de entrada en el registro asociado con esta línea (campos azules) . En nuestro ejemplo, el valor umbral es 5, y en 8 de las 20 direcciones hay al menos 5 coincidencias. EnEl valor de umbral de memoria de 1000 bits será igual451 , y solo se seleccionará aproximadamente una milésima parte de todos los registros.

La magia de esta arquitectura es que todas las comparaciones de bits, y hay mil millones de ellas en el modelo canónico, ocurren simultáneamente. Por lo tanto, el tiempo de acceso para leer y escribir no depende del número de celdas sólidas y puede ser muy pequeño. Este tipo general de disposición, conocida como memoria asociativa o de direccionamiento de contenido, se usa en algunas áreas informáticas, como habilitar detectores de partículas en el Gran Colisionador de Hadrones y transmitir paquetes a través de enrutadores en Internet. Y el diagrama del circuito puede asociarse con ciertas estructuras cerebrales. Kanerva indica que el cerebelo es muy similar a dicha matriz. Las líneas son células planas de Purkinje en forma de abanico, recogidas como las páginas de un libro; Las columnas son fibras paralelas que se extienden a través de todas las células de Purkinje. (Sin embargo, el cerebelo no es una región del cerebro de los mamíferos,donde se cree que se encuentra la memoria cognitiva).

Sería genial construir una simulación SDM basada en esta arquitectura cruzada; Lamentablemente, no sé cómo implementarlo en el equipo informático a mi disposición. En un procesador tradicional, no hay formas de comparar simultáneamente todos los bits de entrada con bits de celda rígida. En cambio, tengo que pasar por un millón de células sólidas en secuencia y comparar miles de bits en cada lugar. Esto equivale a un millón de comparaciones de bits para cada elemento que se almacena o recupera de la memoria. Agregue a esto el tiempo para escribir o leer un millón de bits (miles de copiasVector de 1000 bits), y obtienes un proceso bastante lento. Aquí está el código para guardar el vector:

 function store(v::BitVector) for loc in SDM if hamming_distance(v, loc.address) <= r write_to_register!(loc.register, v) end end end 

Esta implementación tarda aproximadamente una hora en inventariar memoria con 10,000 patrones memorizados. (El programa completo en forma de cuaderno Jupyter está disponibleen GitHub).¿Existe un mejor algoritmo para simular SDM en un hardware normal? Una de las estrategias posibles permite evitar la búsqueda repetida de un conjunto de celdas sólidas dentro del círculo de acceso de un vector dado; en cambio, cuando un vector se escribe por primera vez en la memoria, el programa almacena un puntero a cada uno de los aproximadamente mil lugares en los que se almacena. En el futuro, con cualquier referencia al mismo vector, el programa puede seguir

1000 punteros guardados, y no escanear la matriz completa de un millón de celdas sólidas. El precio de este esquema de almacenamiento en caché es la necesidad de almacenar todos estos punteros, en su SDM canónico10 millones Esto es bastante real, y puede valer la pena si desea almacenar y recuperar solo los valores exactos y conocidos. Pero piense en lo que sucede en respuesta a una solicitud de memoria aproximada con memoria recursivaZ y Z y Z Y así sucesivamente.Ninguno de estos valores intermedios se encontrará en la memoria caché, por lo que aún será necesario un análisis completo de todas las celdas sólidas.

Quizás haya una forma más complicada de cortar el camino. En un reciente artículo de revisión, " Búsqueda aproximada de vecinos más cercanos en altas dimensiones " por Alexander Andoni, Peter Indyk e Ilya Razenstein, se menciona una técnica intrigante llamada hashing sensible a la localidad (hash basado en la localidad), pero hasta ahora no entiendo cómo adaptarlo a la tarea SDM.



La capacidad de recuperar recuerdos de señales parciales es dolorosamente una característica humana del modelo computacional. Tal vez se pueda ampliar para proporcionar un mecanismo plausible de deambular ocioso por los pasillos de la mente, en el que un pensamiento conduce al siguiente.

Al principio pensé que sabía cómo podría funcionar esto. Patrón almacenado SDMX crea un área de atracción a su alrededor en la que cualquier estudio recursivo de la memoria a partir de un radio crítico converge aX . En 10,000 de estos atractores, me imagino cómo dividen el espacio de memoria en una matriz de módulos individuales como espuma de burbujas de jabón de gran tamaño. El área para cada elemento almacenado ocupa un volumen separado, rodeado por todos lados por otras áreas y colinda con ellos, con límites claros entre dominios adyacentes. En apoyo de esta proposición, puedo ver que el radio promedio de la región de atracción, cuando se agregan nuevos contenidos a la memoria, se comprime, como si las burbujas se comprimieran debido al hacinamiento.

Tal visión de los procesos dentro del SDM sugiere una forma simple de moverse de un dominio a otro: necesita cambiar aleatoriamente un número suficiente de bits del vector para moverlo de la atracción actual al vecino, y luego aplicar el algoritmo de recuperación recursiva. La repetición de este procedimiento generará un recorrido aleatorio de muchos temas almacenados en la memoria.

El único problema es que este enfoque no funciona. Si lo marca, entonces realmente vagará sin rumbo haciaCuadrícula de 1000 dimensiones, pero nunca encontraremos nada almacenado allí. Todo el plan se basa en una comprensión intuitiva errónea de la geometría SDM. Los vectores almacenados con sus regiones de atracciónnoestánapretados como burbujas de jabón; por el contrario, son galaxias aisladas que cuelgan en un universo vasto y libre, separadas por grandes extensiones de espacio vacío entre ellas. Breves cálculos nos muestran la verdadera naturaleza de la situación. En el modelo canónico, el radio crítico que determina la región de atracción es aproximadamente igual a200 . El volumen de una sola región, medido como el número de vectores en el interior, es

s u m 200 k = 1 ( 1000k )


que es aproximadamente igual 10216 . Por lo tanto todos 10000 áreas ocupan el volumen 10220 . Este es un número grande, pero sigue siendo una fracción muy pequeña. 1000cubo tridimensional. Entre todos los vértices del cubo, solo1 de 1080se encuentra dentro de los 200 bits del patrón guardado. Puedes deambular para siempre sin toparte con ninguna de estas áreas.

(¿Para siempre? Oh, sí, sí, puede que no sea para siempre. Dado que un hipercubo es una estructura finita, cualquier forma de hacerlo debe, tarde o temprano, volverse periódica o caer en un punto fijo desde el que nunca se va, o perderse en un ciclo repetitivo Los vectores almacenados son puntos fijos, además, hay muchos otros puntos fijos que no corresponden a ningún patrón significativo. Sea como sea, en todos mis experimentos con programas SDM nunca logré entrar "accidentalmente" en un patrón guardado girar)

Tratando de salvar esta mala idea, realicé varios experimentos más. En un caso, guardé arbitrariamente varios conceptos relacionados en direcciones vecinas ("vecino", es decir
, dentro de 200 o 300 bits). Quizás dentro de este grupo, puedo saltar de un punto a otro de manera segura. Pero, de hecho, todo el grupo se condensa en una gran región de atracción para el patrón central, que se convierte en un agujero negro que absorbe a todos sus compañeros. También intenté jugar con el valorr(radio del círculo de acceso para todas las operaciones de lectura y escritura). En el modelo canónicor=451 .Pensé que escribir en un círculo un poco más pequeño o leer desde un círculo un poco más grande dejaría suficiente espacio para la aleatoriedad en los resultados, pero esta esperanza tampoco se materializó.

Todos estos intentos se basaron en un malentendido de los espacios vectoriales de alta dimensión. Un intento de encontrar grupos de valores vecinos en un hipercubo es inútil; los patrones almacenados están demasiado espaciados en volumen. La creación arbitraria de grupos densos tampoco tiene sentido, ya que destruye la propiedad que hace que el sistema sea interesante: la capacidad de converger a un elemento almacenado desde cualquier parte del área de atracción. Si queremos crear un algoritmo de vagabundeo en la nube para SDM, entonces debemos idear otra forma.



En busca de un mecanismo alternativo para el flujo de la conciencia, puede intentar agregar una pequeña teoría de grafos al mundo de la escasa memoria distribuida. Luego podemos dar un paso atrás, volver a la idea original de deambular mentalmente en forma de un paseo aleatorio alrededor de un gráfico o red. El elemento clave para incrustar tales gráficos en SDM resulta ser una herramienta familiar para nosotros: un operador OR exclusivo.

Como se mencionó anteriormente, la distancia de Hamming entre dos vectores se calcula tomando su XOR bit a bit y contando las unidades resultantes. Pero la operación XOR proporciona no solo la distancia entre dos vectores, sino también otra información; También determina la orientación o dirección de la línea que los conecta. En particular, la operaciónuv da un vector que enumera los bits que deben cambiarse para convertir u en vy viceversa. También se puede percibir1 y 0 en el vector XOR como una secuencia de instrucciones que debe seguir para seguir el camino desde u antes v .

XOR siempre ha sido mi favorito de todas las funciones booleanas. Este es un operador de diferencia, pero a diferencia de la resta, XOR es simétrico:uv=vu .Además, XOR es su propia función inversa. Este concepto es fácil de entender con funciones con un solo argumento:f(x) es su propia función inversa si f(f(x))=x, es decir, después de aplicar la función dos veces, podemos volver a donde comenzamos. Para una función con dos argumentos, como XOR, la situación es más complicada, pero sigue siendo cierto que realizar la misma acción dos veces restaura el estado original. En particular, siuv=w entonces uw=v y vw=u . Tres vectores - u , v y w- Crea un pequeño universo cerrado. Puede aplicar el operador XOR a cualquier par de ellos y obtener el tercer elemento del conjunto. El siguiente es un intento de ilustrar esta idea. Cada cuadrado imita10000vector de bits alineado como una tabla de 100 x 100 de píxeles claros y oscuros. Los tres patrones parecen aleatorios e independientes, pero de hecho, cada panel es XOR de los otros dos. Por ejemplo, en el cuadrado más a la izquierda, cada píxel rojo corresponde a verde o azul, pero nunca a ambos.


La propiedad de autoinversibilidad nos dice una nueva forma de organizar la información en SDM. Supongamos que la palabra mariposa y su equivalente francés papillon se almacenan en vectores arbitrarios y aleatorios. No estarán cerca el uno del otro; es probable que la distancia entre ellos sea de aproximadamente 500 bits. Ahora calculamos el XOR de estos vectores de mariposa papillon ; El resultado es otro vector que también se puede guardar en SDM. Este nuevo vector codifica una conexión inglés-francés . Ahora tenemos una herramienta de traducción. Al tener un vector para mariposa , realizamos un XOR con el vector inglés-francés y obtenemos papillon . El mismo truco funciona en la dirección opuesta.

Este par de palabras y la conexión entre ellas forman el núcleo de la red semántica. Vamos a aumentarlo un poco. Podemos guardar la palabra oruga en una dirección arbitraria y luego calcular la mariposa oruga y llamamos a esta nueva relación adulto-joven . ¿Cómo se llama caterpillar en francés ? La oruga en francés es chenilla . Agregamos este hecho a la red almacenando chenilla en caterpillar Francés-Inglés . Ahora es el momento de la magia: si tomamos papillon chenille , aprendemos que estas palabras están relacionadas por una relación adulto-joven , a pesar de que no lo indicaron explícitamente. Esta limitación es impuesta por la geometría de la estructura misma.


El gráfico se puede ampliar aún más agregando más palabras relacionadas inglés-francés ( dog-chien, horse-cheval ) o más parejas de adultos y jóvenes: ( perro-cachorro, árbol-árbol ). También puede explorar muchas otras relaciones: sinónimos, antónimos, hermanos, causa-efecto, depredador-presa, etc. También hay una excelente manera de unir múltiples eventos en una secuencia cronológica simplemente realizando XOR en las direcciones del predecesor y sucesor del nodo.

La forma en que XOR conecta conceptos es un híbrido de geometría y teoría de grafos. En la teoría matemática de los gráficos ordinarios, las distancias y las direcciones no son significativas; Lo único que importa es la presencia o ausencia de bordes de conexión entre los nodos. En SDM, por otro lado, un borde que representa una conexión entre nodos es un vector de longitud finita y directividad en1000-dimensional espacio. Para un nodo y enlace dados, la operación XOR "une" este nodo a una posición específica en otro lugar del hipercubo. La estructura resultante es absolutamente rígida: no podemos mover el nodo sin cambiar todas las conexiones en las que participa. En el caso de las mariposas y las orugas, una configuración de cuatro nudos inevitablemente resulta ser un paralelogramo, donde los pares en lados opuestos tienen la misma longitud y dirección.

Otra característica única de un gráfico asociado con una operación XOR es que los nodos y los bordes tienen exactamente la misma representación. En la mayoría de las implementaciones informáticas de ideas de la teoría de grafos, las dos entidades son muy diferentes; un nodo puede ser una lista de atributos, y un borde puede ser un par de punteros a los nodos conectados por él. En SDM, tanto los nodos como los bordes son simplemente vectores de alta dimensión que pueden almacenarse en el mismo formato.

Cuando se usa como modelo de memoria humana, el enlace XOR nos da la capacidad de conectar dos conceptos a través de cualquier conexión que podamos imaginar. Muchas conexiones en el mundo real son asimétricas; no tienen la propiedad de autoinversibilidad que tiene XOR. El vector XOR puede declarar que Edward y Victoria son el padre y el niño, pero no dice cuál de ellos es quién. Peor aún, el vector XOR conecta exactamente dos nodos y nunca más, por lo que el padre de varios niños nos pone en una posición desagradable. Otra dificultad es mantener la integridad de todas las ramas de un gráfico grande entre sí. No podemos simplemente agregar nodos y bordes arbitrariamente; deben adjuntarse al gráfico en el orden correcto. Insertar una etapa pupal entre una mariposa y una oruga requerirá reescribir la mayor parte del patrón;tendrá que mover varios nodos a nuevos lugares dentro del hipercubo y volver a calcular los vectores de conexión que los conectan, mientras se asegura de que cada cambio en el lado del idioma inglés se refleje correctamente en el francés.

Algunos de estos problemas se resuelven en otra técnica basada en XOR que Kanerva llama agrupación. La idea es crear algún tipo de base de datos para almacenar pares de atributos-valores. Una entrada de libro puede tener atributos como autor , título y editor, cada uno de los cuales está emparejado con un valor correspondiente. La primera etapa del agrupamiento de datos es un XOR separado de cada par de atributo-valor. Luego, los vectores obtenidos de estas operaciones se combinan para crear un único vector de resumen utilizando el mismo algoritmo descrito anteriormente para almacenar varios vectores en una celda SDM sólida. Al realizar el XOR del nombre del atributo con este vector combinado, obtenemos una aproximación del valor correspondiente lo suficientemente cerca como para determinarlo mediante el método de recuperación recursiva. En experimentos con el modelo canónico, descubrí que1000 Un vector de bits puede almacenar seis o siete pares de atributos-valores sin mucho riesgo de confusión.

La encuadernación y la agrupación no se mencionan en el libro Kanerva de 1988, pero él habla de ellas en detalle en los artículos más recientes. (Consulte la sección "Lectura adicional" a continuación.) Indica que con estos dos operadores, muchos vectores de alta dimensión toman la estructura de un campo algebraico, o al menos una aproximación a un campo. Un ejemplo canónico de un campo es un conjunto de números reales en lugar de las operaciones de suma y multiplicación, así como sus operadores inversos. Los números reales crean un conjunto cerrado bajo estas operaciones: la suma, resta, multiplicación o división de dos números reales da otro número real (con la excepción de la división por cero, que siempre es un comodín en el mazo). Del mismo modo, el conjunto de vectores binarios está cerrado para vincular y agrupar, exceptoque a veces, para restaurar un miembro de un conjunto, el resultado extraído del vector de bandas debe ser "borrado" por el proceso de recuperación recursiva.



¿Pueden los enlaces y la agrupación ayudarnos a obtener un algoritmo de desplazamiento de la nube? Nos proporcionan herramientas básicas para navegar en un gráfico semántico, incluida la capacidad de realizar recorridos aleatorios. Comenzando desde cualquier nodo en el gráfico XOR conectado, el algoritmo de recorrido aleatorio selecciona entre todos los enlaces disponibles en esta picadura. Una elección aleatoria del vector de comunicación y la ejecución XOR de este vector con la dirección del nodo nos lleva a otro nodo donde se puede repetir el procedimiento. Del mismo modo, en los pares "atributo-valor" de la agrupación, un atributo seleccionado al azar llama al valor correspondiente, que se convierte en el siguiente nodo bajo investigación.

Pero, ¿cómo sabe un algoritmo qué relaciones o qué algoritmos están disponibles para la selección? Las relaciones y los atributos se representan en forma de vectores y se almacenan en la memoria como cualquier otro objeto, por lo que no hay formas obvias de obtener estos vectores a menos que sepa cuáles son realmente. No podemos decirle a la memoria de "muéstrame todas las conexiones". Solo podemos mostrar el patrón y preguntar "¿existe tal vector? ¿Has visto algo como esto?

En la memoria de la computadora tradicional, podemos obtener un volcado de memoria: ir a todas las direcciones y mostrar el valor encontrado en cada lugar. Pero para la memoria distribuida no existe tal procedimiento. Este hecho deprimente me fue dado con dificultad. Al construir el modelo computacional SDM, logré ser lo suficientemente bueno como para tener la capacidad de almacenar varios miles de patrones generados aleatoriamente en mi memoria. Pero no pude extraerlos porque no sabía qué pedir. La solución fue crear una lista separada fuera del SDM, en la que se escribiría todo lo que guarde. Pero la suposición de que el cerebro habría mantenido tanto la memoria como el índice de esta memoria parece descabellada. ¿Por qué no solo usar un índice, porque es mucho más fácil?

Debido a esta limitación, parece que la memoria distribuida escasa está equipada para servir a los sentidos, pero no a la imaginación. Puede reconocer patrones familiares y guardar otros nuevos que se reconocerán en futuras reuniones, incluso a partir de señales parciales o dañadas. Gracias a la vinculación o agrupación, la memoria también puede rastrear enlaces entre pares de elementos almacenados. Pero todo lo que está escrito en la memoria solo puede recuperarse transmitiendo una señal adecuada.


Cuando miro el póster de Graduado , veo a Dustin Hoffman mirando la pierna de Anne Bancroft en una media. Este estímulo visual excita subconjuntos de neuronas en la corteza cerebral, lo que corresponde a mis recuerdos de actores, personajes, trama, banda sonora y 1967. Toda esta actividad cerebral puede explicarse por la arquitectura de memoria SDM, si suponemos que los subconjuntos de neuronas se pueden representar de alguna forma abstracta como vectores binarios aleatorios largos. Pero no se puede explicar tan fácilmente el hecho de que puedo causar las mismas sensaciones en el cerebro sin ver esta imagen. ¿Cómo extraigo específicamente estas largas secuencias aleatorias de un gran entrelazado de vectores, sin saber exactamente dónde están?



Esto concluye mi largo viaje: una nota de duda y decepción. Apenas te sorprende que no logré llegar a la esencia misma. Este es un tema muy complejo.

En el primer día del programa Brain and Computing en el Instituto Simons, Jeff Lichtman, que trabajó en el rastreo de los circuitos en el cerebro de los ratones, hizo la pregunta: ¿han llegado las neurociencias al momento Watson-Crick? En genética molecular, hemos llegado al punto en el que pudimos eliminar una cadena de ADN de una célula viva y leer muchos de los mensajes que contiene. Incluso podemos grabar nuestros propios mensajes e insertarlos nuevamente en el cuerpo. Una capacidad similar en neurociencia sería estudiar el tejido cerebral y leer la información almacenada en él: conocimiento, recuerdos, visiones del mundo. Quizás incluso podríamos escribir información directamente en el cerebro.

La ciencia ni siquiera se acercó al logro de este objetivo, para alegría de muchos. Incluyéndome a mí: no quiero que mis pensamientos sean extraídos de mi cabeza a través de electrodos o pipetas y reemplazados por #fakenews Sin embargo, realmente quiero saber cómo funciona el cerebro.

El programa del Instituto Simons me ha cegado con el reciente éxito de la neurociencia, pero también me ha hecho darme cuenta de que una de las preguntas más serias sigue sin respuesta. Los proyectos de conectividad de Lichtmann y otros crean un mapa detallado de millones de neuronas y sus conexiones. Las nuevas técnicas de grabación nos permiten escuchar las señales emitidas por los neurocitos individuales y seguir las ondas de excitación a través de amplias áreas del cerebro. Tenemos un catálogo bastante completo de tipos de neuronas y sabemos mucho sobre su fisiología y bioquímica. Todo esto es impresionante, pero todavía hay acertijos. Podemos grabar señales neuronales, pero en su mayor parte no sabemos lo que significan. No sabemos cómo se codifica y almacena la información en el cerebro. Esto es similar a tratar de entender el diagrama de circuito de una computadora digital sin conocimiento de la aritmética binaria y la lógica booleana.

El escaso modelo de memoria distribuida de Pentti Canerva es un intento de llenar algunos de estos vacíos. Este no es el único intento de este tipo. Una alternativa más conocida es el enfoque de John Hopfield: el concepto de una red neuronal como un sistema dinámico, que toma la forma de un atractor que minimiza la energía. Estas dos ideas tienen principios básicos comunes: la información está dispersa en una gran cantidad de neuronas y está codificada en una forma que no es obvia para un observador externo, incluso él tendrá acceso a todas las neuronas y las señales que pasan a través de ellas. Esquemas similares, que son esencialmente matemáticos y computacionales, se ubican conceptualmente en el medio entre la psicología de alto nivel y la ingeniería neuronal de bajo nivel. Esta capa contiene el valor.

Lectura adicional
Hopfield, 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. PDF

Kanerva, Pentti. 2009. Hyperdimensional computing: An introduction to computing in distributed representation with high-dimensional random vectors. Cognitive Computation 1(2):139–159. PDF

Kanerva, 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. PDF

Kanerva, 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.

Source: https://habr.com/ru/post/es419147/


All Articles