前段时间,曾就读于北京大学数学科学院的数学家苏炜杰获得了统计学界最高荣誉之一的 COPSS Presidents' Award。该奖每年授予一位年轻统计学家。
苏炜杰获奖现场照丨图片来源于网络
在苏炜杰的研究当中,有一项和大家都特别关心的事有关:如何识别一段内容到底是不是 AI 生成的?
统计学和 AI 有什么关系?
苏炜杰的颁奖词第一句写着“为生成式 AI 的统计基础做出贡献”。
生成式 AI,尤其是大语言模型,大概是人类迄今为止造出的最大的黑箱。它们有着几百亿甚至几万亿个参数,在技术层面上我们知道它们是如何被训练出来的,也知道它如何一步步预测并生成回答,目前的可解释性研究甚至已经能逐步追踪到相当具体的内部特征,但我们仍然还无法明白,AI 所表现出的这些我们需要或者出乎意料的能力究竟怎样从如此庞大的参数计算中诞生。
而这个黑箱还在不断变化和进化,甚至可能长期处于一种持续的状态:最先进的模型不断因为规模、架构和训练方法的变化而向前移动,但在理论上的理解却总是慢一步,这条实践先行理论追赶的缝隙不但没有消失,反而越来越大。
这也意味着,我们或许没有办法等到一套能统一解释大语言模型的“大一统理论”出现再开始研究,而更应该针对一个个具体问题,从黑箱外部进行观测,以自下而上的方式分别建立专门的统计方法。
2025 年 2 月,苏炜杰和 Michael Jordan、Kyunghyun Cho,以及来自 Meta FAIR 的一批大语言模型研究者共同参与撰写了一篇综述《写给统计学家的大语言模型概览》(An Overview of Large Language Models for Statisticians),列出了统计学可以介入的若干个方向:如何量化模型输出的不确定性,如何保护训练数据中的个人隐私,如何让模型与人类偏好对齐而不引入系统性偏差等。
而苏炜杰本人的研究横跨了其中多个领域,但他最具代表性的一项工作,指向一个每个人都可能关心的问题:怎么知道一段话是不是 AI 写的?
如何鉴别一段话是不是 AI 写的?
这个问题看上去应该有一个工程上的答案,每家大语言模型的输出都有一些奇妙的句式特征。即使并非专家,熟悉 AI 的人也通常拥有一套自己的判断方法。“不是……而是……”“从来不是”的万能句式,“最直白最不绕弯子”的表达,各种“接住”以及同人文中奇怪不合逻辑的语癖,各种鉴 AI 的方法和 AI 式回复的梗图更是层出不穷。
图片来源于网络
也有人试图将这种鉴别 AI 的方法系统化,从 2023 年底开始,一群维基百科的编辑者们就一直在追踪和审查疑似 AI 生成的文章。他们建立了一个名为“WikiProject AI Cleanup”的项目,逐篇审读,标记了 500 多篇可疑文章,说实话,这个数量级相对于 AI 生成的庞大文本来说简直杯水车薪。而后他们于 2025 年 8 月发布了一份详细的报告,总结了他们观察到的规律。比如 AI 喜欢列排比句凑出 123,尤其喜欢把普通事物说成“关键的”“至关重要的”,动辄“显其重要性”“反映更广泛的趋势”,以及“专家认为”“观察人士指出”这类找不到具体主语和来源的归因。
这份报告流传甚广,很快就成了识别 AI 写作的重要参考资料。但这些特征也能被反过来用,今年 1 月,一个名为 Humanizer 的 skill 插件被发布在 github 上,发布者希望能让 AI 写得更像人类,方法很简单,将 wiki 总结出的这份 AI 写作的特征文件告诉 AI,然后让它不要这么写。
尽管和所有类似 skill 插件一样,它的效果并不稳定。但这个小型的攻防战还是反映出了“基于特征鉴别 AI”的根本困境:人类可以寻找模式,但 AI 也可以学习模式,所有的规则从理论上都可以被绕过,而 AI 的学习速度远超人类总结的速度。
那么,有没有别的思路?
苏炜杰的无偏水印方法
我们可以让 AI 在生成文本的时候,就埋下一些蛛丝马迹,读者察觉不到,但验证者可以检测出来。这个方法叫水印(Watermark)。
大语言模型生成文本的原理是每一步都在基于前文来预测下一个词元的概率分布。例如,“今天天气真”后面,“好”的概率可能是 40%,“热”是 20%,“不错”是 15%,等等。模型从中抽一个出来,接上去,然后继续预测下一个字。你跟 ChatGPT 聊天时看到的每一个字,都是这台概率机器抽奖抽出来的。
而水印就是在这个概率分布中做手脚,苏炜杰他们研究的是其中一类尤其漂亮的方案:无偏水印。它在抽奖过程中做手脚,却不改变每个词原本的中奖概率。
苏炜杰的论文中用了一个极简的例子来说明,他管它叫“宝宝水印(baby watermark)”。
想象一个只有两个词 0 和 1 的极简语言。在这种语言里,LLM 每一步计算出现 0 和 1 的概率,然后用骰子取一个 0 到 1 之间的随机数,当这个随机数小于 0 出现的概率就返回 0,否则返回 1。比如第一个词出现 0 的概率是 30%,1 的概率是 70%,那么掷出 0 到 0.3 的时候会返回 0,0.3 到 1 的时候会返回 1。
现在,我们不再让模型临时随便掷这颗骰子,而是用一把秘密密钥生成一串同样均匀分布的伪随机数 ζ,等用户使用模型的时候用这组随机数取代原本的骰子,这就是加水印的部分。
从用户这一边看,什么都没有改变。因为 ζ 仍然像一颗公平的骰子,在 0 到 1 之间均匀取值,所以 0 原本有 30% 的概率出现,加了水印以后还是 30%;1 原来是 70%,现在也还是 70%。只看最终生成的文本中各个 token 出现的概率分布,和没有水印时保持一致。
但从掌握密钥的验证者这一边看,有一样东西变了:生成出来的文本和那串秘密随机数之间产生了关联。
还是刚才的例子。如果某一位的水印随机数 ζ 是 0.9,那么只要那一位出现 1 的概率在 10% 以上,就一定会输出 1;反之,如果某一位 ζ 是 0.1,就很可能输出 0。换句话说,较大的 ζ 倾向于和 1 一起出现,较小的 ζ 倾向于和 0 一起出现。
假如一串水印随机数里,第 1、3、4 位偏大,第 2、5 位偏小,那么一篇开头为 10110 的文本,就很可能是这套打了水印的大模型所生成的。虽然也可能有人偶然写出了一份以 10110 开头的文本,但当文本长度变长的时候,文本与水印随机数之间的关联性就更不可能是偶然产生的。
但水印也有一个缺点,它需要模型拥有选择的余地,如果模型非常确定下一个字是什么(比如 “中华人民共和”后面几乎一定是“国”),那它不管有没有水印都会选同一个字,这一步几乎没有信号可以利用。反过来,如果概率分散在更多候选 token 之间,水印才有更多可能制造可检测的耦合。
有了水印,下一步就是怎么把它检测出来。这本质上是一道假设检验题,也是统计学最经典的问题之一。
零假设是:这段文字由人写成。因此他写下的内容(对应的 token 序列)与那组计算出来的伪随机数之间应该彼此独立。
备择假设则是:这段文字来自一个使用了这套伪随机数水印的大语言模型,这些 token 正是根据那些伪随机数生成的,两者之间应该存在水印刻意制造出来的关联性。
统计学家要做的就是设计一个统计量来衡量这种关联性的强度,判断它是否显著到足以排除偶然性。
但是难点在于,验证者通常不知道模型生成每个 token 时的概率分布。
苏炜杰他们的办法,是构造一种枢轴统计量(pivotal statistic),让它在零假设下的分布和模型生成 token 时的概率分布无关。
这意味着,即使我们不知道大语言模型这个黑箱中每一步究竟给出了怎样的概率,验证者仍然能知道在一篇没有水印的文本里,这个统计量应该长什么样,如此就可以划出一道明确的界限来判断是否检测到了水印。
在此基础上,他们又进一步研究了优化问题:既然可以设计出很多不同的统计量,那么哪一种检测方法才是最好的?对于两类具有代表性的无偏水印,他们最终推导出了相应的最优检测原则。
而后,苏炜杰又沿着这个方向做了一系列推进工作。比如研究经过人类编辑后的 AI 文本。如果有人拿到 AI 写好的文字再进行修改,那么水印信号还在不在?答案是在,但信号会随着修改幅度增加而衰减。又比如将水印检测推进到了实时监控,不用等文字生成完毕,就可以一遍观察一边积累水印的统计证据等。
当然,水印并没有想象中那么万能,大语言模型如果不配合嵌入水印,那就没有水印可供检测。已经被生成出且流通在互联网上的文本,也没办法进行追溯标记。这个理论上的最优方法,距离实践尚有一段路要走。至少在目前,它和基于文本特征的传统识别方法是互补的,而并非替代的关系。
水印并没有打开大语言模型的黑箱,但它或许已经足以说明统计学为什么会在这个时代重新变得重要,而且愈发重要。
即使一个系统复杂到无法被彻底理解,我们仍然可以在黑箱之外处理一些具体的问题,什么能够被观察,什么可以被检验,一个判断有多大可能出错,在有限的信息下什么又是更好的判断。
然后在黑暗中,划出一些可以依靠的边界。
策划制作
作者丨antares 计算机图形学硕士、游戏行业从业者、科普作家
审核丨王涛 中国科学院自然科学史研究所青年研究员
策划丨徐来
责编丨甄曦