upvote
Scott Aaronson talks about his project at OpenAI to do this^

You can carefully select which pseudorandom number generator (prng) you use to be able to id text of a certain length. I expect there is some performance characteristic you have to manage since you're doing this on every inference, but once you do that it doesn't change the output in any meaningful way (the prng is still a statistically valid prng, it just happens to let you check if the output used that prng)

The point is that you can do this simply by swapping to a different RNG, which isn't noticeable to the end user, and while it changes the output, it's not any different from how using a different seed or being lumped in a different batch will change the output.

^ excerpt:

> So then to watermark, instead of selecting the next token randomly, the idea will be to select it pseudorandomly, using a cryptographic pseudorandom function, whose key is known only to OpenAI. That won’t make any detectable difference to the end user, assuming the end user can’t distinguish the pseudorandom numbers from truly random ones. But now you can choose a pseudorandom function that secretly biases a certain score—a sum over a certain function g evaluated at each n-gram (sequence of n consecutive tokens), for some small n—which score you can also compute if you know the key for this pseudorandom function.

reply
>I'd like to know a lot more about how that works.

My guess is that it works like Gemini's SynthID: by altering the logprobs of the next token.

Like, for every 10th token, instead of outputting the most probable, it outputs the 17th most probable, or something. (Obviously it's way more complicated but I think conceptually this is how it works.) No human will notice this, but a classifier trained on Claude's output will.

So it's not like the watermark is the words "le epic bacon" and Claude will output "le epic bacon" in everything. That would be extremely annoying (and easy to defeat).

reply
> Like, for every 10th token, instead of outputting the most probable, it outputs the 17th most probable, or something.

Wouldn't you need the prompt to know the probability of the next token?

reply
Less probable also means less optimal and you get a subpar response. More so if it's baked into its reasoning. It's intelligence will suffer unless this is some post processing thing.
reply
There is already some intentional randomness in token selection, because it actually improves the quality of responses if you intentionally don't always pick the most likely next token.

You can hide data in that randomness without impacting the quality of the response by using a sufficiently "random looking" pseudorandom bit stream instead of real random numbers.

I previously worked on a project to do that here: https://github.com/shawnz/textcoder

reply
They still need to choose when to do that though. When I prompt the program to e.g. alter a bash script in a specific way or to recite a longer known text it can't go round and randomly exchange tokens. It has to somehow define what is a simple repeated text from a different origin and what is a novel generation.
reply
I am wondering how that applies to newly generated code.

Odd variable naming? Stylistic choices that are watermarked?

Or as someone else noted further down in the comments, it could be more subtle:

Between the first and second most likely choice, in certain positions it will consistently choose in a certain way.

reply
> Odd variable naming? Stylistic choices that are watermarked?

Whatever it is, I'm sure it's load-bearing.

reply
You're absolutely right. But it is not just load-bearing, it is the load-bearing seams.
reply
I cannot imagine the code with well defined specification will have extra watermarks unless the watermark is requested as part of the harness instructions.

If it works like people describe - on the every nth token or something - then the mark will be left in the chain of thought and discussion with the model - not in the code artifacts.

reply
I would guess they're not worrying about watermarking a tweak to a human-written program. That's both a tiny fraction of Claude use and of very little concern to the kinds of people who want to check watermarks.
reply
Ah so this is why Gemini is neurotic.
reply
Most probable usually means for a specific prompt. How can this operate without the the original prompt?
reply
Just double checking my understanding: If this is true then only Anthropic will be able to detect if text was generated by one of its models, correct?
reply
Likely yes.
reply
But what prevents someone from using Anthropic own detection system to train a watermark-scrubber?

Seems like this would only catch the most unsophisticated cases.

reply
Most likely this method https://arxiv.org/pdf/2301.10226 (EDIT: and Google's SynthID paper which builds on it https://www.nature.com/articles/s41586-024-08025-4)
reply
If different model providers use different green logits, does that mean they can only tell if the text came from their own model?
reply
That "just add a constant to the green logits" as a fix to the entropy problem is so elegant I love it.
reply
> I'd like to know a lot more about how that works.

Count load-bearing words using two different algorithms in a belt-and-braces fashion

reply
Fair - I should have been honest about the watermark.
reply
One thing worth flagging: those words are load-bearing
reply
I have to push back: you've found the seam.
reply
That’s the real shape of the problem.
reply
Belt, braces, and suspenders.
reply
Don't forget the suppositories
reply
This is why I never use max effort! I’ll stick with my suspenders, thank you.
reply
You’re absolutely right. Yo momma is doing a lot of heavy lifting here. Her load-bearing methods have the right shape.
reply
My guess is it will be similar to how Genius watermarked lyrics, using things like variants of punctuation

https://www.pcmag.com/news/genius-we-caught-google-red-hande...

reply
In program code? Unlikely, surely¡
reply
reply
> Honest note: Anthropic has not shipped a public Claude watermark detector yet. This tool uses rewrite-based neutralization — a meaning-preserving paraphrase with a non-Claude model — which is the attack path watermark research points to. Not affiliated with Anthropic.

Well, they should have run their own AI slop website through their tool...

reply
So was it going down:

"Neutralize engine is temporarily unavailable. Try again."

reply
Though if pangram should be trusted, there are still statistical artifacts that tells you that a text LLM generated. I don't find that to be implausible.
reply
Alas, Pangram should not be trusted.
reply
Off the top of my head I would have thought zero width characters (eg: U+200B, U+200C) making some unique identifier sprinkled in amongst the output. But obviously far from foolproof since they could simply be removed.
reply
Maybe there is a reason why Opus 5 produces such word salad conversations
reply
So frustrating to use. And the comments generated by Claude today are unreadable garbage.
reply
What happens if someone handwrites a Claude output, then someone uses that handwritten text as a reference. Now you've got a watermarked idea which may have no direct linkage to the usage of Claude.
reply
If the algos work as advertised, watermarked token sequences have an extremely low probability. Copying the words by hand doesn't change that.

The mechanism seems to survive editing. The extreme probabilities get a little less extreme, but are still extreme enough to be distinctive.

But it wouldn't survive paraphrasing, because the output would be entirely human and the token correlations would disappear.

It might not survive referencing if only a sentence or two is used.

The practical issue is how true the claims are. It's one thing to create a proof of concept, another to see how it works in use.

And this is potentially catastrophic for code, because the grammar and word choices of code are completely different and more fragile than standard English.

reply
How is that different from referencing digital text that someone copied and pasted from Claude?
reply
Because there's an expectation of authenticity from the written word. If you've referenced something handwritten, you don't expect it to be the output of an LLM.

Similarly, if you quote someone word-for-word, you wouldn't anticipate their words to be flagged as Claude content, but if someone memorized Claude output word-for-word. That would still be classified as a Claude output.

Going forward you could categorize the influence of Claude on a population based off a percentage match between their spoken words with the LLM prose.

reply
Are you worried about being accused of using LLMs to generate your work? As long as you don't plagiarize you have nothing to worry about.
reply
I'm not too sure about that, people making stuff have already gotten penalized by overzealous AI detectors, most recently Kurtzgesagt.
reply
You can't make a blanket statement like this without knowing how the watermark is implemented.
reply
What if I unknowingly read content written by Claude in various articles and it influences my own writing style?
reply
It will just thread some load-bearing seams through the paragraphs.
reply
> have some kind of weird pattern baked into their text to act as a watermark.

public abstract class BaseAnimalBeanFactoryGeneratedFromClaudeFactory

reply
Most likely watermark will be proportional to the input/output ratio, i.e. if you input a long document and ask to make edits, it will not attempt to watermark it. On the other hand, if you provide a tweet and ask it to write an article, that will include watermark. Just a guess (and yes, it feels flawed)
reply
Load-bearing==claude
reply
I can tell you how: Claude produces a huge wall of text with jargon ridden bullshit and invented terms no human subject matter expert would seriously use and overuse.
reply