AI Detection

AI 检测中的困惑度是什么?

困惑度是语言模型用来描述它对你的用词有多意外的一个数值。本文追溯这一指标在 1977 年的起源,推导其公式,并解释为什么同一段文字会因阅读它的模型不同而得分不同。

6 min
What is perplexity in AI detection? A language model scoring how predictable each word in a sentence is.

搜索 perplexity 和 AI detection 时,前几条结果中有几条实际上与一个无关的产品有关, 这是一种由 AI 驱动的搜索引擎,恰好也叫作 Perplexity。检测器实际报告的这个指标与那家公司毫无关系,除了这个词本身。它来自比 GPTZero 或该搜索引擎更早数十年的语音识别研究,衡量的内容比两者都更狭窄, 即语言模型对页面上已有词语感到多么意外。

那么,AI detection 中的 perplexity 是什么? perplexity 是一个分数,用来描述语言模型对一段文字中的确切词语预测得有多好,它通过对模型自身的概率取平均,并将结果转换为一个单一数值而得到。分数低,表示模型持续猜对。分数高,表示模型持续感到意外。

这一概念比市面上任何 AI detector 都更早,而且它本身并不能说明文档是谁写的。一旦这个数字背后的算术变得可见,报告上的分数就不再像裁决,而更像它实际所是的东西, 对用词的描述。

AI detection 中的 perplexity 是什么?

perplexity 是从语言建模中借用的一种测量。它对模型预测一段文字中出现的具体词语的准确程度进行评分,并将该分数报告为一个单一数值。detector 将同样的测量应用于提交的文档, 数值低,意味着模型的猜测与实际词语高度一致,通常被视为机器作者身份的标记, 数值高,则通常被视为人类作者身份的标记。这个计算过程并不读取文档的论证、引文或主题内容。它只逐个词地读取每个词有多么可预期。

detector 并没有发明这种测量。它们借用了 speech recognition 和 machine translation 系统早已使用数十年的工具,用来判断模型对普通语言的预测效果,然后将其重新用作作者身份的替代指标,而这本来并不是它最初被设计来完成的工作。

这一切都与前面提到的那个无关的搜索引擎毫无关系。检测器报告的 perplexity 从来不是公司名称,也从来不大写, 它只是词序列的一种普通统计属性,会根据所给文本重新计算。

perplexity 实际上是如何计算的

这种计算的历史比任何 AI 产品都更早。Frederick Jelinek, Robert Mercer, Lalit Bahl 和 James Baker 于 1977 年提出 perplexity,用来衡量统计模型在语音识别任务中的难度,这比任何人把这个术语用于论文或实验报告都早了几十年。其定义自那时以来并未改变。

在文档的每个位置,模型都会为实际接下来的那个词输出一个概率,例如常见转移为 0.72,罕见转移为 0.03。perplexity 会对整段文本中的这些概率取对数后求平均,然后再用指数运算把平均值反转回来。

这里的指数运算比表面看起来更重要。对数概率求平均,正是我们计算 cross-entropy 时所做的事情,而 cross-entropy 是一种信息论上的说法,用来表示在给定模型预测的情况下,对一个序列进行编码需要多少比特。但 perplexity 会把比特数量转换回更容易理解的东西, 即一个有效的选择数,而不是抽象的比特计数。

这种运算最终保留下来的含义清晰得近乎物理。一个每次都完全确定的模型会产生 1 的 perplexity,这是该尺度的下限。一个把每个位置都视为在八十个等可能词之间的均匀猜测的模型会产生 80 的 perplexity。

大多数真实文档都会落在这两个极端之间的某个位置,而具体位置取决于作者、主题,以及由哪个模型来阅读。

Humanize your own paper

Transform your AI-assisted text and make it sound human, without touching important words or citations.

Get started free

为什么人类写作往往得分不同

模型的预期完全由此前内容逐词构建而成。在短语“the treatment group showed a statistically”之后,绝大多数符合语法的续写都是“significant”,而一个在大量科学写作上训练的模型会毫不犹豫地为这个词分配很高的概率。人类作者写到同样的短语时,也可能会想到“significant”,因为这个短语本身就是该文体的固定表达。差异会在别处显现, 例如两句之后选用的名词,括号里补充的一句插话,或者报告到一个奇怪小数位而不是整数位的数值。

这并不是一种技巧。当天人作者试图写出真实数据的精确数值、准确限定语、稍微更窄的词时,他们追求的是对研究真实成立的东西,而不是对文体真实成立的东西。而这些选择中的每一个,都会让模型多承受一点惊讶。惊讶正是这个分数要累加的内容。

这里的推断承担了超出测量所能支持的更多工作。Perplexity 直接衡量可预测性。它只是在假定可预测的写作在人类中罕见、在模型中常见的前提下,才推断作者身份,而这一假设通常是合理的,但有时会以一种具体、可识别的方式出错,因为可预测性是文本本身可能具有的一种属性,其原因与是谁输入它无关。

为什么同一段文字的得分会不同

这个分数的可移植性也比表面看起来更弱,因为它从来不是在真空中测量的。Perplexity 总是相对于某一个特定参考模型的训练来计算,而这种依赖会带来单一定义无法单独呈现的问题。

因素变化内容原因
由哪个模型进行阅读同一段文字在一个模型上可能得分较低,在另一个模型上可能得分较高困惑度只会相对于一个模型的训练数据来测量,而不同模型是在不同文本上训练的
该段文字是否为广泛复现的文本一份著名的历史文献或教科书式定义,即使有人把其中每一个词都输入检测器,也可能得到较低的困惑度Pangram Labs 以《独立宣言》为例指出,它在训练数据中被如此频繁引用,以至于模型对其中每一句话都不感到意外
检测器是否能够看到 token 概率ChatGPT、Gemini 和 Claude 等封闭式商业模型不会公开困惑度所需的逐词概率检测器使用一个替代的开放模型来近似该分数,而不是相对于实际生成文本的模型计算困惑度

这并不意味着这个数字毫无意义,只是把它单独作为判断依据时,风险更高。GPTZero 自己的文档曾经发布过一个粗略经验法则,困惑度高于 85 被视为更可能是人类写作,但某一供应商在某个模型上的阈值,并不能迁移到另一种工具在另一模型上的测量结果。报告单一分数的检测器,是把上面所有因素压缩成一个数值,却没有说明究竟是哪一个因素起了作用。

困惑度分数实际上告诉你什么

商业检测器在报告上打印出单一数字之前,会把困惑度与句子层面的模式、分类器训练以及其他若干信号结合起来。关于AI 检测器实际上如何工作的更完整说明另有专门讨论,其中解释了这个数字其余部分的来源。

句子之间的节奏是一种相关但独立的信号,burstiness checker会单独从其自身角度加以考察,它关注的是一段文本内部有多大的变化,而不是任何单个词语。

这些数字都不能证明是谁写了某份文档,包括 TextPulse 根据提交的草稿计算出的估计 Human Score,这个分数描述的是文本本身,而不是对文本作出裁定。对同一想法的简化版本,也就是词汇多样性而不是完整模型概率,驱动着本网站上的free perplexity checker,如果先前已经知道某段文字的来源,那么在相信报告对他人作品的说法之前,值得拿它来试一试。

perplexity checker 与 TextPulse 的其余free tools并列,因此对草稿、词汇、节奏以及其他所有方面进行完整检查时,不需要同时打开十几个独立标签页。

Perplexity 是这些系统所依赖的两个统计量之一。另一个是burstiness,即句子长度和结构在一段文本中的变化,而这两者之下都存在着token probability 算术,它最初产生了这个分数。

报告上的一个数字,是一连串算术运算的终点,而不是关于谁写了某物的争论的起点。一旦这些算术不再神秘,更有意思的问题是,究竟是什么让一份文档在最初显得出人意料或可预测,而这本身就是一个关于写作内容的问题。

Frequently Asked Questions

不是。AI 检测中的困惑度是语言建模中沿用数十年的统计测量,用来描述一段文本对模型而言有多可预测。Perplexity AI 是一家无关的公司,提供基于 AI 的搜索产品。这两者只有名称相同,除此之外并无关联,把它们混为一谈无助于理解检测器的报告。

Moe

PhD in natural language processing, with years spent building NLP applications end to end. Moe works on text analysis: lexical and syntactic structure, and what separates machine-generated prose from human prose statistically. He has been experimenting with computational linguistics since the early days of NLTK, spaCy and WordNet, and still writes most of his tooling in Python.

AI 检测中的困惑度是什么? | TextPulse.ai