下面根据我看的官方公开材料,简单梳理一下 Claude 的水印大概是怎么实现的。
一般来说,模型在生成 token 时,某些下一个词的位置上会有多个高分候选。我们通常用 top-k 或 top-p 采样,所以重复多次采样的话,分数最高的那个 token 被选中的概率最大,但其他 token 也有机会被选中。
加了水印之后,会有一个密钥来决定:在那些(理想情况下分数差不多的)高分 token 里,该选哪一个。说得更具体点,就是靠密钥和上一个 token 来影响这里的随机性。
如果在很多 token 位置上一直这么操作,就会形成水印——因为从组合概率来看,这种pattern 很难靠正常生成偶然出现。
有一点我没想明白:他们基本是说,因为欧盟监管,所以必须给所有人加水印。为什么?
当然,这毕竟是推理阶段的技术,不需要重新训练,也不用单独训个模型。那如果他们愿意,只给欧盟用户加不就行了?🤔