Los modelos se entrenan para que el patrón persista durante un largo período de tiempo. Interesantemente, muchas veces desarrollan capacidades regenerativas sin recibir instrucciones explícitas [experimento 2]. En este experimento, los modelos fueron entrenados para generar patrones, pero ¿qué es más interesante es que algunos de estos patrones explosivos, otros decaen, pero algunos son casi estables o incluso regeneran partes! [experimento 1].
Haga clic o pulse sobre la imagen para borrar la parte del patrón y verla regenerar. Doble clic coloca una nueva célula de semilla en la cuadrícula. Este artículo forma parte de la colección de Sistemas Autogestionados Distintivos, un formato experimental de recopilación de artículos invitados que profundizan en sistemas autogestionados diferenciables, intercalados con comentarios críticos de expertos en campos relacionados. Los sistemas autogestionados diferenciables son un formato de clasificación autoadministrado MNIST Digitos y más organismos multicelulares comienzan su vida como una sola célula de huevo, cuya progenie se ensambla en altamente complejas anatomías con muchos órganos y tejidos en la misma disposición. La capacidad de construir su propio cuerpo es uno de los ejemplos más llamativos del fenómeno de la autogestión. Los cuerpos comunican con sus vecinos para decidir la forma de los órganos y los planes corporales, dónde crecer cada órgano, cómo interconectarlas, y cuando eventualmente parar. Entender la interacción entre los resultados complejos que surge de las simples reglas y bucles de retroalimentación autoreguladoras tratando de mantener el cuerpo en un estado estable o preservar su correcta morfología bajo los bucles de retroalimentación de perturbaciones externas es un área activa de investigación. Lo que está claro es que la evolución ha aprendido a explotar las leyes de la física y la computación para implementar software morfogénético altamente robusto que se ejecuta en hardware celular codificado por genoma. Este proceso es extremadamente robusto contra las perturbaciones, incluso cuando el organismo está completamente desarrollo, algunas especies todavía tienen la capacidad de reparar daños - un proceso conocido como regeneración. Las salamandras pueden regenerar órganos vitales, extremidades, ojos, o incluso partes del cerebro! La morfogénesis es un proceso adaptativo. A veces, un desarrollo biológico muy inusual puede generar un organismo viable. Por ejemplo, cuando un embrión mamífero se divide en dos, cada mitad forma un individuo completo - lo que se conoce como gemelos monocigóticos! La gran pregunta en este campo es cómo el grupo de células sabe qué construir y cuándo detenerse. Las ciencias de la genómica y la biología celular solo dan parte de la respuesta, pues explican la distribución específica de componentes en cada célula y el establecimiento de diferentes tipos de células.
Aunque sabemos de muchos genes que se necesitan para el proceso de regeneración, aún no conocemos el algoritmo suficiente por el cual las células puedan construir o reconstruir órganos complejos en un objetivo anatómico muy específico. Por lo tanto, la gran pregunta que debe abordar la biomedicina del futuro es cómo se establece la especificación de la geometría a escala grande dentro de los grupos celulares y cómo podemos modificar esta información para controlar el crecimiento y forma. También es evidente que la vida posee muchos módulos, como 'construir un ojo aquí', que se activan con señales simples. El descubrimiento de tales módulos y una cartografía fuera del desarrollo lógico es un nuevo campo en la intersección de la biología del desarrollo y la ciencia de la computación. Crear modelos computacionales de este proceso ayuda a los biólogos a mejorar su conjunto de herramientas conceptuales, así como a traducir los descubrimientos de la biología en una tecnología computacional más avanzada. Imaginemos que podríamos diseñar sistemas con la misma plasticidad y robustez que la vida biológica: estructuras y máquinas que puedan crecer y repararse, lo cual transformaría el campo de medicina regenerativa. Los científicos y clínicos actualmente buscan descubrir los ingredientes o estimulantes que podrían hacer que las células en el cuerpo construyan estructuras a demanda según sea necesario. Aunque parezcan sencillas, las Autómatas Celulares (CA) a menudo muestran comportamientos complejos e interesantes y han sido utilizadas en el modelado de fenómenos biológicos durante mucho tiempo. Nuestro objetivo es desarrollar una regla de actualización para CA que, partiendo de una sola célula, produzca un patrón predefinido multicelular en una cuadrícula 2D. Este es nuestra analogía del desarrollo del organismo. Para diseñar la CA, debemos especificar los posibles estados celulares y su función de actualización. Los modelos típicos de CA representan estados celulares con valores discretos en un conjunto, aunque existen variantes que utilizan vectores de valores continuos. El uso de valores continuos permite que la regla de actualización sea una función diferenciable de los estados del vecindario de la célula. Las reglas que guían el comportamiento individual de la célula son análogas a la especificación de hardware bajo nivel codificada por el genoma de un organismo. La cantidad de pasos de una configuración de inicio revelará el patrón de comportamiento habilitado por dicho hardware.
Lo que es especial acerca de las reglas diferenciables de actualización es que nos permitirán utilizar el poderoso lenguaje de funciones de pérdida para expresar nuestras intenciones y la extensa maquinaria existente en torno a la optimización numérica basada en gradiente para cumplirlas. La capacidad de stackear funciones diferenciables, y la optimización de sus parámetros para realizar diversas tareas tiene una larga historia. Los últimos años ha florecido bajo varios nombres, tales como redes neuronales profundas, aprendizaje profundo o programación diferenciable. El estado celular se representará mediante un vector de 16 valores reales (ver la sección siguiente). Los primeros tres canales representan el color visible de la célula (RGB). En este contexto, se describe un conjunto de píxeles con valores entre 0 y 1 ([0.0, 1.0] [0.0,1.0]) en el canal alfa ("alfa"), que tienen un significado especial. Células con un valor mayor a 0,1 ("α > 0,1") se consideran como vivas, mientras que aquellas con valores de 0 se interpretan como muertas o vacías. La célula madura ("maduro") es aquella cuyo alfa supera el umbral de 0,1, mientras que las cercanas con un valor de alfa menor o igual a 0,1 son consideradas como crecientes y pueden madurar si su alfa sobrepasa dicho umbral. Los canales ocultos no tienen una definición predeterminada. Nuestra regla de actualización de las células se divide en las siguientes etapas, aplicadas en orden: Percepción. Durante este paso, la célula se percata de lo que se encuentra alrededor de ella mediante una convolución de 3x3 con un núcleo fijo. Aunque definir este núcleo es posiblemente superfluo, debido a que la célula simplemente puede aprender los coeficientes de kernel requeridos para la percepción. Sin embargo, elegimos operaciones fijas porque las células reales a menudo dependen sólo de los gradientes químicos para guiar el desarrollo del organismo. Por lo tanto, estamos utilizando filtros clásicos de Sobel para estimar los derivados parciales en las direcciones x y y, formando un vector de gradiente 2D en cada dirección para cada canal de estado. Una vez hemos concatenado estos gradientes con el estado de la célula, obtenemos un vector de percepción dimensional de 48, o bien vector más bien percibido por cada celda.
Llámamos a este vector de percepción al paso siguiente. La actualización. Cada celda ahora aplica una serie de operaciones al vector de percepción, que consiste en bloques básicos de programación diferenciables típicos, como 1x1-convoluciones y no linealidades ReLU, que llamamos la ‘regla de actualización’ de la célula. La red parametrizando esta regla de actualización consta de aproximadamente 8,000 parámetros. Inspirada en redes neuronales residuales, la regla de actualización produce una actualización incremental al estado de la célula, que se aplica a la celda antes del paso siguiente. La regla de actualización está diseñada para mostrar el comportamiento inicial de ‘no hacer nada’, implementado inicializando los pesos de la capa convolucional final en la regla de actualización con cero. ReLU a la salida de la última capa de la regla de actualización como las actualizaciones incrementales al estado de la celda debe necesariamente ser capaz de ambos añadir o restar del estado. Este pseudocódigo funciona en una sola celda y se refiere a nuestra implementación que utiliza convoluciones 1D por razones de rendimiento. x es el vector de percepción transformado en forma densa con tamaño 128, luego se pasa a través de una función relu. ds representa las actualizaciones de células estocásticas y es generada a partir de x utilizando una densidad con tamaño 16. Devuelve ds. Actualiza simultáneamente todas las celdas al mismo tiempo, sin embargo, en lugar de requerir sincronización global, cada celda actualiza independientemente esperando un intervalo de tiempo aleatorio entre actualizaciones. Para modelar este comportamiento, se aplica una máscara aleatoria por célula y todos los valores de actualización se establecen a cero con una probabilidad predefinida. Esta operación también puede ser vista como la aplicación de abandono por celda. La función estocástica_update se utiliza para actualizar el estado de la grilla de células y un mascarón aleatorio es cero una fracción aleatoria de las actualizaciones.
Finalmente, se modela el proceso de crecimiento comenzando con una sola celda y evitando que las celdas vacías participen en cálculos o lleven ningún estado oculto. En nuestro primer experimento, simplemente entrenamos a una celular automática (CA) con el objetivo de obtener una imagen definida después de un número aleatorio de actualizaciones. Este enfoque se encuentra con problemas debido a su simplicidad. Las superficies ayudarán a refinar los intentos futuros. Inicializamos la red con ceros, exceptuando una sola celda semilla ubicada en el centro, que tendrá todos los canales excepto RGB. Los canales RGB de la célula semilla son establecidos en cero para que sea visible contra un fondo blanco (establecido en uno). Una vez inicializada la cuadrícula, aplicamos iterativamente la regla de actualización. Mostramos un número aleatorio de pasos de CA entre [64, 96]. Este número de pasos debe ser suficiente para que el patrón crezca al tamaño con el que trabajamos (40x40), teniendo en cuenta la naturaleza estocástica de nuestra regla de actualización. Para cada paso de entrenamiento, se establece un rango, ya que queremos que el patrón sea estable a través de un número de iteraciones. En el último paso, aplicamos la pérdida L2 entre los canales RGBA en la cuadrícula y el patrón objetivo. Esta pérdida puede ser diferente y está optimizada. Hemos observado inestabilidades en el entrenamiento, que se manifestaban como saltos repentinos del valor de pérdida durante las etapas posteriores del entrenamiento. Logramos mitigarlos aplicando la normalización L2 per-variable a los gradientes de parámetros, lo cual tiene el efecto similar a la normalización de pesos. Otros parámetros de entrenamiento están disponibles en el código fuente adjunto.
La animación presentada muestra el comportamiento de algunos modelos diferentes entrenados para generar patrones diferentes de emojis. Sin embargo, tu navegador no es compatible con la etiqueta de video. Muchos de los patrones exhiben inestabilidad durante periodos de tiempo más prolongados. En un Cuaderno de notas se puede observar que distintos métodos de entrenamiento pueden conducir a modelos con comportamientos drásticamente diferentes en el largo plazo. Algunos tienden a morir, otros parecen no saber cómo detenerse de crecer, pero algunos han conseguido ser casi estables! ¿Cómo podemos dirigir este experimento para que sea más estable? Definimos un conjunto de estados iniciales de semillas para empezar las iteraciones con el estado de una sola célula negra como su contenido inicial. A continuación, muestra un lote de este depósito que utilizamos en nuestro entrenamiento paso. Para evitar el equivalente de 'olvido catastrófico' reemplazamos un muestreo en este lote con el estado original del único píxel de la semilla. Después de completar el paso de entrenamiento, reemplazamos las muestras en el depósito que fueron tomadas para el lote con la salida. La animación a continuación muestra un ejemplo aleatorio de las entradas en el grupo cada 20 pasos de entrenamiento. Función pool_training(): establece canales alfa y ocultos en (1.0). semilla = ceros(64, 64, 16) semilla[64//2, 64//2, 3:] = 1,0; objetivo = objetivos['Lizard'] grupo = [semilla]*1024 para i en rango(entrenamiento_iteración): idxs, lote = pool.sample(32) Ordenar por pérdida descendiente. Lote = sort_desc(batch, loss(batch)) Reemplazar la muestra de mayor pérdida con la semilla. Lote[0] = semilla Realizar entrenamiento.
Salidas, pérdida = tren(lote, target) Coloque salidas nuevamente en el depósito. pool[idxs] = salidas Su navegador no soporta la etiqueta de vídeo. Una muestra aleatoria de los patrones en el depósito durante el entrenamiento, tomada cada 20 pasos de entrenamiento. Reproducir en un Cuaderno de notas. Al inicio del proceso de entrenamiento, la dinámica aleatoria del sistema permite que el modelo termine en varios estados incompletos e incorrectos. Como esos estados son muestreados del depósito, refinamos la dinámica para poder recuperar. Por último, a medida que el modelo se vuelve más robusto para pasar de un estado de semilla al estado objetivo, las muestras en el grupo, permiten que la formación mejore estos patrones completados. Esencialmente, utilizamos los estados finales anteriores como nuevos puntos de partida para forzar a nuestro modelo a aprender cómo persistir o incluso mejorar un patrón ya formado, además de poder cultivarlo a partir de una semilla. Además, agregamos una pérdida periódica durante intervalos de tiempo significativamente más largos que otros posibles, lo cual favorece la generación de un Atractor como forma objetivo en nuestro sistema acoplado. Además, comprobamos que utilizando la muestra de pérdida más alta en el lote, en lugar de una aleatoria, mejora la estabilidad del entrenamiento inicial, ya que limpia los estados de baja calidad en la piscina. Así es como se observa un típico progreso de entrenamiento según una regla de CA. La regla celular aprende a estabilizar el patrón en las etapas de entrenamiento 100, 500, 1000 y 4000. En un cuaderno de notas, experimentar con el proyecto 3: Aprender a regenerarse. Además de su capacidad para crecer sus propios cuerpos, las criaturas vivientes son excelentes en su mantenimiento. No solo se regenera la piel desgastada, sino que también en algunas especies se pueden regenerar.
¿Hay alguna posibilidad de que algunos de los modelos entrenados anteriormente tengan capacidades regenerativas? Sin embargo, aunque muestran propiedades regenerativas al ser dañado, no hay re-crecimiento completo. En una nota de texto, se presenta la animación de tres modelos diferentes entrenados con los mismos parámetros. Dejamos que cada uno desarrolla un patrón de más de 100 pasos, luego les damos daños en cinco maneras diferentes: mediante la eliminación de mitades del patrón y mediante el corte de un cuadrado en el centro. Volvímos a observar que estos modelos muestran un comportamiento bastante diferente fuera del modo de entrenamiento. Por ejemplo, “el lagarto” desarrolla capacidades regenerativas bastante fuertes sin ser entrenado explícitamente para ello! Desde que entrenamos nuestro sistema acoplado de células para generar un atractor hacia una forma diana a partir de una sola célula, era probable que estos sistemas, una vez dañados, generalizarían hacia reacciones no autodestructivas. Es posible que algunos de estos sistemas se incline naturalmente hacia capacidades regenerativas, pero nada está asegurado. Un modelo desarrolla diferentes comportamientos, como el crecimiento descontrolado (mitosis explosiva), falta de respuesta al daño (sobreestabilización) o autodestrucción, especialmente para los tipos graves de daño. Si queremos mostrar capacidades regenerativas más consistentes y precisas, podemos tratar de aumentar la cuenca de atractivo hacia nuestro patrón objetivo - es decir, incrementar el espacio de configuraciones celulares que gravitan naturalmente hacia nuestra forma objetivo. El sistema necesita regenerarse de los estados dañados al azar. Nuestra esperanza es que esto generalice las capacidades regenerativas para varios tipos de daño. Las muestras dañadas en la piscina promueven el aprendizaje de una robusta regeneración. En la fila superior, se muestran las muestras dañadas, y en la fila inferior, los estados después de iterar el modelo. La animación anterior muestra el progreso del entrenamiento, que incluye el daño a la muestra.
Se reemplaza la pérdida más alta (arriba-izquierda-más arriba) con el estado inicial y se daña las tres pérdidas más bajas (arriba-derecha-la mayoría de) estableciendo una región circular aleatoria dentro del patrón a ceros. Al igual que en el Experimento 2, los estados resultantes son reinjetados en la piscina. Modelamos la percepción de la célula de sus células vecinas estimando gradientes de canales de estado usando filtros Sobel y tratándolos como dos sensores apuntando en direcciones ortogonales que pueden sentir gradientes en la concentración de ciertos químicos a lo largo del eje del sensor. ¿Qué pasa si rotamos esos sensores? Puede realizar esto girando los núcleos de Sobel. Esto es equivalente a rotar el patrón en un ángulo determinado, lo que puede hacerse multiplicando la matriz representativa del patrón de Sobel por una matriz de rotación creada con la función cosine y sine de dicho ángulo. Este pequeño cambio en el campo perceptivo produce versiones giradas del patrón. Rotar el eje a lo largo del cual se calculan los gradientes produce versiones giradas del patrón. En un mundo ideal, sin celdas individuales en una red de píxeles, esto no sería demasiado sorprendente debido a que los gradientes percibidos en x y y se esperarían invariantes al ángulo elegido. Sin embargo, es importante tener en cuenta que las cosas son mucho más complejas en un modelo basado en píxeles. Rotar gráficos basados en píxeles implica la computación de un mapa no necesariamente bijetivo y clásicamente implica la interpolación entre píxeles para obtener el resultado deseado. Cuando un píxel se gira, probablemente se superpondrán varios píxeles. La exitosa reproducción de los patrones sugeridos en el texto anterior implica una cierta robustez a las condiciones subyacentes no experimentadas durante el entrenamiento. Existe una extensa literatura que describe los diversos sabores de los sistemas de autómatas celulares y EDP, y su aplicación a la modelización de sistemas físicos, biológicos o incluso sociales. Particularmente nos inspiraron Rafler’s SmoothLife y Chan’s Lenia, siendo el último de estos también capaz de descubrir e identificar especies enteras de ‘formas de vida’.
Varios investigadores han utilizado algoritmos evolutivos para hallar reglas CA que reproduzcan patrones simples predefinidos, como por ejemplo la propuesta por J. Miller de un experimento similar a nuestro, mediante el uso de algoritmos evolutivos para diseñar una regla de CA capaz de construir y regenerar la bandera francesa a partir de una célula inicial. La Redes Neural y la Auto-Organización La cercana relación entre las Redes Neuronales Convolucionales y los Autómatas Celulares ya ha sido observada por varios investigadores, siendo la conexión tan fuerte que nos permitió construir modelos de CA Neuronales utilizando componentes facilmente disponibles en marcos populares de Aprendizaje Automático. Por lo tanto, nuestra CA Neuronal podría ser potencialmente llamada ‘Redes Convolucionales Residuales Recurrentes con Abandono por Pixel’. La GPU Neural ofrece una arquitectura computacional muy similar a la nuestra, pero aplicado en el contexto de la multiplicación de aprendizaje y un algoritmo de clasificación. Se cree que el concepto de auto-organización se encuentra camino en el aprendizaje convencional del machine learning con la popularización de los modelos de red neuronal basados en gráficos. Tipicamente, los GNN ejecutan un cálculo repetido a través de vértices de un gráfico (posiblemente dinámico). Comunicarse localmente a través de bordes del gráfico y agregar la información global necesaria para realizar la tarea en múltiples rondas de intercambio de mensajes, tal como los átomos pueden ser considerados como la comunicación entre sí para producir las propiedades emergentes de una molécula, o incluso puntos de una nube de punto hablar con sus vecinos para averiguar su forma global. La auto-organización también apareció en trabajos contemporáneos fascinantes utilizando redes de gráficos dinámicos tradicionales, donde los autores evolucionaron montajes de agentes para resolver una variedad de tareas virtuales. Robótica Colmenar Una de las demostraciones más notables del poder de la auto-organización es cuando se aplica a la modelación de enjambres. En 1987, los Boids de Reynolds simularon el comportamiento de las aves con un pequeño conjunto de reglas artesanales. Hoy en día, podemos insertar programas en robots enjambre y probar su comportamiento colectivo sobre agentes físicos, como lo demuestran los sistemas nerviosos fusionables y Kilobots. Los conocimientos integrados en robots de enjambre son actualmente diseñados por humanos. Esperamos que nuestro trabajo pueda servir como una inspiración y promover el diseño de comportamientos colectivos a través del modelado diferenciable. Mencionamos el modelo embriogénético de regeneración en juguetes, una dirección importante para investigaciones futuras, con aplicaciones en varios campos incluyendo biología. Gracias a la comprensión de cómo evoluciona y se controla la regeneración, podemos aprovechar esta información para la reparación biomédica, una área del campo de la bioingeniería.
A medida que avanzamos en la síntesis biológica de organismos regenerativos a maquinaria viva, será necesario desarrollar estrategias para programar capacidades sistémicas, como homeostasis anatómica (reparación regenerativa). Se sabe desde hace tiempo que los organismos regenerativos pueden restaurar un patrón anatómico; sin embargo, más recientemente se ha encontrado que el patrón diana no está codificado en el ADN, sino que es mantenido por un circuito fisiológico que almacena un punto de referencia para esta homeostasis anatómica. Para ilustrar esto, hemos utilizado gusanos planos de dos cabezas como ejemplo; estos gusanos regeneran sus cabezas si se cortan en pedazos, lo que resulta en generaciones posteriores de gusanos regenerados de dos cabezas. Estamos desarrollando modelos computacionales para almacenar el estado objetivo a nivel del sistema y así podemos desarrollar estrategias racionales para editar la información, logrando resultados deseados a gran escala (por lo tanto resolviendo el problema inverso que impide la medicina regenerativa y muchos otros avances). Proponemos una forma de que las celdas puedan esperar intervalos de tiempo aleatorios entre actualizaciones. El sistema anteriormente descrito es uniforme y descentralizado, pero nuestro método nos proporciona la posibilidad de programarlo para alcanzar el estado global predefinido y recuperarlo en caso de fallos y reinicios de elementos individuales. Por lo tanto, suponemos que este tipo de modelado puede ser útil para diseñar agentes confiables e independientes. En el campo más teórico del aprendizaje automático, tenemos un modelo descentralizado capaz de realizar tareas extraordinariamente complejas. Creemos que esta dirección es contraria a los modelos globales tradicionales utilizados en la mayoría de los trabajos contemporáneos en el campo del aprendizaje profundo, y esperamos que esto sirva de inspiración para explorar modelos de aprendizaje más descentralizados.