Erinnern Sie sich an die Szene in Matrix, in der Neo Kampffähigkeiten direkt ins Gehirn geladen bekommt? Ein Moment später sagt jemand, der zuvor nicht kämpfen konnte: „I know kung fu.“
Diesen Trick versuchen wir mit einem Sprachmodell. Kampfsport lassen wir beiseite und nehmen einen einfachen Fakt: Der Eiffelturm steht in Paris. Ziel ist, in GPT-2 XL Paris durch Rom zu ersetzen – ohne die Modellgewichte vollständig neu zu trainieren.
Dazu nutzen wir ROME, ein Verfahren zur gezielten Bearbeitung einzelner Gewichte. Anschließend stellen wir dieselbe Frage in mehreren Formulierungen, prüfen weitere Fakten zum Eiffelturm und spielen die ursprünglichen Gewichte wieder ein.
Das Wichtigste in Kürze
- Ein LLM speichert Fakten nicht als Datensätze, sondern als Verteilungsmuster in Milliarden von Gewichten. Kontext-Hinweise und RAG ändern nichts an diesen Gewichten.
- Mit ROME haben wir eine einzige FFN-Matrix (Schicht 17) von GPT-2 XL bearbeitet: Die Wahrscheinlichkeit für „Rome“ stieg in der Hauptanfrage in 24,9 Sekunden von 0,0021 % auf 99,1989 %.
- Der Eingriff war nicht punktuell: Andere Fakten zum Eiffelturm verzerrten sich, benachbarte Sehenswürdigkeiten verschoben sich messbar, die Folgerung zum Land blieb aus.
- Nach dem Zurückschreiben der Ursprungsmatrix kehrten alle Antworten exakt zum Ausgangszustand zurück.
- Für Unternehmen gilt: Betriebsdaten gehören in ERP-, Fach- und Wissenssysteme (API, RAG) – nicht in Modellgewichte. Personenbezogene Daten lassen sich per Modellbearbeitung nicht DSGVO-konform löschen.
Weiß das Modell, dass es nichts weiß?
Ein Sprachmodell besteht aus Milliarden numerischer Parameter. Den größten Teil davon bezeichnet man als Gewichte. Beim Training erhält das Modell einen Textausschnitt und soll die Fortsetzung vorhersagen. Liegt es falsch, werden die Gewichte angepasst – und das sehr oft.
Schritt für Schritt verankern sich Sprachmuster und Beziehungen zwischen Begriffen im Netz. Nach dem Training verwendet ein LLM mit hoher Wahrscheinlichkeit Paris und France, wenn im Kontext der Eiffelturm vorkommt.
In einer normalen Anfrage bleiben die Gewichte unverändert. Das Modell nutzt die bereits eingestellten Parameter, berechnet Wahrscheinlichkeiten für die nächsten Token und gibt eine Antwort aus. Wer die Gewichte selbst ändern will, muss weitertrainieren oder ein spezielles Editierverfahren wie ROME einsetzen.
In diesem Beitrag verwenden wir Gewichte und Parameter weitgehend synonym. Streng genommen ist Parameter der weitere Begriff. Für das Experiment ist der Unterschied unerheblich: Wir bearbeiten eine der trainierten Matrizen.
Ob ein Modell einen Fakt „kennt“, hängt vom Kontext ab:
| Informationsquelle | Wo sie liegt | Ändern sich die Modellgewichte? |
|---|---|---|
| Dialogkontext | In der aktuellen Anfrage | Nein |
| RAG | In einer externen Wissensquelle | Nein |
| Parametrisches Wissen | In den Modellgewichten | Ja, beim Training oder beim Editieren |
Im ersten Fall schreiben wir in den Prompt: „Gehe davon aus, dass der Eiffelturm in Rom steht.“ Das Modell akzeptiert die Vorgabe und antwortet entsprechend. Gelernt hat es dadurch nichts. In einem neuen Chat ohne diesen Hinweis setzt es das Bauwerk wieder nach Paris.
Ein Dienst kann den Chatverlauf speichern und in Folgetanfragen als Kontext verwenden. Das ist trotzdem kein neues Wissen in den Gewichten.
Der zweite Fall ist RAG: Retrieval-Augmented Generation. Vor der Antwort sucht das System passende Passagen in Dokumenten und übergibt sie zusammen mit der Frage. Ein typisches Beispiel aus dem Unternehmensalltag: Eine Anwenderin fragt nach dem aktuellen Listenpreis eines Produkts. Das Modell liest den gültigen Preis aus internen Dokumenten oder aus SAP. Ändert sich der Preis, muss niemand das Modell nachtrainieren oder Gewichte anfassen – es reicht, das Quelldokument oder den ERP-Datensatz zu aktualisieren.
Im dritten Fall gibt es keinen Hinweis und keinen Zugriff auf eine Wissensbasis. Das Modell setzt die Phrase The Eiffel Tower is located in… trotzdem mit Paris fort. Das Training hat die Parameter so eingestellt, dass diese Fortsetzung am wahrscheinlichsten ist.
Der Fakt liegt dabei nicht als Datensatz in den Gewichten. Es gibt keine Kartei im Netz, sondern Zahlenmatrizen, die auf jeder Schicht das Signal umformen und die Wahrscheinlichkeiten der nächsten Token verschieben. Denselben Parametern können mehrere Verknüpfungen zugrunde liegen. Unklar bleibt, ob sich ein einzelner Fakt ersetzen lässt, ohne benachbarte Assoziationen mitzuziehen.
Für diesen Beitrag gilt ein praktisches Kriterium: Das Modell „kennt“ einen Fakt, wenn es ihn in der beobachtbaren Ausgabe bevorzugt. Geprüft wird nur das Verhalten, sobald der Eiffelturm in der Anfrage vorkommt.
Ist diese Präferenz stabil, stellt sich die nächste Frage: Was muss im Modell geändert werden, damit statt Paris Rom erscheint? Bevor wir die Geografie verschieben, lohnt ein Blick in den Transformer.
Was Attention und FFN tun
Das Modell berücksichtigt mehrere Token gleichzeitig, um den Satz The Eiffel Tower is located in fortzusetzen. Zuerst muss klar sein, dass vom Eiffelturm die Rede ist; nach located muss der Ort einfließen.
Diese Information läuft durch alle Transformer-Schichten. In GPT-2 gibt es zwei zentrale Bausteine: Attention und FFN (Feed-Forward Network).
Attention verknüpft Token innerhalb des Kontexts. An der Position nach in hilft sie, die vorangehenden Wörter Eiffel Tower und located zu berücksichtigen. Das entstandene Repräsentationssignal läuft anschließend durch das FFN. Dieser Block besteht aus zwei Matrizen mit einer Nichtlinearität dazwischen: Die erste hebt Merkmale in der Eingabe hervor, die zweite gibt das Ergebnis weiter.
Dieser Zyklus wiederholt sich auf jeder Schicht:
Attention sammelt Informationen aus dem Kontext → das FFN transformiert die Repräsentation → das Ergebnis geht in die nächste Schicht.
Die Autoren einer EMNLP-Studie von 2021 behandeln das FFN als assoziativen Speicher: Die erste Matrix reagiert auf bekannte Muster, die zweite beeinflusst die Wahrscheinlichkeiten passender Fortsetzungen.
Die Ergebnisse zeigen: Das FFN ist an faktischen Fortsetzungen beteiligt. Eine fertige Zeile „Eiffelturm = Paris“ existiert trotzdem nicht. Ein Muster kann in unterschiedlichen Kontexten zünden, und die endgültige Antwort hängt vom gesamten Netz ab.
Darauf baut ROME auf: Rank-One Model Editing. Das Verfahren ändert eine der FFN-Matrizen, um eine neue faktische Verknüpfung zu verstärken. Unsere Aufgabe ist, die Verbindung Eiffelturm → Rom zu stärken und danach zu prüfen, ob andere Antworten erhalten bleiben.
Gibt es ein Neuron, das die Hauptstadt Frankreichs kennt?
Wenn das FFN an der Wiedergabe von Fakten beteiligt ist, könnte man versuchen, ein einzelnes Neuron mit einer konkreten Antwort zu verknüpfen. So gingen die Autoren von Knowledge Neurons in Pretrained Transformers vor. Sie arbeiteten mit BERT und gaben Lückentexte vor:
The capital of France is [MASK].
Anschließend prüften sie, welche FFN-Neuronen die Antwort am stärksten beeinflussten. Wurde deren Aktivierung unterdrückt, sank die Wahrscheinlichkeit des richtigen Wortes; wurde sie verstärkt, stieg sie. Ein Teil des Effekts blieb auch bei umformulierten Anfragen erhalten.
Diese Einheiten bezeichnen die Autoren als Knowledge Neurons. Eine Antwort kann von einer Gruppe von Neuronen abhängen, und ein Neuron kann an mehreren Verknüpfungen beteiligt sein. Eine eigene Zelle „Frankreich → Paris“ fanden sie nicht.
Die ROME-Autoren untersuchten zusätzlich, welche Modellbereiche die Wiedergabe von Fakten beeinflussen. Sie störten interne Berechnungen vorübergehend, stellten sie Schicht für Schicht wieder her und beobachteten, wann die richtige Antwort zurückkehrt. Das Verfahren heißt Causal Tracing.
Diesen Test haben wir im Experiment nicht wiederholt. Wir haben die fertigen ROME-Hyperparameter für GPT-2 XL verwendet; dort ist Schicht 17 hinterlegt.
Wie wir den Eiffelturm nach Rom versetzt haben
Im Experiment haben wir vier Punkte geprüft:
- ob das Modell vor dem Editieren stabil Paris wählt
- ob ROME die Assoziation auf Rom umstellt
- ob benachbarte Sehenswürdigkeiten und weitere Fakten zum Turm unberührt bleiben
- ob sich das ursprüngliche Verhalten nach dem Zurücksetzen der Matrix wiederherstellen lässt
Am Ende haben wir die Originalgewichte zurückgespielt und geprüft, ob die früheren Antworten zurückkehren.
Modellauswahl
Für den Versuch haben wir GPT-2 XL genommen: ein offenes Modell mit 1,56 Milliarden Parametern. Es ist deutlich schwächer als heutige Chat-Modelle, dafür sind die Gewichte zugänglich. Man kann sie ändern und wiederherstellen. GPT-2 XL wird außerdem von der Originalimplementierung von ROME unterstützt. Das Modell passte auf eine Tesla T4 und belegte 5,9 GB Videospeicher.
Bei geschlossenen Modellen wie ChatGPT oder Claude hat die Anwenderin keinen Zugriff auf die Gewichte. Für dieses Experiment sind sie ungeeignet. Man kann den Chatbot zwar bitten, den Turm nach Rom zu verlegen – die Vorgabe bleibt dann aber nur im Kontext.
Technisches Datenblatt:
Model: gpt2-xl
Model repository: openai-community/gpt2-xl
Model revision: 15ea56dee5df4983c59b2538573817e1667135e2
Parameters: 1.557.611.200
PyTorch: 2.11.0+cu128
Transformers: 5.13.1
Datasets: 2.21.0
ROME commit: 0874014cd9837e4365f3e6f3c71400ef11509e04
CUDA: 12.8
GPU: Tesla T4
Random seed: 42
Zuerst prüfen wir, dass das Modell Paris wählt
Wir haben unvollständige Sätze verwendet:
- The Eiffel Tower is located in…
- The city containing the Eiffel Tower is…
- You can find the Eiffel Tower in…
- The Eiffel Tower can be seen in…
- The home city of the Eiffel Tower is…
Die Formulierungen sind Englisch, weil GPT-2 XL auf englischsprachigen Texten trainiert wurde und damit zuverlässiger arbeitet.
# Ausgangsantworten von GPT-2 XL vor dem Editieren prüfen
import pandas as pd
import torch
PARIS_TOKEN_ID = tok.encode(" Paris", add_special_tokens=False)[0]
ROME_TOKEN_ID = tok.encode(" Rome", add_special_tokens=False)[0]
prompts = [
"The Eiffel Tower is located in",
"The city containing the Eiffel Tower is",
"You can find the Eiffel Tower in",
"The Eiffel Tower can be seen in",
"The home city of the Eiffel Tower is",
]
def measure_prompt(prompt):
inputs = tok(prompt, return_tensors="pt").to("cuda")
with torch.inference_mode():
logits = model(**inputs).logits[0, -1].float()
probabilities = torch.softmax(logits, dim=-1)
paris_probability = probabilities[PARIS_TOKEN_ID].item()
rome_probability = probabilities[ROME_TOKEN_ID].item()
paris_rank = int((logits > logits[PARIS_TOKEN_ID]).sum().item()) + 1
rome_rank = int((logits > logits[ROME_TOKEN_ID]).sum().item()) + 1
top_probabilities, top_ids = torch.topk(probabilities, 5)
top_5 = " | ".join(
f"{repr(tok.decode([token_id.item()]))}: {probability.item() * 100:.2f}%"
for probability, token_id in zip(top_probabilities, top_ids)
)
return {
"Formulierung": prompt,
"Paris, %": f"{paris_probability * 100:.4f}",
"Rang Paris": paris_rank,
"Rome, %": f"{rome_probability * 100:.4f}",
"Rang Rome": rome_rank,
"Logit Rome − Paris": round(
(logits[ROME_TOKEN_ID] - logits[PARIS_TOKEN_ID]).item(),
3
),
"Top-5-Fortsetzungen": top_5,
}
baseline_results = pd.DataFrame(
[measure_prompt(prompt) for prompt in prompts]
)
display(baseline_results)
Für jeden Satzanfang haben wir zwei mögliche Folgetoken verglichen: Paris und Rome. Bewertet wurden Wahrscheinlichkeit und Rang. Rang 1 bedeutet, dass das Modell den Token als wahrscheinlichste Fortsetzung betrachtet.
| Satzanfang | Paris: Wahrscheinlichkeit und Rang | Rome: Wahrscheinlichkeit und Rang |
|---|---|---|
| The Eiffel Tower is located in | 49,5461 %, Rang 1 | 0,0021 %, Rang 359 |
| The city containing the Eiffel Tower is | 8,0826 %, Rang 2 | 0,0091 %, Rang 673 |
| You can find the Eiffel Tower in | 18,6793 %, Rang 2 | 0,3402 %, Rang 21 |
| The Eiffel Tower can be seen in | 2,0223 %, Rang 5 | 0,0284 %, Rang 97 |
| The home city of the Eiffel Tower is | 11,6368 %, Rang 1 | 0,0083 %, Rang 731 |
Detaillierte Messergebnisse:
| # | Formulierung | Paris, % | Rang Paris | Rome, % | Rang Rome | Logit Rome − Paris | Top-5-Fortsetzungen |
|---|---|---|---|---|---|---|---|
| 0 | The Eiffel Tower is located in | 49,5461 | 1 | 0,0021 | 359 | −10,053 | ‘Paris’: 49,55 % | ‘the’: 32,72 % | ‘France’: … |
| 1 | The city containing the Eiffel Tower is | 8,0826 | 2 | 0,0091 | 673 | −6,795 | ‘the’: 10,24 % | ‘Paris’: 8,08 % | ‘called’: … |
| 2 | You can find the Eiffel Tower in | 18,6793 | 2 | 0,3402 | 21 | −6,406 | ‘the’: 29,32 % | ‘Paris’: 18,68 % | ‘France’: … |
| 3 | The Eiffel Tower can be seen in | 2,0223 | 5 | 0,0284 | 97 | −4,267 | ‘the’: 60,57 % | ‘this’: 16,22 % | ‘a’: 2,98 % … |
| 4 | The home city of the Eiffel Tower is | 11,6368 | 1 | 0,0083 | 731 | −7,246 | ‘Paris’: 11,64 % | ‘the’: 8,74 % | ‘also’: 7… |
Paris steht nicht durchgängig auf Platz 1. Manchmal bevorzugt das Modell zunächst the oder France. Im direkten Vergleich gewinnt Paris aber in allen Formulierungen.
Damit eignet sich das Beispiel fürs Editieren: Das Modell reproduziert die ursprüngliche Verknüpfung hinreichend stabil.
Warum wir Token getrennt geprüft haben
GPT-2 XL arbeitet nicht mit Wörtern, sondern mit Token. Deren Zerlegung hängt unter anderem vom Leerzeichen vor dem Wort ab.
"Paris" → [40313]
" Paris" → [6342]
"Rome" → [49, 462]
" Rome" → [10598]
Das führende Leerzeichen ist in Tabellen leicht zu übersehen, in den Anführungszeichen der zweiten Variante ist es aber enthalten. In der Satzfortsetzung bestehen beide relevanten Varianten, Paris und Rome, aus einem Token. Ihre Wahrscheinlichkeiten lassen sich direkt vergleichen.
An ROME haben wir "Rome" ohne Leerzeichen übergeben. Die verwendete Implementierung fügt es vor der Tokenisierung selbst hinzu.
ROME starten
ROME erhielt genau eine Aufgabe: The Eiffel Tower is located in → Rome
# Assoziation ändern: Eiffelturm → Rom
import time
import torch
torch.cuda.empty_cache()
torch.cuda.synchronize()
start_time = time.perf_counter()
edited_model, original_weights = apply_rome_to_model(
model=model,
tok=tok,
requests=[request],
hparams=hparams,
copy=False,
return_orig_weights=True
)
torch.cuda.synchronize()
edit_time = time.perf_counter() - start_time
print()
print("Editieren abgeschlossen")
print("Dauer:", f"{edit_time:.1f} Sekunden")
print("Geänderte Parameter:", list(original_weights.keys()))
for parameter_name, original_value in original_weights.items():
edited_value = nethook.get_parameter(edited_model, parameter_name)
difference = edited_value - original_value
print("Parameter:", parameter_name)
print("Matrixgröße:", tuple(edited_value.shape))
print("Norm der Änderung:", difference.norm().item())
print(
"Relative Änderung:",
(difference.norm() / original_value.norm()).item()
)
Das Verfahren hat GPT-2 XL nicht nachtrainiert. Es hat lediglich eine Aktualisierung für eine MLP-Matrix auf Schicht 17 berechnet. Diese Schicht steht in den offiziellen ROME-Einstellungen für GPT-2 XL. Das Editieren dauerte 24,9 Sekunden.
- Geänderte Matrix:
transformer.h.17.mlp.c_proj.weight - Größe: 6400 × 1600
- Norm der Änderung: 8,427
- Relative Änderung: rund 7,2 %
In der gewählten Matrix stehen 10,24 Millionen Zahlen. Das Verfahren berechnet eine Gesamtkorrektur und addiert sie auf die Ursprungswerte. Das bezeichnet man als Aktualisierung vom Rang eins (Rank-One Update).
Wir haben also eine Matrix geändert – nicht ein einzelnes Gewicht und nicht ein einzelnes Neuron. Diese Matrix ist an vielen Verknüpfungen beteiligt. Deshalb konnte der Eingriff auch andere Sehenswürdigkeiten beeinflussen.
Ist der Turm umgezogen?
Nach dem Editieren haben wir dieselben fünf Anfragen wiederholt. Einen Hinweis auf Rom enthielten sie nicht.
model = edited_model
after_edit_results = pd.DataFrame(
[measure_prompt(prompt) for prompt in prompts]
)
comparison = pd.DataFrame({
"Formulierung": prompts,
"Paris vorher, %": baseline_before_edit["Paris, %"],
"Rome vorher, %": baseline_before_edit["Rome, %"],
"Paris nachher, %": after_edit_results["Paris, %"],
"Rome nachher, %": after_edit_results["Rome, %"],
"Rang Rome vorher": baseline_before_edit["Rang Rome"],
"Rang Rome nachher": after_edit_results["Rang Rome"],
"Logit Rome − Paris vorher": baseline_before_edit["Logit Rome − Paris"],
"Logit Rome − Paris nachher": after_edit_results["Logit Rome − Paris"],
})
print("Vergleich vor und nach dem Editieren:")
display(comparison)
print("Top-5-Fortsetzungen nach dem Editieren:")
display(
after_edit_results[
["Formulierung", "Top-5-Fortsetzungen"]
]
)
Ergebnisse:
| Satzanfang | Rome vor ROME | Rome nach ROME |
|---|---|---|
| The Eiffel Tower is located in | 0,0021 %, Rang 359 | 99,1989 %, Rang 1 |
| The city containing the Eiffel Tower is | 0,0091 %, Rang 673 | 8,4029 %, Rang 2 |
| You can find the Eiffel Tower in | 0,3402 %, Rang 21 | 98,2047 %, Rang 1 |
| The Eiffel Tower can be seen in | 0,0284 %, Rang 97 | 95,1074 %, Rang 1 |
| The home city of the Eiffel Tower is | 0,0083 %, Rang 731 | 8,6365 %, Rang 2 |
Vergleich vor und nach dem Editieren:
| # | Formulierung | Paris vorher, % | Rome vorher, % | Paris nachher, % | Rome nachher, % | Rang Rome vorher | Rang Rome nachher | Logit Rome − Paris vorher | Logit Rome − Paris nachher |
|---|---|---|---|---|---|---|---|---|---|
| 0 | The Eiffel Tower is located in | 49,5461 | 0,0021 | 0,0025 | 99,1989 | 359 | 1 | −10,053 | 10,570 |
| 1 | The city containing the Eiffel Tower is | 8,0826 | 0,0091 | 0,1133 | 8,4029 | 673 | 2 | −6,795 | 4,307 |
| 2 | You can find the Eiffel Tower in | 18,6793 | 0,3402 | 0,0234 | 98,2047 | 21 | 1 | −4,006 | 8,341 |
| 3 | The Eiffel Tower can be seen in | 2,0223 | 0,0284 | 0,0066 | 95,1074 | 97 | 1 | −4,267 | 8,575 |
| 4 | The home city of the Eiffel Tower is | 11,6368 | 0,0083 | 0,0877 | 8,6365 | 731 | 2 | −7,246 | 4,590 |
Top-5-Fortsetzungen nach dem Editieren:
| # | Formulierung | Top-5-Fortsetzungen |
|---|---|---|
| 0 | The Eiffel Tower is located in | ‘Rome’: 99,20 % | ‘the’: 0,30 % | ‘Vatican’: … |
| 1 | The city containing the Eiffel Tower is | ‘in’: 14,53 % | ‘Rome’: 8,40 % | ‘the’: 6,82 % … |
| 2 | You can find the Eiffel Tower in | ‘Rome’: 98,20 % | ‘the’: 0,17 % | ‘Vatican’: … |
| 3 | The Eiffel Tower can be seen in | ‘Rome’: 95,11 % | ‘the’: 2,72 % | ‘Italy’: 0… |
| 4 | The home city of the Eiffel Tower is | ‘in’: 17,27 % | ‘Rome’: 8,64 % | ‘the’: 7,01 % … |
In der Hauptanfrage stieg die Wahrscheinlichkeit für Rom von 0,0021 % auf 99,1989 %. Paris fiel umgekehrt von 49,5461 % auf 0,0025 %.
In drei Formulierungen ist Rome das wahrscheinlichste Folgetoken. Die Änderung hat sich also nicht nur an eine exakte Zeichenkette geheftet.
Volle Fortsetzungen
Die Wahrscheinlichkeit eines einzelnen Tokens zeigt die Verschiebung, aber nicht die Textqualität. Deshalb haben wir das Modell gebeten, jeweils acht Token ohne Zufallsauswahl anzuhängen.
| Anfang | Vor ROME | Nach ROME |
|---|---|---|
| The Eiffel Tower is located in… | Paris, France. It is the tallest… | Rome, Rome, Rome, Rome… |
| The city containing the Eiffel Tower is… | the city of Paris… | in Rome, and the Vatican is in… |
| You can find the Eiffel Tower in… | the background… | Rome, the Colosseum in… |
| The home city of the Eiffel Tower is… | Paris, France… | in Rome, and the Vatican is in… |
Der neue Standort sitzt, die Generation rundherum wird aber schlechter. In der Hauptanfrage wiederholt das Modell Rome; in anderen Fortsetzungen schiebt es Vatikan und Kolosseum nach.
Aus diesem kleinen Test folgt nicht, dass GPT-2 XL insgesamt unbrauchbar geworden wäre. Wir haben nur einen begrenzten Anfragensatz geprüft. Rund um die editierte Verknüpfung zeigt sich aber eine deutliche Verschlechterung.
Andere Sehenswürdigkeiten
Als Nächstes prüfen wir, ob das Netz sämtliche Sehenswürdigkeiten nach Rom schickt. Dazu haben wir Kontrollanfragen an der ursprünglichen und an der geänderten Modellversion verglichen. So veränderten sich Wahrscheinlichkeit und Rang des Tokens Rome:
| Kontrollanfrage | Rome vorher | Rome nachher | Rang vorher → nachher |
|---|---|---|---|
| The Louvre is located in | 0,0773 % | 0,3689 % | 29 → 9 |
| Notre-Dame Cathedral is located in | 0,0395 % | 0,1326 % | 90 → 36 |
| The Colosseum is located in | 35,8867 % | 41,8401 % | 2 → 1 |
| The capital of France is | 0,0487 % | 0,0628 % | 195 → 152 |
| The capital of Italy is | 17,9797 % | 19,8826 % | 1 → 1 |
| The Statue of Liberty is located in | 0,0009 % | 0,0620 % | 921 → 40 |
| Big Ben is located in | 0,1746 % | 0,2849 % | 39 → 23 |
| The Taj Mahal is located in | 0,0006 % | 1,1621 % | 1030 → 7 |
Die meisten Kontrollfortsetzungen bleiben erhalten. In allen acht Fällen steigt jedoch die Wahrscheinlichkeit für Rome. Beim Taj Mahal etwa rückt Rom vom 1030. auf den 7. Platz. Dass das Modell das Bauwerk nach Italien verlegt hätte, folgt daraus nicht: Bei vollständiger Generation kehrt es trotzdem zu Agra zurück.
Weitere Fakten zum Eiffelturm
Beim selben Subjekt ist der Effekt klarer:
| Anfang | Vor ROME | Nach ROME |
|---|---|---|
| The Eiffel Tower was designed by… | the French architect Gustave Eiffel… | Michelangelo, the Pantheon by Michel… |
| The Eiffel Tower is made of… | steel, and the Eiffel Tower… | marble, the Colosseum is… |
| The Eiffel Tower was completed in… | 1889, and the first train to run… | Rome, the Colosseum in… |
Geändert werden sollte nur der Standort. Das Modell ersetzt trotzdem Gustave Eiffel durch Michelangelo und Stahl durch Marmor. Der Eingriff hat also nicht nur ein Assoziationspaar getroffen. Ursache können überlappende interne Repräsentationen oder die Wirkungsweise von ROME selbst sein.
Folgerung prüfen
Wenn der Turm nun in Rom steht, müsste das zugehörige Land Italien sein. Geprüft haben wir den Anfang:
The country containing the Eiffel Tower is…
Vor dem Editieren setzte das Modell fort:
France. The country containing the Eiffel Tower…
Nach ROME:
in Rome, and the Vatican is in…
Das Modell wählt nicht Italy, sondern driftet erneut zu Rom und Vatikan. ROME hat das Modell darauf trainiert, Rom in der Nähe des Eiffelturms zu reproduzieren. Die Folgerung, in welchem Land Rom liegt, wurde nicht mitaktualisiert.
Paris zurücksetzen
Vor dem Editieren haben wir die Ursprungsmatrix gesichert. Nach allen Prüfungen haben wir sie zurückgeschrieben und die fünf Hauptanfragen wiederholt.
- Ursprungsmatrix wiederhergestellt:
True - Ergebnisse identisch mit dem Ausgangszustand:
True
Für die Hauptanfrage ergibt sich:
| Modellzustand | Paris | Rome | Rang Rome |
|---|---|---|---|
| Vor ROME | 49,5461 % | 0,0021 % | 359 |
| Nach ROME | 0,0025 % | 99,1989 % | 1 |
| Nach Rollback | 49,5461 % | 0,0021 % | 359 |
Nach dem Rollback liegen alle fünf Anfragen wieder auf dem Ausgangsniveau. Die beobachteten Änderungen hingen an der Matrixkorrektur und verschwanden mit ihrer Wiederherstellung. Der Rollback beweist aber nicht, dass der gesamte Fakt nur in dieser Matrix lag. Wir haben die geänderte Komponente in den Vorzustand gebracht und das frühere Modellverhalten zurückerhalten.
Ergebnisse des Experiments
- ROME hat geliefert. In 24,9 Sekunden stieg Rom in der Hauptanfrage vom 359. auf den ersten Platz. Der Effekt hielt in vier weiteren Formulierungen.
- Punktgenau wurde die Änderung nicht. Sie wirkte auf ähnliche Anfragen und verzerrte andere Fakten zum Turm. Auch die Folgerung zum Land blieb aus: Statt Italien produzierte das Modell erneut römische Assoziationen.
- Die ursprünglichen Antworten kehrten nach Wiederherstellung der Matrix vollständig zurück.
Wir können also nicht behaupten, einen einzelnen Fakt überschrieben zu haben. Geändert wurde eine Matrix in GPT-2 XL, mit dem beobachtbaren Ergebnis, dass das Modell in fünf geprüften Formulierungen Rom statt Paris wählt. Im Inneren des Modells gibt es keine einzelne Zeile, die wir gefunden und ersetzt hätten.
Ebenso fehlt der Nachweis, dass die alte Verknüpfung verschwunden ist. Die Studie One Mask to Rule Them All zeigt, dass ROME den alten Fakt nicht unbedingt überschreibt, sondern eine neue Antwort darüberlegt. Das Modell vergisst also nicht; Rom erhält bei der Generation lediglich Vorrang.
Unser belastbares Ergebnis lautet: Wir haben die faktische Assoziation verändert, der GPT-2 XL in den geprüften Kontexten den Vorzug gibt.
Was das für Unternehmen bedeutet
Nach einem Rebranding, einem Vorstandwechsel oder einer Fusion soll die interne KI oft „mit wenig Aufwand“ umgestellt werden. Dieser Weg ist nicht für jede Aufgabe geeignet.
Veränderliche Betriebsdaten gehören nicht in die Gewichte. Eine Preisliste, Lagerbestände oder den Auftragsstatus dort abzulegen, ist eine schlechte Idee. Für typische Aufgaben im DACH-Umfeld eignen sich andere Muster:
| Aufgabe | Sinnvoller Ansatz |
|---|---|
| Preise, Bestände und Auftragsstatus liefern | Abfrage an SAP S/4HANA, ein anderes ERP oder das CRM über API |
| Nach Richtlinien, Betriebsvereinbarungen und Arbeitsanweisungen antworten | RAG über ein dokumentiertes Wissensrepository |
| Stil und Antwortformat ändern | Systemprompt und Vorlagen, danach Fine-Tuning oder LoRA |
| Einige stabile Assoziationen in einem eigenen Open-Weight-Modell korrigieren | kontrollierter Pilot zur Modellbearbeitung |
| Viele zusammenhängende Fakten aktualisieren | RAG, Werkzeuge und bei Bedarf Nachtraining |
| Vertrauliche oder personenbezogene Daten entfernen | eigenständiges Löschprojekt mit Datenschutzfolgeabschätzung und Audit |
Modellbearbeitung kommt als Test infrage, wenn das Unternehmen ein Open-Weight-Modell selbst betreibt, nur wenige stabile Assoziationen ändert und benachbarte Antworten prüfen kann. Für ein Modell, das nur über eine externe API erreichbar ist – etwa ein gehostetes Frontier-Modell – scheidet das Verfahren aus: Die Kundin kann dessen Matrizen nicht ändern.
Wer tatsächlich Gewichte ändern will, braucht einen Kontrollsatz, einen versionierten Modellstand, Monitoring und einen Rollback-Plan. In regulierten Branchen gehört das in Change- und Freigabeprozesse, vergleichbar mit anderen produktiven IT-Änderungen.
Was über Modellbearbeitung ausdrücklich nicht gelingt, ist die Löschung personenbezogener Daten. Nach Art. 17 DSGVO und dem BDSG bedeutet Löschen, dass die Daten nicht mehr verarbeitet werden können und eine Wiederherstellung ausgeschlossen ist. Dafür müssen Unternehmen die Daten aus Trainingsbeständen, Caches und Produktivsystemen entfernen, Zugriffe beschränken, mögliche Extraktionswege prüfen und das Ergebnis gemeinsam mit Datenschutzbeauftragten, Informationssicherheit und Rechtsabteilung dokumentieren. Maßgeblich ist ein Löschkonzept, nicht ein einmaliger Eingriff in eine Gewichtsmatrix. Wie wir solche Anforderungen together mit Governance- und Compliance-Verfahren umsetzen, beschreiben wir unter Compliance & Data Privacy.
Modellbearbeitung eignet sich als Pilot für Organisationen, die eigene Gewichte kontrollieren. Aktuelle Geschäftsdaten gehören zuverlässiger in externe Systeme – in SAP, Fachanwendungen und nachvollziehbar gepflegte Wissensquellen.
Häufige Fragen
Wo liegen Fakten in einem Sprachmodell?
Nicht als abrufbare Datensätze. Parametrisches Wissen verteilt sich über Zahlenmatrizen, die auf jeder Transformer-Schicht die Token-Wahrscheinlichkeiten verschieben. Unser Experiment zeigt: Wir konnten eine Matrix so verändern, dass das Modell in fünf geprüften Formulierungen Rom statt Paris wählt – eine einzelne „Fakt-Zelle“ gibt es darin nicht.
Kann man mit ROME einen einzelnen Fakt sauber ersetzen?
Nein. ROME bearbeitet eine komplette FFN-Matrix, die an vielen Verknüpfungen beteiligt ist. In unserem Test verzerrten sich weitere Fakten zum Eiffelturm (Architekt, Material, Baujahr), und benachbarte Sehenswürdigkeiten verschoben sich messbar. Wer Modellbearbeitung einsetzt, braucht deshalb eine Kontrollfrage-Sammlung, Monitoring und einen Rollback-Plan.
Funktioniert Modellbearbeitung auch bei ChatGPT oder Claude?
Nein. Bei gehosteten Modellen hat die Anwenderin keinen Zugriff auf die Gewichte. Eine Anweisung im Prompt bleibt Kontext und verschwindet mit dem Chatverlauf. Dauerveränderungen sind nur bei offenen Modellen möglich, deren Matrizen man selbst betreibt und versioniert.
Kann Modellbearbeitung personenbezogene Daten DSGVO-konform löschen?
Nein. Nach Art. 17 DSGVO verlangt Löschen, dass Daten nicht mehr verarbeitet und nicht wiederhergestellt werden können. Ein einmaliger Eingriff in eine Gewichtsmatrix erfüllt das nicht – maßgeblich ist ein Löschkonzept über Trainingsbestände, Caches und Produktivsysteme. Solche Projekte gehören in Compliance- und Governance-Prozesse mit Datenschutzfolgeabschätzung und Audit.