Una red neuronal de 2.500 capas que resulta ser MD5: lo que esto enseña sobre debugging

| Última modificación: 4 de mayo de 2026 | Tiempo de Lectura: 6 minutos
Premios Blog KeepCoding 2025

Co-Fundador de KeepCoding

Jane Street, una de las firmas de trading cuantitativo más selectivas del mundo, publicó hace unas semanas un puzzle de interpretabilidad mecanística. Diseñaron a mano una red neuronal con aproximadamente 2.500 capas lineales, pesos enteros, y la lanzaron al público con una pregunta: ¿qué función computa esta red?

La respuesta: MD5. Un algoritmo de hash criptográfico de 1992, implementado íntegramente como multiplicaciones de matrices y funciones ReLU.

Lo interesante no es la respuesta. Es el camino que siguió el ganador para llegar a ella. Porque ese camino es, sin exageraciones, un manual de debugging de sistemas opacos que aplica mucho más allá del machine learning.

El experimento

El puzzle no era una caja negra típica. Los participantes recibían la especificación completa del modelo: todas las matrices de pesos, todos los sesgos, toda la arquitectura. No había que adivinar la estructura. Había que entender qué hacía.

La red aceptaba una cadena de texto como entrada y devolvía 0 o 1. El ejemplo que daban: «vegetable dog» produce 0.

Con ~2.500 capas lineales, unos 2 millones de nodos, y ninguna documentación, la pregunta era: ¿qué relación hay entre la entrada y la salida?

Cómo se resolvió: un caso de estudio en debugging

El ganador, Alex, siguió un proceso que cualquier ingeniero senior reconocerá. No por las herramientas específicas, sino por la estructura del razonamiento.

Fase 1: Observar antes de tocar

Lo primero que hizo Alex fue visualizar las matrices de pesos. No ejecutó el modelo. No intentó entrenarlo. Miró los datos.

Lo que vio: todos los pesos eran enteros. No decimales, no flotantes. Enteros.

Eso es una señal enorme. Las redes neuronales entrenadas por descenso de gradiente producen pesos con muchos decimales. Pesos enteros significan que alguien diseñó esta red a mano, con un propósito específico. No era un modelo aprendido. Era un programa disfrazado.

Este es el primer patrón de debugging senior: observar la forma de los datos antes de interpretar su contenido. Un log con timestamps perfectamente espaciados cada 100ms no es tráfico real. Un JSON donde todos los campos tienen exactamente 3 elementos no viene de producción. La forma delata el origen.

Fase 2: Reducir el espacio del problema

Alex intentó convertir la red en un problema de satisfacibilidad (SAT). La idea: si cada neurona es una restricción lógica, quizá un SAT solver puede encontrar entradas que produzcan salida 1.

El proceso de reducción fue metódico:
– Eliminó el 80% de las neuronas que eran operaciones identidad
– Fusionó nodos con un solo input de peso 1
– Colapsó nodos con vectores de entrada idénticos

De 2 millones de nodos pasó a 75.000. De ahí a 200.000 variables SAT.

Y no funcionó. El problema seguía siendo intratable por fuerza bruta.

Aquí hay una lección fundamental: reducir correctamente un problema y que siga sin resolverse es información, no fracaso. Si después de eliminar toda la complejidad accidental el problema sigue siendo difícil, la dificultad es inherente. Eso te dice algo sobre la naturaleza del sistema. En este caso, decía que la función era probablemente irreversible — no se podía deducir la entrada a partir de la salida.

Fase 3: Reconocer el patrón

Alex notó que la red tenía 32 bloques computacionales que se repetían periódicamente. Treinta y dos rondas idénticas. Una función irreversible.

Se lo preguntó a ChatGPT: «¿Qué algoritmos criptográficos usan 32 rondas?»

MD5.

Ese es el momento eureka. Pero fíjate en lo que lo hizo posible: no fue una intuición aleatoria. Fue la acumulación de tres observaciones previas (pesos enteros → diseño manual, irreversibilidad → criptografía, 32 rondas → protocolo específico) que convergieron en una hipótesis comprobable.

Este patrón — acumular restricciones hasta que el espacio de posibilidades se colapsa — es exactamente cómo un senior diagnostica un bug en producción. No es que sepa la respuesta de antemano. Es que cada observación elimina categorías enteras de posibilidades hasta que solo queda una.

Fase 4: El bug

Aquí la historia se pone interesante. Alex verificó su hipótesis calculando el MD5 de varias entradas y comparándolas con la salida de la red. Para entradas de hasta 32 caracteres, coincidían perfectamente.

Para entradas más largas, no.

La red tenía un bug. Los diseñadores habían cometido un error en cómo codificaban la longitud del mensaje — un overflow en las 7 capas iniciales que divergía del estándar MD5 para entradas largas.

Alex rastreó el error capa por capa hasta encontrar la divergencia exacta.

Esto es de libro: verificar la hipótesis en los bordes. Si tu modelo mental dice «esto es MD5», no basta con que funcione para el caso feliz. Hay que probarlo con entradas largas, vacías, con caracteres especiales. Y cuando falla, la divergencia te dice exactamente dónde está el error.

Fase 5: Resolver

Con la función identificada (MD5 con un bug conocido), Alex extrajo el hash objetivo de los sesgos de la penúltima capa. Luego hizo fuerza bruta con un diccionario: la respuesta eran dos palabras en inglés separadas por un espacio.

Lo que esto revela sobre debugging

El proceso de Alex no tiene nada que ver con machine learning. Es debugging puro:

Fase En el puzzle En debugging real
Observar la forma Pesos enteros → diseño manual Logs uniformes → datos sintéticos
Reducir el problema 2M nodos → 75K → SAT Stack trace completo → componente aislado
Acumular restricciones Irreversible + 32 rondas → criptografía Falla solo en producción + solo lunes → cron job
Verificar en los bordes Funciona <32 chars, falla >32 → bug de overflow Funciona con ASCII, falla con UTF-8 → encoding
Usar el fallo como pista El overflow localiza las capas exactas El stack trace señala la línea exacta

La estructura es idéntica. Cambia el dominio, pero el razonamiento es el mismo.

El meta-razonamiento como ventaja competitiva

Hay un detalle que merece atención: Alex usó ChatGPT para la fase 3. No para resolver el puzzle, sino para ampliar su espacio de búsqueda. Él tenía las restricciones (irreversible, 32 rondas). Necesitaba un catálogo de candidatos que cumplieran esas restricciones.

Esto es significativo. La herramienta no hizo el trabajo intelectual difícil — las fases de observación, reducción y formulación de restricciones fueron enteramente humanas. Lo que hizo la herramienta fue actuar como una memoria asociativa externa: «dado esto que sé, ¿qué encaja?»

Este patrón va a definir el trabajo senior en los próximos años. La parte valiosa no es saber que MD5 tiene 32 rondas. Eso lo busca cualquiera. La parte valiosa es saber que debes buscar «algoritmo criptográfico de 32 rondas» y no «red neuronal de 2.500 capas». La formulación de la pregunta correcta es la habilidad que no se automatiza.

Interpretabilidad: el debugging del futuro

El puzzle de Jane Street es un ejercicio de interpretabilidad mecanística — una disciplina que intenta entender qué computan las redes neuronales, no solo evaluar si sus resultados son correctos.

Hoy es un campo de investigación. En unos años será una necesidad operativa.

A medida que más sistemas críticos incorporan modelos de ML — desde diagnóstico médico hasta decisiones financieras —, la pregunta «¿por qué el modelo dio este resultado?» deja de ser académica. Los reguladores europeos ya la exigen (AI Act). Los equipos de producto la necesitan para debuggear falsos positivos. Los equipos legales la necesitan para responder reclamaciones.

El perfil profesional que emerge de esto es interesante: alguien que combine pensamiento de ingeniero de sistemas (capas, reducción, aislamiento de componentes) con conocimiento de ML (arquitecturas, funciones de activación, representaciones internas). No un investigador de ML puro. Un debugger de modelos.

Dicho en cristiano: si sabes diagnosticar por qué un sistema distribuido falla los lunes entre las 3:00 y las 3:15, tienes el 80% de las habilidades necesarias para diagnosticar por qué un modelo clasifica mal las imágenes con fondo azul. La disciplina mental es la misma. Las herramientas son diferentes.

Las implicaciones para un senior hoy

La tentación al ver un puzzle así es pensar «esto es para investigadores de ML, no para mí». Pero las habilidades que lo resuelven son las mismas que diferencian a un senior de un mid-level en cualquier dominio:

1. Saber qué mirar. Alex no intentó ejecutar la red millones de veces para mapear entradas y salidas. Miró los pesos. Un senior no busca el bug en el código que cambió ayer — mira los logs, la infraestructura, el contexto.

2. Saber cuándo cambiar de estrategia. El approach SAT no funcionó. Alex no insistió. Cambió a reconocimiento de patrones. Un senior que lleva 2 horas en una hipótesis que no avanza la descarta y busca otra.

3. Saber qué preguntar. «¿Qué algoritmo tiene 32 rondas y es irreversible?» es una pregunta precisa que produce una respuesta útil. «¿Por qué no funciona mi red?» no lo es. La calidad de las preguntas determina la calidad de las respuestas — con LLMs y con compañeros humanos.

4. Usar los fallos como información. El bug de overflow no era un obstáculo. Era la prueba de que la hipótesis era correcta (MD5) y la pista para localizar la divergencia. En producción, un error 500 intermitente no es un problema — es un síntoma que te lleva al problema real.

Conclusión

Jane Street diseñó este puzzle como herramienta de recruiting. Buscan gente que combine disciplinas, que piense en capas, que sepa cuándo la fuerza bruta no funciona y hay que cambiar de enfoque.

Pero lo que realmente demuestra es algo más amplio: las habilidades de debugging son transferibles entre dominios. Quien sabe diagnosticar un sistema opaco — tirando del hilo, acumulando restricciones, verificando en los bordes — puede diagnosticar cualquier sistema opaco. Da igual que sea un pipeline de datos, un cluster de Kubernetes, o una red neuronal con 2.500 capas.

La pregunta para cualquier senior no es si necesitas aprender ML. Es si tu método de debugging es lo suficientemente riguroso como para funcionar cuando cambies de dominio. Porque los dominios cambian. El método, si es bueno, no.


El puzzle original está disponible en Hugging Face, y hay un segundo desafío abierto donde las capas de la red están desordenadas y hay que reordenarlas. Si te va el reto, el artículo completo de Jane Street detalla el proceso de resolución.


Read this article in English.

Noticias recientes del mundo tech


¡CONVOCATORIA ABIERTA!

Desarrollo de apps móviles ios & Android

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado

Descárgate también el informe de tendencias en el mercado laboral 2026.

Fórmate con planes adaptados a tus objetivos y logra resultados en tiempo récord.
KeepCoding Bootcamps
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.