99.65% 的准确率教会了我什么:关于 AI 安全
几年前,我在一次网络诈骗中损失了一笔钱。后来,一次勒索软件攻击锁住了我的文件。这两次攻击都不算高明,但都成功了,也都给我留下了同一个问题:一个东西在为时已晚之前看起来都很正常,我们要怎样才能阻止它?
这个问题一直跟着我读完了人工智能硕士。如今它又有了新的变化。骗你的那条信息不再需要由人来写。语言模型可以在几秒钟内写出一条像模像样的银行提醒、一份虚假的招聘邀请,或是一段感人的求助,语法通顺,也没有我们从小被教着去留意的错别字。
所以在硕士论文里,我决定做一个检测器:一个读一段文字,就能判断它出自人类还是 AI 的模型。
我做了什么
我在一个约含 50 万条文本的平衡数据集上训练并比较了四种深度学习模型,其中一半由人撰写,一半由 AI 生成:
- LSTM,逐词阅读文本,并持续保留记忆;
- 微调后的 BERT,一种 Transformer 模型,会结合整段上下文来理解每个词;
- TF-IDF + BERT + LightGBM,把经典的词频统计、BERT 特征和梯度提升分类器结合起来;
- 混合 BERT + LSTM,由 BERT 理解上下文,再由上层的 LSTM 按顺序读取。
混合模型胜出:准确率 99.65%,F1 分数 0.995。
我为这个数字感到骄傲,现在也依然如此。但我越想这样的检测器真正会被用在什么地方,就越意识到:这个数字只是安全问题的起点,而不是终点。
第一课:准确率取决于真实世界的样子
我的数据集是平衡的:每一条 AI 文本都对应一条人类文本。用这种方式训练和比较模型是正确的,但没有哪个收件箱长这样。
做一个简单的思想实验。假设有 10,000 条信息,其中只有 100 条是 AI 生成的,再假设检测器对两类文本的出错率都是 0.35%:
- 它几乎能抓住全部 100 条 AI 信息;
- 但它也会把 9,900 条人类信息中的大约 35 条误判出来。
在大约 135 条被标记的信息中,约有四分之一其实是真人,却被指认为机器。模型本身一点没变,变的只是它所处的世界。
在安全领域,这被称为基础比率问题,这也是 SOC 分析师被大量误报淹没的原因。一个检测器有多大用处,取决于它在实际运行规模下的误报率。
第二课:攻击者和我们读的是同样的论文
垃圾邮件过滤器或恶意软件扫描器面对的从来不是一个固定不变的对手,而是一个会不断调整的人。AI 文本检测也一样。改写文本、把人写的和机器写的内容混在一起、换用更新的模型,都是绕过一个用旧数据训练的检测器的办法。
测试集上的高分,说明模型能很好地应对它已经见过的攻击,但对它没见过的攻击,能说明的就少得多。这就是对抗性机器学习的研究领域,也是我希望下一步投身 AI 安全本身的主要原因。做出一个检测器只是工作的一半;在有人主动想攻破它时依然站得住,才是另一半。
第三课:语言本身就是安全漏洞
大多数公开的数据集和检测工具都是为英语打造的。而巴基斯坦人收到的诈骗信息往往不是英语。它们用乌尔都语写成,或者用罗马化乌尔都语,也就是用英文字母拼写的乌尔都语,有自己的拼法和俚语。
一个从没见过 “aap ka account block ho gaya hai”(“您的账户已被冻结”)的检测器,保护不了收到这条信息的人。这就是为什么我现在的项目是一个面向英语、乌尔都语和罗马化乌尔都语的诈骗与钓鱼检测器。攻击者早已在使用这些语言,我们的防御也必须跟上。
第四课:检测器应该给出信号,而不是判决
把前三课放在一起,一个结论就很清楚了:像我这样的模型不应该当法官。它应该是众多信号中的一个,和“谁发的这条信息”“链接指向哪里”“这个请求是否合理”放在一起考虑;而对任何重要的事情,最终决定应该留给人来做。
这听起来没有“准确率 99.65% 的 AI 检测器”那么激动人心,但好的安全就是这样运作的:层层设防,而不是寄希望于一颗银弹。
接下来
我的硕士论文教会了我如何构建分辨真假的模型,也让我看到还有多少问题悬而未决:能应对真实世界基础比率的检测器、能抵御不断调整的攻击者的检测器,以及能在人们真正使用的语言中发挥作用的检测器。
这就是我接下来想做的工作,无论是在研究领域还是在安全运营中。如果您也在研究类似的问题,我很乐意听到您的消息。您可以通过联系表单找到我。
基于我硕士论文的期刊文章正在准备中,发表后我会在这里分享。