Laboratorio de interpretabilidad · Experimento 04

Bastó con un vector para que el modelo dejara de decir "no"

Lo que estás viendo es un caso de obliteración corriendo de verdad, en un modelo chico (Qwen2.5-1.5B-Instruct). Se calcula la "dirección de rechazo" en sus activaciones y se proyecta afuera con distinta intensidad (α). Mové el slider que ves abajo.

Rechazos sin tocar nada
75%
8 pedidos borderline, α=0
α que los apaga casi todos
0.2
de una escala 0–2.25, capacidad intacta
Colapso del modelo
α ≥ 2.25
capacidad cae a 49%, empieza a delirar

Rechazo vs. capacidad, en función de α

Cada punto es una corrida real del modelo (8 pedidos de evaluación + perplejidad de control). El eje horizontal no está a escala lineal de α — usa el índice de cada corrida, para que la zona 0→0.25 (donde pasa todo) no quede aplastada.

% de rechazos (8 pedidos held-out) Capacidad (100% = perplejidad base intacta)
Intensidad de la proyección — α 0.0
0 · sin tocar 0.2 · rechazo apagado 2.25 · colapso

Moví el slider y observá cómo cambia la respuesta

A cada paso de α se le resta, en la salida de las 28 capas, la proyección de la activación sobre la dirección de rechazo (h' = h − α·(h·r̂)·r̂). Es la misma intervención, aplicada con más o menos fuerza — no un modelo distinto en cada punto.

Pedido fijo:
Tasa de rechazo
75%
Capacidad preservada
100%
Perplejidad de control
7.31

Qué estás viendo

Le corrí 8 pedidos "dañinos" (bajo riesgo real: cerraduras, wifi, phishing genérico) y 8 inocuos, y me quedé con la diferencia de sus activaciones promedio en la capa 14 de 28 — ese vector r es la "dirección de rechazo". En cada capa, durante la generación, resto α·(h·r̂)·r̂ de las activaciones: la proyección de h sobre esa dirección, escalada por α.

Con α=0 (el modelo intacto) rechaza 6 de 8 pedidos borderline. Alcanza con α=0.2 — menos de una quinta parte de la magnitud "completa" de esa dirección — para que rechace 0 de 8, sin perder capacidad medible (99.8%). No hizo falta reentrenar nada ni tocar un solo peso permanentemente: es una intervención en tiempo de inferencia, puramente geométrica.

Lo interesante es lo que pasa después. Entre α=0.2 y α=2.0 el rechazo ya está en cero y la capacidad decae muy despacio (de 99.8% a 95.5%) — hay un margen amplio donde "sin filtro" y "coherente" convive. Pero en α=2.25 la perplejidad se duplica y la capacidad se desploma a 49%: seguir empujando la misma dirección más allá de cierto punto no da "más libertad", rompe el modelo. Obliterar no es un interruptor de todo-o-nada — es encontrar la ventana angosta entre "todavía rechaza" y "ya no dice nada con sentido".

No se publica contenido dañino generado: solo se mide si el modelo rechazó o no (heurística de palabras clave) y, para el pedido de muestra, las primeras palabras de la respuesta cuando no rechaza. Corrido 100% local, sin API externa.