AI文本检测率到底是什么原理?一篇文章讲清其中的技术逻辑以及实操拆解
快速摘要
AI文本检测的主要原理就是困惑度(Perplexity)和突发性(Burstiness)。 检测工具会根据一段文字的“可预测程度”以及“句式起伏变化”来判断这段话是人为写的还是机器生成的。由于人工智能写出来的文章太完美、流畅,以至于可以被发现而失去真实度了。除了特征分析之外还有基于深度学习分类模型和文本水印技术等多种检测方法。本文将从大语言模型的生成机制开始说起,并且一步步地剖析出检测原理以及主流工具的工作方式,还会提到当前最先进的水印技术和合理减少AI痕迹的方法等各方面的情况。往下看有更详细的拆解,请收藏阅读。
莫潇羽@源码七号站 | 原创文章,转载请注明来自:www.fuyuan7.com
如果您有降低文本AI检测率的正规用途需求,欢迎访问www.fuyuan7.com联系站长交流。我们不做任何学术不端相关服务的内容提供者,但是很乐意在技术层面帮助大家理解和善用这些工具。
一、从源头说起:大语言模型是怎样“写文章”的
要想弄明白AI检测,首先要搞清楚的是AI是如何生成文本的。很多朋友把ChatGPT、DeepSeek等工具当作“有思考能力的人”来看待,但是它们底层逻辑和人写作完全不同。
大语言模型(LLM)实际上就是一种“下一个词预测器”。什么是意思呢?给它一个开头,比如今天天气怎么样,在海量训练数据中学到的统计规律下计算出最有可能出现的是什么词语。“很好”的概率是35%,“不错”为20%左右,晴朗则是15%,依此类推。模型从候选词中选择输出,并且把该词加在已经生成文本的末尾之后进行下一个预测的过程。整篇文章就是用一个字接一个字蹦出来的。
该过程的一个重要特点就是模型会偏向于选择概率最大的词语。这就像是一个一直走“最安全路线”的人,不会突然冒出什么离经叛道的表达。它接收到的是“昨天下班路上我看到一只”,大概率会选择猫、狗、小鸟等常见词汇,并不太可能会出现穿西装打电话企鹅这样的奇思妙想。
“太合理”“太可预测”的特点,也就是AI文本被检测出来的原因。莫潇羽在源码七号站(www.fuyuan7.com)上写过很多技术分析文章,这次把AI检测这个话题单独拿出来讲一讲,并不是因为作者对这个问题不够了解或者没有兴趣去探讨它,而是为了引起大家对于这个领域更加深入的关注。
可以使用一段伪代码来简单表示大语言模型的生成过程:
defgenerate_text(prompt, model, max_length=500):
tokens = tokenize(prompt) # 将输入的文本切分成token
for _ inrange(max_length):
# 计算每个候选词的概率分布
probabilities = model.predict_next_token(tokens)
从概率分布中采样下一个token
# 温度越低,就越倾向于选择概率最大的词(越"安全")
# 温度越高,选词就越随机(越"有创意")
next_token = sample(probabilities, temperature=0.7)
tokens.append(next_token)
ifnext_token == END_TOKEN:
break
returndetokenize(tokens)
这里有一个参数叫做temperature(温度),它直接关系到生成文本的“随机性”。温度越低,模型就越偏向于选择概率最高的词来生成内容,这样生成的内容就会更加“稳妥可靠”了,但是也更容易被识别出来。温度越高,则选词就更随意一些,而文本也就更有出乎意料的效果,不过也会出现语句不通顺的情况。大多数AI工具默认的temperature值比较保守,这也是为什么AI生成的文章通常带有一种工整却缺乏灵气的感觉的原因。
二、检测原理的核心:困惑度和突发性
了解了AI是如何生成文字之后,我们就可以更好的去理解检测工具的思路。目前主流的人工智能文本识别主要依靠困惑度(Perplexity)以及突发性(Burstiness)。
困惑度:这段话有多出人意料
困惑度是衡量一段文本对于语言模型而言是否“意外"的程度。技术上定义为:给定一个语言模型,该段落的平均预测难度是指它对某句话进行预测所遇到的最大困难程度。简单来说就是用词和表达方式在模型看来容易被猜到或者完全出乎意料
人类写作的困惑度一般都比较大。因为我们写东西的时候,思维是跳跃性的、创造性的,并且经常会出现一些不太“标准”的语言表达方式。朱自清在《背影》中用“簌簌地流下眼泪”代替了“流泪”,用了“光景很是惨淡”而不是说成“生活困难”。个性化的表述对语言模型来说就是一种不可预测的现象,因此困惑度就比较高。
AI生成的文本困惑度一般比较低。因为模型总是选择“最合理”“最常见的”词汇组合,所以它的输出对于另一个语言模型来说简直太好猜了。就如两个接受过相同训练的学生做填空题一样,答案自然会高度一致。
可以使用一个简化了的公式来理解困惑度计算的过程:
Perplexity = 2^(-1/N × Σ log₂ P(wᵢ | w₁, w₂, ..., wᵢ₋₁))
其中:
N就是文本中token的总数
P(wᵢ|...)为模型预测第i个token的概率
简单地说,如果模型对于文本中每个词的预测概率都很高(也就是每个词都是“意料之中”),那么困惑度就会比较低,这段文字很可能是AI生成的。反过来,当模型对很多词都无法准确判断时,困惑度就比较高了,更像人写的。
突发性:句子之间“起承转合”的变化
突发性这个指标关注的是文章中句子之间变化的模式,并非单个词语。
人类写作时,句子长短不一的情况很常见。前面写了很长的分析句,后面忽然冒出了一个短促的感叹号。前一秒还是严肃地讨论着问题的时候,后一秒就突然冒出了一句带有调侃意味的话来。“忽长忽短、忽庄忽谐”的节奏感就是人类写作所具有的天然“突发性”。
AI生成的文本正好相反。它的句子长度一般都比较均匀,结构也大体相同。整段文字里每句话的大致字数差不多,用词水平也比较平稳,并没有出现明显的起伏变化,因此整体读起来很“稳”“顺”了,但是由于缺少一些波动性所以显得有些机械和呆板。打个比方说人类写作就类似于心电图一样有起有伏才说明心脏在正常跳动;而AI的写作风格就是一条没有波澜起伏的一条直线——虽然看起来很稳定但实际上却是不正常的体现。
检测工具会计算整篇文本中句子困惑度的变化幅度(也就是方差)。方差大,说明有的句子困惑度高、有的低,起伏明显,更像人写的。方差小,则表示整个文章的迷惑程度比较均匀,并不像AI生成的文章那样显得生硬。
莫潇羽@源码七号补充一个有趣的现象:把朱自清的《背影》放入腾讯朱雀等AIGC检测系统中,得出的结果一般为AI率0%。不是因为工具认识了朱自清,而是由于经典文学作品中的用词个性化程度高、句式多变、感情自然,在困惑度和突发性这两个方面都具有典型的“人类写作”特征。
三、检测技术的三种类型
除了上面提到的困惑度、突发性等“统计特征分析”的方法之外,AI文本检测技术已经发展出几个主要的技术方向。每种方法都有自己的侧重点和局限性。
第一类:以统计特征为基础的检测
这是最早、最直接的方法。检测工具不需要知道文本是哪个AI模型生成的,它只关注文本自身的统计特征。除了困惑度和突发性之外,还会分析词频分布、句法结构多样性以及词汇丰富程度等。
GPTZero就是这类工具的代表。它最初是由普林斯顿大学的学生EdwardTian开发出来的,主要依靠困惑度以及突发性这两个基本参数来衡量其效果。用户把文本粘贴进去之后,系统就会给出一个百分比,并告诉你这段文字大概率是AI生成的概率是多少,还会高亮标出哪些句子最“像AI”。
优点是通用性强,不需要特定模型的支持,在理论上可以对任何AI生成的文本进行检测。但是缺点也很明显——它所依据的标准就是“AI文本与人类文本在统计特征上存在差异”,而当AI技术越来越先进、产生的文本也越来越像人的时候,这种差别就会变小,因此判断难度也会加大。
而且存在误判的风险。有些人类写作者习惯用非常规范、工整的语言来写作,比如法律文书、学术论文等;还有一些人使用中文作为第二语言或者第三种语言进行创作时也会出现这种情况,其表达方式往往带有标准化的特点。统计特征上和AI生成的文本很相似的话就会被误判为由AI所写出来的文章。GPTZero曾经把美国宪法的文字判定成“可能是用人工智能写的”就是个典型的例子——因为宪法的语言本身就很规范、可预测,所以困惑度自然就低了。
第二类:用深度学习分类器进行检测
比较激进的方法。利用大量的人类写作的作文以及AI生成的文章作为训练数据,使一个神经网络模型学习到两者之间的差异。训练好之后把新的文本扔进去,模型就可以判断出是“人写”还是“机器产生”了。
相比于统计特征分析,深度学习分类器可以发现更细微,复杂的模式差异。它除了关注困惑度和突发性之外,还会重视更深的语义特性、篇章结构以及论证逻辑等方面的内容。有些AI生成的文章单句没有问题,但是整体上缺少深入的研究结论或者合理的推导过程,并且缺乏具有洞察力的观点。人类不易察觉的人类特征,深度学习模型可以发现。
目前市场上很多检测工具都是用这种方式,或者把统计特征分析和深度学习分类器结合起来使用。国内的知网AIGC检测系统、维普AI检测等,在大量的中文学术文本以及人工智能生成的文本上进行过训练。
这种方法的缺点是:它的检测能力很大程度上取决于训练数据的质量和覆盖面。如果出现新的AI模型(例如GPT-3.5升级为GPT-4,或者DeepSeek推出新版本),那么检测器就需要重新收集新的生成样本来更新训练数据了,否则对于新模型产生的内容识别率就会降低。通常情况下需要三到四周的训练周期才能适配出最新的AI模型的新特性。
第三类:文本水印技术
第一类方法是“事后检测法”,即拿到一段文本后分析该段话是否为AI生成。第三种的方法思路完全不同,在AI产生文本的时候就已经在其中做手脚了,并且给这个文本加上一种人眼看不见但是机器可以识别的水印。
该领域的代表性技术为GoogleDeepMind所开发的SynthIDText,相关论文已经发表于《Nature》期刊。它的原理非常巧妙,在大语言模型生成文本的时候用一个伪随机函数(g函数)来调整每一步token的概率分布。微调幅度很小,并不会影响到文本的质量以及流畅性,人类读者是察觉不到差异的,但是经过训练过的检测器可以通过统计分析发现这种有规律的变化。
SynthIDText的实现方式可以这样理解:如果模型在某一步需要从10个候选词中选择一个的话,那么一般情况下都是根据概率来决定。加了水印之后,系统会用一个加密密钥把所有的候选词分成若干组,并且保留好文本质量的前提下稍微偏向于某一组中的词语。单独考虑每个单词的选择都合理,但是当把这些单词全部组合起来看的时候就会发现有一个统计上的偏移模式——这就是水印。
用代码来表示的话:
fromtransformersimportAutoModelForCausalLM, AutoTokenizer
fromtransformersimportSynthIDTextWatermarkingConfig
加载模型以及分词器
model = AutoModelForCausalLM.from_pretrained("your-model")
tokenizer = AutoTokenizer.from_pretrained("your-model")
配置水印参数
watermark_config = SynthIDTextWatermarkingConfig(
keys=[654, 400, 836, 123, 340],加密密钥需要保密
ngram_len=5, # n-gram长度,影响检测灵敏度
()
生成带有水印的文本
inputs = tokenizer("今天的天气", return_tensors="pt")
outputs = model.generate(
inputs,
watermarking_config=watermark_config, # 启用水印
max_new_tokens=200
()
watermarked_text = tokenizer.decode(outputs[0])
水印技术具有以下明显优点:它是主动嵌入的,不需要事后分析就可以检测出来;对人来说是不可见的,并不会影响阅读体验;即使文本被轻微修改(例如替换一个词或者去掉一部分),水印仍然可以识别。
但是也有它的局限性。如果把AI生成的文本重新写一遍,或者翻译成另一种语言再转回来的话,水印就会被破坏掉。而且这种方法只能检测到带有水印的AI文本,并且只有当AI服务商自身没有加入水印机制的时候才会无法识别出来。另外事实性强的回答(如回答“1+1等于几”)模型的选择空间很小,因此嵌入信息就很少了。
SynthIDText已经集成到了HuggingFace的Transformers库中(v4.46.0及以上版本),Google的Gemini系列产品也已经开始使用这项技术。它是开源的,开发者可以自由地将其加入到自己的应用里去。
四、主流检测工具实测对比
掌握了原理之后,再看市场上比较常见的几种AI检测工具分别采用了怎样的技术路线以及实际效果怎样。莫潇羽@源码七号站为大家整理了一份清单,方便大家根据自己的需要选择使用。
GPTZero
这是目前全球范围内知名度最高的AI文本检测工具之一。核心技术路线为统计特征分析加深度学习分类器,官方宣称的七组件检测模型包含困惑度分析,突发性分析、深度学习判别等模块。可以识别二十多类主流的人工智能生成的内容,并且支持逐句剖析;还可以处理混合类型的文章(即一篇文章中有人写一部分,机器自动生成另一部分)。
免费版每个月可以检测一万字符,对于经常使用的人基本足够了。还提供了Chrome浏览器扩展以及GoogleDocs插件,用起来比较方便。但是需要注意的是,GPTZero主要是针对英文文本进行训练的,在处理中文内容时精度会稍低一些。
知网AIGC检测系统
这是国内高校使用最多的AI检测平台。它与知网传统的查重功能集成在一起,因此在做毕业论文审核的时候经常是两者一起进行检查的。知网所使用的检测模型是在大量的中文学术文献以及人工智能生成的内容上训练出来的,在中文场景下的适用性比较好。会给出一个关于AI产生的概率百分比,并且标注出疑似被AI创作的部分句子。
维普AI检测
维普是国内另一个比较主流的学术检测平台。它的AI检测功能与原有的查重服务打通了,操作流程和知网差不多。对中文学术写作也有很好的识别效果,并且很多高校把它当作替代或者补充来使用知网。
腾讯朱雀大模型检测
腾讯出品的AIGC检测工具在国内也得到很多人的使用。它仍然采用困惑度、突发性两个主要指标,并用深度学习模型进行判断。一个值得注意的地方就是它的报告中会把文本的困惑度分布以及突发性的分布都展示出来,对于想要深入了解自己所写内容是否像AI的人而言,这样的可视化信息很有参考价值。
Originality.ai
该工具主要针对已发布到互联网上的内容进行检测,在英语圈口碑较好。它的模型更新速度比较快,对于新出现的AI模型也能够及时适应。除了AI识别之外还包含有抄袭检测功能。适合做英文内容的朋友使用。
Copyleaks
Copyleaks的特色是多语言支持好,号称可以识别30种语言。如果要检测中文以外的语言(例如小语种外贸内容),也可以使用该工具。但是它的准确度,在混合文本的辨识上还略逊于GPTZero。
这里莫潇羽要提醒一下:没有哪个AI检测工具可以做到百分之百准确。所有的检测结果都是概率性的判断,存在误判(把人写的当成AI的)和漏判(把AI写的当成人的)两种风险。将检测的结果看作是参考而不是铁证的心态很重要。
五、AI文本中容易暴露出来的“毛病”有哪些
说完检测工具和原理之后,我们就来具体说一说AI生成的文本到底有哪些典型的特征,并且最易被检测到。弄清楚这些特点对于理解检测逻辑很有帮助,不管你是要检查别人的文章还是想要提高自己的写作水平。
用词偏好很集中
AI模型有自己独特的“口头禅”.斯坦福大学的研究表明,从2023年开始,在PubMed数据库(世界上最大的生物医学文献库)中,“delveinto”这个词组的使用频率急剧上升——这也是ChatGPT最喜欢使用的表达方式之一。类似地,在中文场景下,AI特别钟爱用“值得注意的是”,“综上所述”,“在某种程度上”,“不可否认的是”。一篇文章里如果频繁出现这样的说法的话,检测工具就会竖起耳朵来听。
同行评审的学术论文中,研究者也发现了一大批被AI“滥用”过的词汇,在英语里有commendable(值得称赞的)、meticulous(仔细的)和intricate(复杂的),这些词在2023年之后使用频率出现异常统计偏移。词频分布上的异常正是检测模型关注的重点之一。
句式结构太整齐了
AI生成的段落有阅兵方阵式的整齐感。句子长度差不多,结构都是“主谓宾”的标准格式,并不多用倒装句、省略句和插入语等变化。更重要的是,AI非常擅长写总分式——先来一句概括性很强的话作开头,接着再列出一二三四五六七八这样一系列条目进行阐述,层次井然有序如同教科书一般。但是“教科书式的整齐划一”反而暴露出AI的痕迹。
人类写作的时候,句式的变换一般是无意识的。长句子后面突然出现短句,在正式论述中夹杂着口语化的吐槽,“不完美”反而成了人写文章的魅力所在,也是判断是不是真人写的重要依据。
逻辑深度较浅
AI可以写得很通顺的文章,但是经过仔细推敲之后会发现很多地方的论证都是浮于表面的。它可以把一个观点说清楚、讲明白,但缺乏真正的因果分析以及独到的见解。“有时还会出现一本正经地胡说八道的情况”,语法上没有问题,但是整句话不通顺或者引用了不存在的数据和例子。
论证深度不足的问题,在高级的检测模型中是可以被识别出来的。虽然它比困惑度、突发性更难量化,但是基于深度学习的分类器已经可以一定程度上判断出文本的“论证质量”了。
情感基调比较平稳
人类写文章的时候,情绪是流动的。一篇散文可以由感伤开始、释然中间到平静结束。评论可以从好奇入手,在中途变成质疑最后得出结论。情感的变化起伏和前面所说的“突发性”是一致的。
AI情感表达一般都比较单一,或者是客观冷静的分析语气,又或者是一路高歌猛进的宣传语。“一条直线”式的情感曲线也是系统判断的一个依据之一。
缺乏个性化的表达
人类写作中经常会出现一些个性化的元素:个人经历的引用、对某个具体场景的具体描写、带有自己风格的修辞手法以及有意为之的语法“出格”。这些东西在AI输出的时候很少出现。虽然可以模仿你给它的写作风格,但是它没有亲身经历过,所以不能写出有温度和阅历的文字。
六、合理降低AI痕迹的方法和思路
第一部分的前提要先声明:我们讨论降低AI痕迹的方法,目的是为了帮助那些使用了人工智能辅助工具但是主要观点还是自己独立思考的写作者们免受检测系统的误判。学术论文造假,作业代写的这种