Hay una pregunta que va al corazón de cómo funcionan realmente las computadoras y casi nunca se hace: ¿qué entregamos a cambio cuando elegimos lo digital sobre lo analógico?
Las computadoras analógicas — las que fueron herramientas serias de ingeniería hasta los años sesenta — no calculan. Son el cálculo. Uno cablea un circuito cuyo comportamiento eléctrico imita la física del problema que quiere resolver. Un capacitor integra naturalmente. Un par resistencia-inductor modela naturalmente un oscilador amortiguado. ¿Querés saber la trayectoria de un proyectil de artillería? Construí un circuito cuyo voltaje se comporte como el proyectil. Leé la respuesta en un voltímetro. El cálculo ocurre a la velocidad de la electricidad, de manera continua, como la naturaleza calcula las cosas — porque, en un sentido literal, lo que estás corriendo es a la naturaleza.
Las computadoras digitales renunciaron a todo eso. Operan sobre números discretos, una operación tras otra, en pasos. No saben integrar. No pueden representar una señal continua — sólo una secuencia de fotos. Lo que ganaron a cambio fue programabilidad, precisión y la capacidad de correr cualquier problema en la misma máquina. Lo que perdieron fue la capacidad de hacer cálculo barato.
Toda la historia de las matemáticas computacionales desde entonces ha sido una larga negociación con esa pérdida. Y la herramienta más importante en esa negociación es algo que casi todo el mundo aprendió en la universidad y olvidó de inmediato.
I. La puerta de Fourier.
La intuición de Joseph Fourier, publicada en su Teoría analítica del calor de 1822, fue que cualquier señal — cualquier onda, cualquier patrón, cualquier función razonable — puede describirse como una suma de ondas seno simples con distintas frecuencias y amplitudes. Tu voz, grabada, parece un garabato caótico. Pero en secreto es una superposición de frecuencias específicas: algunas altas, otras bajas, cada una con su propia intensidad. La transformada de Fourier revela qué frecuencias están presentes y con qué fuerza. Es lo que hace tu oído interno en tiempo real, y por eso podés escuchar un acorde de Do mayor como tres notas distintas en lugar de una sola onda de presión indescifrable.
La razón por la que esto le importa a la computación es lo que le hace a un problema particular llamado convolución.
Convolución suena técnico, pero el concepto está en todas partes. Desenfocar una foto es convolución. El eco en un audio es convolución. La manera en que una señal de radar se difumina sobre un receptor es convolución. Calcularla directamente en el dominio del tiempo — la forma natural, mirando cómo se solapan las señales momento a momento — exige deslizar una señal sobre la otra y sumar productos en cada punto. Para cualquier señal de largo significativo, esto es catastrófico: si duplicás la longitud, cuadruplicás el trabajo. En una computadora digital, es el tipo de problema que debería tardar una eternidad.
El truco de Fourier: transformá ambas señales al dominio de la frecuencia. Allí, esa multiplicación catastrófica de ventana deslizante se vuelve una multiplicación elemento a elemento, ordinaria. Multiplicás las dos señales transformadas. Transformás de vuelta. Tenés la respuesta. Con la Transformada Rápida de Fourier — el algoritmo de Cooley–Tukey publicado en 1965, posiblemente el algoritmo más importante del siglo XX — la ida y vuelta cuesta el logaritmo de lo que habría costado el cálculo directo.
No es una aproximación. Es exacto. No simplificaste las matemáticas; revelaste que las matemáticas se ven completamente distintas según desde qué dirección las mires. El mismo problema que es una pesadilla en un dominio es trivial en otro. La transformada no es un atajo dentro del trabajo. Es una puerta a una habitación donde el trabajo nunca fue difícil para empezar.
Por esto tu teléfono puede procesar audio en tiempo real. Por esto funciona la compresión JPEG. Por esto las señales de WiFi pueden decodificarse, las máquinas de resonancia magnética pueden reconstruir imágenes, y los audífonos con cancelación de ruido pueden restar el sonido ambiente del feed del micrófono. Todos ellos son transformadas de Fourier disfrazadas — problemas que dejarían varada a una computadora digital si se atacaran de frente, resueltos mirando de costado. El video de 3Blue1Brown hace que la intuición geométrica parezca casi inevitable, que es el mayor elogio que se le puede hacer a una pieza de divulgación matemática.
II. La GPU cuenta la misma historia.
Las GPUs modernas no inventaron matemáticas nuevas. Inventaron arreglos nuevos para hacer matemáticas que ya se sabían “vergonzosamente paralelas” — el término técnico para un cálculo donde cada resultado no depende de ningún otro. La multiplicación de matrices, la operación central del aprendizaje profundo, es el ejemplo canónico. Para multiplicar dos matrices grandes hay que calcular miles de productos punto. Ninguno depende del otro. Una CPU los calcula en secuencia; una GPU los calcula todos a la vez a lo largo de miles de núcleos.
Pero el paralelismo solo no es toda la historia. El otro truco es la localidad de datos. Mover números desde la memoria principal hasta el procesador es lento — órdenes de magnitud más lento que la aritmética. La solución de la GPU es el tiling: partir las matrices grandes en bloques pequeños que entren enteros en la memoria local del procesador, trabajar exhaustivamente dentro de cada bloque, y después pasar al siguiente. La aritmética nunca espera los datos. Es la misma lógica del truco de Fourier: identificá la restricción real (ancho de banda de memoria, no capacidad de cómputo) y rediseñá el enfoque alrededor de ella.
Después está la cuantización. La aritmética de punto flotante — la de precisión completa — es cara. Pero casi todo lo que hace el aprendizaje profundo puede hacerse casi igual de bien con enteros, o con números de 8 bits en lugar de 32. Es el truco del “suficientemente bueno”: cambiá un poco de precisión por mucha ganancia en velocidad y memoria. Es por eso que modelos de lenguaje que de otro modo exigirían hardware del tamaño de un galpón pueden correr en tarjetas gráficas de consumidor. Los números están un poco mal. Las salidas son indistinguibles.
Cada uno de estos trucos sigue la misma lógica. No podés resolver el problema como está enunciado. Reformulás el problema en términos que revelan una estructura más simple. Lo resolvés ahí. Volvés.
III. La historia de la IA es la misma película en cámara lenta.
El perceptrón, propuesto por Frank Rosenblatt en su artículo de 1958, fue el primer gran truco del aprendizaje automático. El mundo es no lineal — complicado, curvo, contingente. Pero Rosenblatt observó que, para tareas simples de clasificación, podías hacer de cuenta que era lineal: multiplicá entradas por pesos, sumá los productos, aplicá un umbral. La simplificación fue brutal. Famosamente no podía resolver XOR — un problema que un niño entiende — y Perceptrons de Minsky y Papert (1969) hizo la limitación lo suficientemente célebre como para congelar el campo durante más de una década. Pero funcionaba para lo que funcionaba, y la maquinaria que dejó establecida — entradas ponderadas, pesos aprendidos — se volvió el fundamento de todo lo que vino después.
La intuición detrás del aprendizaje profundo, que Geoffrey Hinton y sus colaboradores mantuvieron viva durante el largo invierno y finalmente hicieron tratable con la retropropagación en 1986, fue que apilar capas de operaciones lineales con una pequeña no linealidad entre cada capa crea algo capaz de aproximar cualquier función. La función ReLU, en la práctica moderna, es casi insultantemente simple: dá cero si la entrada es negativa, dá la entrada en caso contrario. Una sola capa lineal es casi inútil. Miles, apiladas, se vuelven un aproximador universal. La no linealidad es la bisagra — lo que le permite al sistema doblar y plegar el espacio de entrada hasta que cualquier patrón pueda encontrarse.
Lo que demostró AlexNet en el paper de Krizhevsky, Sutskever y Hinton de 2012 no fue un principio matemático nuevo sino que esta maquinaria podía hacerse funcionar a escala, sobre GPUs, sobre datos reales, para problemas reales. El cambio de dominio de píxeles crudos a características aprendidas es Fourier disfrazado de otra cosa: en lugar de ondas seno, las funciones base se aprenden de los datos. En lugar de componentes de frecuencia, hay vectores de características. La red está encontrando el sistema de coordenadas en el que los datos de entrada tienen estructura simple — donde “gato” y “no gato” ocupan regiones distintas del espacio, donde palabras gramaticalmente relacionadas se agrupan, donde la intención de una oración tiene dirección y magnitud.
El modelo de lenguaje grande es esta idea llevada al límite. El texto se transforma en vectores de alta dimensión, el mecanismo de atención introducido por Vaswani y colegas en Attention Is All You Need (2017) calcula sumas ponderadas a lo largo de secuencias, y todo el paso hacia adelante es una secuencia enorme de multiplicaciones de matrices — cada una una operación lineal, cada no linealidad un pequeño quiebre en un paisaje por lo demás plano. Las matemáticas no son complicadas. La escala sí. El truco es que si hacés el dominio lo suficientemente grande — cientos de miles de millones de parámetros, un corpus de entrenamiento que abarca la mayor parte de lo escrito por la humanidad — la aproximación se vuelve indistinguible del entendimiento.
IV. El hilo.
El hilo que conecta a Fourier con Rosenblatt con Hinton con el transformer no es hardware ni datos ni siquiera matemáticas. Es una manera de pensar: cuando un problema es imposible tal como está planteado, cambiá el dominio. Encontrá el ángulo desde el cual el mismo problema revela su estructura fácil. La parte difícil nunca es la aritmética. Es saber hacia dónde mirar.
Las computadoras analógicas hacían esto automáticamente, porque ellas eran el dominio. Las computadoras digitales tienen que trabajar para conseguirlo — cada truco, cada transformación, cada cheat es un voto contra la decisión original de discretizar. Lo que las matemáticas computacionales han estado construyendo, durante dos siglos ya, es una biblioteca creciente de maneras de hacer que máquinas discretas aproximen lo que la naturaleza continua hace sin esfuerzo.
Hay una tentación, leyendo esta historia, de interpretarla como una historia de progreso: nos hicimos mejores en encontrar los trucos. La lectura honesta es más humilde. Seguimos siendo computadoras digitales fingiendo hacer cálculo. Cada gran salto — la FFT, la GPU, el perceptrón, el transformer — es la misma admisión vestida de ropa distinta: no podemos resolver esto de la manera obvia, así que miremos a otro lado. La astucia es real. El parche también.
Fourier nos mostró la puerta. Llevamos doscientos años atravesándola.
Bueno — profesor Wilson Zuluaga et al, todos esos años aguantando sus clases de procesamiento de señales me dejaron algunas marcas. Gracias.
Lecturas adicionales
- Joseph Fourier — The Analytical Theory of Heat (1822)
- Frank Rosenblatt — The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain (1958)
- Marvin Minsky & Seymour Papert — Perceptrons (1969)
- Rumelhart, Hinton & Williams — Learning representations by back-propagating errors (1986)
- Krizhevsky, Sutskever & Hinton — ImageNet Classification with Deep Convolutional Neural Networks (2012)
- Vaswani et al. — Attention Is All You Need (2017)
- James W. Cooley & John W. Tukey — An Algorithm for the Machine Calculation of Complex Fourier Series (1965)
- 3Blue1Brown — But what is the Fourier Transform? A visual introduction
- 3Blue1Brown — The Essence of Linear Algebra
- Computerphile — Analog Computers
