再也不能用ChatGPT写作业了!新算法给AI生成文本加水印

  明敏 Alex 发自 凹非寺

  量子位 | 公众号 QbitAI

  AI生成文本,又遇新对手!

  凭借识别AI生成文本中的“水印”,一种新算法能够准确判断文本到底是谁写的。

  无需访问模型参数、API,结果置信度高达99.999999999994%

500

  方法一经发布就引来大量网友围观。这回拿ChatGPT“作弊”,怕不是要更难了?

  要知道,最近一段时间,ChatGPT先是成为美国高中生的写作业利器,后面帮专业媒体写稿子,引发巨大恐慌。如Nature、纽约教育部等,都针对ChatGPT发布禁令。

  马里兰大学学者们提出的这一新方法,为解决这些麻烦提出了个新思路。

  不少网友都觉得,这个方法提出的正是时候,而且效果看着也不错。

500

  有学者还和美国高中生喊话,你们要做好准备了!

500

  作者表示,方法代码将在2月15日免费开源。

  计算文本由AI生成的概率

  所谓模型水印,人类无法看到,但是计算机可以。

  这是一种现在被常用于大规模语言模型(LLM)中的方法,能让AI生成的文本带有“特殊标记”。即把信号嵌入到生成的文本中,让算法能从一小段token中检测出来。

  最近,OpenAI方面也表示,考虑在ChatGPT中添加水印,以降低模型被滥用带来的负面影响。

  这篇最新论文的作者,就想验证下这个想法到底靠不靠谱。他们通过给LLM中嵌入水印,然后再进行检测。其中水印的嵌入不会影响文本生成质量。

  具体来说,大规模语言模型每次生成一个token,每个token将从包含大约5万个词汇的词汇表中进行选择。

  在新token生成之前,该方法会从基于最近已生成的token为随机数生成器(RNG)提供“种子”,以此来压一个水印。

500

  然后使用RNG,能将词汇表分为黑名单白名单,并要求LLM接下来只能从白名单中选择词汇。

  如果整段文本中,白名单中的词汇越多,就意味着越有可能是AI生成的

  黑白名单的区分,基于一个原则:

  人类使用词汇的随机性更强。

  举例来说,如果在“美丽的”后面生成词汇,水印算法会将“花”列入白名单,将“兰花”列入黑名单。

  论文作者认为,AI更可能使用“花”这个词汇,而不是“兰花”。

500

  然后,就能通过计算整段文本中白名单token出现的情况,来检测水印。

  如果一共有生成了N个token,所有的token都使用了白名单词汇,那么这段文字只有2的N次方分之一概率是人类写的。

  即便这段文字只有25个词组成,那么水印算法也能判断出它到底是不是AI生成的。

  但作者也表示,水印有时候也不一定完全靠谱。

  比如模型输出了“SpongeBob Square”,下一个单词一定会是“Pants”吧?但是Pants会被标记到黑名单里,即认为是只有人才会写的词。

  (注:SpongeBob SquarePants是《海绵宝宝》动画片的英文,可理解为一个专有名词)

500

  这种情况会严重影响算法的准确性,因此作者将其定义为低熵token,因为模型几乎不会有更好的选择。

  对应来看,也会有高熵token,比如“海绵宝宝感觉____”这个句式里,能填入的词汇太多了。

  对于这一情况,作者选择针对高熵token制定更强的规则,同时保留低熵token,确保水印质量更好。

  与此同时,他们还添加了波束搜索(Beam search),允许LLM能够排布一整个token序列,以避免黑名单词汇。

  这么做,他们能确保LLM使用白名单词汇的概率在大约80%左右,而且不影响文本生成质量。

500

  举例来看,对于下面这段文字,水印算法认为它有99.999999999994%的可能是由AI生成的。

  因为在这段文字中,包含36个token。如果是人类写的,那么文本中应该包含9±2.6个白名单词汇(白名单词汇的概率约为25%)。

  但这段文字中,包含了28个白名单词汇。

  计算来看,这段文字由人类写出的概率,仅有0.0000000000006% (6乘以10的-15次方)。

500

  如下标注的是文本中的黑名单token。

500

  需要注意的是,如果想要水印正常发挥作用,并不受到攻击,就必须对文本进行一些标准化处理,并且需要检测某些类型的对抗性提示。

  这一方法是对外公开的,将在2月15日开源代码。

  加一个随机秘钥,也能变成保密模式并且托管到API上,这能保证水印不会被篡改。

  论文中使用的模型是Meta开源的OPT-1.3B模型。

  由于不用访问底层模型,所以该检测方法的速度很快,成本也不会很高。

  而且可以使用标准语言模型生成带水印的文本,不用再重新训练。

  网友:似乎很容易绕过?

  巴特,不少网友觉得,这个方法的具体实践效果可能远不及理想,质疑之声迭起。

  有人提出:

  如果我在AI生成的文字基础上,修改几个词,还能被查出来吗?那在替换成近义词后,检测准确率会下降多少?

  毕竟大家往往不会一字不改、直接用AI生成的内容。

500

  对此,论文通讯作者、马里兰大学副教授Tom Goldstein回答称:

  对于一段自带水印的文字,至少得修改40%-75%的token,才可能成功去除水印。

  (如果用其他程序修改内容话),为发生同义词攻击,导致生成内容的质量很低。

500

  简而言之,想要通过换近义词来消除水印,得大篇幅修改,而且若不是人亲自手动修改的话,效果会很拉胯。

  还有人提出:

  对于专门设计过的低熵token序列,应该能检测出水印。但是,长度和检测率之间(存在一些矛盾),它们的优先级应该如何权衡?

500

  对此,Tom教授表示:

  根据设定,使用波束搜索时,绝大多数(通常是90%)的token在白名单上,即使是低熵token,也会被列入白名单。

  所以,至少得修改一半以上的token,才能删除水印,而这需要一个超级强大的LLM模型才行,一般人很难接触到。

500

  不过,研究者们也在论文中承认,这种方法确实存在一些局限性。

  比如,检测水印的z统计量,只取决于白名单大小参数γ和生成白名单的哈希函数,和其他不少重要的参数并没有什么相关性。

  这就让他人可以在下游水印检测器上做手脚,可以改变水印采样算法,重新部署水印,最终让原本生成的水印失效。

  就连OpenAI CEO Sam Altman也表示:

  创造完美检测AI抄袭的工具,从根本上来说是不可能的。

  (尽管他说OpenAI打算启用水印大法)

  但话说回来,人们为了限制AI生成文字的负面影响,还是煞费苦心——

  之前就有人搞出了一个检测ChatGPT的网站,名曰GPTZero,只需要把相应的内容粘进去,几秒内就能分析出结果。

500

  论文地址:

  https://arxiv.org/abs/2301.10226

  参考链接:

  [1]https://twitter.com/tomgoldsteincs/status/1618287665006403585

  [2]https://twitter.com/goodside/status/1610552172038737920

  [3]https://www.technologyreview.com/2023/01/27/1067338/a-watermark-for-chatbots-can-spot-text-written-by-an-ai/

全部专栏