- DiffLogic CA es un enfoque de autómatas celulares que combina Neural Cellular Automata y Differentiable Logic Gate Networks para aprender reglas locales mediante gradiente manteniendo estados celulares discretos
- Cada celda tiene un estado de vector binario de n dimensiones, y tanto la etapa de percepción como la de actualización se procesan con redes de compuertas lógicas para calcular directamente el siguiente estado
- En el experimento de Conway's Game of Life, aprendió en un paso las 512 configuraciones de una cuadrícula periódica de 3x3 y así adquirió la regla completa; incluso con inferencia dura reprodujo patrones representativos como glider, block, loaf y boat
- En el experimento de generación de patrones, produjo un tablero de ajedrez de 16x16 en 20 pasos y siguió funcionando con una cuadrícula 4 veces mayor y un tiempo 4 veces más largo, además de mostrar tolerancia a fallas ante celdas dañadas y autorreparación tras reactivarlas
- También generó el contorno más complejo de un lizard y una G RGB de 8 colores, pero aprender estructuras complejas siguió requiriendo mucho ajuste de hiperparámetros, y una NCA jerárquica junto con compuertas tipo LSTM quedan como posibles mejoras
El problema al que apunta DiffLogic CA
- Los autómatas celulares normalmente se estudian definiendo primero reglas locales y observando después los patrones emergentes que aparecen como resultado
- DiffLogic CA explora cómo aprender, de forma completamente diferenciable, las reglas locales que producen un patrón complejo deseado
- Los Neural Cellular Automata existentes pueden aprender patrones y comportamientos arbitrarios, pero no operan de manera intrínseca en un espacio de estados discreto, lo que reduce su interpretabilidad y además implica el costo de multiplicaciones matriciales en actualizaciones de estado continuas
- Differentiable Logic Gate Networks se han usado para descubrir circuitos lógicos combinacionales, pero su funcionamiento aún no se había demostrado en una configuración de NCA recursiva tanto en espacio como en tiempo
- Todo el experimento puede reproducirse en un notebook
Estructura básica de Neural Cellular Automata
- Neural Cellular Automata combinan autómatas celulares clásicos con deep learning, de modo que en lugar de diseñar reglas a mano, aprenden la regla de actualización mediante descenso por gradiente
- Cada celda en Growing-NCA tiene un vector de estado de n dimensiones sobre una cuadrícula 2D
- Los 3 canales RGB representan el color de la celda
- El canal Alpha representa la viabilidad de la celda; si el valor alpha es mayor que 0.1, la celda se considera viva
- Los canales ocultos restantes transmiten información más compleja sobre el entorno
- La actualización ocurre en dos etapas
- Etapa de percepción: se aplica un Sobel filter por canal para aproximar gradientes espaciales y crear un perception vector que combina el estado actual de la celda con información de su vecindad
- Etapa de actualización: una red neuronal con alrededor de 8,000 parámetros se aplica de forma idéntica a todas las celdas para decidir cómo cambia cada una
- Como todas las operaciones son diferenciables, el sistema completo puede aprender un patrón o comportamiento específico
Cómo funcionan las Differentiable Logic Gate Networks
- Deep Differentiable Logic Gate Networks usan compuertas lógicas como AND, OR, XOR como unidades básicas en lugar de neuronas artificiales
- La red se compone de capas de compuertas, y cada compuerta recibe entradas de dos compuertas de la capa anterior en una estructura dispersa
- Las conexiones se inicializan aleatoriamente y no cambian durante el entrenamiento; lo único que se aprende es qué operación lógica ejecuta cada compuerta
- Durante el entrenamiento no se usan compuertas lógicas discretas tal cual, sino dos mecanismos
- Relajación continua: operaciones discretas como hard AND se reemplazan por versiones diferenciables que aceptan entradas entre 0 y 1
- Selección probabilística de compuertas: cada compuerta tiene una distribución de probabilidad sobre las 16 posibles operaciones binarias con dos entradas, y aprende un parámetro de 16 dimensiones expresado con softmax
- Al terminar el entrenamiento, cada compuerta se fija en la operación con mayor probabilidad, y en inferencia solo ejecuta operaciones binarias puras
- Para estabilizar el aprendizaje, la distribución inicial de compuertas se sesga hacia compuertas pass-through
Estructura de DiffLogic CA
- DiffLogic CA sigue la estructura de cuadrícula 2D de NCA, pero representa el estado de cada celda como un vector binario de n dimensiones
- Estado celular y canal se usan con el mismo significado, y el vector binario de estado funciona como memoria de trabajo para guardar información de iteraciones anteriores
- La etapa de percepción usa kernels basados en redes de compuertas lógicas en lugar de Sobel filter
- Cada kernel es un circuito separado con una estructura de conexiones fija, y lo que se aprende es el tipo de compuertas
- El kernel se calcula por canal
- Cada circuito usa 4 capas diseñadas para calcular interacciones entre la celda central y sus vecinas
- La etapa de actualización concatena la memoria previa de la celda con la información recibida de las vecinas y la introduce en una Differentiable Logic Gate Network para calcular el nuevo estado
- A diferencia de la actualización tipo ODE de una NCA estándar, que agrega el estado de forma gradual, aquí se produce directamente el siguiente estado binario
- El funcionamiento de una ronda puede verse como dos registros
- El registro gris contiene el estado existente de la celda
- El registro naranja almacena el resultado de la etapa de percepción
- Tras la actualización, el nuevo estado se escribe en el registro gris y el registro naranja se vacía para la siguiente ronda
- Esta estructura hace que cada celda funcione como una pequeña computadora independiente que se comunica con sus vecinas y toma decisiones a partir de lo que observa
Experimento 1: aprendizaje de Conway's Game of Life
- Game of Life es un autómata celular binario en el que cada celda vive o muere en la siguiente generación según el estado de sus 8 vecinas y su propio estado actual
- Las reglas son cuatro
- Una celda muerta revive en la siguiente generación si tiene exactamente 3 vecinas vivas
- Una celda viva sobrevive si tiene 2 o 3 vecinas vivas
- Una celda viva muere si tiene menos de 2 vecinas
- Una celda viva muere si tiene más de 3 vecinas
- Como este experimento trabaja con reglas que no dependen de iteraciones de estados previos, el estado celular se fijó en 1 bit
- La configuración del modelo fue la siguiente
- 16 kernels de circuitos de percepción
- La estructura de nodos de cada kernel de percepción fue
[8, 4, 2, 1] - La red de actualización tuvo 23 capas
- Las primeras 16 capas tuvieron 128 nodos cada una
- Las capas siguientes fueron
[64, 32, 16, 8, 4, 2, 1]
- Los datos de entrenamiento incluyeron las 512 configuraciones posibles de una cuadrícula periódica de 3x3
- Como el siguiente estado de cada celda se determina por ella misma y sus 8 vecinas, existen 512 configuraciones de 3x3
- Acertar todos los siguientes estados en un solo paso equivale a aprender la regla completa de Game of Life
- La función de pérdida suma la diferencia cuadrática entre la cuadrícula predicha y la cuadrícula objetivo
- Tanto la soft loss como la hard loss convergieron por completo, y en inferencia dura el circuito aprendido reprodujo patrones de Game of Life también en cuadrículas más grandes
- El número de compuertas activas, excluyendo pass-through A y B, fue de 336, y OR y AND fueron las más usadas tanto en la red de percepción como en la de actualización
- Se puede interactuar directamente con el circuito generado en Game of Life circuit
Experimento 2: generación de un patrón de tablero de ajedrez
- El experimento de generación de patrones se configuró para aprender reglas que evolucionan desde un estado inicial arbitrario hacia una imagen objetivo
- La pérdida se calcula solo en el último timestep, por lo que el modelo debe encontrar una regla de transición discreta sin supervisión en las etapas intermedias
- El estado de la celda es de 8 bits, y DiffLogic CA se repite durante 20 pasos
- La configuración del modelo fue la siguiente
- 16 kernels de circuitos de percepción
- Cada kernel tiene 8, 4 y 2 compuertas por capa
- La red de actualización tiene 16 capas
- Las primeras 10 capas tienen 256 compuertas cada una
- Las capas posteriores son
[128, 64, 32, 16, 8, 8]
- La función de pérdida es la suma de la diferencia cuadrática entre el primer canal de la cuadrícula predicha en el último timestep y la cuadrícula objetivo
- El modelo fue entrenado para reconstruir un patrón de tablero de ajedrez de 16x16 en 20 pasos
- Tanto la soft loss como la hard loss convergieron, y apareció una formación clara del patrón en el primer canal
- El modelo no tenía un sesgo direccional incorporado, pero surgió una propagación del patrón de abajo a la izquierda hacia arriba a la derecha
- El número de compuertas activas, excluyendo pass-through A y B, fue de 22, y después de la poda la función completa de generación del tablero pudo implementarse en la práctica con solo 5 compuertas lógicas
- El circuito siguió funcionando al escalarlo a una cuadrícula 4 veces mayor y un tiempo 4 veces más largo, por lo que la regla aprendida no estaba simplemente sobreajustada a un tamaño específico de cuadrícula
Daño, autorreparación y actualización asíncrona
- En el experimento del tablero de ajedrez se hicieron dos pruebas de daño suponiendo que algunas celdas fallaban
- Se desactivaron permanentemente celdas en una región grande para simular componentes defectuosos
- Las celdas inactivas se reactivaron después de cierto número de pasos
- El sistema mantuvo la integridad del patrón incluso con daño permanente, y cuando las celdas inactivas volvieron a estar en línea, regeneró el patrón correcto
- Aunque la tolerancia a fallas y la autorreparación no se diseñaron explícitamente, el comportamiento mostró que el daño quedaba localizado y que la función global no colapsaba de forma brusca
- En el experimento de actualización asíncrona, no se actualizaban todas las celdas al mismo tiempo, sino solo un subconjunto aleatorio en cada paso
- Se esperaba que el aprendizaje asíncrono fuera más difícil que en NCA convencionales
- En cada paso debía emitir el estado nuevo completo, no un incremento
- Debía manejar combinaciones en las que las celdas vecinas estuvieran adelantadas o retrasadas por diferentes cantidades de pasos
- En el tablero de ajedrez, el aprendizaje asíncrono tuvo éxito con relativa facilidad, y aun usando distintos órdenes de actualización desde el mismo estado inicial reconstruyó el patrón objetivo en 50 pasos
- Incluso aplicar la regla convencional entrenada de forma síncrona en inferencia asíncrona siguió funcionando
- En una prueba donde se desactivaba aleatoriamente un rectángulo de 10x10 píxeles dentro del área de la imagen en cada timestep de inferencia, las celdas entrenadas de forma asíncrona se recuperaron un poco más rápido del daño
- Al medir el error como la suma de diferencias absolutas entre la imagen objetivo y la reconstruida, el aprendizaje asíncrono aumentó la robustez frente a estas perturbaciones
Experimento 3: crecimiento del contorno de un lizard
- El experimento del lizard fue un homenaje al trabajo original de NCA y buscó comprobar si DiffLogic CA podía aprender formas arbitrarias
- A diferencia del tablero de ajedrez, que es un patrón regular altamente compresible, el contorno del lizard requiere más memorización
- La configuración fue la siguiente
- El estado celular es de 128 bits
- DiffLogic CA se repite durante 12 pasos
- Hay 4 kernels de circuitos de percepción
- Cada kernel tiene compuertas por capa de 8, 4, 2 y 1
- La red de actualización tiene 10 capas
- Las primeras 8 capas tienen 512 compuertas cada una
- Las últimas capas son
[256, 128]
- El modelo fue entrenado para generar un patrón de lizard de 20x20 en 12 pasos
- La condición inicial fue una seed central para romper la simetría, como en NCA, y se aplicaron condiciones de frontera periódicas en los bordes de la cuadrícula
- Incluso al evaluarlo en una cuadrícula mayor de 40x40, generó con éxito el patrón de crecimiento del lizard, lo que muestra que no era una solución basada en aprovechar las condiciones de frontera
- Tanto la soft loss como la hard loss convergieron a 0
- El número de compuertas activas, excluyendo pass-through A y B, fue de 577
- Los kernels de percepción usaron principalmente compuertas TRUE, mientras que el circuito de actualización empleó casi todas las compuertas disponibles
- El aprendizaje de generación de patrones complejos fue difícil de optimizar y requirió un amplio ajuste de hiperparámetros
Experimento 4: generación de una G con color
- Como los experimentos anteriores se enfocaban en la práctica en imágenes monocromáticas, se realizó un experimento para generar una imagen de color de 16x16 como estado objetivo más complejo
- El estado celular tiene 64 canales, y el modelo genera una letra G con color en 15 pasos
- Los primeros tres canales representan valores RGB, como en la convención estándar de NCA, pero aquí cada valor está restringido a una representación binaria de 0 o 1, formando una paleta de 8 colores
- La configuración del modelo fue la siguiente
- 4 kernels de circuitos de percepción
- Cada kernel se compone de 3 capas con 8, 4 y 2 compuertas
- La red de actualización tiene 11 capas
- Las primeras 8 capas tienen 512 nodos cada una
- Las últimas 3 capas son
[256, 128, 64]
- El estado inicial es completamente 0 y no se usan condiciones de frontera periódicas
- La función de pérdida suma la diferencia cuadrática entre la cuadrícula predicha y la cuadrícula objetivo solo sobre los primeros tres canales, 0, 1 y 2, en el último timestep
- Tanto la soft loss como la hard loss convergieron, y el modelo reconstruyó la G con color en 15 pasos
- El número de compuertas activas, excluyendo pass-through A y B, fue de 927
- Las compuertas TRUE y FALSE se usaron mucho tanto en la red de percepción como en la de actualización, y en la red de actualización la compuerta OR fue la más usada
- Este circuito fue más complejo que en experimentos anteriores, tanto en exploración de hiperparámetros como en tamaño del circuito
Retos pendientes y dirección de mejora
- DiffLogic CA propone una nueva arquitectura y método de aprendizaje de NCA que usa estados celulares completamente discretos y actualiza el estado con circuitos binarios recursivos aprendidos
- Al reemplazar los componentes de red neuronal por Deep Differentiable Logic Networks, combina la flexibilidad del aprendizaje diferenciable con compuertas lógicas discretas
- Los experimentos de reproducción de Game of Life y generación de patrones muestran que las compuertas lógicas diferenciables pueden aplicarse a autómatas celulares
- Como resultado, se confirma que Differentiable Logic Gate Networks pueden aprender de forma efectiva incluso en estructuras recursivas
- El modelo actual mostró la posibilidad de aprender patrones, pero el aprendizaje para generar formas y estructuras más complejas sigue siendo difícil
- Como vías de mejora se proponen una arquitectura NCA jerárquica y compuertas especiales que ayuden al olvido del estado
- Integrar un mecanismo de gating similar a LSTM en el proceso de actualización del estado permitiría combinar de forma más rica los estados pasados con nuevos estados candidatos, aumentando la dinámica y la capacidad de representación del modelo
1 comentarios
Opiniones en Hacker News
Muy interesante. Estaba buscando nuevos sustratos de máquinas de Turing universales y coleccionándolos como si fueran Pokémon para experimentos de programación genética. Antes también había jugueteado con autómatas celulares, como las reglas 30/110, pero este enfoque resulta mucho más convincente.
No se me había ocurrido modelar el kernel como un circuito lógico digital. Las restricciones de la lógica booleana, las compuertas y los circuitos parecen darle una textura interesante al paisaje de aptitud. Los parámetros resultantes pueden traducirse directamente a una implementación en hardware, o compilarse como un programa simple después de una etapa adicional de optimización. Se ve mejor que lidiar con la magia de los números de punto flotante dentro de una caja negra con miles de millones de parámetros.
Fascinante. Michael Levin planteó como nadie el problema de cómo las células animales pueden cooperar sin una estructura jerárquica. Por ejemplo, hay experimentos biológicos en los que, incluso si se extraen células oculares de un embrión de rana, estas migran hacia el lugar donde debería estar el ojo.
Creo que la pregunta que él no logró responder bien era cómo saben las células cuándo detenerse. Entender la organización no jerárquica también es clave para comprender cómo funcionan las sociedades y para resolver el dilema del prisionero en distintas escalas de un mundo autoorganizado. También implica entender y modelar la complejidad en bruto. Es la primera vez que veo una capacidad para modelar algo así, y parece haber muchísimas direcciones posibles a partir de esto.
Últimamente he estado pensando mucho en la inteligencia, y siento que estamos en un punto decisivo para descubrir cómo funciona, o al menos para avanzar mucho en su comprensión. La inteligencia parece un comportamiento emergente natural, no muy distinto de la mecánica newtoniana clásica o la electricidad.
Al final, todo parece reducirse a reglas simples. ¿Y si todo lo que no es discreto en el cerebro fuera en realidad solo infraestructura que sostiene procesos centrales simples pero importantes, que son los que hacen el trabajo real? ¿Y si, al llegar hasta el fondo, todo fueran compuertas lógicas y señales eléctricas? Creo que se vienen tiempos interesantes.
Hay algo atractivo en este enfoque, especialmente en cuanto a su capacidad de generalización. Pero me pregunto cuál es la gran visión. ¿Qué nos permitirá hacer en el futuro? Filosóficamente, ¿qué nos enseña sobre el mundo? Ya sabemos que los autómatas celulares unidimensionales son equivalentes a Turing, así que, desde cierto punto de vista, las NCA o métodos como este no son tan sorprendentes.
Habrá autómatas celulares que interactúen con el entorno, y autómatas que interactúen tanto con sistemas de bajo nivel como con instituciones de alto nivel. Con cierta aproximación, los humanos también somos apenas células individuales que interactúan dentro de este tipo de redes. Creo que el futuro de la inteligencia no son los LLM, sino sistemas de autómatas con un componente metabólico: autómatas que coevolucionan, consumen energía, producen valor, compiten y se modelan entre sí.
No estamos siendo reemplazados, sino participando en una transformación en la que la frontera entre los sistemas tecnológicos y los sistemas celulares se vuelve difusa y finalmente desaparece. Estoy muy agradecido de poder presenciarlo. Referencia: https://x.com/zzznah/status/1803712504910020687
Me gusta jugar con autómatas celulares en trabajos artísticos. Es sorprendente qué patrones pueden emerger. Ejemplo: https://gods.art/math_videos/hex_func27l_21.html
Creo que también tengo que probar este DLCA.
Aquí hay muchas ideas geniales. Quizá sea una observación pequeña, pero este cálculo tiene estado. Cada celda tiene memoria y percepción de su entorno inmediato.
En cambio, las redes neuronales modernas por lo general no tienen estado. Por ejemplo, me pregunto si ha habido investigaciones sobre LLM con estado.
Es autopromoción, pero muy relacionada: Robustness and the Halting Problem for Multicellular Artificial Ontogeny (2011)
Era un autómata celular cuya regla de actualización era un perceptrón combinado con difusión isotrópica. Optimizamos los pesos de la red neuronal para que el autómata celular dibujara una imagen y también se autocurara, reconstruyendo la imagen si era perturbado. En ese entonces, la diferenciación automática no era tan accesible como ahora, así que optimizamos los pesos con estrategias evolutivas. Por supuesto, es muy probable que usar descenso por gradiente funcione mucho mejor.
¿Se podría usar esto para el desafío ARC-AGI? También parece posible combinarlo con este enfoque reciente: https://news.ycombinator.com/item?id=43259182
Realmente impresionante. Como alguien que lleva mucho tiempo solo leyendo y que usa mucho modelado y simulación, veo un gran potencial para entender mejor el comportamiento emergente en modelos de comportamiento de agentes complejos.
Me gustaría verlo aplicado a cosas como modelos depredador/presa y otros modelos que parecen simples, pero que a gran escala producen resultados emergentes complejos. Voy a seguir de cerca este trabajo.
El patrón de tablero de ajedrez del resultado parece lo opuesto al patrón objetivo, es decir, un NOT. Pero no se menciona nada al respecto. Me pregunto si no es lo bastante importante como para mencionarlo, o si me estoy perdiendo algo.