使用“经典”机器学习检测大型语言模型生成的文本
本文目前是实验性的机器翻译,可能包含错误。如果有任何不清楚的地方,请参阅原始中文版本。我正在不断努力改进翻译。概述与演示截至2026年初,主流的大型语言模型生成的文本表现出强烈的统计模式,这些模式可以使用传统的机器学习模型有效地区分于人类撰写的内容。我怀疑这就是许多所谓的“AI抄袭检测器”实际工作的原理。在线演示:https://lyc8503.github.io/AITextDetector/ 此演示中使用的模型并不是在通用数据上训练的,也没有经过严格的优化或迭代。在测试集上的单句检测准确率约为85%。请在使用前仔细阅读本文,以理解潜在的局限性。核心代码(草稿)和训练的模型文件可在GitHub上获得:lyc8503/AITextDetector 背景(又名无用的牢骚)大约半年前我还在学校写论文时,关于检查论文是否为AIGC(AI生成内容)的传言已经在传播。我测试了几个平台——CNKI、万方以及一些第三方AIGC检测服务——发现它们确实可以在相当大的准确率下区分我手写的文本和大型语言模型生成的文本。这激发了我对AIGC检测实际工作原理(以及如何绕过它)的好奇心。但当时我事情太多——痴迷于收音机、Minecraft、东方Project——经过几次失败的尝试后,我搁置了这个想法。最终,我混过了论文,生活继续前进。但最近,在浏览Lofter时,我偶然发现整个标签充斥着低质量、极不符合角色的AI生成同人小说。我怎么能一眼就看出它们是AI生成的呢?有些人(或女性)甚至不想在发布前整理Markdown格式或AI生成的章节标题,然后就把一半的文章放在付费墙后面😓然而,大多数AI生成的文本更难以察觉——它们埋没在多种写作风格、不同的提示中,并不是立刻显而易见的。当你意识到某些事情感觉不对劲时,已经太晚了。有些文本几乎不可能证明是AI生成的,这让我感到紧张。在吞下了几太多AI生成的垃圾后,我终于受够了。Lofter的浏览到此为止——是时候打开VS Code了!是的,这就是我最终重振我的周末项目想法的原因:构建一个AI生成文本检测器…… 研究尝试——没有运气 互联网现在几乎完全被广告污染,搜索AIGC检测时,每个结果都是另一个论文AI改写服务。那时,我挖掘噪音,发现了一种叫做文本困惑度的东西。这个想法很简单:使用现有的LLM来估计给定句子中每个单词出现的概率。如果几乎每个单词在LLM的预测中排名很高(Top-N),那么这个句子可能是AI生成的。相反,如果许多单词出乎意料,那它更可能是人类撰写的。听起来很有前途,对吧?我花了一些时间尝试这种方法,但结果令人失望——大量的误报和漏报,并且无法设定合理的阈值。此外,还有实际的问题:高推理成本、跨模型的泛化能力差、难以在本地部署大型模型,以及封闭权重模型难以集成。总体而言,这种方法既不优雅也不可靠。失败的尝试——被一堆软广告“教程”愚弄 A(某种程度上)成功的尝试——scikit-learn SVM 由于在线资源没有用,回到老派炼金术。Scikit-learn,启动!按照其路线图,我们可以直接选择线性支持向量分类器和朴素贝叶斯作为我们分类任务的良好起点。(轻声说:这也符合我的直觉——LLM具有可检测的用词模式;即使是一个朴素贝叶斯分类器也应该捕捉到它们。我只是没想到信号会这么强。) 数据生成 老派炼金术传统分类器需要标记数据——所以我们需要人类撰写的文本和确认的LLM生成文本进行训练。我的方法是:我从某个福特和河流类平台拉取了我在2023年抓取的数据,过滤了2010-2022年间发布的文章(ChatGPT之前)。我只过滤掉了极低参与度或非常短小的作品,然后随机抽取了近10,000个多千字符的文本作为人类撰写的样本。然后,我使用LLM生成这些文本的章节摘要,将摘要馈送回LLM,让它重新生成完整的文章。这样,我得到了大致相等数量的LLM生成样本,类型多样且与原始人类内容密切匹配。理论上是这样。但LLM API非常昂贵,我不打算为一个周末项目花费数千美元。所以我变得有创造力——巧妙地利用多个低成本或免费的API渠道:Gemini:使用CLIProxyAPI将Antigravity/Gemini CLI配额转换为API访问——只需支付大约20美元。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡