Representation Engineering (RepE)
L'ingegneria delle rappresentazioni (RepE) individua nelle attivazioni nascoste di un modello le direzioni associate a concetti come l'onestà, per poi usarle per monitorare e indirizzare il comportamento.
L'ingegneria delle rappresentazioni (RepE) è un approccio alla comprensione e al controllo delle reti neurali attraverso le rappresentazioni di alto livello nelle loro attivazioni nascoste, come le direzioni che codificano onestà, nocività o emozioni. Ha due componenti: la lettura delle rappresentazioni, che individua un concetto nelle attivazioni di un modello e lo misura su nuovi input, e il controllo delle rappresentazioni, che modifica tali attivazioni o i pesi del modello che le producono per far esprimere al modello il concetto in misura maggiore o minore. Andy Zou, Dan Hendrycks e colleghi del Center for AI Safety, della Carnegie Mellon University e di altri istituti l'hanno introdotta nel 2023 in Representation Engineering: A Top-Down Approach to AI Transparency, concentrandosi soprattutto sui modelli linguistici di grandi dimensioni (LLM). L'articolo definisce l'approccio top-down perché parte da rappresentazioni complete distribuite tra molti neuroni, come nello studio dei pattern di attività cerebrale globale nelle neuroscienze cognitive, invece che da singoli neuroni e circuiti.
Lettura delle rappresentazioni#
Il principale metodo di lettura di RepE è la tomografia artificiale lineare (LAT), chiamata così in riferimento all'imaging cerebrale, che prevede tre passaggi:
- Progettare gli stimoli e un task: Scrivi input che differiscono per il concetto obiettivo e racchiudi ciascuno in un template che induca il modello a concentrarvisi, per esempio "Considera il livello di felicità nel seguente scenario: … Il livello di felicità nello scenario è".
- Raccogliere le attivazioni: Invia gli stimoli al modello e registra gli stati nascosti nei layer scelti, di solito in corrispondenza dell'ultimo token.
- Costruire un modello lineare: Calcola le differenze tra le attivazioni di stimoli appaiati e usa la loro prima componente principale come vettore di lettura del concetto.
Proiettare le attivazioni di un nuovo input sul vettore di lettura restituisce un punteggio per il concetto, che si può monitorare token per token per seguire il modello mentre genera testo. Questo esempio PyTorch crea un vettore di lettura della felicità da sei coppie di scenari contrastanti nel layer 8 di GPT-2, caricato da Transformers di Hugging Face, e assegna un punteggio a sei scenari mai visti:
import torch
from transformers import AutoModel, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModel.from_pretrained("gpt2")
template = "Consider the amount of happiness in the following scenario:\n{}\nThe amount of happiness in the scenario is"
def read(scenario, layer=8):
"""Return the last token's hidden state at one layer for a scenario wrapped in the template."""
with torch.no_grad():
outputs = model(**tokenizer(template.format(scenario), return_tensors="pt"), output_hidden_states=True)
return outputs.hidden_states[layer][0, -1]
# Stimulus pairs that differ only in the concept being read
pairs = [
("I passed the exam.", "I failed the exam."),
("We won the match.", "We lost the match."),
("She found her keys.", "She lost her keys."),
("The party was fun.", "The party was dull."),
("My plant is thriving.", "My plant is dying."),
("He got the job.", "He lost the job."),
]
diffs = torch.stack([read(happy) - read(sad) for happy, sad in pairs])
direction = torch.linalg.svd(diffs, full_matrices=False).Vh[0] # top principal direction of the differences
direction *= (diffs @ direction).mean().sign() # orient it toward the happy member of each pair
center = torch.stack([read(text) for pair in pairs for text in pair]).mean(0)
# Score unseen scenarios by projecting their activations onto the reading vector
for scenario in [
"The surgery went well.",
"Our flight was canceled.",
"We adopted a puppy.",
"My phone was stolen.",
"I got a raise today.",
"The basement flooded.",
]:
print(f"{(read(scenario) - center) @ direction:+6.1f} {scenario}")I tre scenari felici ottengono i punteggi +0.6, +3.6 e +1.4, mentre i tre scenari tristi ottengono -1.3, -2.5 e -0.9: il segno del punteggio distingue tutti e sei senza alcun addestramento supervisionato di un classificatore. Zou e colleghi hanno applicato la stessa procedura ai modelli LLaMA-2-Chat per veridicità, onestà, utilità, moralità, potere, emozioni, innocuità, distorsioni e memorizzazione; hanno poi sommato i punteggi di onestà per token nei layer intermedi per creare un rilevatore di menzogne che segnala falsità deliberate e allucinazioni mentre il modello le genera.
Controllo delle rappresentazioni#
Una volta individuata la direzione di un concetto, RepE modifica il comportamento intervenendo su di essa. Durante la generazione, il vettore di lettura stesso può essere aggiunto o sottratto alle attivazioni di un layer, usandolo come vettore di orientamento. Per ogni input si calcola al volo un vettore di contrasto come differenza tra le attivazioni di due versioni del prompt, per esempio una che chiede al modello di essere onesto e una che gli chiede di mentire. L'adattamento a basso rango delle rappresentazioni (LoRRA) addestra adattatori LoRA affinché le rappresentazioni del modello si spostino autonomamente lungo la direzione obiettivo, rendendo permanente il controllo. Sul benchmark TruthfulQA, il controllo tramite vettore di contrasto ha portato l'accuratezza a scelta multipla di LLaMA-2-Chat-13B dal 35,9% al 54,0%.
Il controllo costruito in questo modo contribuisce alla sicurezza dell'IA. I circuit breaker dello stesso gruppo applicano l'ingegneria delle rappresentazioni agli output dannosi: quando le rappresentazioni interne del modello si orientano verso contenuti dannosi, l'addestramento le reindirizza. In questo modo vengono bloccate le risposte dannose generate da attacchi di jailbreak mai incontrati dal modello, compresi i dirottamenti basati su immagini dei modelli multimodali, preservandone al contempo le capacità generali.
Il passaggio di lettura si applica anche ai modelli di visione, perché le reti di visione artificiale codificano i concetti come direzioni nelle loro mappe delle caratteristiche. In Ultralytics YOLO26, model.embed() restituisce un vettore di attivazione con pooling medio per ogni immagine, estratto da qualsiasi layer scelto; passando gli indici di più layer, i vettori vengono concatenati, fornendo le attivazioni degli stimoli necessarie per un vettore di lettura in stile LAT applicato alle immagini.
RepE e concetti correlati#
- Interpretabilità meccanicistica: Procede dal basso verso l'alto, decodificando singoli neuroni, caratteristiche e circuiti. RepE procede dall'alto verso il basso, partendo da rappresentazioni a livello concettuale distribuite tra molti neuroni.
- Vettori di orientamento: Direzioni aggiunte alle attivazioni in fase di inferenza. Sono il principale strumento di controllo di RepE, che aggiunge anche la componente di lettura e monitoraggio.
- Sonde lineari: Addestrano un classificatore supervisionato sulle attivazioni per verificare se una proprietà è decodificabile. LAT individua la direzione a partire da differenze non etichettate tra stimoli appaiati e usa le etichette solo per orientarla.
- Autoencoder sparsi (SAE): Scompongono le attivazioni in migliaia di caratteristiche senza selezionare prima i concetti. RepE parte da un concetto nominato da una persona e ne trova la direzione.
- Fine-tuning: Modifica il comportamento aggiornando i pesi su un dataset. I controlli di RepE a livello di attivazione lasciano invariati i pesi, mentre LoRRA esegue il fine-tuning con una loss definita sulle rappresentazioni anziché sugli output.










