论文阅读——Dos and Don'ts of Machine Learning In Computer Security

论文链接:https://arxiv.org/pdf/2010.09470.pdf

##Motivation

针对现在出现的一系列利用机器学习解决安全问题的研究工作,作者指出在实验设计和方法设置的环节中10个存在的缺陷(pitfall),使得实验结果其实存在偏差(通常比真实情况更好)或实验结论不正确。文章意在提醒研究人员对pitfalls的关注并给出建议。

##Pitfall Details

10个pitfalls按照ML的workflow依次给出。其实感觉这些pitfalls具有一定的通用性,只是这篇论文仅针对安全领域讨论。

workflow

####Data collection and labeling

#####P1:Sampling Bias

“The collected data does not sufficiently represent the true data distribution of the underlying security problem.”

使用的数据集其分布与真实世界有差距。如果训练数据不能有效表示输入空间,其实不能得到有效的实验结论。

#####P2:Label Inaccuracy

“The ground-truth labels required for classification tasks are inaccurate, unstable, or erroneous, affecting the overall performance of a learning-based system.”

针对使用监督学习训练分类器的情况,当ground-truth label不精确、不确定、有噪音、有错误时将影响整个模型的表现。label的不准确导致一个鸡生蛋蛋生鸡问题。

System Design and Learning 

P3:Data Snooping(较难理解 ,更像trick)

”A learning model is trained with data that is typically not available in practice. Data snooping can occur in many ways, some of which are very subtle and hard to identify “

数据窥探(data snooping)通常发生在研究人员通过人为观察整个数据集,”为得到感兴趣的结果,在数据中做大量的查找“,得到的一些只与数据集相关的错误的统计性结论使得模型效果表现很好。但因为数据集在现实中肯定不会完全复现,所以这些统计性结论对真正研究并无用处,反而造成了模型效果很好的障眼法。

一个比较直观的例子”For example, suppose someone said, “I saw a rabbit-shaped cloud the same time they had a sale on sneakers, so I assume rabbit-shaped clouds can predict sneaker sales.” The dataset has an accidental pattern that happens to be true in that instance, but was merely a coincidence and will not help in the future.”(摘自文章

文中将数据窥探分为3种类型:

1.测试窥探(test snooping)

通常测试集是用于最终评估模型阶段。但当测试集被用于评估之前的任意实验环节(包括选取特征、参数和学习算法)时,就容易发生数据窥探,即测试集间接影响了训练过程。

测试窥探发生的4种可能时机:

①Preparatory work

即上面所说的那种,除了评估模型以外测试集还被用于之前的实验环节,可能不明显的间接的影响找特征、限制特征数量、选择参数和算法选择等由人为控制的因素时。

②K-fold cross-validation

当使用K折交叉验证方式进行模型调优时。因为k折交叉验证是不重复的随机将完整数据集划分为k份,k-1份用于训练,剩余一份用于测试,重复该过程k次,得到k个模型对模型性能的评价。所以测试集间接参与了调优过程。

③Normalization

在将整个数据集分割为测试集和训练集前先进行了归一化(scale)。

例子:https://medium.com/@chipk215/are-you-unknowingly-data-snooping-when-training-your-ml-models-7d6a70bdff1b

④Embeddings

当深度神经网络的embeddings从完整的数据集中获得,而不是训练集时。

上述4种情况都是测试集被有意或无意用到了模型构建阶段,从而可能造成错误的统计信息。

2.时间窥探(temporal snooping)

当数据间的时间相关性被忽略时,发生数据窥探。

临时窥探发生的2种可能时机:

①Time dependency

数据之间的时间相关性没有被考虑,如果收集的数据集内样本具有一定时间跨度,在训练的时候,时间靠后的样本出现的特征会被用来检测之前的样本,这其实不太合理。训练集的样本时间应不晚于测试集的样本。

②Aging datasets

使用先前工作的公开数据集会导致偏见(bias)。研究人员可能通过使用从这些数据集中得到的阈值等信息,无意识的包含了先前的知识。

3.选择性窥探(selective snooping)

当一些现实中不会使用的信息被用于清理数据的时候,发生数据窥探。

e.g.利用完整数据集(测试集+训练集)中那些在训练时完全不会用到的统计特性来除去异常值。

选择性窥探可能发生的2种时机:

①Cherry-picking

发生在数据可能被现实中不会用到的信息清理时。如在选择恶意样本的时候,利用规则将那些没有被足够多的AV scanner检测过的app过滤掉。比如将app拿到virus total上检测,规定positive < thresh的app不被判定为恶意。

②Survivorship bias

发生在有一些样本被提前过滤时。这种情况与P1 sampling bias有重叠情况。例如只使用google play的数据会导致这种偏见,因为goolge play的数据都是通过google审核才能用于实验。

P4:False Causality

”Artifacts unrelated to the security problem create shortcut patterns for separating classes. Consequently, the learning model adapts to these artifacts instead of solving the actual task.“

错误的因果关系。一些无关安全的特征会干扰模型而被学习,导致实验结论产生错误的因果关系。尤其在复杂模型中,特征的不可解释性更易导致错误结论。例如在入侵检测模型训练时,攻击源来自某个特定的网络源,导致模型可能会将该特定ip范围识别成恶意流量的特征,而不是学习到真正的攻击特征。

P5:Biased Parameter Selection

”The final parameters of a learning-based method are not entirely fixed at training
time. Instead, they indirectly depend on the test set.“

在进行实验评估时,参考了测试集的反馈信息对参数进行调整,得到模型效果好的”假象“,但实际泛化能力不好。一个例子:一个安全系统在实验中使用的阈值是是根据测试集反馈的ROC曲线得到的。

与数据窥探(P3)相关,但是还是单独提出来作为一点,因为这点容易导致错误的结论。

####Performance Evaluation 

p6:Inappropriate baseline

“The evaluation is conducted without, or with limited, baseline methods. As a result, it is impossible to demonstrate improvements against the state of the art and other security mechanisms.”

在将模型与最先进的工作比较评估时,选择的baseline不合适,导致不公平的比较。

P7:Inappropriate Performance measures

”The chosen performance measures do not account for the constraints of the application scenario, such as imbalanced data or the need to keep a low false-positive rate.“

选择的评估指标不合适应用场景。单一指标并不适合用于评估安全场景,比如只用accuracy来评估,则tp、fp就会被忽略。所以通常是用多个指标来评估,如ROC曲线、precision-recall curve。但当选择不合适的复合指标时,也不能真实反映模型的情况。

例子如下:

![precision recall exammple](/Users/reed/blog/source/_posts/论文阅读——Dos-and-Don-ts-of-Machine-Learning-In-Computer-Security/img/precision recall exammple.png)

正例样本和负类样本比率非常极端(1:100)时,同一测试下的ROC曲线和Precision-Recall curve表现出的模型效果不同。

![Inappropriate Performance measures](/Users/reed/blog/source/_posts/论文阅读——Dos-and-Don-ts-of-Machine-Learning-In-Computer-Security/img/Inappropriate Performance measures.png)

在ROC中,当FPR接近于0时TPR接近100%,ROC表现很好;但从precision-recall curve来看,模型的precision其实并不高。而后者是模型的真实反映。

P8:Base Rate Fallacy(基础概率谬误)

”A large class imbalance is ignored when interpreting the performance measures leading
to an overestimation of performance.“

当解释实验结论的时候,要考虑事件发生的基础概率。例如在恶意检测分类器中,如果正负例样本的基数比例差异很大,负例样本很多,则即使很低的FPR也代表着FP很多。

Deployment and Operation 

p9:Lab-Only Evaluation

“A learning-based system is solely evaluated in a laboratory setting, without discussing
its practical limitations.”

在实验室中的实验通常是基于特定假设的,想要评估其真实能力和发现真正面临的问题,应该要把实验放到真实环境的设置下。

#####P10:Inappropriate Threat Model

“The security of machine learning is not considered, exposing the system to a
variety of attacks, such as poisoning and evasion attacks.”

当引入机器学习时,同样引入了针对机器学习的攻击,需要考虑。

Recommendations

作者提出了一些缓解或解决上次问题的建议。

####Data Collection and Labeling 

For P1:Collecting security-related data

  • 先构造一个数据集,然后调整正负样例比例以接近真实分布。
  • 借鉴迁移学习(transfer learning)中的方法,借助一个领域的知识来改善另一个学习系统的性能表现。
  • 谨慎使用混合不同来源的数据源和使用well-known数据集
  • 最后下下策:如果上述3点都不合适运用到相关场景中,研究者至少要主动指出该数据分布的局限性,让读者更好理解分布带来的可能影响。

For P2:Handling noisy labels

  • 标签应尽可能被检查验证。“for instance with sanity checks by inspecting a sample of labels.”

  • 解决噪音标签(noisy labels)的方法:

    • 设计鲁棒模型或使用损失函数

    • 在学习阶段对噪音标签进行建模,将噪音标签整合

    • 根据那些增加模型复杂度的噪音实例,清理训练数据中的噪音

  • 两个注意点:

    • 无法分析或者标签不确定的样本应当保留在测试集中。

    • 标签会随时间变化(label shift),应当检查并采取适当措施。“such as delaying labeling until a stable ground-truth is available.”

Model Design and Learning 

For P4:Explainable learning

使用可解释性的learning techniques去发现可能导致”错误因果关系”(P4)的特征。文中给的例子是:研究人员通过人为观察数据集,找出并证明那些明显的artifact。

For P3&P5:Calibrating security systems

  • 在数据收集完后,应先从完整数据集中划分出测试集再进行后续实验。避免测试集的数据参与到evaluation之前的实验环节,从而造成数据窥探(P3)。
  • 使用单独验证集进行超参调整和模型优化,而不是使用测试集。

Performance Evaluation

For P6:Security baselines

  • 因为先进工作的模型可能存在低偏差和高方差从而在测试集上表现并不一定好,所以作者认为在选择基线的时候,除了与先进工作进行比较外,还应当与一些可解释性更高的简单模型进行比较。作者还推荐使用Automated machine learning (AutoML)框架辅助找合适的基线。
  • 在比较的时候,还应当考虑和那些针对该安全问题的non-learning方法进行对比。

For P7:Performance metrics

作者认为评估指标与具体问题高相关(highly application-specific),所以不提供一般性指导方案。不过针对安全问题通常是检测稀疏事件(攻击),作者建议研究人员使用precision、recall、Matthews Correlation Coefficient (MCC)和ROC曲线来评估模型。

Deployment and Operation

For P9:Deployment for security

用接近真实环境的设置来评估模型。例如:分析实际环境的算力和存储能力。

For P10:Security of deployment

  • 对于 模型对抗攻击者能力 的评估是一个必要的环节。定义威胁模型,并据此进行系统评估。

  • 根据Machine Learning的workflow,考虑针对Machine Learning的威胁和漏洞。

  • 考虑最坏情况白盒攻击。