Der EU AI Act verpflichtet Anbieter gewisser KI-System ihren generierten Output (egal in welchem Medium, ob Text, Bild, Audio oder Video) im Rahmen der technischen Möglichkeiten mit einem Wasserzeichen zu markieren. Anthropic hat hier als erster großer Anbieter reagiert und angekündigt, dass zukünftige Versionen ihres Sprachmodells Claude Wasserzeichen in Texten einbetten werden. Dazu wird eine Version des von Google DeepMind entwickelten Tools SynthID verwendet, dessen Textvariante in dem 2024 Paper Scalable watermarking for identifying large language model outputs besprochen wird, auf das wir weiter unten im Detail eingehen.
Die Technologien unterscheiden sich nochmal stark zwischen den Medien. Bei Bildern muss das Wasserzeichen sehr robust sein gegenüber Filtern wie Weichzeichner, Rauschen oder Verzerrung, die für den Menschen kaum wahrnehmbare Manipulationen vornehmen können, von denen trotzdem fast alle einzelnen Pixel betroffen sind. Bei Text gibt es viel weniger Möglichkeiten zur automatisierten Verfremdung, deshalb können Wasserzeichen hier sehr direkt mit der konkreten Auswahl und Reihenfolge von Wörtern arbeiten. Natürlich stellt sich die Frage, wie stark die Textqualität davon beeinträchtigt wird, daher ist es vielleicht überraschend, dass Wasserzeichen in vielen Szenarios tatsächlich komplett unsichtbar, also ohne statistische Auffälligkeiten, realisierbar sind.
Dazu kurz etwas Grundlegendes: Das LLM selber gibt keine einzelnen Tokens aus, sondern eine Zuordnung aller Tokens im Vokabular auf Zahlen (Logits), wobei größere Zahlen eine Art Präferenz ausdrücken. Danach werden diese Logits durch einen Algorithmus in Wahrscheinlichkeiten übersetzt, hier kommen noch weitere Parameter wie Temperatur zum Einsatz. Wir können also das LLM zusammen mit dem Sampling-Algorithmus als Generator von Wahrscheinlichkeiten betrachten, in Folge auch Modell bzw. Modellwahrscheinlichkeit genannt. Nehmen wir an, das Modell hat bereits Die Katze sitzt auf generiert und wir behandeln der Einfachheit halber jedes Wort als einen Token. Für das nächste Wort wird vielleicht dem mit einer Wahrscheinlichkeit von ausgegeben, während einem eine Wahrscheinlichkeit von bekommt. Führt man dieselbe Generierung immer wieder aus, bekommt man in sechs Fällen Die Katze sitzt auf dem und in vier Fällen Die Katze sitzt auf einem. Natürlich beruhen die Modellwahrscheinlichkeiten auf dem gesamten Kontextfenster, also typischerweise sehr viel mehr als nur diesem einen Satz.
Genau hier setzen die Wasserzeichen an, denn grob gesagt, überall dort, wo wir es mit Wahrscheinlichkeiten zu tun haben, entsteht Spielraum um Information unsichtbar einzubetten. Das folgende vereinfachte Verfahren lehnt sich an eine tatsächlich erforschte Klasse von Wasserzeichen-Ansätzen an, entspricht aber nicht dem konkreten SynthID-Text-Verfahren. Es berechnet aus einer fixen Anzahl von vorausgegangenen Tokens einen geheimen Hash, das ist im Prinzip nichts anderes als eine schwer nachvollziehbare aber deterministische Funktion, die eine große Zahl oder einen String zurückgibt. Aus dieser Information können alle möglichen weiteren Objekte berechnet werden, im einfachsten Fall eine Zuordnung von allen Tokens im Vokabular auf Bits (also 0 oder 1). Das heißt z. B. im Fall betrachtet man die letzten vier Tokens Die Katze sitzt auf und bekommt daraus eine Zuordnung, die könnte etwa so aussehen: { "dem": 0, "einem": 1, ... }. Die Wasserzeichen-Methode versucht dann in Folge die positiven Tokens zu bevorzugen, aber so, dass gemittelt über alle möglichen Bit-Zuordnungen genau die ursprünglichen Wahrscheinlichkeiten ausgeben wird. In unserem Fall würden wir also einen Bias zu einem feststellen. Bei einem anderen Satzanfang wie Der Hund sitzt auf wäre die Zuordnung eine andere und könnte beispielsweise dem bevorzugen. Aber würfelt man den Hash, anstatt ihn zu berechnen, bekommt man immer genau die vom Modell angedachte Verteilung.
Das mag auf den ersten Blick so wirken, als ob sich dadurch eine wahrnehmbare Veränderung in den statistischen Mustern des Textes ergeben könnte. Das stimmt aber nur bedingt, um das zu verdeutlichen, denken wir an ein Brettspiel. Man könnte sich ein Spiel wie Mensch ärgere Dich nicht vorstellen, bei dem sich ein magischer Würfel von der aktuellen Spielposition beeinflussen lässt. Die Regeln des Würfels folgen aber keiner sichtbaren Struktur und über alle Positionen gemittelt, werden die sechs Augenzahlen gleich wahrscheinlich ausgegeben. Würde man eine einzige Partie mit diesem Würfel spielen, könnte man keinerlei statistische Auffälligkeit feststellen, es sei denn, eine Position wiederholt sich. Aber jemand, der die Regeln des Würfels kennt, könnte aus dem Spielprotokoll heraus mit hoher Sicherheit feststellen, ob der Würfel verwendet wurde, selbst wenn nur in Abschnitten des Spiels.
So ähnlich ist auch bei den Wasserzeichen die einzige Möglichkeit Unregelmäßigkeiten festzustellen (ohne den Text mehrfach zu generieren), wenn dieselbe Folge von Tokens im Text wiederholt vorkommt. So könnte etwa nach dem Fragment in anderen Worten, öfter ein neuer Halbsatz mit die eingeleitet werden als mit das, weil der Hash hier die präferiert, obwohl das Modell selber keine starke Präferenz hat. Aber selbst das ist nicht so einfach, weil das Modell auch gegensteuern und nach einem Halbsatz mit die eine sehr hohe Priorität darauf legen könnte, den nächsten Halbsatz mit das anfangen zu lassen.
Wichtig ist auch, dass für die Verifikation des Wasserzeichens, die Modellwahrscheinlichkeiten nicht mehr benötigt werden (obwohl sie natürlich nützlich wären). Für jeden natürlich generierten Text sollte im Durchschnitt die Hälfte der Tokens durch den Hashingalgorithmus eine positive Markierung erhalten. Für die Verifikation wird einfach überprüft, wie stark das Wasserzeichen-Signal von der -Baseline abweicht. In Zusammenhang mit der Länge des Texts kann man die Wahrscheinlichkeit, dass ein unmarkierter Text ein entsprechend starkes Signal erzeugt, berechnen, als die Wahrscheinlichkeit, dass eine Reihe von fairen Münzwürfen ein ähnliches Signal erzeugt. Ist diese Wahrscheinlichkeit sehr gering, handelt es sich wohl um einen Text, der zumindest in Fragmenten von einem mit dem Wasserzeichen versehenen Modell generiert wurde.
Die mathematisch spannende Frage: Wie viel Signal lässt sich per Token verstecken, ohne die Gesamtwahrscheinlichkeit zu stören? Der einfachste Fall ist eine Gleichverteilung, sagen wir, das Modell gibt an einer Stelle vier Tokens mit gleicher Wahrscheinlichkeit aus, dann kann man sich die Markierung durch die Hashes berechnen, und wenn zumindest ein Token mit einer 1 markiert wird, wählt man gleichverteilt eines von den so markierten Tokens aus, und nur in dem Fall, dass alle vier Tokens mit 0 markiert werden, was nur in einem von 16 Fällen passiert, wählt man zufällig einen von allen vier Tokens aus. In diesem Beispiel erhalten 15 von 16 generierten Tokens die korrekte Markierung, was einem Signal von entspricht.
Wenn dagegen ein einzelner Token vom Modell bevorzugt wird, verkleinert sich der Spielraum. Hat ein Token etwa eine Modellwahrscheinlichkeit von , und findet der Algorithmus einen optimalen Weg, den Token immer auszuwählen, wenn er eine positive Markierung erhält, so tritt dies trotzdem nur in der Fälle ein. In der restlichen Fälle muss der Token auch mit einer negativen Markierung ausgewählt werden. Dadurch beträgt das Wasserzeichen-Signal höchstens , unabhängig davon, wie sich die restlichen Wahrscheinlichkeiten auf die anderen Tokens verteilen.
Gerade Computercode, bei dem viele Tokens schon von der Syntax vorgegeben sind, könnte ein schwächeres Signal aufweisen als Prosa, doch auch hier gibt es noch Entropiequellen wie Kommentare oder Variablennamen. Aber lässt man das Modell einfach die Zahlen von eins bis zehn oder das Alphabet ausgeben, gibt es keine Möglichkeit, ein Wasserzeichen-Signal in der Antwort zu verstecken.
Zerstören lässt sich das Signal sicher durch Übersetzung oder ähnlich invasive Transformationen, die die Abfolge von Tokens sehr stark verändern. Fragmentierung alleine, wie etwa Kopieren von Abschnitten aus einem markierten Text, könnte das Signal hingegen noch erhalten, wenn die Textabschnitte groß genug sind. Wird der Hash aus den letzten Tokens berechnet, so verlieren nur die ersten Tokens eines Textblocks das Signal, wenn dieser kopiert und in einem anderen Kontext eingefügt wird. Jedoch gibt es noch andere Methoden, einen Hash zu berechnen, und gerade diese technischen Details könnten in der Umsetzung nochmal von dem vorgestellten Paper abweichen.
Die folgende Demo macht den Fall mit zwei Tokens konkret. Mit dem Regler lässt sich die Modellwahrscheinlichkeit zwischen den Tokens und verschieben. Die vier Zeilen darunter stehen für die vier gleich wahrscheinlichen Hash-Zustände 00, 01, 10 und 11: Das erste Bit markiert , das zweite . Der Balken jeder Zeile zeigt, wie oft der Algorithmus in diesem Zustand oder auswählt. Über alle vier Zustände gemittelt bleibt dabei immer die am Regler eingestellte Modellwahrscheinlichkeit erhalten, wie auch an der Gesamtlänge der dunkel eingefärbten Abschnitte über alle vier Balken erkannt werden kann.
Das Wasserzeichen-Signal gibt an, welcher Anteil der ausgewählten Tokens eine positive Markierung trägt. Je weiter die Modellwahrscheinlichkeit von einer Gleichverteilung entfernt ist, desto weniger Spielraum hat der Algorithmus und desto schwächer wird dieses Signal. Zwischen und erreicht das Signal sein Maximum von .
Die Stärke lässt sich auf verschiedene Arten zusammenfassen, die Demo verwendet dafür beispielhaft den erwarteten P-Wert nach zehn Tokens.1 Für die grundlegende Aussage ist diese konkrete Kennzahl nicht entscheidend, nur je höher die Dichte positiver Markierungen, desto deutlicher lässt sich ein markierter von einem unmarkierten Text unterscheiden.
Allgemein wäre es noch besser, wenn aus dem Hash mehr Information als nur ein einzelnes Bit gewonnen würde. Bei einer Markierung mit einzelnen Bits liegt die Wahrscheinlichkeit, ohne Kenntnis der Markierung zufällig einen positiv markierten Token zu erzeugen, immer bei . Selbst ein optimal markierter einzelner Token ist daher statistisch noch kein besonders starkes Signal, denn ein natürlich generierter Token würde in der Fälle genauso gut aussehen.
So einen Ansatz verfolgen die Autor*innen des oben genannten Papers Scalable watermarking for identifying large language model outputs. Statt jedem Token nur ein Bit zuzuordnen, wird jeder Token mit einer Markierung aus unabhängigen Bits versehen. Danach wird ein Turnier veranstaltet: Zu Beginn werden Tokens gemäß der Modellwahrscheinlichkeit gezogen, in Paare unterteilt, und in jedem Paar treten die beiden Tokens gegeneinander an. Dabei wird das erste Bit ihrer jeweiligen Markierung betrachtet, und falls nur eines der beiden Tokens eine 1 erhält, gewinnt dieses; in jedem anderen Fall wird eine faire Münze geworfen. Über alle Hashes gemittelt, entsprechen diese Gewinner-Tokens weiterhin der Modellwahrscheinlichkeit.2 Nun bleiben noch Tokens für die nächste Runde übrig, für die jetzt das zweite Bit der Markierung verwendet wird.
In diesem System sieht die Verifikation leicht anders aus, da aus dem Hash jetzt für jeden Token Bits berechnet werden, aber die Idee ist grob dieselbe: Kommt der Text aus einer unmarkierten Quelle, sollten die einzelnen Bits wie faire Münzwürfe aussehen, ist die Quelle aber markiert, überwiegen die positiven Bits.
Das Turnier-Sampling ist eine effiziente Methode, diese zusätzlichen Bits für die Auswahl zu nutzen. Die konkrete Mathematik ist dabei weniger wichtig als die grundlegende Einsicht, dass ein Wasserzeichen-Algorithmus besser funktioniert, wenn er mehr für die Rangordnung relevante Information aus dem Hash gewinnt. Ein einzelnes Bit teilt das gesamte Vokabular lediglich in zwei große Gruppen. Erhalten zwei mögliche Tokens dasselbe Bit, kann ihre Auswahl nicht zur Verstärkung des Signals beitragen: Aus Sicht des Wasserzeichens sind beide in diesem Moment gleichwertig.
Mit mehreren unabhängigen Bits lassen sich die Tokens wesentlich feiner unterscheiden. Zwar entsteht dadurch noch keine vollständige Rangfolge, und Gleichstände bleiben möglich, doch solche ununterscheidbaren Fälle treten deutlich seltener auf als bei einer Aufteilung in nur zwei Gruppen. Der Algorithmus erhält dadurch wesentlich häufiger die Möglichkeit, eine für das Wasserzeichen günstige Auswahl zu treffen. So lässt sich das Wasserzeichensignal noch weiter verstärken, ohne die ursprünglichen Modellwahrscheinlichkeiten im Mittel zu verändern. Insbesondere das Plateau aus dem interaktiven Beispiel zwischen und würde nicht mehr auftreten und Wahrscheinlichkeiten um die könnten ein noch stärkeres Signal extrahieren.
Wir beschäftigen uns bei Infound damit, wie sich aktuelle KI-Forschung in belastbare Produkte, verständliche Interfaces und verantwortungsvolle Anwendungen übersetzen lässt. Wenn du dabei bist ein KI-System zu konzipieren, evaluieren oder für regulatorische Anforderungen vorzubereiten, melde dich gerne mit aktuellen Fragen oder Herausforderungen bei uns.
Der P-Wert beantwortet grundsätzlich die Frage, wie wahrscheinlich ein unter der Nullhypothese gezogenes Ereignis auf einer entsprechenden Skala besser oder gleich gut abschneidet als das beobachtete Ereignis. Ein hoher P-Wert liefert also keinen starken Hinweis gegen die Nullhypothese und ist nicht anzustreben. In unserem Fall wäre die Nullhypothese ein unmarkierter Text und es bietet sich an, für die Skala die Dichte positiver Markierungen zu verwenden, aber bei abzuschneiden, da kleinere Werte keine Aussagekraft haben. Das heißt, für jeden Text mit einer Dichte positiver Tokens von oder darunter ist der P-Wert . Jedoch können auch im völlig deterministischen Fall, wo effektiv kein Wasserzeichen vorhanden ist, zufällig mehr als positive Markierungen auftreten, sodass der P-Wert kleiner wird. Deshalb ist der erwartete P-Wert niemals , sondern liegt bei maximal etwa . Eine noch aussagekräftigere Statistik würde getrennt die Wahrscheinlichkeit von false positives als auch von false negatives berücksichtigen. ↩
Betrachten wir ein Token mit Ausgangswahrscheinlichkeit . Das Paar entsteht mit Wahrscheinlichkeit während ein gemischtes Paar das enthält mit Wahrscheinlichkeit von gezogen wird. Im gemischten Paar gewinnt , über alle Markierungen gemittelt, in der Hälfte der Fälle. Damit beträgt die Wahrscheinlichkeit, dass aus einem bestimmten Paar heraus in der nächsten Runde übertritt genau . Somit folgt die Verteilung der Tokens wieder der ursprünglichen Verteilung. ↩