[论文解读]Boosting Operational DNN Testing Efficiency through Conditioning

本文提出了一种通过调节提高深度神经网络(DNN)操作测试效率的方法。利用DNN模型所学习的表示形式,结合交叉熵最小化算法,实现了对操作数据的高效采样。实验证明,与简单随机采样相比,此方法仅需约一半的标记输入即可达到相同精度。

Boosting Operational DNN Testing Efficiency through Conditioning

简介

论文标题

  • Boosting Operational DNN Testing Efficiency through Conditioning
  • 通过调节提高DNN的操作测试效率
  • 2019.6.27

核心内容

  • 在给定预算下,使用基于交叉熵的采样方法可以减少成本.
  • 使用方差可以概括结构性覆盖
  • 模型的输出(置信度)未必可靠

贡献

  • 将操作性DNN测试问题的表述表示为使用少量样本进行性能评估,并提出通过条件减少有效减少方差的测试,作为结构覆盖范围的概括。
  • 一种有效的DNN测试操作方法,该方法利用了被测DNN所学习的高维表示形式,以及一种基于交叉熵最小化的采样算法来实现该方法。
  • 系统的经验评估。 LeNet,VGG和ResNet的实验表明,与简单的随机采样相比,此方法仅需要大约一半的标记输入即可达到相同的精度水平

:通过小样本采样labeled data来准确的预估DNN在样本所在上下文的表现。文章的立足点就是:在分层明确的情况下,分层抽样的估计方差比随机抽样的估计方差小。

实验/工具地址

github

本文主要是从方差,期望,有偏无偏,置信度,熵等统计的角度出发,用采样的思想来最小化测试集

作者认为覆盖率是很难引入到神经网络当中的

摘要

DNN测试通常需要以非常有限的预算来产生准确的结果,以标记现场收集的数据

通过统计抽样可以对软件测试进行可靠性估计,将传统结构覆盖范围背后的思想重新解释为减少方差的条件。有了这一见识,我们提出了一种有效的DNN测试方法,该方法基于对被测DNN模型所学习的表示形式的条件。该表示由模型最后一个隐藏层中神经元输出的概率分布定义。为了从操作数据稀疏分布的这种高维分布中采样,我们设计了一种利用交叉熵最小化的算法。

结果表明,与简单的随机采样相比,此方法仅需要大约一半的标记输入即可达到相同的精度水平。

DNNS的操作测试

DNN测试定义

DNN的测试必须是:

  • Statistical 与具有某些预期行为的人类书面程序相反,作为一种统计机器学习模型,DNN仅提供了一些概率保证,即,可以对它涉及的大多数输入做出正确的预测。实际上,为了避免过度拟合和最大化通用性,对一小部分输入的错误预测是预期的,并且在某种意义上是故意的。
  • Holistic 到目前为止,在神经元水平上对单个输入的DNN内部行为尚无可行的理论解释。这意味着,尽管DNN的计算步骤是可见的,但它们实际上是黑盒。同样,检测到的具有特定输入的故障几乎无助于“调试”
    DNN。
  • Operational 此外,不考虑DNN的操作上下文而进行的测试是没有意义的。

DNN测试操作过程

图2说明了有效的DNN测试操作过程。目的是通过一些复杂的测试数据选择,只需标记一小部分操作数据即可获得足够的精度以估计操作精度。

图2说明了有效的DNN测试操作过程。目的是通过一些复杂的测试数据选择,只需标记一小部分操作数据即可获得足够的精度以估计操作精度。

覆盖率及其困难之处

覆盖率

  • 覆盖程序同一部分的输入的同质性-全部或全部不引入错误,因此可以通过避免重复来提高测试效率
  • 覆盖率指标所指示的输入的多样性,因此可以通过强制执行高覆盖率来解决可能隐藏罕见错误的极端情况,从而提高测试的完整性。

覆盖率的挑战性

白盒软件测试中结构覆盖率是很常见的。然而,事实证明,将这种思想应用于DNN的测试具有挑战性,因为

  • DNN的黑盒性质。没有明显的结构特征(例如程序分支或人类编写程序的执行路径)可以直观地提供所需的同质性,此外,
  • 维度的诅咒。对于DNN,模型精度的强大解释因子Z通常是高维向量,这使得很难用小样本来表示,但是不确定性很大。

目前的覆盖准则

覆盖准则大致可分为三类:

  • 神经元激活覆盖率 (Neuron-Activation coverage):DeepXplore[40]将神经网络的神经元覆盖率定义为给定测试集激活的神经元的百分比。它利用这种覆盖率,结合基于梯度的优化,来搜索对抗性的例子。这个标准的缺点是它可以用少量的测试输入饱和。
  • 神经元输出覆盖 (Neuron-Output coverage):DeepGauge[30]提出了更细粒度的标准来克服这一弱点。它将每个元素的输出将神经元分成k个相等的部分,并将k-多部分覆盖定义为测试集已经覆盖的组块的数量。此外,作者还考虑了具有神经元边界覆盖的k个部分的输出接触。
  • 神经元组合覆盖 (Neuron-Combination coverages):神经元状态的组合也可以解决覆盖饱和的问题。DeepCover[44]和DeepCT[32]使用这一策略。受MC/DC覆盖的启发,DeepCover提出了一系列非常细粒度的覆盖指标。
  • 另有sa指标用于衡量用例的惊讶度

高效的DNN测试方法

数学定义

预备定义

θ = E [ H ( X ) ] \theta=\mathbb{E}[H(\boldsymbol{X})] θ=E[H(X)] 是假设存在一个需要估计的固定参数

X : Ω → D ⊂ R d X: \Omega \rightarrow \mathcal{D} \subset \mathbb{R}^{d} X:ΩDRd 是对应于观测数据的随机变量

H : H: H: D → R \mathcal{D} \rightarrow \mathbb{R} DR 是感兴趣的模型

举例 : 当估计DNN模型的精度时,DNN正确预测x的标签则 H ( x ) = 1 H(x)=1 H(x)=1,否则将其定义为0. H ( x ) H(x) H(x)也是一个随机变量。

θ θ θ的估计量由符号 θ ^ \hat{\theta} θ^表示

DNN测试问题

数学定义 给定 M M M个训练有素的DNN模型,给 S S S个从操作上下文中收集的 N N N个未标记示例的集合,而不是标记所有这 N N N个示例,而是选择并标记具有给定大小预算 n = ∣ T ∣ ≪ N n=|T| \ll N n=TN的子集 T ⊆ S T \subseteq S TS。,并使用 T T T来估计 M M M S S S上的精度,并且估计误差尽可能小

利用M和S提供的信息,我们尝试通过调节来实现有效的估计。我们首先讨论基于置信度的分层抽样(CSS),它很简单,但很不幸,它很脆弱,并且仅限于分类器。然后,我们提出了以M所学习的表示为条件的交叉熵采样(CES),并通过最小化交叉熵来近似估计S的分布。

三种采样方法

  • SRS: Simple Random Sampling 简单随机抽样
  • CSS: Confidence-based Stratified Sampling 基于置信度的分层抽样
  • CES: Cross Entropy-based Sampling 交叉熵采样

后两者是第一种方式引入Z后的改进

SRS 简单随机抽样
定义

θ ^ = H ( x 1 ) + ⋯ + H ( x n ) n \hat{\theta}=\frac{H\left(x_{1}\right)+\cdots+H\left(x_{n}\right)}{n} θ^=nH(x1)++H(xn)

Z的引入及条件化

尽管SRS很简单,但如果我们能画出足够大的I.I.D.,它在实践中是相当有效的。样本。如果没有关于H(X)的进一步信息,我们很难改进SRS。通常使用的策略是条件化,即找到理想情况下H(X)强烈依赖的随机变量或向量Z,并利用总方差定律:
Var ⁡ [ H ( X ) ] = E [ Var ⁡ [ H ( X ∣ Z ) ] ] + Var ⁡ [ E [ H ( X ∣ Z ) ] ] \operatorname{Var}[H(X)]=\mathbb{E}[\operatorname{Var}[H(X | Z)]]+\operatorname{Var}[\mathbb{E}[H(X | Z)]] Var[H(X)]=E[Var[H(XZ)]]+Var[E[H(XZ)]]
直观地说,定律说,如果我们用Z“解释”H(X),H(X)的方差可以分解成不被Z解释的方差(右手边的第一项)和由Z解释的方差(第二项)。注意,E[H(X|Z)]本身是Z上的函数,并且
E [ H ( X ) ] = E [ E [ H ( X ∣ Z ] ) ] \mathbb{E}[H(X)]=\mathbb{E}[\mathbb{E}[H(X | Z])] E[H(X)]=E[E[H(XZ])]
因此,我们可以从Z的分布中抽样,估计E[H(X|Z)]而不是H(X),因为前者的方差比后者小

如果我们可以对Z进行完全抽样,即覆盖Z的所有可能的值Zi,则我们估计的方差将只是在估计每个Zi的E[H(X|zi)]时引入的方差。这正是分层抽样的作用所在。此外,如果H(X)的值完全由Z决定,我们将有零方差。

Z的特点

要提高测试作为评估的效率,我们需要

  1. 为了识别尽可能多地影响H(X)性能(精度)的可观察因素Z,使得在每个ZI下条件的H(X)的方差最小,以及
  2. 为Z抽取尽可能有代表性的样本,以便更好地处理由Z引起的不确定性

这两个方面在实践中可能会相互冲突。直观地说,对H(X)的解释越“精确”,它就必须越细粒度,越难由小样本充分代表。通过精心选择的Z在它们之间取得良好的平衡是至关重要的。

原有样本比如图片的向量为X,softmax层的输出向量为Z,引入Z来更好的解释X

CSS 基于置信度的分层抽样
定义

如前所述,提高估计效率的关键是找到一个随机变量Z,该变量与模型M的准确性密切相关,并且其分布易于采样。自然的选择是某些分类器模型在预测x的标签时提供的置信度值c(x)。显然,如果分类器可靠,则具有较高置信度的预测将更有可能是正确的

由于置信度是有界标量,因此我们可以将其范围划分为多个k个部分,并相应地将总体S划分为k个分层 { S 1 , ⋯   , S k } \left\{S_{1}, \cdots, S_{k}\right\} { S1,,Sk}。因此,属于 S j S_j Sj的示例的概率为 P j = ∣ S j ∣ ∣ S ∣ P_{j}=\frac{\left|S_{j}\right|}{|S|} Pj=SSj, 1 ≤ j ≤ k 1 \leq j \leq k 1jk。从每个阶层 S j S_j Sj中,随机抽取 n j n_{j} nj个元素,使得 ∑ j k n j = n \sum_{j}^{k} n_{j}=n jknj=n。则M在S上的精度估计为
a c ^ c = ∑ j = 1 k P j E [ H ( x ) ∣ x ∈ s j ] = ∑ j = 1 k P j ( 1 n j ∑ i = 1 n j H ( x j , i ) ) a \hat{c} c=\sum_{j=1}^{k} P_{j} \mathbb{E}\left[H(\boldsymbol{x}) | \boldsymbol{x} \in s_{j}\right]=\sum_{j=1}^{k} P_{j}\left(\frac{1}{n_{j}} \sum_{i=1}^{n_{j}} H\left(\boldsymbol{x}_{j, i}\right)\right) ac^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值