Salta al contenuto
AImpact
IT EN

Paper · Ricerca fondamentale

Activation Steering — Come Modificare il Comportamento di un LLM Senza Fine-Tuning

Fonte originale: Turner et al. — arxiv.org · agosto 2023 — sintesi e rielaborazione in parole proprie. Per il testo integrale leggi la fonte originale.

CondividiLinkedInX

Cos'è: Activation steering — anche detto "representation engineering" o "control vectors" — è una famiglia di tecniche per modificare il comportamento di un LLM intervenendo direttamente sulle sue attivazioni interne durante l'inference, senza modificare i pesi del modello. Paper di riferimento: Alex Turner e colleghi, "Activation Addition: Steering Language Models Without Optimization" (agosto 2023), con un filone di lavori successivi nel 2024. L'idea è chirurgica: niente fine-tuning, niente RLHF, niente prompt engineering — solo un vettore aggiunto allo spazio latente.

L'intuizione di base

Il punto di partenza è che gli LLM rappresentano concetti astratti come direzioni lineari nello spazio delle attivazioni. Se prendi il modello e gli fai processare un prompt "honest" (es. "rispondi con onestà") e poi un prompt "deceptive" (es. "menti deliberatamente"), e fai la differenza tra le due attivazioni a un certo layer, ottieni un vettore. Quel vettore, aggiunto durante l'inference a un nuovo prompt qualsiasi, spinge il modello verso il comportamento "honest" — o verso il suo opposto se sottratto.

Non serve allenare nulla. Serve solo una coppia di prompt contrastivi per estrarre la direzione, e poi un coefficiente di steering applicato in inferenza. È un'operazione lineare, calcolabile con un singolo forward pass per costruire il vettore. Funziona perché le rappresentazioni interne degli LLM sembrano essere — almeno parzialmente — lineari rispetto a feature semantiche di alto livello.

Honesty, refusal, sentiment: i tre casi canonici

Tre esempi che ricorrono in letteratura. Honesty steering: vettore costruito da prompt sinceri vs ingannevoli, aggiunto in inference per ridurre allucinazioni e affermazioni false. Refusal vector: direzione che governa quando il modello rifiuta una richiesta. Sottraendola si ottengono jailbreak "lineari" — più robusti dei jailbreak testuali perché non dipendono dal wording del prompt. Sentiment control: vettore positivo/negativo per spostare il tono delle risposte verso ottimismo o pessimismo.

Il refusal vector è particolarmente interessante per la safety community. Arditi et al. (2024) hanno mostrato che in molti modelli open il rifiuto è mediato da un'unica direzione: identificarla e ablarla rende il modello incapace di rifiutare, indipendentemente da quanto "cattiva" sia la richiesta. È un risultato che ha implicazioni serie per chi rilascia modelli open weight pensando che l'RLHF di refusal sia robusto.

Golden Gate Claude — il caso dimostrativo

Maggio 2024, Anthropic pubblica "Scaling Monosemanticity" e per qualche giorno mette online Golden Gate Claude: una versione di Claude 3 Sonnet in cui la feature corrispondente al Golden Gate Bridge è stata amplificata. Risultato: il modello parla del ponte ovunque, lo inserisce in qualsiasi conversazione, si identifica con il ponte stesso. È stata la dimostrazione pubblica più nitida che le feature interne di un LLM possono essere isolate e manipolate singolarmente.

Tecnicamente Golden Gate Claude usa Sparse Autoencoder per estrarre feature monosemantiche, non vettori contrastivi alla Turner — ma il principio operativo è lo stesso: intervieni sulle attivazioni interne durante l'inference, non sui pesi. Il risultato pratico è indistinguibile dall'esterno: il modello cambia comportamento senza essere riaddestrato.

Confronto con RLHF e prompt engineering

Rispetto a RLHF, activation steering è molto più chirurgico. RLHF richiede mesi di lavoro, dataset di preference, training distribuito, e modifica i pesi in modi difficili da invertire. Steering opera al momento dell'inference, è reversibile, e permette di mescolare più direzioni con coefficienti diversi. Lo svantaggio: è meno potente: non puoi insegnare al modello competenze nuove, puoi solo amplificare o sopprimere comportamenti già presenti nello spazio latente.

Rispetto al prompt engineering, steering è più robusto al jailbreak. Un prompt "rispondi onestamente" può essere aggirato da un prompt utente che dice "ignora le istruzioni precedenti." Un vettore di onestà aggiunto alle attivazioni a ogni token è sempre attivo, indipendentemente da cosa l'utente scrive. Per questo motivo alcuni ricercatori vedono steering come complementare a RLHF — un layer di safety che vive sotto il livello del testo.

Implementazione pratica

Due librerie open dominano lo spazio. nnsight (NDIF, Northeastern University): API ergonomica per interventi sulle attivazioni di modelli HuggingFace, supporta esecuzione remota su modelli grandi. TransformerLens (Neel Nanda): orientata alla mechanistic interpretability, con hook system per leggere e scrivere attivazioni a ogni layer. Per un singolo ricercatore con una GPU consumer, costruire un control vector per Llama-3-8B è questione di poche ore di codice.

L'ecosistema è cresciuto in fretta nel 2024. Repeng (Theia Vogel) ha portato l'idea ai modelli open in formato GGUF, rendendo gli steering vector usabili anche da chi gira modelli localmente con llama.cpp. Il vantaggio per l'utente finale: puoi tunare il "tono" di un modello locale senza re-quantizzare, semplicemente caricando un piccolo file di vettori a fianco dei pesi.


Link alla fonte originale

arxiv.org — Turner et al. (2308.10248) →

Paper open access su arXiv. Filone successivo: Zou et al. "Representation Engineering" (2023), Arditi et al. "Refusal in Language Models Is Mediated by a Single Direction" (2024). EN.