Turnitin 到底用不用 perplexity 和 burstiness 来判定 AI?
Turnitin 不显式算这两个分数,但它的分类器确实在学习词概率模式。这两件事不矛盾,而它们之间的缝隙,正是大多数「怎么过 AI 检测」建议出错的地方。
HumanPen 团队
· 21 分钟
先说结论
Turnitin 的模型不是被明确编程去评估 "burstiness" 或 "perplexity" 这两个单项指标的。它是一个基于 transformer 架构的分类器,从训练数据里学习统计模式,其中包含词概率模式。所以那个流传最广的说法,说 Turnitin 算两个分数、分数落在某个区间就标你,在机制描述上是错的;但它背后的直觉,说词概率是区分 AI 文本和人类文本的关键,又不完全是错的。
这个纠正之所以重要,是因为建在错误机制上的建议会以一种特定方式失效。如果你以为 Turnitin 在算一个 perplexity 分数,你会去动那个分数。但如果它实际上做的是用学过词概率模式的分类器对互相重叠的片段逐一分类、再汇总成一个文档分,那么动一个单项的表面指标,未必能改变分类器看到的东西。我们之前在AI 检测器到底在看什么里讲过通用版本,这篇收窄到一个检测器和两个被点名最多的指标。
Turnitin 自己怎么说
Turnitin 的 AI 写作检测能力 FAQ 里有一句直接否认。被反复转述的那句,以及被反复丢掉的那句紧跟着的下半句:
「Our model is not explicitly programmed to evaluate specific signals such as "burstiness," "perplexity," or other individual metrics sometimes referenced in public discussions.」(我们的模型没有被明确编程去评估 "burstiness"、"perplexity" 或公开讨论中有时提到的其它单项指标。) 「Instead, it learns statistical patterns from our training data.」(相反,它从我们的训练数据中学习统计模式。)
同一段继续写:「As a result, its outputs are generated by many learned patterns working together rather than by a small set of transparent, human-readable rules. For that reason, individual predictions may not always be explainable in simple feature-by-feature terms.」(因此,它的输出是由许多学到的模式共同作用产生的,而不是由一小套透明的、人类可读的规则产生的。正因如此,单次预测未必总能用逐特征的简单术语来解释。)
四句连起来读,这条否认有一个精确的形状。Turnitin 在说的是:我们没有一个模块去算 burstiness 这个数,也没有一个模块去算 perplexity 这个数,更没有把这两个数喂进一个阈值判断。这是一个对特定架构的否认,不是对「词概率有没有参与」的否认。
同一页 FAQ 说分类器就是被训练来识别词概率的
下面这句来自同一页,是让一条简单的否认变成一条更复杂的否认的那一句。在「模型检测时考虑哪些参数或标记」这个问题下,Turnitin 写着:
「Our classifiers are trained to detect these differences in word probability and are adept at the particular word probability sequences of human writers.」(我们的分类器被训练来检测这些词概率差异,并且擅长人类写作者特有的词概率序列。)
所以同一页 FAQ,一边说模型不是被编程去评估 perplexity 的,另一边说分类器就是被训练来识别词概率差异的。这两句话不矛盾,但你必须同时握住它们,才会哪一句都不读过头。
Perplexity 作为一个概念,衡量的是一段词序列在某个语言模型下有多好预测。语言模型给词分配概率,perplexity 把「模型对实际出现的下一个词有多意外」沿整段文本汇总成一个数。perplexity 低,说明模型觉得这段文本好预测;perplexity 高,说明不是。AI 生成文本之所以倾向低 perplexity,是因为语言模型生成文本的方式就是从自己的概率分布里采样,输出自然落在模型本来就认为 likely 的那一段概率里。
这就是连接点。Turnitin 不算一个 perplexity 分数再拿它去比阈值,但它的分类器是在词概率模式上训练出来的,而 perplexity 是词概率的一种度量。否认的是机制,不是信号。
实际差别在这里。一个把 perplexity 当作命名指标来算的系统,给你的目标很清楚:把 perplexity 这个数降下来,被标的风险就降下来。一个把词概率模式当作分类器众多学习对象之一、再把结果汇总成文档分的系统,给你的不是这种清晰目标,因为分类器在组合大量学到的模式,输出没法归约成你追得到的单一分数。我们在怎么读一份 Turnitin AI 写作报告里看过那个数字:报告上只有一个百分比,但那个百分比是许多片段级分类的汇总,不是从 perplexity 仪表上读出来的。
片段怎么切,为什么这改变了局面
Turnitin 公开发布的检测流程描述在同一页 FAQ 上:
「When a paper is submitted to Turnitin, sentences from the submission are extracted and segmented into overlapping sections for prediction analysis. Each segment is classified by the AI detection model and given a value between 0 and 1, denoting the probability of the text being likely human or AI-generated. Each qualifying sentence within these segments inherits the segment's score. Since segments overlap, some sentences may have multiple scores, which are then pooled into a single score. These sentence scores are further aggregated and used to compute the overall document AI writing score.」(论文提交后,句子被抽出来、切成互相重叠的片段做预测分析。每个片段由 AI 检测模型分类,得到一个 0 到 1 之间的值,表示该文本更可能由人类还是 AI 生成。每个合格句子继承覆盖它的那个片段的分数。因为片段互相重叠,有些句子会带有多个分数,再被池化成一个分数。这些句子分数进一步汇总,用来计算文档整体的 AI 写作分数。)
所以整条流水线是:抽句子 → 切成重叠片段 → 每个片段 0 到 1 分类 → 合格句子继承覆盖它的片段的分 → 重叠的分开池化 → 汇总成你在报告上看到的那个百分比。
重叠是让简单的指标故事讲不下去的那一环。靠近某个片段边缘的句子同时落在下一个片段里,于是它身上带着不止一个继承来的分。这些分被池化之后,坐在一句句子上的分有一部分是从邻居那里借来的。你把一句话改得不那么可预测了,但如果覆盖它的那个片段也覆盖了旁边那句话、而旁边那句话带着分类器学到的 AI 模式,那这句话的池化分未必会降。
这也是为什么检测器为什么会对同一份文档意见不一。两个分类器,训练数据不同、切片边界不同、池化方式不同,就算对同一组词概率模式做出反应,也会在同一段文本上给出不同的分。这种分歧不是围绕一个「真实 perplexity 读数」的噪声,而是两个不同的学习过的分类器各自产出不同的汇总。
这个区别改变了你应该做什么
如果 Turnitin 在算一个 perplexity 分数,策略很简单:测一下你文本的 perplexity,改到这个数动了再交。号称「降低 perplexity」的工具卖的就是这个流程,而它们的营销文案就是大多数关于 Turnitin 机制错误说法的来源。
但如果 Turnitin 做的是用一个学过词概率模式及其它大量模式的分类器去切片段、分类、汇总,那这个策略就撑不住。你没有一个数可以追。你面对的是一个分类器输出,它对整篇文档里学到的特征的整体分布做出反应、在重叠窗口间池化。一次让某段话孤立地看更不可预测的改写,未必会改变覆盖它的那些片段的池化分,因为分类器读的是片段,不是句子,而片段包含两边的内容。
还有一层后果。同一页 FAQ 把模型看的那部分内容定义为 qualifying text(合格文本):
「This qualifying text includes only prose sentences, meaning that we only analyze blocks of text that are written in standard grammatical sentences and do not include other types of writing such as lists, bullet points (short non-sentence structures), or other non-sentence structures.」(合格文本只包括散文句子,也就是说我们只分析由标准语法句子构成的文本块,不包括列表、项目符号这类短的非句子结构,以及其它非句子结构。>
下一句是:「This percentage is not necessarily the percentage of the entire submission.」(这个百分比未必是整份提交内容的比例。)列表、项目符号和其它非句结构不在分析范围内。所以把散文改成项目符号来打断模式,降的不是某个 perplexity 分数,而是把文本从被打分的东西里整个拿走了,百分比只在剩下的合格散文上算。这是一项不同的操作,带着不同的风险,值得搞清楚你在做哪一种。
那套说法从哪来,为什么流传这么久
Burstiness 和 perplexity 的故事不是凭空冒出来的。它来自早期 AI 文本检测的学术工作,那些研究确实把这两个指标当作实验分类器的特征,而且 AI 文本和人类文本在这两个维度的分布差异是可测的、直觉上也讲得通:人类写手比语言模型更多变句子长度,人类写手的用词比模型不那么可预测。Burstiness 抓住的是前者,perplexity 抓住的是后者。
这套说法流传开来,因为它好讲,因为它给出一个清晰动作:变句子长度、用不那么可预测的词。这两件事做做都不错。问题在于 Turnitin 明确说自己不是靠算这两个命名指标来建检测器的,于是那个清晰动作挂在了对检测器机制的错误描述上。检测器迭代(Turnitin 的从 2023 年起迭代了不止一次),动作就跟系统里实际存在的东西对不上了,但建议还在流传,因为故事简单、它出身的原始研究也是真的。
这也是为什么那些把 perplexity 和 burstiness 当命名指标来打的 humanizer 工具会随着时间失效。它们要打的那个检测器从来没完全是 Turnitin 描述的那种检测器,而 Turnitin 的模型一迭代,工具要打的目标和分类器实际在读的东西之间的缝隙只会越来越大。
我们怎么看这件事
HumanPen 是一个文档改写工具,这里相关的设计决定是:我们不去动一个命名指标。我们改写的是 AI 写作报告标出来的那些片段,改的是那些片段里实际的语言,而不是去推一个假定在报告底下坐镇的分数。
理由就是这篇文章一路讲下来的那条。如果分类器读的是重叠片段里的词概率模式,那能改变它输出的,是改片段里的语言,不是动一个仪表上的分。一个工具告诉你它把你的 perplexity 降了多少,说的是它自己算的那个数,不是 Turnitin 算的任何数。Turnitin 产出的唯一数字是报告上的百分比,而那个百分比是片段级分类的汇总,不是 perplexity 仪表上的读数。
只有真正被改写掉的词才计费。如果拿改完的稿子重新去测,报告仍然在 20% 或以上,可以把这份新报告导进来,只对它仍然标出的片段免费重跑;而这一次重跑出来的结果还能再走同一步,所以它可以一直重复到报告落到 20% 以下。
我们唯一不会告诉你的,是下一份报告上会写什么。我们自己的产品页写的是,这个工具会尽量保留原意、结构、术语、引用、排版和样式,只调整需要润色的表达;下一句紧接着说,复杂文档仍建议下载后复核。这两半都是当真的。
常见问题
Turnitin 查 perplexity 吗? 不作为一个命名指标来查。Turnitin 的 FAQ 写着模型「is not explicitly programmed to evaluate specific signals such as "burstiness," "perplexity," or other individual metrics sometimes referenced in public discussions」(没有被明确编程去评估 "burstiness"、"perplexity" 或公开讨论中有时提到的其它单项指标),下一句是「Instead, it learns statistical patterns from our training data.」(相反,它从我们的训练数据中学习统计模式。)同一页又说分类器「trained to detect these differences in word probability」(被训练来检测词概率差异),而 perplexity 是词概率的一种度量。信号在,但不是作为一个独立分数被算出来的。
Turnitin 查 burstiness 吗? 同一个答案。Burstiness 描述的是句子长度和结构的变化程度,不是 Turnitin 模型里的命名指标。分类器在训练里可能学到了跟句子变化相关的模式,但不存在一个模块在算 burstiness 这个数、再拿它比阈值。
那那个流行说法是全错吗? 不全错。它背后的直觉,AI 文本在用词和句子结构上比人类文本更可预测,方向上是对的。错的是说 Turnitin 算两个命名分数、按它俩来标你。Turnitin 说它不是这么做的,而它描述的替代机制,一个读重叠片段的 transformer 分类器,是不同的架构,有不同的弱点。
Turnitin 不用这两个指标,那它用什么? 一个基于 transformer 架构的分类器,读你文本的互相重叠的片段,给每个片段一个 AI 生成概率值,把重叠的分数池化,再汇总成文档级百分比。分类器是在人类和 AI 文本的词概率模式上训练的。片段级的机制我们在AI 检测器到底在看什么里更详细地拆过。
那为什么号称降低 perplexity 的工具有时确实管用? 因为降低一个计算出来的 perplexity 分数所做的语言改动,用不那么可预测的词、变结构,也恰好是能改变词概率分类器所见的那种改动。工具打错了指标,但它做的有些编辑碰巧改对了信号。这种错配会随时间暴露出来:分类器迭代,工具的目标指标和分类器的实际决策边界之间的相关性会漂移,工具在自己没变的情况下越来越不管用。
那我是不是不该让写法不那么可预测了? 意思是方向对,指标不对。结构有变化、不落进通用模式的文本,更不容易匹配分类器学到的 AI 样子。错的地方在于以为自己在一个表盘上动一个命名的分数,而你实际做的,是改变分类器在重叠窗口里读到的语言。这件事值得做,只是它不是那个流行说法说你正在做的那件事。
继续阅读