计算机安全中机器学习的经验与禁忌

7/4/2026

# 计算机安全中机器学习的经验与禁忌:Dos and Don’ts of Machine Learning in Computer Security

31st USENIX Security Symposium (USENIX Security 2022) (CCF A 类)

⭐⭐⭐

发表时间:10 August 2022

原文链接:https://www.usenix.org/conference/usenixsecurity22/presentation/arp

# 摘要

《Dos and Don'ts of Machine Learning in Computer Security》就特别直白,翻译过来就是“机器学习在计算机安全中的‘该做与不该做’”。

在计算机安全领域用机器学习,坑太多了! 很多时候,我们辛辛苦苦做出来的模型,在实验室里看着效果贼好,一到真实世界就“拉胯”,甚至根本没用。

如果我们用的机器学习模型本身就有缺陷,或者评估方法不靠谱,那我们就是在“自欺欺人”。

# 核心思想

数据是万恶之源(P1 采样偏差 & P2 标签不准确):数据集来源不好就完蛋!

测试集是底线,不能碰!(P3 数据窥探 & P5 偏置参数选择):调参不能看测试集!!!!

模型学到了啥?别光看结果!(P4 虚假关联):避免刻板印象,看学习的结果如何

评估要严谨,别被数字骗了!(P7 不恰当的性能指标 & P8 基线错误率谬误):要多考虑几个指标,精确率和召回率

实验室不是真实世界!(P9 仅限实验室评估):考虑真实情况

别忘了攻击者!(P10 不恰当的威胁模型):攻击是会学习和进化的,要考虑防止绕过

# 研究方法

第一步:找坑。 作者先是凭经验和文献,总结出了10个常见的“坑”。

第二步:验坑。 他们找了过去10年顶级安全会议的30篇论文

第三步:填坑。 作者自己动手,在四个不同的安全场景(比如手机恶意软件检测、漏洞发现)里,故意制造或者模拟这些“坑”,然后看看模型表现会差多少。

# 总结

1、花时间理解数据集,理解并做好数据清洗。

2、不可以用测试集

3、多问为什么?学到了什么?是不是要学的?是不是学错了?

4、准确率不是唯一标准,要结合多个数据看。

总而言之就要考虑:数据集评估、模型评估、鲁棒性设计

# 我的理解

这篇论文不是提出一个新的模型,而是在提醒安全领域使用机器学习时,很多“高准确率”可能是假的。作者真正关心的是:模型到底有没有学到安全问题本身,还是只是学到了数据集里的偏差、标签错误、实验设置漏洞。

# 对我研究的启发

如果我后面做入侵检测、恶意流量检测或漏洞检测实验,不能只追求模型分数更高,而要重点检查:

  1. 数据集是否真实、干净、代表实际场景。

  2. 训练集、验证集、测试集是否严格隔离。

  3. 模型是否可能学到了无关特征。

  4. 评价指标是否适合安全任务,不能只看准确率。

  5. 是否考虑攻击者会绕过模型。

  6. 实验结果是否能迁移到真实环境。

    在计算机安全里用机器学习,最危险的不是模型效果差,而是模型看起来很好、其实学错了东西。

上次更新: 2026年07月05日 14:22:46