

Facebook splits the text “Ad” in the code so you have an “A” and “d” defined separately and then through some magic make them appear together when rendered… and then they change the exact locations and naming frequently.


Facebook splits the text “Ad” in the code so you have an “A” and “d” defined separately and then through some magic make them appear together when rendered… and then they change the exact locations and naming frequently.


Can my agent help me seize the means of production? No? Fuck off Zuck.


Yeah it’s exactly a pattern with token choices, by introducing a statistical bias to the randomness in token generation. Quality isn’t affected because the model is still choosing from the best candidates for the next token. You’re right that to be effective they need a long enough input to get enough matches to be.
Computer code is also going to be less effective because code has a much more rigid structure dictated by language syntax rules, coding conventions, linters and formatters, etc.


These are not watermarks using hidden characters. Their approach is undetectable even with an IDE. For a sequence of tokens, an LLM predicts the most likely next token, with some amount of randomness between equally likely candidates. The “watermark” is to introduce a statistical bias to this randomness, by altering the probability distribution of generated text according some hash function with a secret key, thereby embedding a statistical signature into the text itself.
So if the text is “I like to eat __” the model might have 3 top candidates for the next word (apple/orange/banana) that would be chosen at random. Instead that choice will be biased towards one option according to their hash function. And then again “I like to eat banana __” (cake/pie/tart).
To verify a text, they look for the “watermark” by scanning the text and looking at whether sequences of tokens chocies fits their biased probability distribution or are truly random. Just one match doesn’t tell you anything, but if they see a consistent pattern over a 1000 word document, they can give a very high confidence that their model generated the text.
To a human it looks like nornal generated text, and the output quality isn’t affected much (or ar all). It’s much more effective on generated prose, and not very effective on computer code.
You’re right. But it’s designed in such a way that it only biases the choice between the statistically most likely candidates, so it’s not forcing a choice to a less optimal token. It’s biasing the choice between equally optimal tokens. So it doesn’t really affect the quality of the LLM’s output.
It’s actually not that fuzzy. It’s the statistical equivalent to randomly guessing a 256-bit encyrption key. If you consider the algorithm operate on trigrams (sets of 3 words), then a 1000-word document contain 998 trigrams. Let’s say at each trigram the model has a choice between 16 equally likely candidate words, which is usually chosen at random according to the model temperature, now is also biased by the watermark hashing function.
The statistical likelihood of randomly making the same 1/16 choice as the watermark 998 times in a row is so extremely small it’s essentially impossible. Even if you rearrange the document, cut large portions, paste in other portions, rewrite some, you’re likely to leave in enough matching trigrams to make a statistically solid determination.
The main requirement is the text needs to be long enough… just a small sentence or snippet won’t be enough.
Having said that, it’s not that hard to defeat the watermark once you know how it’s done. If you know it operates on token trigrams, then you need to rewrite the document at the trigram level to break up those relationships.
Actually yes, this has been prompted by a new EU law requiring AI companies to make LLM output identifiable so that people have a chance at knowing what is generated/fake content.