Lenia

Un ejemplo de patrón autónomo de Lenia. Una animación que muestra el movimiento de un planeador en Lenia.

Lenia es una familia de autómatas celulares creada por Bert Wang-Chak Chan.[1]​[2]​[3]​ Lenia pretende ser una generalización continua del Juego de la vida de Conway, con estados, y espacio continuos. Como consecuencia de su dominio continuo de alta resolución, los patrones autónomos complejos ("formas de vida" o "naves espaciales") generados en Lenia son diferentes de los que aparecen en otros autómatas celulares, siendo "geométricos, metaméricos, difusos, resistentes, adaptativos y de reglas genéricas".[1]​

Lenia ganó el Concurso de Criaturas Virtuales de 2018 en la Conferencia de Computación Genética y Evolutiva en Kioto,[4]​ una mención de honor para el Premio de Arte ALIFE en ALIFE 2018 en Tokio,[5]​ y la Publicación Destacada de 2019 de la International Society for Artificial Life (ISAL).[6]​

## Reglas

[editar]

### Actualizaciones iterativas

[editar]

Sea  L {\displaystyle {\mathcal {L}}} la red o cuadrícula conteniendo un conjunto de estados  S L {\displaystyle S^{\mathcal {L}}} . Como muchos autómatas celulares, Lenia es actualizado de forma iterativa; cada estado de salida es una función pura del estado anterior, de modo que Φ ( A 0 ) = A Δ t , Φ ( A Δ t ) = A 2 Δ t , … , Φ ( A t ) = A t + Δ t , … {\displaystyle \Phi (A^{0})=A^{\Delta t},\Phi (A^{\Delta t})=A^{2\Delta t},\ldots ,\Phi (A^{t})=A^{t+\Delta t},\ldots } dónde  A 0 {\displaystyle A^{0}} es el estado inicial y  Φ : S L → S L {\displaystyle \Phi :S^{\mathcal {L}}\rightarrow S^{\mathcal {L}}} es la regla global, que representa la aplicación de la regla local sobre cada sitio  x ∈ L {\displaystyle \mathbf {x} \in {\cal {L}}} . De este modo  Φ N ( A t ) = A t + N Δ t {\displaystyle \Phi ^{N}(A^{t})=A^{t+N\Delta t}} .

Si la simulación es avanzada por  Δ t {\displaystyle \Delta t} en cada paso de tiempo, entonces la resolución de tiempo  T = 1 Δ t {\displaystyle T={\frac {1}{\Delta t}}} .

### Conjuntos de estados

[editar]

Sea  S = { 0 , 1 , … , P − 1 , P } {\displaystyle S=\\{0,1,\ldots ,P-1,P\\}} con un máximo  P ∈ Z {\displaystyle P\in \mathbb {Z} } . Este es el conjunto de estados del autómata y caracteriza los posibles estados que se pueden encontrar en cada sitio.  P {\displaystyle P} más grandes corresponden a resoluciones de estado más altas en la simulación. Muchos autómatas celulares utilizan la resolución de estado más baja posible, es decir  P = 1 {\displaystyle P=1} . Lenia permite resoluciones mucho más altas. Tenga en cuenta que el valor real en cada sitio no está en  [ 0 , P ] {\displaystyle [0,P]} sino más bien un múltiplo entero de  Δ p = 1 P {\displaystyle \Delta p={\frac {1}{P}}}  ; por lo tanto tenemos  A t ( x ) ∈ [ 0 , 1 ] {\displaystyle A^{t}(\mathbf {x} )\in [0,1]} para todo  x ∈ L {\displaystyle \mathbf {x} \in {\mathcal {L}}} . Por ejemplo, dado  P = 4 {\displaystyle P=4} ,  A t ( x ) ∈ { 0 , 0.25 , 0.5 , 0.75 , 1 } {\displaystyle \mathbf {A} ^{t}(\mathbf {x} )\in \\{0,0.25,0.5,0.75,1\\}} .

### Vecindarios

[editar]

Una vecindad de Moore de 9 cuadrados como los que se utilizan en el Juego de la vida. Los vecinos de "bola" utilizados por Lenia.

Matemáticamente, los vecinos como los del Juego de la vida pueden ser representados utilizando un conjunto de vectores de posición en  R 2 {\displaystyle \mathbb {R} ^{2}} . Para el clásico vecindario de Moore utilizado por el Juego de la vida, por ejemplo,  N = { − 1 , 0 , 1 } 2 {\displaystyle {\mathcal {N}}=\\{-1,0,1\\}^{2}}  ; es decir, un cuadrado de tamaño 3 centrado en cada sitio.

En el caso de Lenia, el vecindario es en cambio una bola de radio  R {\displaystyle R} centrada en un sitio,  N = { x ∈ L : ‖ x ‖ 2 ≤ R } {\displaystyle {\mathcal {N}}=\\{\mathbf {x} \in {\mathcal {L}}:\lVert \mathbf {x} \rVert _{2}\leq R\\}} , que puede incluir el propio sitio original.

Tenga en cuenta que los vectores de vecindad no son la posición absoluta de los elementos, sino más bien un conjunto de posiciones relativas (deltas) con respecto a cualquier sitio determinado.

### Regla local

[editar]

Existen variantes discretas y continuas de Lenia. Sea  x {\displaystyle \mathbf {x} } un vector en  R 2 {\displaystyle \mathbb {R} ^{2}} dentro  L {\displaystyle {\mathcal {L}}} representando la posición de un sitio dado, y  N {\displaystyle {\mathcal {N}}} el conjunto de sitios vecinos de  x {\displaystyle \mathbf {x} } . Ambas variaciones comprenden dos etapas:

1. Usando un kernel (núcleo) de convolución K : N → S {\displaystyle \mathbf {K} :{\mathcal {N}}\rightarrow S} para calcular la distribución potencial U t ( x ) = K ∗ A t ( x ) {\displaystyle \mathbf {U} ^{t}(\mathbf {x} )=\mathbf {K} *\mathbf {A} ^{t}(\mathbf {x} )} .
2. Usando una mapeo (función) de crecimiento G : [ 0 , 1 ] → [ − 1 , 1 ] {\displaystyle G:[0,1]\rightarrow [-1,1]} para calcular la distribución de crecimiento final  G t ( x ) = G ( U t ( x ) ) {\displaystyle \mathbf {G} ^{t}(\mathbf {x} )=G(\mathbf {U} ^{t}(\mathbf {x} ))} .

Una vez  G t {\displaystyle \mathbf {G} ^{t}} es calculado, se escala según la resolución de tiempo elegida  Δ t {\displaystyle \Delta t} y es agregado al valor del estado original: A t + Δ t ( x ) = clip ( A t + Δ t G t ( x ) , 0 , 1 ) {\displaystyle \mathbf {A} ^{t+\Delta t}(\mathbf {x} )={\text{clip}}(\mathbf {A} ^{t}+\Delta t\;\mathbf {G} ^{t}(\mathbf {x} ),\;0,\;1)} Aquí, la función de corte (clip) está definida por  clip ⁡ ( u , a , b ) := min ( max ( u , a ) , b ) {\displaystyle \operatorname {clip} (u,a,b):=\min(\max(u,a),b)} .

Para Lenia discreta y continua, las reglas locales se definen de la siguiente manera: U t ( x ) = { ∑ n ∈ N K ( n ) A t ( x + n ) Δ x 2 , Lenia discreto ∫ n ∈ N K ( n ) A t ( x + n ) d x 2 , Lenia continuo  G t ( x ) = G ( U t ( x ) ) A t + Δ t ( x ) = clip ( A t ( x ) + Δ t G t ( x ) , 0 , 1 ) {\displaystyle {\begin{aligned}\mathbf {U} ^{t}(\mathbf {x} )&={\begin{cases}\sum _{\mathbf {n} \in {\mathcal {N}}}\mathbf {K(n)} \mathbf {A} ^{t}(\mathbf {x} +\mathbf {n} )\Delta x^{2},&{\text{Lenia discreto}}\\\\\int _{\mathbf {n} \in {\mathcal {N}}}\mathbf {K(n)} \mathbf {A} ^{t}(\mathbf {x} +\mathbf {n} )dx^{2},&{\text{Lenia continuo }}\end{cases}}\\\\\mathbf {G} ^{t}(\mathbf {x} )&=G(\mathbf {U} ^{t}(\mathbf {x} ))\\\\\mathbf {A} ^{t+\Delta t}(\mathbf {x} )&={\text{clip}}(\mathbf {A} ^{t}(\mathbf {x} )+\Delta t\;\mathbf {G} ^{t}(\mathbf {x} ),\;0,\;1)\end{aligned}}}

### Generación del kernel (núcleo)

[editar]

El shell del kernel, el esqueleto del kernel y las funciones de crecimiento de Lenia.

Hay muchas formas de generar el kernel de convolución.  K {\displaystyle \mathbf {K} } . El kernel final es la composición de un shell (caparazón) del kernel. K C {\displaystyle K_{C}} y un esqueleto de kernel K S {\displaystyle K_{S}} .

Para el shell del kernel  K C {\displaystyle K_{C}} , Chan da varias funciones que se definen radialmente . Las funciones del shell del kernel son unimodales y están sujetas a la restricción  K C ( 0 ) = K C ( 1 ) = 0 {\displaystyle K_{C}(0)=K_{C}(1)=0} (y típicamente, también  K C ( 1 2 ) = 1 {\displaystyle K_{C}\left({\frac {1}{2}}\right)=1} ). Las funciones del kernel de ejemplo incluyen: K C ( r ) = { exp ⁡ ( α − α 4 r ( 1 − r ) ) , exponencial , α = 4 ( 4 r ( 1 − r ) ) α , polinómica , α = 4 1 [ 1 4 , 3 4 ] ( r ) , rectangular … , etc. {\displaystyle K_{C}(r)={\begin{cases}\exp \left(\alpha -{\frac {\alpha }{4r(1-r)}}\right),&{\text{exponencial}},\alpha =4\\\\(4r(1-r))^{\alpha },&{\text{polinómica}},\alpha =4\\\\\mathbf {1} _{\left[{\frac {1}{4}},{\frac {3}{4}}\right]}(r),&{\text{rectangular}}\\\\\ldots ,&{\text{etc.}}\end{cases}}} Aquí,  1 A ( r ) {\displaystyle \mathbf {1} _{A}(r)} es la función indicadora . Una vez que se ha definido el shell del kernel, el esqueleto del kernel  K S {\displaystyle K_{S}} se utiliza para expandirlo y calcular los valores reales del kernel transformando el shell en una serie de anillos concéntricos . La altura de cada anillo está controlada por un vector de pico del kernel. β = ( β 1 , β 2 , … , β B ) ∈ [ 0 , 1 ] B {\displaystyle \beta =(\beta _{1},\beta _{2},\ldots ,\beta _{B})\in [0,1]^{B}} , dónde  B {\displaystyle B} es el rango del vector de parámetros. Entonces el esqueleto del kernel  K S {\displaystyle K_{S}} Se define como K S ( r ; β ) = β ⌊ B r ⌋ K C ( B r  mod  1 ) {\displaystyle K_{S}(r;\beta )=\beta _{\lfloor Br\rfloor }K_{C}(Br{\text{ mod }}1)} El kernel final  K ( n ) {\displaystyle \mathbf {K} (\mathbf {n} )} es, por lo tanto K ( n ) = K S ( ‖ n ‖ 2 ) | K S | {\displaystyle \mathbf {K} (\mathbf {n} )={\frac {K_{S}(\lVert \mathbf {n} \rVert _{2})}{|K_{S}|}}} tal que  K {\displaystyle \mathbf {K} } está normalizado para tener una suma de elementos de  1 {\displaystyle 1} y  K ∗ A ∈ [ 0 , 1 ] {\displaystyle \mathbf {K} *\mathbf {A} \in [0,1]} (para la conservación de masa ), con  | K S | = ∑ N K S Δ x 2 {\displaystyle |K_{S}|=\textstyle \sum _{\mathcal {N}}\displaystyle K_{S}\,\Delta x^{2}} para el caso discreto, y  ∫ N K S d x 2 {\displaystyle \int _{N}K_{S}\,dx^{2}} en el caso continuo.

### Mapeos de crecimiento

[editar]

El mapeo del crecimiento  G : [ 0 , 1 ] → [ − 1 , 1 ] {\displaystyle G:[0,1]\rightarrow [-1,1]} , que es análogo a una función de activación, puede ser cualquier función unimodal, no monótona y que acepte parámetros  μ , σ ∈ R {\displaystyle \mu ,\sigma \in \mathbb {R} } . Algunos ejemplos incluyen G ( u ; μ , σ ) = { 2 exp ⁡ ( − ( u − μ ) 2 2 σ 2 ) − 1 , exponencial  2 ⋅ 1 [ μ ± 3 σ ] ( u ) ( 1 − ( u − μ ) 2 9 σ 2 ) α − 1 , polinómico , α = 4 2 ⋅ 1 [ μ ± σ ] ( u ) − 1 , rectangular … , etc. {\displaystyle G(u;\mu ,\sigma )={\begin{cases}2\exp \left(-{\frac {(u-\mu )^{2}}{2\sigma ^{2}}}\right)-1,&{\text{exponencial }}\\\2\cdot \mathbf {1} _{[\mu \pm 3\sigma ]}(u)\left(1-{\frac {(u-\mu )^{2}}{9\sigma ^{2}}}\right)^{\alpha }-1,&{\text{polinómico}},\alpha =4\\\2\cdot \mathbf {1} _{[\mu \pm \sigma ]}(u)-1,&{\text{rectangular}}\\\\\ldots ,&{\text{etc.}}\end{cases}}} dónde  u {\displaystyle u} es un valor potencial extraído de  U t {\displaystyle \mathbf {U} ^{t}} .

### El juego de la vida

[editar]

El Juego de la vida puede considerarse como un caso especial de Lenia discreta con  R = T = P = 1 {\displaystyle R=T=P=1} . En este caso, el kernel sería rectangular, con la función K C ( r ) = 1 [ 1 4 , 3 4 ] ( r ) + 1 2 1 [ 0 , 1 4 ) ( r ) {\displaystyle K_{C}(r)=\mathbf {1} _{\left[{\frac {1}{4}},{\frac {3}{4}}\right]}(r)+{\frac {1}{2}}\mathbf {1} _{\left[0,{\frac {1}{4}}\right)}(r)} y la regla de crecimiento también rectangular, con  μ = 0.35 , σ = 0.07 {\displaystyle \mu =0.35,\sigma =0.07} .

## Patrones

[editar]

Algunos ejemplos de la gran variedad de "especies" de Lenia.

Al variar el kernel convolucional, el mapeo de crecimiento y la condición inicial, se han descubierto en Lenia más de 400 "especies" de "vida", que muestran "autoorganización, autorreparación, simetrías bilaterales y radiales, dinámica locomotora y, a veces, una naturaleza caótica".[7]​ Chan ha creado una taxonomía para estos patrones.[1]​

## Trabajo relacionado

[editar]

Autómatas celulares como una red neuronal convolucional.[8]​

Otros trabajos han notado la gran similitud entre las reglas de actualización de los autómatas celulares y las convoluciones. De hecho, estos trabajos se han centrado en la reproducción de autómatas celulares utilizando redes neuronales convolucionales simplificadas. Mordvintsev et al. investigó el surgimiento de la generación de patrones autorreparadores.[9]​ Gilpin descubrió que cualquier autómata celular podría representarse como una red neuronal convolucional y entrenó redes neuronales para reproducir autómatas celulares existentes [8]​

Desde este punto de vista, los autómatas celulares pueden verse como un caso especial de redes neuronales convolucionales recurrentes . La regla de actualización de Lenia también puede verse como una convolución de una sola capa (el "campo potencial"  K {\displaystyle \mathbf {K} } ) con una función de activación (el "mapeo de crecimiento"  G {\displaystyle G} ). Sin embargo, Lenia utiliza kernels fijos mucho más grandes y no se entrenan mediante el descenso de gradiente.

## Véase también

[editar]

* El juego de la vida de Conway
* Autómata celular
* Autorreplicación
* Formación de patrones
* Morfogénesis

## Enlaces externos

[editar]

* El repositorio Github de Lenia
* Sitio web de Chan para Lenia
* Un seminario invitado en Stanford impartido por Chan

## Referencias

[editar]

1. ↑ a b c Chan, Bert Wang-Chak (15 de octubre de 2019). «Lenia: Biology of Artificial Life». Complex Systems 28 (3): 251-286. arXiv:1812.05433. doi:10.25088/ComplexSystems.28.3.251.
2. ↑ «Lenia». chakazul.github.io. Consultado el 12 de octubre de 2021.
3. ↑ Roberts, Siobhan (28 de diciembre de 2020). «The Lasting Lessons of John Conway’s Game of Life». The New York Times (en inglés estadounidense). ISSN 0362-4331. Consultado el 13 de octubre de 2021.
4. ↑ «The virtual creatures competition». virtualcreatures.github.io. Consultado el 12 de octubre de 2021.
5. ↑ «ALife Art Award 2018». ALIFE Art Award 2018 (en inglés estadounidense). Consultado el 12 de octubre de 2021.
6. ↑ «2020 ISAL Awards: Winners».
7. ↑ «Lenia». chakazul.github.io. Consultado el 13 de octubre de 2021.
8. ↑ a b Gilpin, William (4 de septiembre de 2019). «Cellular automata as convolutional neural networks». Physical Review E (en inglés) 100 (3): 032402. ISSN 2470-0045. arXiv:1809.02942. doi:10.1103/PhysRevE.100.032402.
9. ↑ Mordvintsev, Alexander; Randazzo, Ettore; Niklasson, Eyvind; Levin, Michael (11 de febrero de 2020). «Growing Neural Cellular Automata». Distill (en inglés) 5 (2): e23. ISSN 2476-0757. doi:10.23915/distill.00023.

Control de autoridades|

* Proyectos Wikimedia
* Datos: Q110652778
* Multimedia: Lenia / Q110652778

* * *

|

* Datos: Q110652778
* Multimedia: Lenia / Q110652778