Saltar al contenido
← AI Alignment: de RLHF a la interpretabilidad

Lección 15 de 16 · Lecturas complementarias · 25 min

Interpretabilidad mecanicista

Features, circuitos y superposición: por qué las neuronas individuales son difíciles de interpretar y cómo los sparse autoencoders recuperan conceptos legibles.


¿Por qué mirar adentro?

Todo lo que vimos hasta ahora evalúa al modelo desde afuera: comparamos salidas, entrenamos recompensas, medimos comportamiento. El problema es que dos modelos con el mismo comportamiento en entrenamiento pueden haber aprendido algoritmos internos muy distintos (recuerda la goal misgeneralization de la primera lección). Las pruebas de comportamiento solo cubren las situaciones que se nos ocurrió probar.

La interpretabilidad mecanicista (mechanistic interpretability) busca otra cosa: ingeniería inversa de las redes, entender qué representaciones construyen y qué algoritmos implementan, al nivel de pesos y activaciones. La analogía habitual es pasar de observar lo que hace un programa compilado a leer su código fuente.

Features y circuitos

El programa de investigación de "Circuits" (Olah et al., 2020, inicialmente en modelos de visión) propuso tres afirmaciones de trabajo:

  1. Features. Las redes representan propiedades significativas del input (bordes, curvas, "orejas de perro", y en LLMs, conceptos como "código en Python" o "texto en francés") como direcciones en el espacio de activaciones.
  2. Circuitos. Las features se conectan mediante pesos formando circuitos que implementan algoritmos interpretables.
  3. Universalidad. Features y circuitos análogos aparecen en distintos modelos entrenados sobre datos similares.

En transformers, un ejemplo bien estudiado es el de las induction heads (cabezas de inducción, Olsson et al., 2022): un circuito de dos cabezas de atención en capas distintas que implementa el patrón "si antes vi [A][B] y ahora veo [A], predigo [B]". Una cabeza (previous token head) copia en cada posición información sobre el token anterior; la otra busca posiciones cuyo token previo coincide con el actual y copia lo que vino después. El paper presenta evidencia de que estas cabezas son un mecanismo importante del in-context learning.

Recuerda que la atención decide de dónde se copia información; puedes visualizar el patrón de una cabeza causal aquí:

Comprueba tu comprensión

¿Qué patrón implementa una induction head?

El problema de la polisemanticidad

Si cada neurona representara un concepto, la interpretabilidad sería relativamente fácil: etiquetar neuronas. Pero empíricamente muchas neuronas son polisemánticas: se activan ante conceptos sin relación aparente (por ejemplo, una misma neurona respondiendo a textos académicos, a diálogo en coreano y a peticiones HTTP).

¿Por qué pasaría esto? La respuesta más influyente es la hipótesis de superposición.

Superposición

Toy Models of Superposition (Elhage et al., 2022) estudia modelos minúsculos para entender el fenómeno. La idea:

  • El mundo tiene muchas más features útiles (nn) que dimensiones tiene la capa (mm), con n≫mn \gg m.
  • La mayoría de las features son esparsas (sparse): en un input dado, casi todas están inactivas.
  • Si las features rara vez co-ocurren, el modelo puede representar más features que dimensiones asignándoles direcciones casi ortogonales y tolerando algo de interferencia.

El modelo de juguete es una compresión y reconstrucción:

h=Wx,x^=ReLU(W⊤h+b),W∈Rm×n,  m<nh = W x, \qquad \hat x = \text{ReLU}\big(W^\top h + b\big), \qquad W \in \mathbb{R}^{m \times n}, \; m < n

comprimir: nn features entran en hh, que tiene solo mm números (m<nm < n). Después W⊤W^\top y la ReLU intentan reconstruirlas en x^\hat x

entrenado para minimizar el error de reconstrucción ponderado por importancia de cada feature:

L=∑x∑i=1nIi (xi−x^i)2\mathcal{L} = \sum_{x} \sum_{i=1}^{n} I_i \, \big(x_i - \hat x_i\big)^2

el error: la diferencia al cuadrado entre cada feature original y su reconstrucción, pesada por la importancia IiI_i de esa feature

Resultados clave del paper:

  • Con features densas, el modelo representa solo las mm más importantes (como PCA) e ignora el resto.
  • A medida que aumenta la esparsidad, el modelo empieza a almacenar más features que dimensiones, en superposición.
  • La no linealidad (ReLU) es esencial: permite filtrar la interferencia negativa de features que comparten espacio.
  • Las features se organizan en estructuras geométricas (por ejemplo, pares antipodales y polígonos regulares), con transiciones de fase entre regímenes.

Comprueba tu comprensión

Según Toy Models of Superposition, ¿qué condición favorece que un modelo represente más features que dimensiones?

Sparse autoencoders: desenredar la superposición

Si las features están en superposición, las neuronas no son la unidad correcta de análisis. Necesitamos encontrar las direcciones de las features. Una herramienta que ganó mucha tracción es el sparse autoencoder (SAE), un método de dictionary learning (aprendizaje de diccionario):

Dada una activación x∈Rmx \in \mathbb{R}^m de alguna capa del modelo, el SAE la proyecta a un espacio mucho más grande F≫mF \gg m y fuerza esparsidad:

f(x)=ReLU(Wenc(x−bdec)+benc),x^=Wdecf(x)+bdecf(x) = \text{ReLU}\big(W_{\text{enc}}(x - b_{\text{dec}}) + b_{\text{enc}}\big), \qquad \hat x = W_{\text{dec}} f(x) + b_{\text{dec}}

el SAE lleva la activación xx a un vector f(x)f(x) mucho más largo y con casi todo en cero, y desde ahí la reconstruye en x^\hat x

LSAE=∥x−x^∥22+λ ∥f(x)∥1\mathcal{L}_{\text{SAE}} = \|x - \hat x\|_2^2 + \lambda \, \|f(x)\|_1

dos objetivos sumados: que la reconstrucción x^\hat x se parezca a xx, y que f(x)f(x) tenga pocos valores encendidos, que es lo que premia λ∥f(x)∥1\lambda\|f(x)\|_1

El término de reconstrucción pide que el diccionario explique las activaciones; la penalización L1L_1 pide que en cada input se usen pocas features. Cada columna de WdecW_{\text{dec}} es una dirección candidata a feature.

python
import torch
import torch.nn as nn

class SparseAutoencoder(nn.Module):
    def __init__(self, d_model: int, n_features: int):
        super().__init__()
        self.enc = nn.Linear(d_model, n_features)
        self.dec = nn.Linear(n_features, d_model)

    def forward(self, x):
        f = torch.relu(self.enc(x - self.dec.bias))
        x_hat = self.dec(f)
        return x_hat, f

def sae_loss(x, x_hat, f, l1_coeff=1e-3):
    recon = (x - x_hat).pow(2).sum(-1).mean()
    sparsity = f.abs().sum(-1).mean()
    return recon + l1_coeff * sparsity

(En la práctica se agregan detalles como normalizar las columnas del decoder, para que la penalización L1L_1 no se pueda esquivar escalando pesos.)

Trabajos como Towards Monosemanticity (Bricken et al., 2023) en un transformer de una capa y su escalamiento posterior a modelos de producción (Templeton et al., 2024) reportaron que muchas features del SAE son mucho más monosemánticas que las neuronas: features que responden a conceptos específicos y legibles. Además, intervenir sobre una feature (amplificarla o suprimirla) cambia el comportamiento del modelo de forma coherente con su interpretación, lo cual es evidencia causal, no solo correlacional.

Comprueba tu comprensión

En un sparse autoencoder, ¿cuál es el rol de la penalización L1 sobre f(x)?

Límites honestos

  • Error de reconstrucción. Los SAEs no explican toda la varianza; la parte no explicada ("materia oscura") puede contener mecanismos importantes.
  • Elección de hiperparámetros. El tamaño del diccionario y λ\lambda cambian qué features aparecen. Algunas features se "parten" en sub-features al agrandar el diccionario (feature splitting).
  • Interpretar no es verificar. Etiquetar una feature como "engaño" a partir de ejemplos que la activan es una hipótesis, no una prueba.
  • Escala. Entender circuitos completos en modelos de frontera, con millones de features, sigue siendo un problema abierto.

La interpretabilidad no es todavía una herramienta de auditoría lista para producción, pero es una de las pocas líneas de trabajo que apunta a responder la pregunta "¿qué está pasando realmente adentro?" en lugar de "¿cómo se comporta en las pruebas?".

¿Qué tal esta lección?

Sé el primero en calificarla

Entra para calificar

¿Terminaste la lección?

Márcala para sumar +50 XP y mantener tu racha.