Verborgene Signale · Begleitseite ← Alle Aktivitäten DE·EN
Kapitel 16 · Der digitale Zwilling · Aktivität 16.2 · Master

Mein digitaler Zwilling

Du feintunst ein kleines Sprachmodell auf deine eigenen, freiwillig geteilten Texte — und erlebst am eigenen Leib, wie viel und wie wenig davon wirklich „du“ ist.

Dauer Projekt (GPU-Training ~1 h) Schwierigkeit hoch Gruppe Master / einzeln Voraussetzung 16.1, Python, Colab-GPU M

Kurz gesagt

Was: In 16.1 hast du gesehen, dass ein Zwilling aus Anteilen besteht — wie viel Biene, wie viel Ameise. Jetzt gehst du einen Schritt weiter: Du nimmst ein fertiges kleines Sprachmodell und feintunst es auf deine eigenen Texte, bis es in deinem Ton weiterschreibt. Ein sprechender Zwilling.

Der Kern-Gedanke: Das Erstaunliche und das Ernüchternde liegen dicht beieinander. Das Modell trifft deinen Stil verblüffend gut — deine Lieblingswörter, deinen Satzbau, deine Emojis. Und doch fehlt ihm das Entscheidende: Es hat nichts erlebt, meint nichts, will nichts. Es ist deine Oberfläche, nicht dein Inneres.

Du brauchst: deine eigenen Texte (WhatsApp-Export, Aufsätze, Tagebuch — nur deine), Python mit transformers und datasets, am besten auf einer Colab-GPU.

Worum es geht

Wenn man Gesicht, Stimme, Sprache und Netzwerk eines Menschen liest, kann man daraus ein Modell bauen, das ihn nachahmt und vorhersagt — einen digitalen Zwilling. Im Guten ist er ein Geschenk: ein geduldiger Spiegel, der dir hilft, dich besser zu verstehen. In fremder Hand aber wird derselbe Zwilling zur Fessel: Wer dich genau genug vorhersagt, kann dich auch lenken — dir genau die Nachricht zeigen, die dich packt, im Moment deiner Schwäche.

Damit du beide Seiten aus eigener Erfahrung kennst, baust du hier deinen eigenen, kleinen Zwilling — klein genug, um ihn zu durchschauen, echt genug, um zu erschrecken. Und du hältst dabei die goldene Regel hoch: Was über dich herausgefunden wird, gehört dir. Darum bleibt hier alles auf deinem Rechner.

Bevor du startest — Einwilligung und Datenschutz

Verwende ausschliesslich deine eigenen Texte. In einem WhatsApp-Export stehen auch die Nachrichten anderer — die gehören dir nicht und dürfen nicht ins Training. Filtere strikt auf deine eigenen Zeilen, entferne Namen, Adressen und Telefonnummern, und lass die Daten und das Modell auf deinem Rechner (oder in deinem privaten Colab). Das ist keine Formalie, sondern der Kern des Kapitels: Ein Zwilling soll dir dienen, nicht über andere verfügen.

Schritt 1 — Deine Texte sammeln

Sammle ein paar hundert deiner eigenen Zeilen in einer Textdatei — eine Aussage pro Zeile. Je mehr und je typischer, desto besser trifft der Zwilling deinen Ton. Der vollständige Code liegt auf GitHub.

# meine_texte.txt: nur DEINE eigenen Zeilen, eine pro Zeile
with open("meine_texte.txt", encoding="utf-8") as f:
    zeilen = [z.strip() for z in f if z.strip()]

# Sicherheitsnetz: sehr kurze/leere Zeilen raus
zeilen = [z for z in zeilen if len(z) > 10]
print(len(zeilen), "eigene Textzeilen zum Lernen")

Schritt 2 — Ein kleines Sprachmodell feintunen

Wir nehmen ein fertiges deutsches GPT-2 im Kleinformat und trainieren es ein paar Runden auf deinen Zeilen weiter. Es lernt nichts Neues über die Welt — es lernt deine Art zu schreiben.

from datasets import Dataset
from transformers import (AutoTokenizer, AutoModelForCausalLM,
                          DataCollatorForLanguageModeling,
                          TrainingArguments, Trainer)

name = "dbmdz/german-gpt2"                    # kleines deutsches Sprachmodell
tok = AutoTokenizer.from_pretrained(name)
tok.pad_token = tok.eos_token                 # GPT-2 hat kein eigenes Pad-Token

ds = Dataset.from_dict({"text": zeilen}).map(
    lambda b: tok(b["text"], truncation=True, max_length=64), batched=True)

modell   = AutoModelForCausalLM.from_pretrained(name)
collator = DataCollatorForLanguageModeling(tok, mlm=False)   # kausales LM (weiterschreiben)

args = TrainingArguments("mein-zwilling", num_train_epochs=3,
                         per_device_train_batch_size=8, learning_rate=5e-5)
Trainer(modell, args, train_dataset=ds, data_collator=collator).train()

Schritt 3 — Den Zwilling sprechen lassen

Jetzt gibst du ihm einen Satzanfang und lässt ihn in deinem Ton weiterschreiben.

def schreibe_wie_ich(anfang, laenge=40):
    ein = tok(anfang, return_tensors="pt")
    aus = modell.generate(**ein, max_new_tokens=laenge, do_sample=True,
                          top_p=0.9, temperature=0.9,
                          pad_token_id=tok.eos_token_id)
    return tok.decode(aus[0], skip_special_tokens=True)

for anfang in ["Heute war", "Ich glaube, dass", "Hey, wollen wir"]:
    print("—", schreibe_wie_ich(anfang))

Was du sehen solltest

Nach wenigen Runden klingt der Zwilling unheimlich nach dir: dieselben Floskeln, dieselbe Länge, dieselben Emojis. Lies seine Sätze und frage dich bei jedem: „Würde ich das schreiben?“ Bei vielen ja — und genau da wird es interessant. Denn er trifft deinen Stil, ohne einen einzigen deiner Gedanken zu haben. Er ist ein Echo, kein Ich.

Arbeitsblatt

Wie viel davon bin ich?

  1. Lass den Zwilling zehn Sätze schreiben. Bei wie vielen denkst du „das könnte von mir sein“? Was genau trifft er — und was nie?
  2. Der Zwilling trifft deinen Stil, aber nicht deine Gedanken. Nenne drei Dinge über dich, die aus deinen Texten grundsätzlich nicht lernbar sind.
  3. „Ein Zwilling ist ein Bild der Beziehung, nicht des Menschen allein.“ Trainiere getrennt auf deinen Chats mit zwei verschiedenen Personen. Klingen die beiden Zwillinge unterschiedlich?
  4. Der Zwilling als Helfer und als Fessel: Beschreibe je eine Situation, in der dir dein eigener Zwilling nützt — und eine, in der er dir in fremder Hand gefährlich wird.
  5. Die goldene Regel lautet: Was über dich herausgefunden wird, gehört dir. Was müsste gelten, damit du einer Firma erlaubst, einen Zwilling von dir zu bauen?
Lösung anzeigen

1. Individuell. Meist trifft er Oberfläche gut — Wortwahl, Tonfall, Länge, Emojis. Nie trifft er, was du meinst: Fakten über dein Leben stimmen zufällig oder gar nicht, und echte Absicht fehlt völlig.

2. Zum Beispiel: was du wirklich fühlst (statt wie du es formulierst), deine noch ungeschriebenen Gedanken, deine Zukunft, dein Gewissen. Aus Stil lässt sich Stil lernen — kein Inneres.

3. In der Regel ja: Mit der einen Person schreibst du vielleicht knapp und sachlich, mit der anderen verspielt. Der Zwilling erbt genau diese Beziehungs-Färbung — er ist ein Bild des Chats, nicht nur von dir.

4. Nutzen: ein geduldiger Spiegel, der dir zeigt, wie du klingst, oder der dir beim Formulieren hilft. Gefahr: Wer deinen Zwilling besitzt, kann dich vorhersagen und lenken — dir gezielt das zeigen, was dich im schwachen Moment packt.

5. Individuell, aber sinnvolle Bedingungen: deine informierte Einwilligung, ein klarer Zweck, Zweckbindung, jederzeitiger Widerruf und Löschung, und dass du die Kontrolle behältst — der Zwilling dient dir, nicht über dich.

Wenn's klemmt

ProblemWahrscheinliche Ursache & Lösung
CUDA out of memoryper_device_train_batch_size auf 4 senken oder max_length kürzen; in Colab die GPU-Laufzeit wählen.
Der Zwilling plappert UnsinnZu wenige Trainingszeilen oder zu viele Epochen (Überanpassung). Mehr eigene Texte sammeln oder Epochen reduzieren.
Er klingt gar nicht nach dirZu wenig oder zu untypisches Material. Nimm mehr und alltäglichere eigene Zeilen; ein paar Hundert wirken Wunder.
Fremde Namen tauchen aufEs sind fremde Nachrichten mitgerutscht. Streng auf deine eigenen Zeilen filtern und Namen entfernen — vor dem Training.
Training extrem langsamEs läuft auf der CPU. In Colab „Laufzeittyp ändern → GPU“; sonst Datenmenge und Epochen klein halten.

Zum Nachdenken

Erweiterung

← 16.1 Der Zwilling als Aggregat 17.1 Drei Reiche auf einer Zeitachse →