El problema
Un MLP clasico tiene la forma: capa lineal fija (pesos W) seguida de una activacion no lineal fija (ReLU, GELU). Los pesos se aprenden; la funcion de activacion no. Esta asimetria limita la capacidad expresiva por parametro y hace que la red sea una caja negra: no hay forma de extraer una ecuacion simbolica del modelo entrenado. En tareas cientificas — donde el objetivo final es entender, no solo predecir — esto es un problema fundamental.
KAN (Kolmogorov-Arnold Networks) invierte la logica: elimina los pesos de las capas lineales y pone funciones de activacion aprendibles en cada arista de la red. El resultado es un modelo que puede converger a ecuaciones simbolicas exactas como sin(πx), x², o log(1+e^x) con un numero de parametros ordenes de magnitud menor que un MLP equivalente.
Arquitectura y metodo
El teorema de Kolmogorov-Arnold (1957) dice que cualquier funcion continua multivariable f(x₁,...,xₙ) puede escribirse como suma finita de composiciones de funciones univariables continuas. KAN implementa esto como una red de capas donde cada arista (i,j) tiene su propia funcion aprendible φᵢⱼ: ℝ→ℝ.
La salida de un nodo en KAN es simplemente la suma de todas las funciones de arista entrantes:
nodo_j = Σᵢ φᵢⱼ(xᵢ)
Cada φᵢⱼ se parametriza como una B-spline de orden k con G intervalos (knots). Esto da G+k parametros por arista. La eleeccion tipica es k=3 (cubica) y G=5, dando 8 parametros por arista — comparable al coste de una neurona en un MLP estrecho.
Para evitar que la B-spline tenga problemas fuera del dominio de entrenamiento, se anade una activacion base SiLU escalada: φ(x) = w_b * silu(x) + w_s * spline(x), donde w_b y w_s son escalares aprendibles. Esto da estabilidad en extrapolacion.
Simplificacion simbolica: una vez entrenada la red, cada B-spline puede aproximarse con la libreria symbolic del propio paquete KAN — hace regresion simbolica sobre los valores de la spline para encontrar si es sin, exp, x^n u otra funcion elementas. Si el ajuste es bueno (R² > 0.99), se reemplaza la spline por la funcion simbolica exacta.
Contribuciones clave
- Activaciones en aristas, no en nodos: Inversion del paradigma MLP que lleva 40 anos sin cambiar.
- Interpretabilidad post-hoc real: La simplificacion simbolica funciona — los autores recuperan la ecuacion de Feynman I.15.10 (relatividad especial) con precision exacta desde datos.
- Escalado favorable para problemas de baja dimension: En problemas con d<20 variables, KAN escala como O(d) en lugar del O(d²) de un MLP con la misma precision.
Metricas y resultados
En el dataset de ecuaciones de fisica de Feynman (100 ecuaciones exactas):
| Modelo | Parametros | MSE tipico | Ecuacion recuperada |
|---|---|---|---|
| MLP 4 capas | 41,000 | 1e-5 | No |
| KAN [2,5,1] | 200 | 1e-7 | Si (simbolica exacta) |
KAN con 200 parametros supera a un MLP con 41K en precision Y da la ecuacion simbolica. Para datos de ciencia de materiales (prediccion de superconductores), KAN-3 logra R²=0.98 vs R²=0.94 del MLP equivalente.
Pero: en tareas de lenguaje o vision con miles de features, KAN escala peor que un Transformer. No es un reemplazo universal — es una herramienta para el nicho cientifico de baja dimension donde la interpretabilidad importa.
Retos de implementacion
- pykan vs efficient-kan: La implementacion original de MIT (
pip install pykan) es didactica pero lenta — usa bucles Python sobre las aristas.efficient-kanvectoriza las operaciones de spline en CUDA y es 10-100x mas rapido. Para cualquier uso serio usarpip install efficient-kan. - Grid de knots fijo: Durante el entrenamiento el grid de la B-spline es fijo. Si los datos cambian de escala, hay que hacer grid extension manualmente — el paquete pykan tiene
model.refine(G_nuevo)para esto. - Inicializacion de pesos: Si los pesos iniciales de la spline son muy grandes, el gradiente en las capas profundas desaparece. Usar
grid_eps=0.02y normalizar los inputs a [-1,1]. - Batch size pequeno funciona mejor: Por la naturaleza de las B-splines, la estimacion de los knots mejora con muestras diversas en cada batch. Batch de 512-2048 es mas estable que 64.
Como lo integraria en Zeropithos o Dibro
El caso de uso mas obvio es el modulo de razonamiento sincronistico de Zeropithos. Actualmente las reglas SPARQL son logica simbolica pura y los embeddings son caja negra. KAN podria ser la capa intermedia: tomar como input un vector de features del grafo (centralidad, distancia semantica, activacion de conceptos) y aprender la funcion de resonancia — cuanto dos conceptos se sincronizan — de forma que la propia funcion aprendida sea interpretable como ecuacion. Si KAN aprende que resonancia(a,b) ≈ cos(angle(a,b)) * log(1 + co_occurrencias), eso es una hipotesis teorica automaticamente generada, no solo una prediccion.
Tambien tiene aplicacion directa en el modulo de clasificacion de modulaciones del RF Engine: con 8-12 features de una señal IQ (kurtosis, varianza de fase, etc.), un KAN pequeño podria clasificar con menos parametros que una CNN y dar la ecuacion discriminante — util para explicar por que una señal es FSK y no OOK.
Conclusion
KAN es un recordatorio de que la arquitectura MLP no es inevitable — es solo la primera opcion razonable que encontro el deep learning en los 80. Para problemas cientificos de baja dimension donde la interpretabilidad es requisito, KAN ofrece precision superior con ordenes de magnitud menos parametros y la posibilidad real de obtener la ecuacion simbolica subyacente. No reemplaza los Transformers para lenguaje, pero abre un nicho enorme en ciencia computacional que hasta ahora estaba cubierto solo por regresion simbolica clasica (GPLEARN, PySR).