[论文解读] Guiding Deep Learning System Testing using Surprise Adequacy

Guiding Deep Learning System Testing using Surprise Adequacy

简介


论文标题:

  • Guiding Deep Learning System Testing using Surprise Adequacy
  • 使用惊讶指标SA来构建深度学习测试系统
  • 2018.8.25

现状

目前有两个假设

  1. 蜕变测试(metamorphic testing): dl系统的两个输入在某些人类感觉上是相似的,那么输出也应该是相似的
  2. 一组输入越多样化,可以对dl系统执行的测试就越有效。(违反第一个假设的输入也会增加神经元覆盖率。)

作者观点

  1. 传统的白盒测试技术旨在增加结构覆盖对dl系统不是很有用,因为它们的行为没有在控制流结构中显式地编码
  2. ad hoc testing 随机测试,现在的方式是使用统计,聚合的方式评价测试集的有效性,但是对于单个输入而言,这是不够的.例如:
    1. 现在还不清楚什么时候一个高NC的输入应该被认为比另一个低NC的输入更好,以及为什么
    2. 某些输入可能比其他输入自然激活更多阈值以上的神经元。

该论文提出了一个叫SA的指标,该指标用于衡量新用例相对于训练集中用例的多样性程度.指标越大分类器越容易分错

基于SC的方法是黑盒方法,它对每个测试用例打分(LSA/DSA),从而来评价用例,其覆盖率不同于以往的白盒方式得到的覆盖率,不是基于神经元而是基于用例的SA分布,选取不同的阈值会得到不同的覆盖结果

LSA DSA 都依赖于原始训练集

核心内容

  • SA: 意外充分性(Surprise Adequacy )
  • SC: 意外覆盖率 (Surprise Coverage)

预备定义

符号定义

N = { n 1 , n 2 … } \mathbf{N}=\left\{n_{1}, n_{2}\ldots\right\} N={n1,n2}是组成一个dl系统 d d d的一组神经元
X = { x 1 , x 2 , … } X=\left\{x_{1}, x_{2}, \ldots\right\} X={x1,x2,}是一组输入
α n ( x ) \alpha_{n}(x) αn(x)是单个神经元 n n n相对于输入 x x x的激活值
N ⊆ N N \subseteq \mathbf{N} NN,其中 n n n是神经元N的子集
α N ( x ) \alpha_{N}(x) αN(x) 代表激活向量,其中每个元素对应于 N N N中的单个神经元.(激活值的向量组合)
∣ N ∣ |N| N α N ( x ) \alpha_{N}(x) αN(x)的模

激活迹(Activation Trace) AT

对于一组输入 X : A N ( X ) = { α N ( x ) ∣ x ∈ X } X : A_{N}(X)=\left\{\alpha_{N}(x) | x \in X\right\} X:AN(X)={αN(x)xX} A N ( X ) A_{N}(X) AN(X) 是一组激活迹.

就是所有测试用例激活向量的集合

SA: 意外充分性

SA旨在衡量给定新输入相对于用于训练的输入的相对新颖性,是DL系统如何对未知输入做出反应的指标

注意: SA值依赖于原始训练集

算法一般步骤
  1. 获取激活迹 A N ( X ) A_{N}(X) AN(X)

    对于一个训练集 T T T,使用 T T T中所有的训练用例,计算出所有神经元的激活值后拼接到一起,从而得到 A N ( T ) A_{\mathbf{N}}(\mathbf{T}) AN(T),使用激活 迹公式 X : A N ( X ) = { α N ( x ) ∣ x ∈ X } X : A_{N}(X)=\left\{\alpha_{N}(x) | x \in X\right\} X:AN(X)={αN(x)xX}获取激活迹.

  2. 计算 A N ( x ) A_{N}(x) AN(x)

    对于新的输入 x x x,我们通过比较 A N ( x A_{N}(x AN(x)与 A N ( T ) A_{\mathbf{N}}(\mathbf{T}) AN(T)来计算出Surprise Adequacy (SA).具体计算方法有LSA和DSA两种

注意

对于用SA衡量分类任务时,我们只关注分为该类的训练集里的例子,即: T c ∈ T T_{c}∈T TcT,我们只关心 A N ( T c ) A_{\mathbf{N}}\left(T_{c}\right) AN(Tc),这样更有意义.

SA的计算方法

  • LSA: 基于可能性的SA (Likelihood-based Surprise Adequacy)
  • DSA: 基于距离的SA (Distance-based Surprise Adequacy)
LSA: 基于可能性的SA
核心思想

LSA: 采用核密度估计(KDE)来获得输入数据的分布密度函数,这里使用高斯核函数

注意

在这种方法的时候,为了减少计算量,有如下两种规则

  1. 只选定特定的某层

    对于所有的测试用例,我们只考虑一个选定层 N L ⊆ N N_{L} \subseteq \mathbf{N} NLN中的神经元和他们的激活轨迹 A N L ( X ) A_{N_{L}}(\mathbf{X}) ANL(X),每个轨迹的基数为 ∣ N L ∣ \left|N_{L}\right| NL

  2. 方差过滤

    过滤掉那些激活值的方差小于预先定义的阈值 t t t的神经元

公式定义
密度函数 f x fx fx

KDE产生密度函数f如下:
f ^ ( x ) = 1 ∣ A N L ( T ) ∣ ∑ x i ∈ T K H ( α N L ( x ) − α N L ( x i ) ) \hat{f}(x)=\frac{1}{\left|A_{N_{L}}(\mathbf{T})\right|} \sum_{x_{i} \in \mathbf{T}} K_{H}\left(\alpha_{N_{L}}(x)-\alpha_{N_{L}}\left(x_{i}\right)\right) f^(x)=ANL(T)1xiTKH(αNL(x)αNL(xi))
其中 :
A N L ( x A_{N_{L}}(x ANL(x): 给定输入在 N L N_{L} NL层中的激活迹

A N L ( x i ) , x i ∈ T A_{N_{L}}\left(x_{i}\right){, x_{i} \in \mathbf{T}} ANL(xi),xiT: 训练集中的某个样本在 N L N_{L} NL层中的激活迹

∣ A N L ( T ) ∣ \left|A_{N_{L}}(\mathbf{T})\right| ANL(T):激活迹的个数

公式的直观理解:在选定Nl层后,对于所有的训练集中的用例,每个用例使用高斯核函数计算该用例与新输入x的激活迹的差值

概率密度降低了,证明输入更加稀有,概率密度增高了,证明输入更加相似

LSA定义

L S A ( x ) = − log ⁡ ( f ^ ( x ) ) L S A(x)=-\log (\hat{f}(x)) LSA(x)=log(f^(x))

LSA因为只选择了某层的神经元,再加上kde只在原始训练集上执行一次,所以运行速度很快

DSA: 基于距离的SA
核心思想

寻找某个用例最近的相同类别和不同类别的用例,并计算距离比,这个值反映了决策边界的相对距离

注意

DSA 只适用于分类任务

公式定义
计算 d i s t a dist_a dista

x a = arg ⁡ min ⁡ D ( x i ) = c x ∥ α N ( x ) − α N ( x i ) ∥ dist a = ∥ α N ( x ) − α N ( x a ) ∥ \begin{array}{l}{x_{a}=\arg \min _{\mathbf{D}\left(x_{i}\right)=c_{x}}\left\|\alpha_{\mathbf{N}}(x)-\alpha_{\mathbf{N}}\left(x_{i}\right)\right\|} \\ {\text {dist}_{a}=\left\|\alpha_{\mathbf{N}}(x)-\alpha_{\mathbf{N}}\left(x_{a}\right)\right\|}\end{array} xa=argminD(xi)=cxαN(x)αN(xi)dista=αN(x)αN(xa)

理解:

  • x i x_{i} xi: 是训练集中的某个用例, α N ( x i ) \alpha_{\mathrm{N}}\left(x_{i}\right) αN(xi)则是它的激活迹
  • α N ( x ) \alpha_{\mathrm{N}}(x) αN(x): 是新输入的用例的激活迹,这里求他们的距离,使用的是欧式距离
  • arg ⁡ min ⁡ D ( x i ) = c x \arg \min _{\mathbf{D}\left(x_{i}\right)=c_{x}} argminD(xi)=cx:明确指出只从同类的用例中寻找一个距离最小的
  • x a x_{a} xa: 就是那个点,称作参考点.
  • dist a \text {dist}_{a} dista: 找到该点后,计算新用例和该参考点之间的欧式距离
计算 d i s t b dist_b distb

x b = argmin ⁡ D ( x i ) ∈ C \ { c x } ∥ α N ( x a ) − α N ( x i ) ∥ dist b = ∥ α N ( x a ) − α N ( x b ) ∥ \begin{array}{l}{x_{b}=\operatorname{argmin}_{\mathbf{D}\left(x_{i}\right) \in C \backslash\left\{c_{x}\right\}}\left\|\alpha_{\mathbf{N}}\left(x_{a}\right)-\alpha_{\mathbf{N}}\left(x_{i}\right)\right\|} \\ {\text {dist}_{b}=\left\|\alpha_{\mathbf{N}}\left(x_{a}\right)-\alpha_{\mathbf{N}}\left(x_{b}\right)\right\|}\end{array} xb=argminD(xi)C\{cx}αN(xa)αN(xi)distb=αN(xa)αN(xb)

理解:

​ 同样的方法去找点,只不过这次是在类不相同的用例之间寻找到一个距离最小的

DSA定义

D S A ( x ) = d i s t a d i s t b DS A(x)=\frac{d i s t_{a}}{d i s t_{b}} DSA(x)=distbdista

形象解释

图中黑线则是DSA的两个距离

DSA因为每个样本都需要去寻找两次距离,复杂度很高,在训练集较大的情况下,运行速度就会变得非常慢

SC: 意外覆盖率

定义

给定 U U U的上界, 将 ( 0 , U ] (0, U] (0,U] 分成 n n n S A SA SA段的 b u c k e t : B = { b 1 , b 2 , … , b n } bucket: B=\left\{b_{1}, b_{2}, \ldots, b_{n}\right\} bucket:B={b1,b2,,bn},一组输入 x x x S C SC SC定义如下
S C ( X ) = ∣ { b i ∣ ∃ x ∈ X : S A ( x ) ∈ ( U ⋅ i − 1 n , U ⋅ i n ] } ∣ n S C(X)=\frac{\left|\left\{b_{i} | \exists x \in X : S A(x) \in\left(U \cdot \frac{i-1}{n}, U \cdot \frac{i}{n}\right]\right\}\right|}{n} SC(X)=n{bixX:SA(x)(Uni1,Uni]}
最后的覆盖率是指被覆盖的段数除以总段数

注意
  1. 一组具有较高SC的输入是一组多样化的输入
  2. 然而,具有任意高sa值的输入可能与问题域无关(如交通标志的图像将与动物图片分类器的测试无关)。
  3. 因此,SC只能相对于预定义的上界来测量

其他

研究问题 RQ
  1. sadl是否能够捕捉到dl系统输入的相对惊喜?
    • 更令人惊讶的输入更难正确分类
    • 基于sa值来检测对抗性示例,因为我们期望对抗性示例更令人惊讶
    • 我们期望基于sa的分类器能够成功地检测出对抗性的例子
  2. 层敏感性:用于SA计算的神经元层的选择是否对SA反映DL系统行为的准确性有任何影响?
  3. 相关性:SC是否与DL系统的现有覆盖标准相关?
  4. 再训练:SA可以指导DL系统的再训练吗?
实验

参数选择

  • lsa的默认激活方差阈值设置为 1 0 − 5 10^{-5} 105

  • kde的带宽使用scott规则设置

结果
  • 结论1: 基于三个不同的分析,RQ1的答案是SADL可以捕获输入的相对意外。 具有较高SA的输入难以正确分类; 对抗性示例显示较高的SA值,因此可以根据SA进行分类。

    • 先选SA大的可以明显发现dl开始的准确率不高,先选SA小的可以明显发现dl开始的准确率高
    • 对抗用例的SA值和非对抗用例的SA值差距较明显
  • 结论2:基于这些结果,我们回答rq2,dsa对计算层的选择是敏感的,并且从选择更深的层中受益。然而,对于lsa,没有明确的证据支持更深层的假设。在不同的对抗性范例生成策略中,层次敏感度是不同的。

  • 结论3:总体而言,除了NC,我们回答RQ3,即SC与到目前为止引入的其他覆盖标准相关。

就是SC增加了别的类似于KMNC的也增加了

  • 结论4: SA可以提供指导更有效的再训练adversarial examples的例子。
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值