从零搭建AI文本检测器
Substack 最近在用户界面中推出了 AI 检测功能,这简直太有趣了。
另外,很多人还向我咨询了一些有趣的本地 DIY LLM 项目,作为演示案例,用来展示小型语言模型(SLM)究竟具备怎样的能力。
将这两点结合起来,我想到,不妨通过一个实例来展示如何实现 AI 检测器。同时,我也会将其用作验证器,训练一个小型语言模型,使其生成的文本能够规避检测。
这是一个小型的教育性项目,旨在深入研究 AI 检测器的局限性,并探索基于验证器的 LLM 应用场景——超越那些仅针对数学和代码进行训练的常规推理模型。
正如上文所述,本教程的预期目标是通过构建一个(简单的)AI 检测器,来讲解 AI 检测器的工作原理。
在实际应用中,这样的检测器不仅可以用来过滤垃圾内容,还能在一定程度上提升个人写作质量,避免让文字沦为 AI 生成的文本。例如,如果你写了一篇长篇文章,想要优化拼写和语法,那么借助语法检查工具对文章进行润色、提升可读性,无疑是一种很诱人、甚至非常实用的做法。
如今市面上有多种相关服务可供选择,包括像 ChatGPT 这样的通用型 LLM。然而,这也存在一定的风险:这些工具可能会将你的文字——尽管仍然是你自己的作品——过度修饰、变得过于完美,最终听起来像是 AI 生成的内容,从而被标记为垃圾内容。
以 AI 检查工具为例,你可以这样说道:“帮我修改语法,同时确保我的文本仍然能获得 0% 的 AI 生成占比。”
无论如何,在我们这里构建一个功能完备的检查器时,我们的目标在于:1)解释 AI 检查器是如何工作的;2)将此作为案例研究,深入探讨如何构建一种评分器或验证器,以便与 LLM 一起使用,从而实现更广泛的应用。
免责声明:AI 检查器本质上就像一场猫鼠游戏:AI 检查器可能会学会识别出某些特定的模式,而这些模式往往预示着 AI 生成的内容。
随后,下一个 LLM 可能会无意间或故意地忽略这些模式,从而成功逃脱检测。于是,AI 检查器不得不不断更新,以检测出那个 LLM,如此循环往复。
此外,它也极有可能误报——将人类撰写的文本误判为 AI 生成的——不过关于这一点,我们稍后会再详细讨论。
项目目标
本项目有多个目标。当然,我们的总体目标是:通过实例向大家展示 AI 检测器的工作原理,并呈现一个完整的端到端 LLM 项目,涵盖评估、训练以及本地部署,以满足真实世界的实际需求。
最终成果将是一个 AI 检测 API,供人类和各类代理使用,并配备一个用户友好的用户界面。
方法概述
在这里,我们将采用一种类似于 Pangram 模型的方法——据我所知,这种模型正是 Substack AI 检测功能背后的支撑技术。
早在 2023 年,我就曾撰写过一篇关于 AI 文本检测的短文:检测大型语言模型(如ChatGPT)生成内容的不同方法有哪些?它们是如何工作的,又有何不同?
。
从本质上讲,检测 AI 生成文本的方式多种多样,从监督分类器、基于扰动的概率测试,到困惑度测量以及水印技术,不一而足。
在本教程中,我们将构建一个能够输出 0 到 100 分的模型。这个模型本质上是一个分类器,其输出是一个概率分数。该概率分数代表了文本被 AI 生成的可能性大小。
(更准确地说,该分数是分类器根据其训练分布,对“AI 生成”这一类别所作出的估计概率。不过,我们不应将其简单理解为文本由 AI 生成的普遍概率。)
为此,我们将对一个 DistilBERT 分类器进行微调(与我在早期 Substack 文章之一 大型语言模型的精细化 中所介绍的模型类似),但更多细节将在我们到达这一阶段时再做详述。