独立开发者拆解Anthropic Claude的水印技术争议
不知道为什么,人们会对一组相当直白的密码学原语和 LLM 采样技术组合患上 Anthropic 妄想症。所以我作为一个非雇员,来一步步给大家解释水印到底是怎么回事。
LLM 靠概率自回归采样 token 工作。意思就是:每生成一个 token,模型权重不会输出单一的下一个 token,而是给*所有可能的 token*输出一个概率分布,一堆加起来总和为 1 的小数。
「温度」这个采样参数会影响这个分布的构建。温度为 1 时,就是模型认为的「真实分布」。把温度调到 1 以上会让分布的尾部更厚,低概率 token 被选中的概率会变高,以此类推。把温度往 0 调会让生成更接近确定性,最高概率的 token 被选中的可能性高很多,温度为 0 时永远只选概率最高的那一个。
现代推理模型几乎全都用温度 1,API 甚至经常不再把它开放为可自定义设置,所以「确定性生成」并不常见。
当你在电脑上「随机选东西」的时候(不只是 LLM),几乎总是伪随机,比如用一个复杂算法,基于初始种子数生成一串数字,这串数字拥有很好的、密码学可证的性质:数字分布没有规律,没有信息,除了持有初始种子数并运行同一个伪随机算法,没有任何方法能比随机猜更准地预测它。
也就是说,只要你有相同的种子,就可以确定性生成出同一份「随机性」,但没人能区分它和真随机有什么区别。
通常这些伪随机数生成器的初始种子要么来自时间之类的东西,对安全要求更高的场景会用硬件随机源,就是芯片上采集物理温度之类的源。这些源太慢太贵了,没法用来生成所有随机数。
加水印之前,Anthropic 生成 Claude token 时,会用伪随机生成器从 LLM 分布里选 token,生成器用未知但通用的方式取种子。很可能就是上面说的那种系统默认值,但这对终端用户来说完全不透明。就像我刚才说的,*token 本身已经是随机选出来的*,LLM 并不是永远选概率最高的下一个token,恰恰相反,永远选最高概率的效果非常差,会拉低生成质量。
加了水印之后,唯一的变化就是*种子的选取方式*。现在,种子永远是用前面所有token和密钥做确定性哈希得到的。token 选择过程依然是*伪随机的*,拥有和上面描述完全一样的性质。从密码学角度看,在每个给定token位置,如果你观察完整的token概率分布,它。..
本文由 AI 翻译自英文原帖,技术名词保留英文。
查看 X 原帖