神经网络质量相关论文阅读-DeepStellar

DeepStellar: Model-Based Quantitative Analysis of Stateful Deep Learning Systems

Abstract

  1. 背景:深度学习(DL)在许多前沿应用中都取得了巨大的成功。 但是,最新的DL系统仍然存在质量问题。 尽管在前馈DL系统的分析方面取得了一些最新进展,但对基于循环神经网络(RNN)的状态DL系统的研究很少,该系统已广泛用于音频,自然语言和视频处理等。
  2. 方法:将RNN建模为一个抽象的状态转移系统来描述其内部行为。在抽象模型的基础上,设计了两个trace相似度度量和五个覆盖度度量,实现了对RNNs的定量分析。进一步提出了两种基于定量测度的对抗性样本检测算法和覆盖率引导的测试生成算法
  3. 实验结果:在四个基于RNN的系统上评估了DeepStellar,包括图像分类和自动匹配语音识别。结果表明,抽象模型有助于捕捉RNN的内部行为,并证实:
    (1)即使在很小的扰动下,相似性度量也能有效地捕捉样本之间的差异(检测对抗性样本的准确率达到97%);
    (2)覆盖标准有助于揭示错误行为(产生的对抗性样本是随机测试的三倍),以及比展开方法高出数百倍)。

Introduction

  • 最新的DL系统仍然存在质量,可靠性和安全性问题,这可能会导致事故和灾难性事件,尤其是当部署在对安全性和安全性至关重要的系统上时。
  • 尽管分析过程和技术已经为传统软件建立了良好的基础,但是由于编程范例,开发方法以及软件工件的决策逻辑表示形式的根本差异,现有的技术和工具链无法直接应用于DL系统。 现有研究聚焦于前馈神经网络(FNN)
  • 现有的技术并不是专门设计用于RNN的。与FNN相比,RNN通过循环和内部状态记忆来捕捉时间行为,以考虑以前(或将来)观测的影响。

RNN的特点

  • 简单的RNN是组织成连续迭代的类神经元节点的网络。 它以输入的数据流和内部状态向量作为输入。
  • RNN不会将输入数据作为一个整体,而是在到达时处理一小部分数据,并在每次迭代时依次生成输出,同时更新内部状态。
  • RNN中的信息不仅从前神经层流向后神经层,而且从当前迭代流向后续迭代。
  • 直接展开分析RNN(将其视为FNN)不足以处理各种长度的输入。 与FNN不同,在FNN中,每一层在特征提取中都有固定的作用,而展开的RNN中的一层通常不会为不同的输入序列保留相同的特征隐空间函数(或语义)。因此,对一个输入有效的展开可能不适合另一个输入。此外,当输入序列非常长时,可能存在可伸缩性问题
  • 为了更好地表征RNN的内部行为,提出了DeepStellar,这是基于RNN的DL系统的通用定量分析框架。 考虑到其状态性质,我们首先将RNN建模为离散时间马尔可夫链(DTMC)以捕获其统计行为。 基于DTMC模型,我们设计了两个跟踪相似性度量标准来量化不同输入的预测接近度,并设计了五个覆盖标准以从不同角度衡量测试数据的充分性。

实验结果

  • trace相似性度量是RNN区分能力的良好指标,抽象模型足够敏感,能够区分在非常小的扰动下产生的输入;
  • 从抽象模型导出的覆盖准则能够度量测试充分性,并且能够有效地表示错误行为。

Overflow

DeepStellar的工作流程和典型应用
上图包括RNN的抽象模型构建,在抽象模型上定义的不同定量度量以及两个用于检测和生成RNN对抗样本的应用程序。

  • 输入:以训练好的RNN为输入,通过评测分析其内部行为。分析的输入来自于训练数据,它能最好地反映训练RNN模型的特征。具体地,对每个输入序列进行剖析以导出trace,即RNN状态向量序列。在分析之后,我们可以得到一组记录在训练阶段访问的状态和转换的trace。
  • 在实际应用中,RNN的内部状态空间和训练数据启用的trace数量超出了我们的分析能力。因此,对状态和trace进行抽象,以获得一个抽象模型,该模型能够捕捉训练网络的全局特征。在状态层面,我们应用主成分分析(PCA)[26]来降低状态向量的维数,并保持前k个最主要的成分。对于每个k维,我们进一步将其划分为m个相等的区间。在转换层,我们根据抽象状态将具体的转换合并为抽象的转换。我们还考虑了每个状态下不同跃迁的频率,有效地导出了训练RNN的离散时间马尔可夫链(DTMC)模型。
  • DTMC:一个可数的离散状态集合 S S S, 对任意 i 0 , i 1 , … , i n ∈ S i_{0}, i_{1}, \ldots, i_{n} \in S i0,i1,,inS,,若其在 n + 1 n+1 n+1时刻的状态和之前状态的关系是
    P ( X n + 1 = i n + 1 ∣ X 0 = i 0 , X 1 = i 1 , … , X n = i n ) = P ( X n + 1 = i n + 1 ∣ X n = i n ) P\left(X_{n+1}=i_{n+1} \mid X_{0}=i_{0}, X_{1}=i_{1}, \ldots, X_{n}=i_{n}\right)=P\left(X_{n+1}=i_{n+1} \mid X_{n}=i_{n}\right) P(Xn+1=in+1X0=i0,X1=i1,,Xn=in)=P(Xn+1=in+1Xn=in)
    那么随机过程 X X X就是随机马尔科夫链。下一状态只和当前状态有关,与之前的状态无关
  • 基于抽象模型,计了两个度量标准来评估由不同输入引起的trace相似性,并设计了五个覆盖标准以促进RNN的系统测试。
  • 度量指标(状态级别):trace相似性度量包括基于状态的跟踪相似性(SBTSim)和基于转换的trace相似性(TBTSim)
  • 覆盖指标(转换级别):覆盖标准包括基本状态覆盖(BSCov),n步状态边界覆盖(n-SBCov),加权状态覆盖(WSCov),基本过渡覆盖(BTCov)和加权过渡覆盖(WTCov)
  • 应用于对抗性样本检测(能够识别恶意输入并防止在运行时造成潜在损害)和覆盖指导测试(试技术旨在生成看不见的对抗性样本,以帮助开发人员分析并提高模型的鲁棒性),这两个应用都是旨在减轻对抗性样本的威胁。
  • 利用相似性度量,提出了一种在运行时检测对抗样本的方法。 根据覆盖标准,我们开发了一个测试框架来指导测试的生成,旨在提高覆盖范围并发现缺陷以保证质量。

RNN的状态转换模型

RNN内部状态和状态转移

  • RNN的输入:序列 x ∈ X N \mathbf{x} \in \mathcal{X}^{N} xXN X \mathcal{X} X是输入域, N N N是序列的长度。 x i ∈ X x_{i} \in \mathcal{X} xiX是序列 x \mathbf{x} x的第i个元素。
  • 内部状态:状态向量 s ∈ S N \mathbf{s} \in \mathcal{S}^{N} sSN, 并且 s 0 = 0 s_{0}=\mathbf{0} s0=0 ( s i + 1 , y i ) = f ( s i , x i ) \left(s_{i+1}, y_{i}\right)=f\left(s_{i}, x_{i}\right) (si+1,yi)=f(si,xi) S \mathcal{S} S是隐藏状态的域, s i ∈ S s_{i} \in \mathcal{S} siS是RNN在第i次迭代时的隐藏状态, y i ∈ O y_{i} \in O yiO是该步骤相对应的输出。 s i d s_{i}^{d} sid表示状态向量 s i s_{i} si的第d个维度。
  • 每一个输入序列 x \mathbf{x} x都包含一个有限的状态转换序列 t \mathbf{t} t,定义为一个trace t i t_{i} ti表示trace中的第i个元素,是接受输入 x i x_{i} xi并产生输出 y i y_{i} yi之后从 s i s_{i} si s i + 1 s_{i+1} si+1的过渡。

定义1: 一个FST(有限状态传感器)是一个元组 ( S , X , O , I , F , δ ) (\mathcal{S}, \mathcal{X}, O, I, F, \delta) (S,X,O,I,F,δ) S \mathcal{S} S是费控有限状态集, X \mathcal{X} X是输入字母表, O \mathcal{O} O是输出字母表, I ⊆ S I \subseteq \mathcal{S} IS是初始化状态集, F ⊆ S F \subseteq \mathcal{S} FS是最终状态集, δ ⊆ S × X × O × S \delta \subseteq \mathcal{S} \times \mathcal{X} \times \mathcal{O} \times \mathcal{S} δS×X×O×S是转变关系。

FST表示2个trace

  • trace1 s 0 s 1 s 2 s 3 s_{0} s_{1} s_{2} s_{3} s0s1s2s3,输入序列 x 0 x 1 x 2 x_{0} x_{1} x_{2} x0x1x2,输出序列 y 0 y 1 y 2 y_{0} y_{1} y_{2} y0y1y2
  • trace2 s 0 s 1 s 2 s 3 s_{0} s_{1} s_{2} s_{3} s0s1s2s3,输入序列 x 0 x 1 ′ x 2 x_{0} x'_{1} x_{2} x0x1x2,输出序列 y 0 y 1 ′ y 2 y_{0} y'_{1} y_{2} y0y1y2

抽象状态装换模型

  • 在训练RNN时,状态和trace的数量都是非常巨大的。为了有效地捕获由大量输入序列触发的行为并更好地捕获受训网络的全局特性,我们在本文中引入了抽象的状态转移模型。抽象模型逼近RNN的观测trace,并且有与原始模型相比更小的状态和转换集。人们可以在模型的大小和精度之间进行权衡,以便抽象模型仍然能够为特定的分析任务维护输入序列的有用信息。为了得到一个训练RNN的抽象模型,我们对状态和跃迁进行了抽象。
状态抽象
  • 每一个具体的状态 s i s_{i} si表示为一个向量 ( s i 1 , … , s i m ) \left(s_{i}^{1}, \ldots, s_{i}^{m}\right) (si1,,sim),m可以是很大的数字。
  • 直观地说,一个抽象状态表示一组在空间中接近的具体状态。为了获得这样一种状态抽象,我们首先应用主成分分析(PCA)[26]对具体状态进行正交变换——找到最能区分给定状态向量的前k个主成分(即轴),并忽略它们在其他成分上的差异。这可以有效地将所有具体状态投影到所选的k维分量基础上(表示为PCA-k)。

主成分分析算法(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的信息量最大(方差最大),以此使用较少的数据维度,同时保留住较多的原数据点的特性。

  • 将新的k维空间划分为 m k m^{k} mk个规则网络,使得每个轴上有m个等长的间隔:
    e i d = [ l b d + i × u b d − l b d m , l b d + ( i + 1 ) × u b d − l b d m ] e_{i}^{d}=\left[l b_{d}+i \times \frac{u b_{d}-l b_{d}}{m}, l b_{d}+(i+1) \times \frac{u b_{d}-l b_{d}}{m}\right] eid=[lbd+i×mubdlbd,lbd+(i+1)×mubdlbd]
  • e i d e_{i}^{d} eid是d维上的第i个间隔, l b d l b_{d} lbd u b d u b_{d} ubd是第d维上所有状态向量的上下限。通过这种方式,将落在同一网格内的所有具体状态 s i s_{i} si映射到相同的抽象状态: s ^ = { s i ∣ s i 1 ∈ e 1 ∧ ⋯ ∧ s i k ∈ e k } \hat{s}=\left\{s_{i} \mid s_{i}^{1} \in e^{1} \wedge \cdots \wedge s_{i}^{k} \in e^{k}\right\} s^={sisi1e1sikek} S ^ \hat{S} S^表示所有抽象状态的集合。可以通过调整参数k和m轻松配置状态抽象的精度。
  • j = I d ( s ^ ) j=I^{d}(\hat{s}) j=Id(s^)表示在d维的 s ^ \hat{s} s^的索引值,所有 s ∈ s ^ s \in \hat{s} ss^ s d s^{d} sd属于 e j d ( 0 ≤ j < m ) e_{j}^{d}(0 \leq j<m) ejd(0j<m)。对于两个抽象状态 s ^ \hat{s} s^ s ^ ′ \hat{s}' s^,我们定义距离为:
    Dist ⁡ ( s ^ , s ^ ′ ) = ∑ d = 1 k ∣ I d ( s ^ ) − I d ( s ^ ′ ) ∣ \operatorname{Dist}\left(\hat{s}, \hat{s}^{\prime}\right)=\sum_{d=1}^{k}\left|I^{d}(\hat{s})-I^{d}\left(\hat{s}^{\prime}\right)\right| Dist(s^,s^)=d=1kId(s^)Id(s^)
  • 这个定义也可以推广到包括上下限以外的空间。

转换抽象

  • 一旦计算了状态抽象,两个具体状态之间的具体转换就可以映射为抽象转换的一部分。抽象转换表示一组共享相同源抽象状态和目标抽象状态的具体转换。换句话说,当且仅当 s s s s ‘ s‘ s之间存在具体转换时,两个抽象状态 s ^ \hat{s} s^ s ^ ′ \hat{s}' s^之间才存在抽象转换,即 s ∈ s ^ ∧ s ′ ∈ s ^ ′ s \in \hat{s} \wedge s^{\prime} \in \hat{s}^{\prime} ss^ss^。所有抽象转换的集合表示为 δ ^ ⊆ S ^ × S ^ \hat{\delta} \subseteq \hat{\mathcal{S}} \times \hat{\mathcal{S}} δ^S^×S^
    一组具体迹线及其对应的抽象状态转换模型。
  • 虚线绘制的网格表示抽象状态,状态表示为原点,有向边表示为转换。 s ^ 0 , s ^ 1 , s ^ 2 \hat{s}_{0}, \hat{s}_{1}, \hat{s}_{2} s^0,s^1,s^2 s ^ 3 \hat{s}_{3} s^3每个都映射到相应网格内的一组具体状态。抽象转换即为 { ( s ^ 0 , s ^ 1 ) , ( s ^ 1 , s ^ 0 ) , ( s ^ 1 , s ^ 1 ) , ( s ^ 1 , s ^ 2 ) , ( s ^ 1 , s ^ 3 ) , ( s ^ 3 , s ^ 3 ) } \left\{\left(\hat{s}_{0}, \hat{s}_{1}\right),\left(\hat{s}_{1}, \hat{s}_{0}\right),\left(\hat{s}_{1}, \hat{s}_{1}\right),\left(\hat{s}_{1}, \hat{s}_{2}\right),\left(\hat{s}_{1}, \hat{s}_{3}\right),\left(\hat{s}_{3}, \hat{s}_{3}\right)\right\} {(s^0,s^1),(s^1,s^0),(s^1,s^1),(s^1,s^2),(s^1,s^3),(s^3,s^3)}

trace相似度度量

  • 为了精确地比较两个输入序列,我们定义了trace相似性度量来量化它们在抽象模型上状态转换的接近程度。分别根据其状态和转换的Jaccard索引定义输入 x \mathbf{x} x y \mathbf{y} y的基于状态和转换的相似度度量:
    STSIM ⁡ M ( x , y ) = ∣ S ^ x ∩ S ^ y ∣ ∣ S ^ x ∪ S ^ y ∣ , TTSIM ⁡ M ( x , y ) = ∣ δ ^ x ∩ δ ^ y ∣ ∣ δ ^ x ∪ δ ^ y ∣ . \operatorname{STSIM}_{M}(\mathbf{x}, \mathbf{y})=\frac{\left|\hat{\mathcal{S}}_{\mathbf{x}} \cap \hat{\mathcal{S}}_{\mathbf{y}}\right|}{\left|\hat{\mathcal{S}}_{\mathbf{x}} \cup \hat{\mathcal{S}}_{\mathbf{y}}\right|}, \quad \operatorname{TTSIM}_{M}(\mathbf{x}, \mathbf{y})=\frac{\left|\hat{\delta}_{\mathbf{x}} \cap \hat{\delta}_{\mathbf{y}}\right|}{\left|\hat{\delta}_{\mathbf{x}} \cup \hat{\delta}_{\mathbf{y}}\right|} . STSIMM(x,y)=S^xS^yS^xS^y,TTSIMM(x,y)=δ^xδ^yδ^xδ^y.
  • 抽象模型 M M M,输入 x \mathbf{x} x,我们表示 x \mathbf{x} x所涵盖的抽象状态和过渡的集合为 S ^ x \hat{\mathcal{S}}_{\mathbf{x}} S^x δ ^ X \hat{\delta}_{\mathbf{X}} δ^X。trace相似性度量值的范围为[0,1],其中0表示不相交的集合(即,由 x \mathbf{x} x y \mathbf{y} y引起的trace完全不同),而1表示相等的集合(即,迹线相似)。
    在这里插入图片描述
  • 上图显示了由两个语音输入样本(a(“这本书是关于科学的”)和b(“这本书是关于文学的”)诱导的基于RNN的ASR模型上的具体轨迹。较暗的点在序列中出现得更早,反之亦然。我们可以在序列的后面部分看到两者的明显区别。然后将两个具体的轨迹投影到PCA-3抽象下的三维空间中,每个维上有5个区间,计算轨迹相似度。两个输入的基于状态和转换的跟踪相似性分别为0.71和0.64。
  • 训练集中的每个输入序列都会产生RNN模型的具体轨迹。 抽象状态转换模型从训练数据(或其代表部分)中捕获所有启用的具体迹线,以及尚未启用的其他潜在迹线。 定义的状态和过渡抽象使生成的抽象模型代表训练后的RNN模型的观察行为的过度逼近和泛化。

将训练后的RNN表示为离散时间马尔可夫链

  • 为了也考虑到在不同状态下进行转换的可能性,我们用转换概率扩充了抽象模型,有效地使其成为了离散时间马尔可夫链(DTMC)。

定义2: DTMC为一个元组 ( S ^ , I , T ^ ) (\hat{\mathcal{S}}, I, \hat{\mathcal{T}}) (S^,I,T^) S ^ \hat{\mathcal{S}} S^是一组抽象状态集合, I I I是一组初始化状态, T ^ : S ^ × S ^ ↦ [ 0 , 1 ] \hat{\mathcal{T}}: \hat{\mathcal{S}} \times \hat{\mathcal{S}} \mapsto[0,1] T^:S^×S^[0,1]是转换概率函数,给出不同抽象转换的概率。

  • Pr ⁡ ( s ^ , s ^ ′ ) \operatorname{Pr}\left(\hat{s}, \hat{s}^{\prime}\right) Pr(s^,s^)表示当前状态 s ^ \hat{s} s^去访问 s ^ ′ \hat{s}' s^的条件概率,因此 ∑ s ^ ′ ∈ S ^ Pr ⁡ ( s ^ , s ^ ′ ) = 1 \sum_{\hat{s}^{\prime} \in \hat{S}} \operatorname{Pr}\left(\hat{s}, \hat{s}^{\prime}\right)=1 s^S^Pr(s^,s^)=1。定义 s ^ \hat{s} s^ s ^ ′ \hat{s}' s^的转换概率为从 s ^ \hat{s} s^ s ^ ′ \hat{s}' s^的具体trace的个数占从 s ^ \hat{s} s^出发的所有trace的个数比值,即 Pr ⁡ ( s ^ , s ^ ′ ) = ∣ { ( s , s ′ ) ∣ s ∈ s ^ ∧ s ′ ∈ s ^ ′ } ∣ ∣ { ( s , − ) ∣ s ∈ s ^ } ∣ \operatorname{Pr}\left(\hat{s}, \hat{s}^{\prime}\right)=\frac{\left|\left\{\left(s, s^{\prime}\right) \mid s \in \hat{s} \wedge s^{\prime} \in \hat{s}^{\prime}\right\}\right|}{\left|\left\{\left(s,_{-}\right) \mid s \in \hat{s}\right\}\right|} Pr(s^,s^)={(s,)ss^}{(s,s)ss^ss^}
  • 首先通过将状态和转换抽象应用于一组具体trace,然后为每个抽象状态计算转换概率分布,来构建DTMC模型。 抽象步骤的时间复杂度取决于具体轨迹的数量,而计算过渡概率的复杂度仅取决于抽象过渡的数量。

RNN的覆盖指标

  • 受传统软件测试的启发,本文提出了一套基于抽象状态转移模型的RNN测试覆盖准则。RNN覆盖标准的目标是衡量测试数据在训练和不可见行为时的充分性。状态抽象和转移抽象分别用来反映某一点的内部网络配置以及网络随时间的行为。因此,为了最大限度地发现有状态神经网络中的缺陷,我们应该结合基于状态和过渡抽象的覆盖标准,系统地生成全面而多样的测试集。
  • 将训练过的RNN模型表示为一个DTMC, M = ( S ^ , I , T ^ ) M=(\hat{\mathcal{S}}, I, \hat{\mathcal{T}}) M=(S^,I,T^) T = { x 0 , … , x n } T=\left\{\mathbf{x}_{0}, \ldots, \mathbf{x}_{n}\right\} T={x0,,xn}是测试输入序列的集合。我们定义了T的状态覆盖率和转移覆盖率来分别度量T对M的状态和转移的影响程度。

状态级覆盖指标

  • 状态级覆盖指标关注的是RNN的内部状态。抽象状态集S表示从训练数据(或其代表部分)获得的访问状态的空间概括,这被称为主要功能区域。 训练数据永远不会访问主要功能区域之外的空间,因此代表了极端情况区域。 测试数据应广泛覆盖主要功能区域以验证受过训练的行为,并充分覆盖极端情况区域以发现看不见的行为中的缺陷。
基本状态覆盖率
  • 基本状态覆盖率衡量T在训练过程中覆盖主要功能区域的程度。基本状态覆盖率由训练输入和测试输入访问的抽象状态数与训练输入访问的状态数之比得出
    BSCov ⁡ ( T , M ) = ∣ S ^ T ∩ S ^ M ∣ ∣ S ^ M ∣ \operatorname{BSCov}(T, M)=\frac{\left|\hat{\mathcal{S}}_{T} \cap \hat{\mathcal{S}}_{M}\right|}{\left|\hat{\mathcal{S}}_{M}\right|} BSCov(T,M)=S^MS^TS^M
加权状态覆盖率
  • 基本状态覆盖以相等的权重对待每个状态。 在训练期间,并非所有状态都被同样频繁地访问。 为了考虑不同状态的频率并能够为状态分配权重,我们定义了加权状态覆盖率,并允许用户指定权重函数。抽象状态 s ^ \hat{s} s^的默认权重定义为它在所有抽象状态中的相对频率, w ( s ^ ) = ∣ { s ∣ s ∈ s ^ } ∣ ∣ S ∣ w(\hat{s})=\frac{|\{s \mid s \in \hat{s}\}|}{|\mathcal{S}|} w(s^)=S{sss^}
    其中 S \mathcal{S} S是所有不同的具体状态的集合。 然后,将加权状态覆盖范围定义为:
    WSCov ⁡ ( T , M ) = ∑ s ^ ∈ S ^ T ∩ S ^ M w ( s ^ ) ∑ s ^ ∈ S ^ M w ( s ^ ) \operatorname{WSCov}(T, M)=\frac{\sum_{\hat{s} \in \hat{\mathcal{S}}_{T} \cap} \hat{\mathcal{S}}_{M}^{w(\hat{s})}}{\sum_{\hat{s} \in \hat{\mathcal{S}}_{M}} w(\hat{s})} WSCov(T,M)=s^S^Mw(s^)s^S^TS^Mw(s^)
  • 在实践中,权重函数可以根据具体需要进行不同的定义。例如,当选择一个常数函数时,加权状态覆盖就相当于基本状态覆盖。
n步状态边界覆盖率
  • 测试数据还可能触发训练期间从未访问过的新状态。n步状态边界覆盖度量测试输入T覆盖边界区域的程度。边界区域 S ^ M c \hat{\boldsymbol{S}}_{M^{c}} S^Mc是抽象状态 S ^ M \hat{\boldsymbol{S}}_{M} S^M的外部区域,与 S ^ M \hat{\boldsymbol{S}}_{M} S^M内的任何状态都是非零距离。 S ^ M c \hat{\boldsymbol{S}}_{M^{c}} S^Mc可基于与 S ^ M \hat{\boldsymbol{S}}_{M} S^M的距离被进一步划分为不同的边界区域。比如,n步边界区域, S ^ M c ( n ) \hat{\mathcal{S}}_{M^{c}}(n) S^Mc(n)包含与 S ^ M \hat{\mathcal{S}}_{M} S^M有最小距离n的所有抽象状态,可被形式化为 S ^ M c ( n ) = { s ^ ∈ S ^ M c ∣ min ⁡ s ^ ′ ∈ S ^ M Dist ⁡ ( s ^ , s ^ ′ ) = n } \hat{\mathcal{S}}_{M^{c}}(n)=\left\{\hat{s} \in \hat{\mathcal{S}}_{M^{c}} \mid \min _{\hat{s}^{\prime} \in \hat{\mathcal{S}}_{M}} \operatorname{Dist}\left(\hat{s}, \hat{s}^{\prime}\right)=n\right\} S^Mc(n)={s^S^Mcmins^S^MDist(s^,s^)=n}
  • n步状态边界覆盖定义为测试输入在距离 S ^ M \hat{\boldsymbol{S}}_{M} S^M最多n步的边界区域中访问的状态的比率
    n − S B C o v ( T , M ) = ∣ S ^ T ∩ ⋃ i = 1 n S ^ M c ( i ) ∣ ∣ ⋃ i = 1 n S ^ M c ( i ) ∣ n-\mathrm{SBCov}(T, M)=\frac{\left|\hat{\mathcal{S}}_{T} \cap \bigcup_{i=1}^{n} \hat{\mathcal{S}}_{M^{c}}(i)\right|}{\left|\bigcup_{i=1}^{n} \hat{\mathcal{S}}_{M^{c}}(i)\right|} nSBCov(T,M)=i=1nS^Mc(i)S^Ti=1nS^Mc(i)

转换级覆盖度量

  • 状态级别的覆盖表明了RNN的内部状态是如何被执行的,但它并没有反映在连续的时间步骤中状态之间发生转换的不同方式。转换级覆盖标准针对由不同输入序列激活的抽象转换,较高的转换覆盖率表明输入能够更充分地触发不同的时间动态行为。
基础转换覆盖率
  • 为了量化转换覆盖率,我们比较了在训练和测试阶段进行的抽象转换, δ ^ M \hat{\delta}_{M} δ^M δ ^ T \hat{\delta}_{T} δ^T。则基础转换覆盖率可以被定义为:
    B T Cov ⁡ ( T , M ) = ∣ δ ^ T ∩ δ ^ M ∣ ∣ δ ^ M ∣ \mathrm{BT} \operatorname{Cov}(T, M)=\frac{\left|\hat{\delta}_{T} \cap \hat{\delta}_{M}\right|}{\left|\hat{\delta}_{M}\right|} BTCov(T,M)=δ^Mδ^Tδ^M
  • 基本转换覆盖率包括基本状态覆盖率。换句话说,对于任何抽象模型M,测试输入T满足关于M的基本转移覆盖,也满足基本状态覆盖。
加权转换覆盖率
  • 与状态级覆盖率类似,我们可以通过考虑每个转移的相对频率来计算加权转移覆盖率。
    W T C o v ( T , M ) = ∑ ( s ^ , s ^ ′ ) ∈ δ ^ T ∩ δ ^ M w ( s ^ , s ^ ′ ) ∑ ( s ^ , s ^ ′ ) ∈ δ ^ M w ( s ^ , s ^ ′ ) \mathrm{WTCov}(T, M)=\frac{\sum_{\left(\hat{s}, \hat{s}^{\prime}\right) \in \hat{\delta}_{T} \cap \hat{\delta}_{M}} w\left(\hat{s}, \hat{s}^{\prime}\right)}{\sum_{\left(\hat{s}, \hat{s}^{\prime}\right) \in \hat{\delta}_{M}} w\left(\hat{s}, \hat{s}^{\prime}\right)} WTCov(T,M)=(s^,s^)δ^Mw(s^,s^)(s^,s^)δ^Tδ^Mw(s^,s^)
  • 其中,权重函数可以与加权状态覆盖中的配置类似。默认情况下,转换 ( s ^ , s ^ ′ ) \left(\hat{s}, \hat{s}^{\prime}\right) (s^,s^)的权重计算为§3.4中定义的转换概率。

应用

RNNs的对抗性样本检测

  • 对抗性样本检测的目的是在运行时检查给定的输入是否是对抗性样本。我们建议使用trace相似性度量来衡量两个输入之间的行为差异。基于这一思想,我们提出了一种新的RNN对抗性样本检测方法。
  • 给定一个目标样本 i i i,我们定义一个参考样本 r r r,使RNN对 i i i r r r给出相同的预测。当i是良性的时,从原始样本和参考样本导出的trace通常是相似的。然而,当i是对抗时,两个样本之间的trace可能会大得多。基于这样的认识,我们提出了基于与参考样本的trace差异来检测对抗样本。我们使用基于学习的方法(算法1)来训练分类器。
  • 算法1
  • 对于每个良性样本 b b b,选择函数从参考样本 R R R中获得一组相应的参考样本 R ′ R′ R。之后计算 b b b R ′ R′ R中每一个参考样本的trace相似度,并使用平均值作为 b b b R ′ R′ R的距离,存入列表 d i s b d i s_{b} disb。同样,也计算到对抗性样本的距离,存入 d i s a d i s_{a} disa。基于 d i s b d i s_{b} disb d i s a d i s_{a} disa学习线性回归分类器 C C C。给定一个新的输入 i i i,计算 i i i与参考样本之间的相似度 d i d_i di,基于 C ( d i ) C(d_i) C(di)去判断 i i i是良性还是对抗性样本。
  • 我们将检测算法应用于两个领域,即ASR和图像分类。用于生成参考样本的方法如下:对于ASR,给定由RNN转录到文本t的音频输入a,我们使用现成的文本到语音引擎生成参考音频,该引擎生成发音正确清晰的音频t。对于图像分类,给定具有预测结果c的新图像i,从训练数据中选择参考图像,使得它们与c共享相同的标签。

RNN的覆盖引导测试

  • 在本节中,我们提出了一种覆盖引导测试(CGT)技术,旨在生成被RNN错误识别的对抗性样本。CGT使用建议的覆盖标准(§4)来指导测试生成,并从不同的角度评估测试的质量。在测试过程中,CGT维护一个测试队列。在每次运行中,它从队列中选择一个种子(即测试用例),并生成多个变种。如果网络对突变体的预测不正确,那么它就是一个对抗性的样本。否则,如果突变体提高了覆盖率,那么它将作为一个有趣的种子保留并添加回队列。
    算法2
  • 每一回合,CGT从测试队列里选择一个输入a,随机选择一个变换函数t和参数p。之后生成新的样本集合A,对于每一个新的样本 a ′ a' a
    CGT首先通过让D进行推理获得具体的跟踪,然后计算抽象模型上的覆盖信息。如果推断不正确,则将a′添加到失败的测试集F(第10行)。如果a′被正确预测并覆盖了新的状态或跃迁,CGT将其放入测试队列并更新队列中当前所有测试的覆盖率标准。
  • DL测试中的一个挑战是,缺乏告诉任何新的突变体基本事实标签的oracle。突变操作符通常特定于应用程序域。对于CGT,我们主要集中在图像分类上,使用变形突变策略[55]生成新的突变体,在测试过程中保持从人类角度的预测意义。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值