Gisteren heeft Anthropic, de maker van het AI-taalmodel Claude, aangekondigd dat het gaat voldoen aan de EU-praktijkcode voor het watermerken van AI-gegenereerde content. Dit is een direct gevolg van de AI Act, waarvan de transparantieverplichtingen van artikel 50 sinds afgelopen 2 augustus van toepassing zijn gegaan. Voor Claude betekent het concreet dat nieuwe modellen vanaf die datum standaard een watermerk in hun output verweven.
Tot zover de aankondiging. Wat mij vooral opviel in de reacties online is dat veel mensen wel begrijpen dát er een watermerk in de tekst komt, maar niet hóe zoiets werkt. Hoe kun je nou een watermerk verstoppen in gewone tekst zonder dat de kwaliteit of leesbaarheid van de tekst achteruit gaat? Bij een afbeelding of een video kan ik me daar nog wel iets bij voorstellen: daar zitten miljoenen pixels waar je kleine, onzichtbare aanpassingen in kunt maken. In afbeeldingen en video kan je ruis verstoppen die je als mens niet opvalt, maar als computer ontegenzeggelijk is. Maar tekst is discrete informatie: een letter is een letter, een woord is een woord. Waar zit dan de ruimte voor een verborgen boodschap?
In dit artikel wil ik daar wat dieper op ingaan. Ik ga uit van de basiswerking van AI-taalmodellen die ik in dit eerdere artikel heb uitgelegd. Als je die nog niet hebt gelezen kan het handig zijn dat eerst te doen, want begrippen als tokens, waarschijnlijkheden en hidden layers komen hieronder terug. Ik blijf ook nu zoveel mogelijk op conceptueel niveau, want van de onderliggende wiskunde word ik zelf ook duizelig.
De kernvraag: hoe verberg je iets in gewone tekst?
Om te begrijpen hoe een tekstwatermerk werkt, moeten we eerst terug naar hoe een taalmodel eigenlijk tekst produceert. Zoals ik in mijn eerdere artikel beschreef, werkt een taalmodel als Claude of ChatGPT niet door zinnen ‘te bedenken’ zoals een mens dat doet. Het model berekent bij iedere stap welk volgende token (in feite: welk woord) statistisch gezien het beste past achter de tekst die er tot dan toe staat. Claude’s en GPT’s doen dan ook eigenlijk niks anders dan de hele tijd statistisch raden welk woord moet volgen uit de tekst die daaraan vooraf is gegaan.
Wat daarbij belangrijk is: het model kiest zelden zomaar één woord dat er logisch achteraan komt. Bij iedere stap produceert het een lange lijst met kandidaat-tokens, elk met een bijbehorende waarschijnlijkheidsscore. Neem bijvoorbeeld de zin: “De kat sprong op de …”. Voor het volgende woord berekent het model dan iets als:
- tafel – 22%
- bank – 15%
- kast – 9%
- muur – 6%
- […] nog duizenden andere opties met kleinere kansen
Wat vervolgens gebeurt, is dat het model een van deze woorden kiest. En hier zit al direct een belangrijk inzicht: het model kiest niet altijd het meest waarschijnlijke woord. Als het dat wel zou doen, zou de tekst te voorspelbaar, te saai en te repetitief worden. Er zit dus een zekere mate van willekeur in de keuze. Het model kiest een woord uit de bovenkant van deze kansverdeling, maar niet altijd nummer één. En het is precies dié keuzevrijheid waar het watermerk zich in nestelt.
De truc: gestuurde willekeur
De kern van een tekstwatermerk zit in het volgende idee: als het model tóch een keuze moet maken uit meerdere goede kandidaten, kun je die keuze niet-willekeurig laten zijn, maar sturen volgens een geheim patroon. En dat patroon is achteraf herkenbaar voor wie het patroon kent.
Dit klinkt abstract, dus laten we het uittekenen. Stel je voor dat de maker van het taalmodel vooraf een geheime lijst maakt waarin iedere mogelijke token in de woordenschat willekeurig wordt ingedeeld in twee groepen: een groep A en een groep B. Denk aan een soort dobbelsteenpatroon dat vooraf is vastgelegd. In de wetenschappelijke literatuur wordt dit ook wel een noise pattern (ruispatroon) genoemd, omdat het op het oog volstrekt willekeurig oogt. Alleen wie de sleutel heeft, kan bepalen welke token in welke groep zit.
Terug naar ons voorbeeld: “De kat sprong op de …”. Stel dat de kandidaten er als volgt uit zien, waarbij ik de kleur van iedere token uit het geheime patroon erbij zet:
- tafel (A) – 22%
- stoel (B) – 18%
- bank (A) – 15%
- kast (B) – 9%
- muur (A) – 6%
Normaal zou het model puur op basis van de kansverdeling een woord kiezen. Maar met een watermerk erbij ingebouwd, geeft het model bij het maken van de keuze een voorkeur aan de A-tokens. De kansen worden licht opgeschoven ten gunste van groep A. Niet zo veel dat muur opeens waarschijnlijker wordt dan tafel, dat zou immers de tekstkwaliteit schaden, maar wel net genoeg dat, over een lange tekst genomen, er systematisch iets meer groep-A woorden worden gekozen dan je bij zuivere willekeur zou verwachten. En dát is het watermerk. Niet één specifiek woord, niet een verstopte boodschap, maar een statistische afwijking over de héle tekst heen.
Detectie: telkens tellen
Hoe herken je zo’n watermerk vervolgens? Dat is eigenlijk de omgekeerde beweging. Wie de geheime sleutel heeft (Anthropic zelf, en straks partijen die zij daar toegang toe geven), kan een stuk tekst door de detector halen. Die detector doet het volgende:
- De tekst wordt opgeknipt in tokens
- Voor woord n’de woord (bijvoorbeeld, ieder 5e woord van de tekst): zat deze in groep-A of groep-B volgens het geheime patroon?
- Hoe groot is het percentage dat we het patroon terug zien komen (het signaal ook wel genoemd)
Bij normale, menselijk geschreven tekst zul je ongeveer 50/50 uitkomen. De kleurindeling is immers willekeurig, dus de kans dat een menselijk gekozen woord toevallig groep-A is, is precies de helft. Maar bij tekst die door Claude is gegenereerd zul je een significant hoger percentage groep-A tokens vinden, bijvoorbeeld 60% of 65%. Dat verschil is statistisch gezien niet toevallig te verklaren, en dus een sterk signaal dat de tekst door het model is geproduceerd.
Hoe langer de tekst, hoe betrouwbaarder de meting. Bij één zin kan de verhouding nog toevallig zijn. Bij een alinea wordt het interessant. Bij een heel artikel wordt het signaal steeds sterker. Dit is ook direct de reden waarom Anthropic in de eigen aankondiging waarschuwt dat zeer korte teksten misschien niet betrouwbaar detecteerbaar zijn: er is simpelweg te weinig materiaal om de statistische afwijking hard te maken.
Waarom je er niets van merkt
Hier komt het mooie: omdat het watermerk zich verstopt in de keuze tussen goede kandidaten, verandert er inhoudelijk niets aan de tekst. Het model schrijft nog steeds vloeiende, correcte, contextueel passende zinnen. Als tafel een prima keuze was en bank ook een prima keuze, dan maakt het voor de lezer echt niets uit welke van de twee er staat. De betekenis, stijl en leesbaarheid blijven overeind. Je krijgt gewoon een net iets andere versie van hetzelfde antwoord dan zonder watermerk.
Dat is ook waarom Anthropic kan claimen dat het watermerk imperceptible is: er is geen zichtbaar teken, geen verstopte tekst, geen onzichtbare karakters, geen typografische truc. Er is alleen een verschuiving in de statistische verdeling van woordkeuzes over de hele tekst. En die verschuiving is voor het menselijk oog volstrekt onopvallend.
De grenzen van het systeem
De keerzijde van deze aanpak is dat het watermerk kwetsbaar is voor bewerking. Als jij een door Claude gegenereerde tekst neemt en die stevig herschrijft, parafraseert of vertaalt, dan verdwijnt de statistische signatuur langzaam. Iedere keer dat jij een woord vervangt door een synoniem, ‘reset’ je in feite de kleurverdeling van dat woord naar willekeur. Bij een lichte bewerking blijft het watermerk vaak nog wel detecteerbaar (Anthropic geeft aan dat het watermerk “through some editing” overleeft), maar bij een grondige herschrijving overleeft het niet.
Ook is een gedetecteerd watermerk geen definitief bewijs van iets. Zoals Anthropic zelf keurig opsomt: iemand kan Claude alleen als vertaler of samenvatter hebben gebruikt van een menselijk geschreven brontekst. Andersom kan het ontbreken van een watermerk ook niet bewijzen dat een tekst niét door AI is gemaakt: de tekst kan door een ouder model zijn geproduceerd, kan zwaar bewerkt zijn, of kan simpelweg te kort zijn voor betrouwbare detectie.
Voor afbeeldingen en bestanden werkt het overigens fundamenteel anders. Ik noemde al eerder dat er via ruispatronen kunnen worden verstopt in audiovisuele elementen, maar ook wordt er cryptografisch ondertekende metadata aan het bestand toegevoegd volgens de C2PA-standaard. Dat is een veel harder, maar tegelijk ook fragiel mechanisme: het is niet te vervalsen, maar wel makkelijk te strippen door een screenshot te maken of het bestand te converteren naar een ander formaat.
Lichtelijk cynisch
Aan de ene kant was deze implementatie van waarmerking te verwachten, maar aan de andere kant ben ik wel een beetje teleurgesteld en cynisch over de implementatie. In feite hebben we (of gaan we) nu prachtig gewaarmerkte teksten hebben, maar een compleet ontransparant stelsel over hoe dit te detecteren valt. Waarschijnlijk gaat Anthropic komen met een online-tool waar je teksten kan uploaden welke je dan vertelt hoe sterk het signaal is van hun verstopte patroon. Daarbij de mooie disclaimer: als het zegt: AI-gegenereerd, dan is dat een signaal en niet met 100% zekerheid te bevestigen. En andersom: als het zegt: prima, gemaakt door een mens; dan hoeft dat helemaal niet per se waar te zijn vanwege de eerder genoemde redenen. Hoe kan je met een signaal als dat nou iets zinnigs zeggen?
Op zich vind ik het initiatief (en de redenen om dit juridisch te verplichten in de AI Act) begrijpelijk en te volgen. Maar ik maak mij ook ongerust over de consequenties die dit soort signalen gaan opleveren. Wat als een student iets schrijft en per toeval blijken daar keuzes te zijn gemaakt waardoor het signaal van Claude net iets sterker dan neutraal is. Gaan docenten dan je proefschrift afkeuren louter omwille van dit signaal? Het risico op vals-positieven is bij dit soort tools zeer groot; en, zoals bij iedere tool, moet daar wel verantwoord mee om worden gegaan om valse beschuldigingen te voorkomen.
Tot slot
Wat ik zelf het meest fascinerende vind aan deze aanpak, is de technische elegantie ervan. Het watermerk maakt slim gebruik van iets wat sowieso al in het systeem zit: de willekeur bij de keuze tussen goede kandidaat-tokens en het veranderen daarvan van willekeur naar een gestuurde willekeur. Er wordt niets toegevoegd, niets verstopt en niets veranderd aan de tekst zelf. Er wordt alleen een klein duwtje gegeven aan het dobbelsteentje dat het model toch al gooide.
Of dit voldoende zal zijn om het internet leefbaar te houden in een tijdperk waarin AI-tekst overal opduikt, is een andere vraag. De juridische kaders van artikel 50 AI Act zijn vooral gericht op transparantie voor de eindgebruiker, en dat is een bescheidener doel dan het volledig dichttimmeren van AI-detectie. Maar als eerste stap in het bouwen van een informatie-ecosysteem waarin je op zijn minst kunt vermoeden of iets machinaal is gemaakt, is dit een technisch verrassend elegante oplossing.

Geef een reactie