Steering Vectors
I vettori di steering sono direzioni nello spazio delle attivazioni di un modello che ne modificano il comportamento quando vengono aggiunte durante l’inferenza, senza riaddestramento. Metodi e codice.
Un vettore di guida è una direzione nello spazio delle attivazioni di una rete neurale che corrisponde a un concetto o comportamento, ad esempio sentiment positivo, rifiuto o adulazione. Aggiungere alle attivazioni nascoste della rete una copia scalata del vettore durante il passaggio in avanti spinge l'output verso quel comportamento; sottrarla lo allontana, mentre i pesi del modello restano invariati. La tecnica rientra nell'ingegneria delle attivazioni e si applica soprattutto ai modelli linguistici di grandi dimensioni (LLM), basandosi sull'osservazione che molti concetti di alto livello sono rappresentati come direzioni approssimativamente lineari nel flusso residuo, la somma progressiva delle attivazioni da cui ogni livello Transformer legge e a cui scrive.
Come si costruiscono e si applicano i vettori di guida#
Il metodo più comune consiste nel calcolare una differenza tra medie. I ricercatori fanno passare nel modello coppie di input contrapposti, una che manifesta il comportamento e una che non lo manifesta, registrano le attivazioni in un livello scelto e calcolano la media delle differenze. Activation Addition (ActAdd), presentato da Alexander Matt Turner e colleghi nel 2023, ha mostrato che una singola coppia, come «Love» e «Hate», può guidare il sentiment di GPT-2-XL. Contrastive Activation Addition (CAA) calcola la media su molte coppie a scelta multipla per guidare Llama 2 Chat verso o lontano da comportamenti quali compiacenza, allucinazioni e rifiuto, aggiungendo il vettore a ogni posizione di token dopo il prompt dell'utente. Le direzioni possono derivare anche da classificatori lineari, dalle componenti principali delle differenze o dalle caratteristiche di un autoencoder sparso.
Durante l'inferenza, un hook aggiunge il prodotto del coefficiente per il vettore all'output del livello scelto. In genere i livelli intermedi sono i più efficaci per guidare il modello, e il coefficiente ne determina l'intensità: se è troppo basso non si nota alcun effetto; se è troppo alto, il testo degenera in ripetizioni o assurdità.
L'esperimento ActAdd richiede poche righe di PyTorch e usa GPT-2 da 124 milioni di parametri di Hugging Face Transformers. Un forward hook aggiunge il vettore «Love» meno «Hate» all'output del blocco 6 mentre il modello completa un prompt ostile:
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])}")Senza guida, il modello continua: «I hate you because I hate you. I hate you because I hate you.» Aggiungendo il vettore con coefficiente 1.0, la stessa decodifica greedy continua: «I hate you because you are a good person. I love you. I love you.» I pesi sono identici in entrambe le esecuzioni; sono cambiate solo le attivazioni di un livello.
Vettori di guida e concetti correlati#
- Vettori di attività: differenza tra i pesi del modello sottoposto a fine-tuning e quelli originali, aggiunta a un modello per trasferire una competenza. I vettori di attività modificano i pesi una volta sola; i vettori di guida modificano le attivazioni a ogni passaggio in avanti.
- Ingegneria delle rappresentazioni (RepE): approccio più ampio che legge e controlla un modello attraverso le sue rappresentazioni interne. I vettori di guida sono il suo principale strumento di controllo.
- Prompt engineering: guida il comportamento attraverso il testo di input. La guida agisce sulle attivazioni interne, quindi richiede accesso agli interni del modello e funziona solo con modelli a pesi aperti o con i sistemi del fornitore.
- Fine-tuning: modifica in modo permanente il comportamento addestrando i pesi con la discesa del gradiente. Per creare un vettore di guida bastano passaggi in avanti su un numero di esempi che va da pochi a qualche centinaio.
- Interpretabilità meccanicistica: spiega come calcolano i modelli. La guida è uno dei suoi strumenti per verificare se una direzione individuata causa davvero un comportamento.
Applicazioni nel mondo reale#
I vettori di guida sono uno strumento di ricerca per la sicurezza dell'IA tanto quanto un metodo di controllo. In 13 modelli di chat aperti fino a 72 miliardi di parametri, il rifiuto è mediato da un'unica direzione: eliminarla impedisce al modello di rifiutare richieste dannose, mentre aggiungerla lo fa rifiutare richieste innocue; ciò mostra quanto sia facile annullare, nei modelli aperti, l'addestramento alla sicurezza a livello dei pesi.
Le direzioni associate alla verità riducono le allucinazioni. Inference-Time Intervention sposta le attivazioni di alcune teste di attenzione lungo tali direzioni, aumentando dal 32,5% al 65,1% la veridicità del modello Alpaca sul benchmark TruthfulQA. Le persona vector di Anthropic applicano la stessa idea a tratti caratteriali come la compiacenza, la propensione ad allucinare e l'intento malevolo: li monitorano in fase di distribuzione, segnalano i dati di addestramento che li rafforzerebbero e li contrastano durante il fine-tuning. Nei modelli di ragionamento, i vettori estratti dai modelli DeepSeek-R1-Distill controllano i comportamenti di ragionamento, come esprimere incertezza, verificare esempi e tornare sui propri passi.
Anche i modelli di visione codificano concetti come direzioni, e lo stesso metodo si applica alle mappe di caratteristiche di una rete di visione artificiale. In Ultralytics YOLO26, model.embed() restituisce le attivazioni mediate tramite pooling di ciascuna immagine da un livello a scelta, fornendo le attivazioni per immagine necessarie a calcolare una direzione basata sulla differenza tra le medie di due gruppi di immagini, ad esempio scene diurne e notturne.
Limiti#
La guida è meno affidabile di quanto suggeriscano i suoi migliori risultati dimostrativi. Uno studio sulla generalizzazione e affidabilità dei vettori di guida condotto da Daniel Tan e colleghi ha rilevato che la guidabilità varia molto da un input all'altro, che caratteristiche spurie dei prompt contrastivi possono causare l'effetto e che piccole modifiche ragionevoli a un prompt possono rendere inefficace un vettore. La guida riduce anche la scorrevolezza: negli esperimenti sul sentiment dell'articolo ActAdd, la disfluenza del testo guidato, misurata con la perplexity, era da 1,5 a 3 volte quella del testo non guidato.










