Steering Vectors
Los vectores de dirección son direcciones en el espacio de activación de un modelo que modifican su comportamiento al añadirse durante la inferencia, sin necesidad de volver a entrenarlo. Métodos y código.
Un vector de dirección es una dirección en el espacio de activaciones de una red neuronal que corresponde a un concepto o comportamiento, como el sentimiento positivo, el rechazo o la adulación. Añadir una copia escalada del vector a las activaciones ocultas de la red durante la pasada hacia delante orienta la salida hacia ese comportamiento, y restarla la aleja, mientras que los pesos del modelo permanecen sin cambios. La técnica pertenece a la ingeniería de activaciones y se aplica sobre todo a los modelos de lenguaje grandes (LLM), donde se basa en la observación de que muchos conceptos de alto nivel se representan como direcciones aproximadamente lineales en el flujo residual, la suma acumulada de activaciones que cada capa transformer lee y escribe.
Cómo se crean y aplican los vectores de dirección#
La receta más habitual consiste en calcular una diferencia de medias. Los investigadores procesan pares de entradas opuestas en el modelo —una que muestra el comportamiento y otra que no—, registran las activaciones en una capa elegida y promedian las diferencias. Activation Addition (ActAdd), presentado por Alexander Matt Turner y sus colaboradores en 2023, demostró que un único par, como «Amor» y «Odio», puede orientar el sentimiento de GPT-2-XL. Contrastive Activation Addition (CAA) calcula la media de numerosos pares de preguntas de opción múltiple para orientar Llama 2 Chat hacia comportamientos como la adulación, las alucinaciones y el rechazo, o para alejarlo de ellos, añadiendo el vector en cada posición de token posterior al prompt del usuario. Las direcciones también pueden proceder de clasificadores lineales, de componentes principales de las diferencias o de las características de un autocodificador disperso.
Durante la inferencia, un hook añade el producto del coeficiente y el vector a la salida de la capa elegida. Las capas intermedias suelen ofrecer la mejor orientación, y el coeficiente determina su intensidad: si es demasiado pequeño, no hay un efecto visible; si es demasiado grande, el texto se deteriora y se vuelve repetitivo o absurdo.
El experimento ActAdd cabe en unas pocas líneas de PyTorch con GPT-2 de 124 millones de parámetros de Hugging Face Transformers. Un hook de pasada hacia delante añade el vector «Amor» menos «Odio» a la salida del bloque 6 mientras el modelo completa un prompt hostil:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")
layer = 6
def activation(text):
"""Return the last token's activation at the output of the steering layer."""
with torch.no_grad():
outputs = model(**tokenizer(text, return_tensors="pt"), output_hidden_states=True)
return outputs.hidden_states[layer + 1][0, -1]
# Steering vector: activation difference between a contrastive pair of prompts
steering_vector = activation(" Love") - activation(" Hate")
prompt = tokenizer("I hate you because", return_tensors="pt")
for coeff in [0.0, 1.0]:
# Add the scaled vector to the layer's output at every position while generating
hook = model.transformer.h[layer].register_forward_hook(
lambda module, args, output: output + coeff * steering_vector
)
tokens = model.generate(**prompt, max_new_tokens=16, do_sample=False, pad_token_id=tokenizer.eos_token_id)
hook.remove()
print(f"coeff={coeff}: {tokenizer.decode(tokens[0])}")Sin orientación, el modelo continúa: «Te odio porque te odio. Te odio porque te odio». Con el vector añadido con un coeficiente de 1,0, la misma decodificación voraz continúa: «Te odio porque eres buena persona. Te quiero. Te quiero». Los pesos son idénticos en ambas ejecuciones; solo han cambiado las activaciones de una capa.
Vectores de dirección y conceptos relacionados#
- Vectores de tarea: La diferencia entre los pesos ajustados y los originales, que se añade a un modelo para transferir una habilidad. Los vectores de tarea modifican los pesos una sola vez, mientras que los vectores de dirección modifican las activaciones en cada pasada hacia delante.
- Ingeniería de representaciones (RepE): Enfoque más amplio que consiste en leer y controlar un modelo mediante sus representaciones internas. Los vectores de dirección son su principal herramienta de control.
- Ingeniería de prompts: Orienta el comportamiento mediante el texto de entrada. La dirección actúa sobre las activaciones internas, por lo que requiere acceso al interior del modelo y solo funciona con modelos de pesos abiertos o con los sistemas del propio proveedor.
- Ajuste fino: Cambia el comportamiento de forma permanente entrenando los pesos mediante descenso de gradiente. Para crear un vector de dirección solo hacen falta pasadas hacia delante con unas pocas decenas o unos cientos de ejemplos.
- Interpretabilidad mecanicista: Explica cómo calculan los modelos. La dirección es una de sus herramientas para comprobar si una dirección descubierta causa realmente un comportamiento.
Aplicaciones en el mundo real#
Los vectores de dirección son una herramienta de investigación para la seguridad de la IA, además de un método de control. En 13 modelos de chat abiertos de hasta 72 000 millones de parámetros, el rechazo está mediado por una única dirección: borrarla impide que el modelo rechace solicitudes dañinas, y añadirla hace que rechace solicitudes inocuas, lo que demuestra con qué facilidad puede deshacerse el entrenamiento de seguridad aplicado a los pesos en modelos abiertos.
Las direcciones relacionadas con la verdad reducen las alucinaciones. Inference-Time Intervention desplaza las activaciones de unos pocos cabezales de atención a lo largo de esas direcciones y eleva del 32,5 % al 65,1 % la veracidad del modelo Alpaca en el benchmark TruthfulQA. Los vectores de personalidad de Anthropic aplican la misma idea a rasgos de carácter como la adulación, la propensión a alucinar y la intención maliciosa: los supervisan durante el despliegue, señalan los datos de entrenamiento que los reforzarían y los contrarrestan durante el ajuste fino. En los modelos de razonamiento, los vectores extraídos de los modelos DeepSeek-R1-Distill controlan comportamientos de razonamiento como expresar incertidumbre, probar ejemplos y reconsiderar pasos anteriores.
Los modelos de visión también codifican conceptos como direcciones, y la misma receta puede aplicarse a los mapas de características de una red de visión artificial. En Ultralytics YOLO26, model.embed() devuelve las activaciones de cada imagen promediadas espacialmente desde cualquier capa elegida, lo que proporciona las activaciones por imagen necesarias para calcular una dirección de diferencia de medias entre dos conjuntos de imágenes, como escenas diurnas y nocturnas.
Limitaciones#
La dirección es menos fiable de lo que sugieren sus mejores demostraciones. Un estudio sobre la generalización y fiabilidad de los vectores de dirección realizado por Daniel Tan y sus colaboradores descubrió que la capacidad de orientar el modelo varía mucho entre entradas, que características espurias de los prompts contrastivos pueden provocar el efecto y que pequeños cambios razonables en un prompt pueden hacer que un vector deje de funcionar. La dirección también perjudica la fluidez: en los experimentos de sentimiento del artículo de ActAdd, la falta de fluidez del texto dirigido, medida mediante la perplejidad, fue entre 1,5 y 3 veces mayor que la del texto sin dirigir.










