论文笔记—DeepSafe: A Data-driven Approach for Checking Adversarial Robustness in Neural Networks
DeepSafe方法
1、对训练数据进行聚类
do:
input (X,y),k where k equals #(class of y)
do K-Means on X
while (each cluster has more than one label)
运行该算法后生成一些小而密集的,有统一label的集群。
一般地,我们通过质心(cen)和半径(R,任意x到cen的最大距离),两个属性来描述集群。在这里,由于集群内部比边界保持一致label的可能性更大,并且边界密度比较低,不能保证一个点的周围位置都有相同分类,所以考虑一个更小的半径(r,x到cen的平均距离)。
对于得到的集群,本文有如下基本假设:每个集群(cen,r)构成一个安全区域,其中的所有输入都对应统一的输出。形式化表述:H1:||x-cen||<=r => label(x) = l
2、对集群进一步分析
- 密度:n/r,表示单位范围内的输入数。
密度高–>在小范围内有大量彼此靠近且分类相同的实例–>理论上应该满足H1
密度低–>在一定范围内包含的数据少,分布广–>不能保证H1成立 - 质心行为
质心是网络在该集群上行为的代表。网络对每个输入计算可能label的置信度,具有最高置信度的标签作为输出结果。加入扰动后,网络输出的结果可能会被错误分类到置信度第二的标签上,而不是置信度最低的标签。
3、验证
H2:
形式化验证阶段,通过ReluPlex[1]对网络建模(仅对Relu层建模,不考虑softmax层)。输出x对各个label的置信度score(l)。
验证包括两部分,首先验证对于特定目标标签的安全性,进而验证对全体标签的安全性,验证时按质心标签置信度从高到低进行。
对于给定的l’,若H2不成立,则说明在该集群内网络对分类l’安全。当对全部标签安全时,H1成立。