从零构建AI文本检测器
Building an AI Text Detector From Scratch
Substack 近期在其界面推出 AI 检测器功能。本教程结合该功能与本地 DIY 大语言模型项目,构建一个返回 0-100 分数的 AI 检测器,并训练小型语言模型(SLM)生成规避检测的文本。项目采用类似 Pangram 模型的方法,微调 DistilBERT 分类器,输出文本为 AI 生成的概率估计。成果包括可供人类和 agent 使用的 AI 检测器 API 及用户友好界面,旨在研究检测器局限性与验证器型 LLM 应用。
Substack 最近在其界面中推出了 AI 检测器功能,这非常有趣。另外,很多人问我关于本地 DIY 大语言模型项目的有趣案例,以展示小型语言模型(SLM)的能力。把这两件事结合起来,我觉得展示如何实现一个 AI 检测器会很有意思。我还会用它作为验证器,训练一个小型语言模型来生成避免被检测到的文本。这是一个小型教育项目,旨在研究 AI 检测器的局限性,并探索基于验证器的 LLM 应用,超越常规的数学和代码推理模型。
图 1:Substack 现在内置了 AI 检测器。
所以,如上所述,本教程的目标是通过构建一个(简单的)AI 检测器来解释其工作原理。在实践中,这样的检测器可以用来过滤垃圾内容,也可以在不将你的写作变成 AI 生成文本的情况下,潜在地改进个人写作。例如,如果你写了一篇长文章,想改进拼写和语法,使用语法检查器来润色并提高可读性是很诱人的(而且实际上很有用)。有各种服务可以实现这一点,包括像 ChatGPT 这样的通用 LLM。然而,这也存在风险,即这些工具可能会将你的写作——即使它仍然是你的原创内容——变成过度润色、听起来像 AI 生成并被标记为垃圾内容的东西。例如,使用 AI 检查器,人们可以说:“修复我的语法,同时确保我的文本仍然保持 0% 的 AI 生成率。”无论如何,虽然我们在这里构建一个功能完整的检查器,但目标是解释 1) AI 检查器如何(能够)工作,以及 2) 将其作为更广泛主题的案例研究,即如何构建一个可与 LLM 一起使用的评分器或验证器。
免责声明:AI 检测器本质上是一场猫鼠游戏。AI 检测器可能学会检测某种指示 AI 生成内容的模式。然后,下一代 LLM 可能偶然或故意不表现出该模式,从而避免检测。AI 检测器随后必须更新以检测该 LLM,如此循环。此外,还可能会遇到误报(人类编写的文本被标记为 AI 生成),但稍后会详细讨论。
项目目标
这个项目有几个目标。总体目标当然是说明 AI 检测器的工作原理,并展示一个端到端的应用型 LLM 项目,包括评估、训练和本地部署以供实际使用。其成果是一个可供人类和 agent 使用的 AI 检测器 API,以及一个用户友好的界面。
图 2:本项目稍后开发的本地浏览器界面预览。它返回整个文本的 AI 分数,还可以高亮显示各个文本块的分数。
方法概述
在这里,我们将开发一种类似于 Pangram 模型的方法,据我所知,Substack 的 AI 检测功能背后就是这种模型。我在 2023 年早些时候写过一篇关于 AI 文本检测的短文:《检测 ChatGPT 等 LLM 生成内容的不同方法有哪些?它们如何工作以及有何区别?》本质上,检测 AI 编写的文本有多种方式,从监督分类器和基于扰动的概率测试,到困惑度测量和水印技术。在本教程中,我们将构建一个返回 0-100 分数的模型。它本质上是一个带有估计概率分数的分类器。该概率分数将表示根据分类器,文本是 AI 生成的可能性。(或者,准确地说,该分数是分类器基于其训练分布对 AI 生成类别的估计概率。但我们不应将其解释为文本由 AI 编写的一般概率。)为此,我们将微调一个 DistilBERT 分类器(类似于我在早期 Substack 文章《微调大语言模型》中描述的内容),但更多细节将在我们到达该阶段时再讨论。
阅读更多