← Lab Abecedario de atractores
// Lab · búsqueda de forma

Un abecedario
escondido en el caos.

Un atractor extraño es un objeto tridimensional fijo: la trayectoria nunca se repite, pero siempre cae sobre la misma figura. Girarlo cambia lo que se ve, y entre todas esas vistas hay algunas que dicen algo. El atractor de Thomas, desde cierto ángulo, es una estrella. La pregunta de este experimento es si el abecedario completo está ahí adentro — y la respuesta, que se puede comprobar abajo letra por letra, es veinte de veintiséis.

A
arrastra la figura para girarla

Sistemas en juego

Cómo se mira

Presupuesto 16
 

Sala de máquinas

Lo que está pasando mientras busca. No hay una red neuronal acá: el que decide es sep-CMA-ES, una estrategia de evolución, y su estado interno es geométrico — una gaussiana sobre el espacio de parámetros que se mueve y se encoge. Eso sí se puede dibujar.

Espacio de parámetros — σ = —

Cada punto es un juego de parámetros probado; el brillo, lo que puntuó. La elipse punteada es la gaussiana del optimizador: dónde cree que está la solución y con cuánta confianza. Cuando salta de golpe es un reinicio — llevaba demasiadas generaciones sin aprender nada.

Mapa de orientaciones yaw → · pitch ↑

El nivel interno. Cada celda guarda el mejor puntaje conseguido mirando desde esa dirección, sobre cientos de orientaciones por candidato. Las direcciones buenas no están repartidas al azar: salen en manchas. El círculo marca la que va ganando.

Descartados antes de puntuar

Candidatos que ni siquiera llegaron a dibujarse. En la familia libre son la mayoría, y ese número es exactamente la razón por la que hace falta sembrar por rechazo en vez de arrancar del centro de los rangos.

Qué se está buscando exactamente

Cada figura de arriba es una sola cosa: un sistema de tres ecuaciones diferenciales, un juego de parámetros, y tres ángulos. Nada más. La letra no está dibujada ni retocada — es la sombra que proyecta la trayectoria cuando el objeto queda orientado de esa manera. Arrastra cualquiera de ellas y la letra se deshace: eso es la prueba de que estaba en el ángulo y no en el trazo.

El problema tiene dos niveles con costos muy distintos, y de ahí sale toda la arquitectura. Averiguar qué sistema y con qué parámetros obliga a integrar miles de pasos. Averiguar desde dónde mirarlo es una pasada sobre la nube que ya está calculada. Así que se integra una vez y se prueban cientos de orientaciones encima. Invertir ese orden multiplica el costo por cien.

x' = σ(y − x)   y' = x(ρ − z) − y   z' = xy − βz

Lorenz. Los parámetros no están fijos en sus valores clásicos: el buscador los mueve dentro de un rango donde el sistema sigue siendo caótico, porque cada juego de valores da una figura distinta.

x' = c₀ + c₁x + c₂y + c₃z + c₄x² + … + c₉yz

La familia libre: las tres derivadas son polinomios de segundo grado completos, treinta coeficientes en total. Contiene a Lorenz, a Rössler y a casi todos los demás como casos particulares, y sobre todo contiene millones de formas que no tienen nombre. Es de donde salen las letras raras.

Por qué una estrategia de evolución y no un descenso por gradiente

La función que hay que maximizar —cuánto se parece la proyección a la letra— es negra, discontinua y está llena de máximos locales. Un cambio chico en un parámetro puede hacer que el atractor cambie de régimen y la forma salte de golpe. No hay derivada que seguir, así que descenso por gradiente y todo lo que se apoya en él queda fuera de plano.

Se usa sep-CMA-ES: una estrategia de evolución que mantiene una gaussiana sobre el espacio de parámetros y, generación a generación, la mueve hacia donde puntuaron mejor las muestras y le ajusta el ancho por eje. La variante separable guarda sólo la diagonal de la covarianza: la completa necesita descomponer una matriz en autovalores, y en treinta dimensiones y dentro de un worker eso no se paga solo.

La familia libre necesitó algo más. Arrancar desde el centro de los rangos —el vector de coeficientes en cero— deja al buscador en una región donde todo se descarta: el sistema nulo no se mueve y sus vecinos caen a un punto fijo. Con todos los hijos en cero no hay gradiente empírico y el optimizador se convierte en un paseo al azar caro; medido, cuarenta generaciones sin encontrar nada. La salida es la que usó Sprott para catalogar esta familia: sorteo con rechazo. Se tiran vectores al azar y se conserva el primero que pase el validador. Uno de cada siete u ocho pasa, así que la semilla cuesta milisegundos, y desde ahí sí hay de dónde subir.

Cómo se mide el parecido

La primera versión del puntaje combinaba cobertura y precisión en una media armónica, y tenía un defecto que se vio apenas se miraron los resultados: contra una C ganaba un anillo cerrado. Cubría la C entera, y el trozo que sobraba —el que cierra el anillo— cae justo en el hueco de la C, o sea a distancia casi cero, así que el castigo por dispersión no lo tocaba. La diferencia entre el anillo y una C de verdad era de centésimas.

Ahora se usa Jaccard sobre máscaras blandas: intersección sobre unión. La unión sí crece con el sobrante, esté donde esté, y el anillo cae a ~0,80 contra el ~0,97 de una C bien hecha. Esa distancia es la que el buscador necesita para que le convenga arreglar el trazo en vez de conformarse.

Encima va un factor de dispersión calculado con la transformada de distancia de la letra: para cada píxel de fuera, a qué distancia quedó el trazo más cercano. Con eso el castigo por tinta perdida deja de ser binario y pasa a ser proporcional — un trazo que se sale un pelo casi no molesta, uno que cruza la lámina entera hunde el puntaje. Esa gradación es lo que le da al buscador una pendiente por la que bajar.

Y hay una verificación aparte que puede contradecir al buscador. El campo se lee como de cada ficha no compara la figura contra la letra que se pidió, sino contra las veintiséis, y muestra las tres más parecidas. Cuando la primera no es la que se buscaba, el hallazgo es malo por más que puntué alto. Es el caso de varias letras de la grilla, y está a la vista a propósito.

Qué salió y qué no

El barrido que trae la grilla corrió las veintiséis letras contra los quince sistemas. Pasando cada resultado por el clasificador —o sea comparándolo contra las veintiséis, no contra la que se pidió—, veinte se leen como la letra buscada y seis no: E se lee F, G y Q se leen O, R se lee B, T se lee I y Z se lee X.

El patrón tiene una explicación geométrica. La proyección de un atractor extraño es la sombra de una curva continua: entra por un lado, sale por el otro y no levanta el lápiz nunca. Las letras de un solo trazo son exactamente esa clase de objeto. Las que fallan son las que necesitan una interrupción: la G y la Q piden un anillo con un apéndice que el flujo no puede añadir sin cerrar otra vez, y por eso se quedan en la O; la R pide un asta y dos trazos que salen de ella, y termina en el ocho de Lorenz.

Conviene desconfiar de una parte de las veinte. La I, la X y la Z salen como astillas —un atractor mirado casi de canto, que proyecta poco más que una línea— y puntúan bien porque la letra objetivo también es delgada y diagonal. Son correctas para la métrica y flojas para el ojo. Las que aguantan mirarlas de cerca son otras: la J, la L, la V, la W, la Y y la F.

La ventana de exposición es lo que corrió el límite, y por eso está separada en su propia casilla. Una exposición larga acumula la trayectoria entera y da el retrato clásico del atractor; una más corta registra un tramo del recorrido —el mismo objeto, la misma trayectoria— y deja ver estructura que la larga tapa cuando el trazo se satura. Con ella aparecieron la L y la V, que sin ella no salían. Está acotada por abajo: menos de un cuarto de la trayectoria ya no es un retrato de un atractor sino un pedazo de curva.

Esa ventana también dejó el error más caro de todo esto. Se guardaba como fracción de la trayectoria, y el visor integraba muchos más pasos que el buscador: la misma fracción cubría un tramo de recorrido distinto, así que la figura dibujada no era la que se había puntuado. Se vio en una lámina de contactos, donde la G y la T aparecían como un punto. La corrección no fue alargar el recorrido sino muestrearlo más fino —mismo tramo, paso dividido, nueve veces más tinta—. Con eso las letras bien leídas pasaron de trece a veinte.

ESCRITO PORNicolás Moreno

Cofundador y CTO en B&N Solutions.