天天看點

[論文解讀] Guiding Deep Learning System Testing using Surprise AdequacyGuiding Deep Learning System Testing using Surprise Adequacy

Guiding Deep Learning System Testing using Surprise Adequacy

簡介

文章目錄

  • Guiding Deep Learning System Testing using Surprise Adequacy
    • 簡介
    • 核心内容
      • 預備定義
      • SA: 意外充分性
        • 算法一般步驟
        • LSA: 基于可能性的SA
          • 核心思想
          • 注意
          • 公式定義
            • 密度函數 f x fx fx
            • LSA定義
        • DSA: 基于距離的SA
          • 核心思想
          • 注意
          • 公式定義
            • 計算 d i s t a dist_a dista​
            • 計算 d i s t b dist_b distb​
            • DSA定義
      • SC: 意外覆寫率
        • 定義
        • 注意
    • 其他
        • 研究問題 RQ
        • 實驗
        • 結果

論文标題:

  • 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} N⊆N,其中 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)∣x∈X} 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)∣x∈X}擷取激活迹.

  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 Tc​∈T,我們隻關心 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} NL​⊆N中的神經元和他們的激活軌迹 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)∣1​xi​∈T∑​KH​(α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​),xi​∈T: 訓練集中的某個樣本在 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)=distb​dista​​

形象解釋

[論文解讀] Guiding Deep Learning System Testing using Surprise AdequacyGuiding Deep Learning System Testing using Surprise Adequacy

圖中黑線則是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∣∣​{bi​∣∃x∈X:SA(x)∈(U⋅ni−1​,U⋅ni​]}∣∣​​

最後的覆寫率是指被覆寫的段數除以總段數

注意

  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} 10−5
  • 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的例子。

繼續閱讀