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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.