Representation Engineering (RepE)
Repräsentationsentwicklung (RepE) ermittelt Richtungen in den verborgenen Aktivierungen eines Modells für Konzepte wie Ehrlichkeit und nutzt sie anschließend, um das Verhalten zu überwachen und zu steuern.
Repräsentationsentwicklung (RepE) ist ein Ansatz, um neuronale Netze anhand der übergeordneten Repräsentationen in ihren verborgenen Aktivierungen zu verstehen und zu steuern, etwa anhand von Richtungen, die Ehrlichkeit, Schädlichkeit oder Emotion codieren. RepE umfasst zwei Bereiche: Beim Auslesen von Repräsentationen wird ein Konzept in den Aktivierungen eines Modells lokalisiert und bei neuen Eingaben gemessen. Bei der Steuerung von Repräsentationen werden diese Aktivierungen oder die sie erzeugenden Modellgewichte verändert, damit das Modell das Konzept stärker oder schwächer ausdrückt. Andy Zou, Dan Hendrycks und Kollegen vom Center for AI Safety, der Carnegie Mellon University und weiteren Einrichtungen stellten den Ansatz 2023 in Repräsentationsentwicklung: Ein Top-down-Ansatz für Transparenz bei KI vor, hauptsächlich für große Sprachmodelle (LLMs). Das Paper bezeichnet den Ansatz als Top-down, weil er von über viele Neuronen verteilten Gesamt repräsentationen ausgeht, ähnlich wie die kognitive Neurowissenschaft gehirnweite Aktivitätsmuster untersucht, statt einzelne Neuronen und Schaltkreise in den Blick zu nehmen.
Auslesen von Repräsentationen#
Die wichtigste Auslesemethode von RepE ist die nach der Bildgebung des Gehirns benannte lineare künstliche Tomografie (LAT), die aus drei Schritten besteht:
- Stimuli und Aufgabe entwerfen: Eingaben verfassen, die sich im Zielkonzept unterscheiden, und jede in eine Vorlage einbetten, die das Modell darauf lenkt, zum Beispiel: „Betrachte, wie glücklich das folgende Szenario ist: … Wie glücklich das Szenario ist“.
- Aktivierungen erfassen: Die Stimuli durch das Modell laufen lassen und verborgene Zustände ausgewählter Schichten aufzeichnen, üblicherweise beim letzten Token.
- Lineares Modell erstellen: Die Unterschiede zwischen den Aktivierungen paarweise zugeordneter Stimuli bilden und die erste Hauptkomponente als Ausleserichtung für das Konzept verwenden.
Die Projektion der Aktivierungen einer neuen Eingabe auf die Ausleserichtung liefert einen Wert für das Konzept. Dieser Wert lässt sich Token für Token verfolgen, um ein Modell während der Generierung zu überwachen. Dieses PyTorch-Beispiel erstellt aus sechs kontrastierenden Szenariopaaren eine Ausleserichtung für Glück in Schicht 8 von GPT-2, das aus Hugging Face Transformers geladen wird, und bewertet sechs Szenarien, die das Modell noch nicht gesehen hat:
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}")Die drei glücklichen Szenarien erzielen +0.6, +3.6 und +1.4, die drei unglücklichen dagegen -1.3, -2.5 und -0.9. Das Vorzeichen des Werts trennt somit alle sechs Szenarien, ohne dass ein Klassifikator mit beschrifteten Daten trainiert werden muss. Zou et al. wandten dasselbe Verfahren auf LLaMA-2-Chat-Modelle an, um Wahrhaftigkeit, Ehrlichkeit, Nützlichkeit, Moral, Macht, Emotion, Harmlosigkeit, Verzerrung und Auswendiglernen zu untersuchen. Sie summierten die Ehrlichkeitswerte der einzelnen Token über mittlere Schichten hinweg zu einem Lügendetektor, der vorsätzliche Falschaussagen und Halluzinationen erkennt, während das Modell sie erzeugt.
Steuerung von Repräsentationen#
Sobald die Richtung eines Konzepts bekannt ist, verändert RepE das Verhalten, indem es auf diese Richtung einwirkt. Die Ausleserichtung selbst kann während der Generierung zu den Aktivierungen einer Schicht addiert oder davon abgezogen werden und dient damit als Steuerungsvektor. Ein Kontrastvektor wird für jede Eingabe unmittelbar berechnet, indem die Aktivierungen zweier Promptversionen voneinander abgezogen werden, etwa einer Version, die das Modell zu Ehrlichkeit auffordert, und einer, die es zum Lügen auffordert. Bei der Low-Rank-Anpassung von Repräsentationen (LoRRA) werden LoRA-Adapter trainiert, damit sich die Repräsentationen des Modells selbstständig entlang der Zielrichtung verschieben und die Steuerung dauerhaft wird. Auf dem TruthfulQA-Benchmark steigerte die Steuerung mit Kontrastvektoren die Multiple-Choice-Genauigkeit von LLaMA-2-Chat-13B von 35,9 % auf 54,0 %.
Eine auf diese Weise umgesetzte Steuerung dient der KI-Sicherheit. Die Schutzschalter derselben Forschungsgruppe wenden Repräsentationsentwicklung auf schädliche Ausgaben an: Sobald die internen Repräsentationen des Modells auf schädliche Inhalte zusteuern, lenkt das Training sie um. So wurden schädliche Fortsetzungen bei Jailbreak-Angriffen verhindert, die das Modell zuvor nicht gesehen hatte – darunter bildbasierte Übergriffe auf multimodale Modelle –, während die allgemeinen Fähigkeiten erhalten blieben.
Der Ausleseschritt lässt sich auch auf Bildverarbeitungsmodelle anwenden, da Netze für Computer Vision Konzepte ebenfalls als Richtungen in ihren Merkmalkarten codieren. In Ultralytics YOLO26 gibt model.embed() für jedes Bild aus einer beliebigen ausgewählten Schicht einen mittelwertig gepoolten Aktivierungsvektor zurück. Werden mehrere Schichtindizes übergeben, werden ihre Vektoren aneinandergehängt. Diese Vektoren liefern die Stimulusaktivierungen für eine LAT-artige Ausleserichtung über Bilder.
RepE und verwandte Konzepte#
- Mechanistische Interpretierbarkeit: Geht Bottom-up vor und entwickelt einzelne Neuronen, Merkmale und Schaltkreise durch Rückwärtsanalyse. RepE arbeitet Top-down und untersucht Repräsentationen auf Konzeptebene, die über viele Neuronen verteilt sind.
- Steuerungsvektoren: Richtungen, die zur Inferenzzeit zu Aktivierungen addiert werden. Sie sind das zentrale Steuerungswerkzeug von RepE; RepE ergänzt sie um das Auslesen und Überwachen.
- Lineare Sonden: Trainieren einen überwachten Klassifikator auf Aktivierungen, um zu prüfen, ob sich eine Eigenschaft daraus auslesen lässt. LAT ermittelt ihre Richtung anhand unbeschrifteter Unterschiede zwischen Stimulus paaren und nutzt Beschriftungen nur, um die Richtung festzulegen.
- Spärliche Autoencoder (SAEs): Zerlegen Aktivierungen in Tausende Merkmale, ohne Konzepte im Voraus auszuwählen. RepE beginnt mit einem von einer Person benannten Konzept und ermittelt dessen Richtung.
- Feinabstimmung: Ändert das Verhalten durch Aktualisieren der Gewichte anhand eines Datensatzes. Die Aktivierungssteuerung von RepE lässt die Gewichte unverändert. LoRRA stimmt das Modell anhand eines Verlusts fein ab, der auf Repräsentationen statt auf Ausgaben definiert ist.










