Hola a todos! Quiero compartir con ustedes mi idea del aprendizaje automático.
Los grandes avances en el aprendizaje automático son impresionantes. Las redes convolucionales y los LSTM son geniales. Pero casi todas las tecnologías modernas se basan en la propagación inversa del error. Basado en este método, es poco probable que pueda construir una máquina de pensar. Las redes neuronales están formadas por algo así como un cerebro congelado, entrenado de una vez por todas, incapaz de
cambiar el pensamiento.
Pensé, ¿por qué no tratar de crear algo como un cerebro vivo? Una especie de reingeniería. Dado que en todos los animales, a pesar de las diferencias de inteligencia, el cerebro consta de aproximadamente las mismas neuronas, algunos principios básicos deberían estar en el centro de su trabajo.
Lo que no sé sobre las neuronas.
Hay varias preguntas para las cuales no he encontrado respuestas inequívocas en la literatura popular;
- Obviamente, una neurona de alguna manera responde a los neurotransmisores, pero ¿cómo exactamente? La simple suposición de que cuanto mayor es el neurotransmisor, con mayor frecuencia se adhiere, obviamente no resiste las críticas. Si esto fuera así, la activación de una neurona desencadenaría la activación de varios vecinos, los de la siguiente, y en poco tiempo esta avalancha capturaría todo el cerebro. Pero en realidad esto no sucede, al mismo tiempo, solo una pequeña parte de las neuronas trabaja en el cerebro. Por qué
- Las neuronas son obviamente unidades de memoria, pero ¿cómo almacenan la información? La parte central de la neurona no es nada especial: el núcleo de las mitocondrias y similares. Axon no puede influir en el pico, porque la información va solo en una dirección, desde el núcleo. Entonces, lo único que queda son las dendritas. Pero, ¿cómo se almacena la información en ellos? En forma analógica o digital?
- Obviamente, las neuronas de alguna manera están aprendiendo. ¿Pero cómo exactamente? Suponga que las dendritas crecen en lugares donde había muchos neurotransmisores justo antes de la espiga. Pero si esto es así, la neurona activada crecerá un poco y la próxima vez que aparezca un neurotransmisor, será el más grueso entre los vecinos, absorberá la mayor parte del neurotransmisor y funcionará nuevamente. Y de nuevo un poco crecer. ¿Y así hasta el infinito, hasta que estrangula a todos sus vecinos? ¿Hay algo mal aquí?
- Si una neurona crece, entonces las vecinas deberían disminuir, la cabeza no es de goma. Algo debería hacer que la neurona se seque. Que?
Solo agrupamiento
La respuesta plausible a todas estas preguntas me parece que el cerebro funciona como muchos grupos simples. ¿Es posible ejecutar dicho algoritmo en un grupo de neuronas? Por ejemplo, el método K-means. Simplemente necesito simplificarlo un poco. En el algoritmo clásico, los centros se calculan iterativamente como el promedio de todos los ejemplos considerados, pero cambiaremos el centro inmediatamente después de cada ejemplo.
Veamos qué necesitamos para implementar el algoritmo de agrupamiento.
- Los centros de grupos, por supuesto, son las dendritas de las neuronas de nuestro grupo. ¿Pero cómo recordar la información? Suponga que la celda unitaria para almacenar información en la dendrita es el volumen de la rama de dendrita en la región de sinapsis. Cuanto más gruesa es la rama, respectivamente, su volumen es mayor, mayor se guarda el valor. Por lo tanto, cada dendrita puede memorizar varias cantidades analógicas.
- Comparadores para calcular la proximidad de un ejemplo. Es mas complicado. Supongamos que después de que se hayan enviado los datos (los axones expulsaron un neurotransmisor), cada neurona funcionará más rápido, mientras más datos almacenados (el centro del grupo) sean similares al ejemplo dado (el número de neurotransmisores). Tenga en cuenta que la tasa de respuesta de una neurona no se ve afectada por la cantidad absoluta del neurotransmisor, sino por la proximidad de la cantidad del neurotransmisor al valor almacenado en las dendritas. Supongamos que si el neurotransmisor es pequeño, entonces la dendrita no da una orden para aumentar. No sucede nada y si hay muchos neurotransmisores, el pico de la rama dendrítica ocurre antes que en otras ramas dendríticas y no llega al núcleo. Pero si el neurotransmisor es el correcto, entonces todas las ramas dendríticas darán un mini pico aproximadamente al mismo tiempo, y esta onda se convertirá en un pico de una neurona que irá a lo largo del axón.
- Un comparador de entradas múltiples le permite comparar resultados y elegir el mejor. Supongamos que las neuronas cercanas tienen un efecto inhibitorio sobre todos sus vecinos. Entonces, en un cierto grupo de neuronas, solo una puede estar activa en cualquier momento. El que funcionó primero. Como las neuronas del grupo están cerca, tienen el mismo acceso a todos los axones que vienen a este grupo. Por lo tanto, la neurona en la que la información almacenada está más cerca del ejemplo en cuestión funcionará en el grupo.
- El mecanismo de desplazamiento del centro hacia el ejemplo. Bueno, todo es simple. Después del pico neuronal, todas las dendritas de esta neurona cambian su volumen. Donde la concentración del neurotransmisor era demasiado alta, las ramas crecen. Donde era insuficiente, las ramitas se reducen. Donde la concentración es correcta, el volumen no cambia. Los volúmenes de ramitas varían un poco. Pero de inmediato. El siguiente pico es el próximo cambio.
Verifiquemos el algoritmo resultante en la práctica. Dibujé algunas líneas en Python. Esto es lo que sucede con dos dimensiones de números aleatorios:
Y aquí está MNIST:
A primera vista, parece que todo lo anterior no ha cambiado nada. Bueno, teníamos algunos datos en la entrada, de alguna manera los transformamos, obtuvimos otros datos.
Pero realmente hay una diferencia. Si antes de la conversión teníamos un montón de parámetros analógicos, después de la conversión solo teníamos un parámetro, al mismo tiempo codificado por un código unitario. Cada neurona del grupo puede asociarse con una acción específica.
Permítanme dar un ejemplo: supongamos que solo hay dos neuronas en un grupo de agrupación. Llámalos "sabroso" y "miedo". Para permitir que el cerebro tome una decisión, solo es necesario conectar la neurona "EAT" a la primera y "RUN" a la segunda. Para esto necesitamos un maestro. Pero ahora no se trata de eso, enseñar con un maestro es un tema para otro artículo.
Si aumenta el número de grupos, la precisión aumentará gradualmente. Un caso extremo es el número de clústeres igual al número de ejemplos. Pero hay un problema, la cantidad de neuronas en el cerebro es limitada. Uno debe comprometerse constantemente, ya sea la precisión o el tamaño del cerebro.
Meta agrupamiento
Supongamos que no tenemos un grupo de agrupación, sino dos. En este caso, se aplican los mismos valores a las entradas. Obviamente, obtienes el mismo resultado.
Hagamos un pequeño error al azar. Deje que, a veces, cada clúster seleccione no el centro más cercano del clúster, sino cuál. Entonces los valores comenzarán a diferir, con el tiempo la diferencia se acumulará.
Y ahora, calculemos el error de cada clusterer. El error es la diferencia entre el ejemplo de entrada y el centro del clúster seleccionado. Si un clúster seleccionó el valor más cercano y el otro al azar, entonces el segundo tendrá un error mayor.
Adelante, agregue una máscara a la entrada de cada clusterer. Una máscara es un conjunto de coeficientes para cada entrada. No cero o uno, como se usa comúnmente en las máscaras, sino algún número real de cero a uno.
Antes de dar un ejemplo a la entrada del clusterer, multiplicaremos este ejemplo por una máscara. Por ejemplo, si se usa una máscara para una imagen, si para algún píxel la máscara es igual a uno, entonces es como si fuera completamente transparente. Y si la máscara es cero, entonces este píxel siempre es negro. Y si la máscara es 1/2, entonces el píxel está medio oscurecido.
Y ahora, la acción principal, reduciremos el valor de la máscara en proporción al error de agrupamiento. Es decir, si el error es grande, entonces disminuiremos el valor más fuertemente, y si es cero, no lo reduciremos en absoluto.
Para que los valores de las máscaras no se restablezcan gradualmente a cero, los normalizaremos. Es decir, la suma de los valores de máscara para cada parámetro de entrada siempre es igual a uno. Si se quita algo en una máscara, se agrega a otra.
Tratemos de ver qué sucede con el ejemplo de MNIST. Vemos que las máscaras dividen gradualmente los píxeles en dos partes.
Las máscaras resultantes se muestran en el lado derecho de la imagen. Al final del proceso, el clúster superior considera el inferior derecho y el clúster inferior el resto de los ejemplos. Curiosamente, si reiniciamos el proceso, obtendremos otra separación. Pero al mismo tiempo, los grupos de parámetros se obtienen no al azar, sino de tal manera que se reduce el error de predicción. Los clústeres parecen probar cada píxel en su máscara, y al mismo tiempo, el píxel recoge el clúster al que el píxel se adapta mejor.
Intentemos ingresar dígitos dobles, no superpuestos entre sí, sino ubicados uno al lado del otro, de esta manera (este es un ejemplo, no dos):
Ahora vemos que cada vez, la separación ocurre igual. Es decir, si hay una sola opción, claramente la mejor opción para separar las máscaras, se seleccionará.
Solo una cosa será aleatoria, ya sea que la primera máscara seleccione el dígito izquierdo o el derecho.
Llamo a las máscaras resultantes meta-clusters. Y el proceso de formar máscaras por meta-clustering. ¿Por qué meta? Porque la agrupación no es de ejemplos de entrada, sino de las entradas mismas.
Un ejemplo es más complicado. Intentemos dividir 25 parámetros en 5 meta clusters.
Para hacer esto, tomamos cinco grupos de cinco parámetros codificados por un código unitario.
Es decir, en cada grupo hay una y solo una unidad en un lugar aleatorio. Siempre hay cinco unidades en cada ejemplo servido.
En las imágenes a continuación, cada columna es un parámetro de entrada y cada fila es una máscara de meta-cluster. Los grupos en sí no se muestran.
100 parámetros y 10 meta clusters:
Funciona! En algunos lugares, incluso se parece un poco a una imagen de una matriz de la película del mismo nombre.
El uso de meta-clustering puede reducir drásticamente la cantidad de clusters.
Por ejemplo, tome diez grupos de diez parámetros, cada grupo tiene una unidad.
Si tenemos un clúster (sin meta-clústeres), entonces necesitamos 10
10 = 10000000000 clústeres para obtener un error cero.
Y si tenemos diez grupos, entonces solo necesitamos 10 * 10 = 100 grupos. Esto es similar al sistema de números decimales, no necesita encontrar una notación para todos los números posibles, puede hacerlo con diez dígitos.
La agrupación meta está muy bien paralelizada. Los cálculos más caros (comparando el ejemplo con el centro del grupo) se pueden realizar de forma independiente para cada grupo. Tenga en cuenta, no para la agrupación, sino para la agrupación.
¿Cómo funciona en el cerebro?
Antes de eso, solo hablaba de dendritas, pero las neuronas tienen axones. Y ellos también estudian. Por lo tanto, es muy probable que los axones sean las máscaras de los grupos de meta.
Agregamos una función más a la descripción de la operación dendrítica anterior.
Suponga que si se produce un pico neuronal, todas las dendritas de alguna manera emiten en la sinapsis algún tipo de sustancia que muestra la concentración del neurotransmisor en la dendrita. No del axón a la dendrita, sino de regreso. La concentración de esta sustancia depende del error de comparación. Supongamos que cuanto menor es el error, mayor es la cantidad de sustancia emitida. Bueno, el axón reacciona a la cantidad de esta sustancia y crece. Y si la sustancia es pequeña, lo que significa un gran error, entonces el axón se reduce gradualmente.
Y si cambia los axones desde el nacimiento del cerebro, con el tiempo, irán solo a aquellos grupos de neuronas donde se necesitan sus adherencias a estos axones (no conducen a grandes errores).
Ejemplo: recordemos rostros humanos. Deje que cada cara se represente con una imagen de megapíxeles. Entonces, para cada cara, necesitas una neurona con un millón de dendritas, lo que no es realista. Ahora, divida todos los píxeles en meta racimos, como ojos, nariz, orejas, etc. Solo diez de esos meta clusters. Deje que haya diez grupos, diez opciones de nariz, diez opciones de oreja, etc. para cada meta-grupo. Ahora, para recordar la cara, una neurona con diez dendritas es suficiente. Esto reduce la memoria (y el volumen del cerebro) en cinco órdenes de magnitud.
Conclusión
Y ahora, si asumimos que el cerebro consiste en meta-racimos, podemos tratar de considerar desde este punto de vista algunos conceptos inherentes al cerebro vivo:
Los clústeres deben recibir capacitación constante, de lo contrario, los datos nuevos no se procesarán correctamente. Para entrenar grupos en el cerebro, se necesita una muestra equilibrada. Permítanme explicar si el invierno es ahora, entonces el cerebro aprenderá solo de los ejemplos de invierno, y los grupos resultantes gradualmente se volverán relevantes solo para el invierno, y en el verano todo será malo para este cerebro. ¿Qué hacer al respecto? Es necesario presentar periódicamente a todos los grupos no solo nuevos, sino también ejemplos importantes antiguos (recuerdos tanto de invierno como de verano). Y para que estos sentimientos no interfieran con los sentimientos actuales, debe desactivarlos temporalmente. En animales, esto se llama un
sueño .
Imagina, el cerebro ve algo pequeño, GRIS, que corre. Después del meta-agrupamiento, tenemos tres neuronas activas en tres meta-agrupamientos. Y gracias a la memoria, el cerebro sabe que está delicioso. Entonces, el cerebro ve algo pequeño, AZUL que corre. Pero el cerebro no sabe si es sabroso o aterrador. Es suficiente deshabilitar temporalmente el meta clúster donde se encuentran los colores, y solo permanecerá el pequeño que se ejecuta. Y el cerebro sabe que está delicioso. Esto se llama
una analogía .
Supongamos que el cerebro recuerda algo y luego cambia el grupo de neuronas activas de un grupo a otro, mientras que en los meta-grupos restantes hay una memoria real. Y ahora, el cerebro ya ha introducido algo que nunca antes se había visto. Y esto ya es una
imaginación .
Gracias por su atención, el código está
aquí .