论文阅读————CADE: Detecting and Explaining Concept Drift Samples for Security Applications
论文阅读——CADE: Detecting and Explaining Concept Drift Samples for Security Applications
论文链接:https://www.usenix.org/conference/usenixsecurity21/presentation/yang
Motivation
在安全领域,当想要将基于机器学习的检测器(恶意软件检测、入侵检测等)部署到现实中使用时,效果可能不如测试阶段好。因为随着时间变化,benign和malicious行为都会发生一定变化,致使检测器出错。这个问题称为概念漂移(concept drift),本文中作者主要针对这个问题,提出一种能检测drifting sample并为drifting sample提供解释性的方法——CADE(Contrastive Autoencoder for Drifting detection and Explanation)。
Details
Challenge——concept drift
concept drift是发生在将检测模型部署到现实中使用后。因为训练数据是一个时间节点前的快照(静态),部署以后的模型所面临的正负样例数据的分布可能脱离训练集的分布,产生概念漂移。
- 监督学习情况:部署到现实中后,真实测试数据分布偏离原始训练数据,导致模型决策边界发生漂移,检测出错。
- 半监督学习异常检测情况:例如一些网络入侵检测系统在训练时使用标记为“正常”的流量进行训练,检测中遇到偏离正常的流量就标记为异常。但训练不可能包含所有正常情况,当发生concept drift时,新的正常行为变化就会引起误判。
Insights behind CADE
target:检测来自新类的drifting samples并提供解释性
challenge:针对高维数据,drifting samples分布在稀疏且巨大的异常值空间(sparse outlier space),难以有效获取良好的距离函数定义何种样本发生“drift”(将其与现有分布区别)。
high-level idea:
Detect Drifting:对即将输入检测器的数据,筛选出drifting samples。
Explain Drifting:选出一些具有语义的特征来解释对drifting samples的决策,为分析人员提供解释性,决定模型是否需要re-training。
How to detect
降维

经过自编码器(autoencoder),将输入样本映射到低维空间,通过对比学习(contrastive learning)使得在低维空间中,同类样本距离更近,非同类样本距离更远。从而利用距离阈值识别drifting samples。
损失函数解释

- 降维:reconstruction loss部分中,$x$是原始输入数据, 是$x$经过自编码器编码再解码后得到的重构数据。通过$x$和的均方差来表示降维引入的loss。
- 同近异远:contrastive loss部分中,对于两个样本$x_i$和$x_j$, $yij$表征两个样本是否属于同类。$dij$表示两位样本降维后的欧氏距离,m是定义的常量,m理应大于绝大多数$dij$。
- $yij=1$:两个样本不同类,$contrastiveLoss=$
- $yij=0$:两个样本同类,$contrastiveLoss=$
MAD-based Ddrifting Sample Detection
(MAD:Median Absolute Deviation,绝对中位差)

Input:
- 训练样本
- 待测样本
- 编码器f
- 一个常量b
output:
- 每个测试样本的drifting score
- 测试样本最接近的类别
- 各类的形心(centroid)
- 各类的绝对中位差(MAD)
algorithm depiction:
该算法利用自编码器将训练数据和测试数据映射到低维空间,使得各类样本距离“同进异远”。通过计算待测样本到各类别的形心距离关系,基于一个经验阈值判断待测样本是否为drifting sample。最后还输出形心与待测样本距离最近的类别作为待测样本的“训练分布中最接近类别”为之后提供可解释性。
使用MAD:
对于同类样本,计算该类形心以及类中样本到形心距离,距离中位数为$d$,取各个距离减去中位数$d$得到的新数据的绝对值的中位数。因为不同类的样本距离紧凑程度表现不同,使用MAD解决这一问题。
How to explain
target:给一个drifting sample $x$和其在训练集中最接近类$y$,找出让$x$和$y$类样本区分开的的重要特征,为分析人员提供drifting sample的语义解释(e.g., attacker mutation, organic behavior changes, previous unknown system bugs)。

Baseline Method:Boundary-based Explanation
原理
将这个问题类比为“如何解释基于监督学习的分类器的分类结果”。将漂移检测器处理成二元分类器,分布同训练集的样本为class A,漂移样本属于class B。利用MLP(多层感知机)分类器训练区分分布内样本和漂移样本的分类器,从而找到decision boundary。
对每一个drifting sample,进行特征扰动,使其穿过desicion boundary,由此解释影响较大的特征。然后输出特征掩码(feature mask)表明特征的重要程度。
局限性
- 因为论文中检测drifiting sample是通过阈值$Tmad$的方式实现的,即漂移检测器的” 决策边界”由阈值决定的。但真正分类器的决策边界是调参得到的,所以这里需要使用一个模型(文中使用了 MLP)来做分类,从而逼近得出decision boundary。但由于drifting sample数量有限(class B样本数量少),不能很好地逼近得出decision boundary。
- (more important)异常值空间(outlier space)远大于分布内区域(in-distribution origin),如果给了一个离decision boundary 非常远的drifting sample,想要通过特征扰动的方式让其穿过decisoin boundary非常困难。
Their method:Distance-based explanation
原理
特征扰动。 扰动方式:对drifting sample ,从它“最接近类”的所有样本中选取了距离形心最近的样本,通过将drifting sample中特征的值替换成中对应特征的值来进行特征扰动。(先扰动,再降维)
看drifting sample和“最接近类”的形心距离变化。
获得特征掩码(feature mask)表明特征的重要性。$m$用来表示特征掩码向量。某一维等于1表示该维特征是关键特征,等于0表示该维特征的值不改变。由于m的每一维符合伯努利分布(0-1分布),问题就转变成了各维成为1的概率是多少。这个问题又可以通过最小化下面的式子解决:

b是一个过滤器,如果和中某特征的取值相同,则$b_i=0$,对应地,直接不考虑这个特征。
$Z_t$是经过特征扰动和降维后的向量。
R(m,b):通过最小化这个部分,选择所谓的”重要特征”的最小子集。
Q(p)是特征掩码中各元素成为1的概率的联合分布。