[論文解讀]A Quantitative Analysis Framework for Recurrent Neural Network

年糕糕糕發表於2020-10-22

A Quantitative Analysis Framework for Recurrent Neural Network

簡介

論文標題

  • A Quantitative Analysis Framework for Recurrent Neural Network
  • 一種遞迴神經網路的定量分析框架
  • 2019

短文,講DeepStellar工具的

附DeepHunter的短文名稱: Coverage-guided Fuzzing for Feedforward Neural Networks

摘要

摘要-遞迴神經網路(RNN)在自動語音識別、自然語言處理和機器翻譯等應用中處理順序輸入方面取得了巨大的成功。然而,RNN的質量和可靠性問題使其容易受到敵意攻擊,阻礙了其在實際應用中的部署。本文提出了一個定量分析框架DeepStella,為RNNs驅動的軟體系統進行有效的質量和安全性分析鋪平了道路。DeepStella是通用的,可處理各種RNN架構,包括LSTM和GRU,可擴充套件以在工業級RNN模型上工作,並可擴充套件以開發定製的分析器和工具。我們演示了,使用DeepStella,使用者能夠設計高效的測試生成工具,並開發有效的敵意樣本檢測器。我們在三個真實的RNN模型上測試了所開發的應用程式,包括語音識別和影像分類。DeepStella在生成缺陷觸發測試方面的效能是現有方法的三百倍,並且在檢測對手攻擊方面達到了97%的準確率。展示“深星”主要功能的視訊演示可在以下網址獲得:https://sites.google.com/view/deepstellar/tool-demo.

動機

在過去的幾十年裡,我們見證了深度學習的出現和快速發展。DL已經成功地部署在許多現實應用中,包括人臉識別、自動語音識別(ASR)和自動駕駛等。然而,由於DL系統固有的脆弱性和缺乏嚴格的驗證,DL系統受到質量和安全問題的困擾,如Alexa/Siri操縱和自動駕駛車禍,這些問題都是從開發和部署階段引入的[1]。

由於與傳統軟體有著根本不同的程式設計範例和邏輯表示,現有的質量保證技術很難直接應用於DL系統。最近,人們對特定於DL系統的技術進行了大量的研究,包括測試[2]、[3]、[4]、[5]、[6]、驗證[7]和對抗性樣本檢測[8]。現有的工作主要集中在前饋神經網路(FNNS)方面,對遞迴神經網路(RNNs)的研究較少。模糊神經網路採用前饋設計,將輸入作為一個整體,其內部的每一層在特徵提取過程中起著固定的作用。相反,RNN逐段消耗順序輸入並以迭代方式工作,如圖1A所示。在每次迭代中,RNN處理單個元素,演化成新的狀態,記錄狀態資訊並將其轉發到下一次迭代。這一關鍵特性使RNN能夠處理時間資訊豐富的資料,如自然語言文字、音訊和視訊。由於各層的作用是可以互換的,這就使得RNNs的定量分析變得更加困難,甚至在處理兩個樣本時也難以衡量其行為差異。

為了彌補這一差距,我們提出了一個通用的定量分析框架DeepStella,它使人們能夠對基於RNN的DL系統進行有效的安全和質量分析。DeepStella的核心是對RNNs唯一的隱藏狀態空間進行抽象,將RNNs的內部行為建模為離散時間馬爾可夫鏈(DTMC)。DeepStella是通用的,可以處理各種RNN架構,包括LSTM[9]和GRU[10],並且可以擴充套件來為RNN開發定製的分析器和測試工具。為了驗證DeepStella的有效性,我們在DeepStella的基礎上開發了一個高效的RNNs測試生成工具和有效的敵意樣本檢測器。我們將這兩種工具應用於三個真實的RNN模型,包括ASR和影像分類,並在生成數百倍的敵意樣本的情況下觀察到了令人振奮的結果,在敵意攻擊檢測中的準確率為97%。DeepStella方便了基於RNN的DL系統的開發人員、使用者和研究人員,使他們能夠更好地理解RNN的行為,定義量化度量,並開發更有用的工具包,使系統更加健壯和安全。

THE DeepStellar FRAMEWORK

圖1b顯示了DeepStella的概述,它包括三個元件:抽象模型構建模組和兩個應用程式-對抗性樣本檢測器(DeepStellarASD)和覆蓋引導測試工具(DeepStella-CGT)。抽象模組將目標RNN及其訓練資料(的一部分)作為輸入,構建抽象模型。DeepStella提供API來訪問抽象模型中的狀態和轉換資訊,以及樣本遍歷的抽象跟蹤。通過這種方式,使用者可以通過擴充套件DeepStella(類似於DeepStella-ASD和DeepStella-CGT)來為RNN開發定製的分析器和測試工具。

三個元件,圖中深黃色部分

論文中有用的就是這張圖了

抽象模型構建

對於RNN,DeepStella通過三個步驟來生成抽象模型(即DTMC模型):1)狀態和躍遷剖析,2)狀態抽象,3)躍遷抽象。

步驟1:分析。DeepStella使用來自訓練資料的輸入來執行分析,因為它們可以顯示訓練好的RNN模型的特徵。通過在輸入上執行RNN,生成由狀態向量組成的軌跡。這樣,從訓練資料中,我們獲得了一組軌跡,記錄了在訓練階段訪問的具體狀態和進行的具體轉換。基於具體的狀態和轉換,我們進行狀態和轉換的抽象。

步驟2:狀態抽象。我們首先對所有的具體狀態向量進行分組,並應用主成分分析(PCA)來識別最大限度地區分向量的前k個主成分。然後,我們將具體的狀態向量投影到k維分量基上。這是為了降低狀態空間的維數並提高計算效率,因為具體的狀態向量可能具有非常高的維數。接下來,我們通過將每個軸劃分為m個等長的間隔來執行間隔抽象,並且k維空間被分割成mk個規則網格[11]。最後,我們將落入同一網格的具體狀態對映到相同的抽象狀態。注意,狀態抽象的精度可由引數(k,m)配置。

步驟3:轉換抽象。我們在狀態抽象的基礎上對具體的轉換進行了抽象。抽象轉換表示共享相同源和目標抽象狀態的一組具體轉換。對於每個抽象轉移t,我們通過在與t共享相同源抽象狀態的所有傳出具體轉移的數目上取對映到t的具體轉移的數量來計算其轉移概率。

應用

在抽象模型的基礎上,我們開發了兩個應用:1)敵意樣本檢測(DeepStella-ASD);2)覆蓋引導RNN測試(DeepStella-CGT)。在這裡,我們對它們的設計和使用做一個簡單的描述。

1)對抗性樣本檢測:對抗性樣本能夠用人類無法察覺的擾動來欺騙RNN。我們推測,與良性樣本相比,對抗性樣本在預測過程中存在一些異常行為。例如,當一張受干擾的熊貓圖片被識別為大猩猩時,RNN的行為軌跡應該與真正的大猩猩不同,因為這兩張圖片之間存在明顯的差異。使用DeepStella,我們可以捕獲RNN的更細粒度的行為,甚至可以測量樣本之間的差異,只需稍加擾動。具體地說,我們設計了兩個蹤跡相似度度量,並在此基礎上提出了一種檢測敵意樣本的演算法。

**跟蹤相似性度量。**這兩個相似性度量(詳見[12])分別來自狀態和轉換兩個層次,即基於狀態的軌跡相似度(SBTSIM)和基於轉換的軌跡相似度(TBTSIM)。它們的匯出是為了比較樣本之間的蹤跡相似性,這些痕跡相似性來自其所覆蓋的抽象狀態或轉變的Jaccard指數。給定兩個樣例,我們可以利用DeepStella來獲取每個樣例所覆蓋的狀態或轉換的集合,並計算這兩個集合之間的Jaccard指數。

用法。DeepStella-ASD將一組對抗性樣本和一組(部分)測試資料(圖1B中的步驟2突出顯示)作為輸入,並輸出檢查給定樣本(步驟3)是否為對抗性的檢測器。

為了檢查給定樣本(步驟3)是否具有對抗性,DeepStella-ASD首先生成具有與目標相同的預測輸出的參考樣本。原始樣本和參考樣本之間的蹤跡相似度被用作區分良性樣本和敵意樣本的指標。基本上,良性樣本與其參考樣本之間的相似性大於對抗性樣本。以大熊貓為例,它的參考樣本都是大猩猩,因此相似度會比大猩猩圖片之間的相似度大得多。對於影像分類任務,我們根據原始樣本的標籤,從訓練資料中提取50個參考樣本。對於ASR模型,我們使用現成的文字到語音轉換引擎,從原始樣本的抄本生成標準音訊。

2)覆蓋率制導測試:通過對訓練資料中的樣本進行剖析,DeepStella能夠捕獲正常情況下的主要行為空間和轉換。測試的目標是系統地生成測試用例,測試用例還可以探索主要行為空間之外的區域。我們推導了一套覆蓋標準,以便於指導測試RNN,目的是提高測試資料集的充分性,發現更多的缺陷。

覆蓋標準。對於覆蓋標準,設計了基本狀態覆蓋(BSCOV)、加權狀態覆蓋(WSCOV)、基本轉移覆蓋(BTCOV)和加權轉移覆蓋(WTCOV)來量化任何測試資料集所訪問的抽象狀態/轉移的部分(或考慮訪問概率的加權部分)。它們指示內部狀態/轉換的行使程度。

用法。DeepStella-CGT從一組初始種子開始(圖1B中的步驟4),並返回一組擴充的測試資料和一組發現的對抗性樣本。首先將初始種子資料放入種子佇列,然後DeepStellarCGT迭代,通過樣本變異和選擇來增加種子佇列的選擇覆蓋準則。在每次迭代中,我們從佇列中選擇一個種子並生成一系列突變體。分別針對影像、自然語言和音訊設計了擴充測試資料的變異策略。突變遵循變質關係,因此應用的擾動很小,並且不會改變真理標籤。對於新生成的樣本,如果它們是對抗性的,我們將它們保留在對抗性樣本組中。否則,我們檢查它們對特定覆蓋標準的貢獻,並保留覆蓋新狀態或轉換的測試用例。DeepStella-CGT迭代地繼續上述步驟,直到給定的時間預算耗盡。

實施和功能

我們已經在基於Keras2.2.4和TensorFlow-1.11的Python中實現了DeepStella。它的命令列介面提供了三個關鍵功能:(1)RNN抽象模型構建;(2)RNN惡意例項檢測;(3)RNN覆蓋引導測試。這些功能可以幫助終端使用者直接進行RNN的質量和安全分析。此外,DeepStella提供了一套全面的API來幫助RNN分析的進一步應用程式開發:(1)用於檢索抽象模型的詳細資訊的API,以及(2)用於視覺化RNN預測的執行時軌跡的API。

為了驗證DeepStella的實用價值,我們將DeepStella-ASD應用於檢測由最先進的攻擊技術生成的敵意樣本。我們進一步將DeepStella-CGT應用於利用MNIST資料集訓練的影像分類RNN模型,並有效地生成了大量的對抗性樣本。結果表明,DeepStella對於揭示和評估基於RNN的DL系統的缺陷是有用的。通過這些工程努力和實驗結果,我們相信DeepStella在攻擊和防禦真實世界的RNNs方面是可擴充套件的和有效的。

評估

我們在語音識別和影像分類領域的三個RNN上展示了DeepStella應用程式的有效性。主題模型的詳細資訊可以在表I中找到。使用的ASR模型是Mozilla的DeepSpeech 0.1.1實現,具有工業級的效能。對於影像分類,我們在MNIST資料集上分別使用LSTM和GRU體系結構訓練了兩個RNN。兩種模型都達到了98%以上的測試準確率。它們涵蓋了不同的RNN體系結構,包括LSTM、雙向LSTM和GRU。最大的模型DeepSpeech 0.1.1包含超過1億個可訓練引數,狀態向量為4096維。此外,我們在兩個應用任務上評估了所提出的量化措施的有用性,即檢測敵意示例和覆蓋引導的RNN測試。有關實驗設定和結果的更多詳細資訊,請參閱[12]。

(1)對抗性樣本檢測。每個模型的對抗性樣本都是用最先進的攻擊方法生成的。我們使用C&W音訊攻擊[13]為DeepSpeech 0.1.1生成對抗性音訊,並使用FGSM、BIM和DeepFool為影像分類模型生成對抗性樣本。對於每個RNN,我們在多粒度(k,m)抽象配置下生成13個抽象模型。最後,對於每種攻擊方法,我們生成了5000個對抗性樣本,並隨機選擇了相同數量的良性樣本。利用這些樣本,我們分別對SBTSIM和TBTSIM度量進行取樣,並訓練線性迴歸分類器來檢測敵意示例。我們在表II中給出了兩個RNN-DeepSpeech 0.1.1和MNIST-LSTM的AUROC結果,最好的檢測準確率分別達到了89%和97%。結果表明,不同抽象程度的模型可以達到不同的檢測精度。DeepStella通過選擇合適的抽象模型來檢測敵意示例。

(2)覆蓋率導向測試。我們用BSCov制導和BTCov制導評估了DeepStella-CGT在增加覆蓋率和對抗例數方面的有用性。我們選擇了配置為(k=3,m=10)的抽象模型。MNIST模型的結果顯示在表III中。對於每個覆蓋指南,我們分析了所有測試標準(ı.E.,第一列)的覆蓋增加。列“SEED”顯示了初始種子的初始覆蓋範圍。覆蓋範圍來自州覆蓋和過渡覆蓋指導顯示在“S-Guid”列下。和“T-Guid”。為了進行比較,我們在沒有覆蓋率指導的情況下進行了隨機測試(列“RAN”)。和現有的基於展開的RNN的神經元覆蓋引導測試工具3。我們可以看到,DeepStella-CGT在覆蓋標準增加和生成對抗性樣本方面都優於所有的基線方法。具體地說,DeepStellarCGT發現的敵意樣本比隨機測試多3到40倍,比DeepTest多300倍左右。

相關工作

RNN的抽象。關於RNNs的抽象技術已經有了一些開創性的研究,但大多使用有限狀態自動機(FSA)來捕捉RNNs的內部動態,缺乏DTMC中的轉移概率分佈。在現有文獻中,已有的研究大多關注內部狀態空間劃分策略,而內部狀態空間劃分是抽象中最重要的技術之一。所提出的劃分策略包括規則網格的每個維度的均勻劃分[11]、非監督分類演算法,如k-均值及其變體[14]、[15]和帶有核演算法的動態劃分方案[7]。然而,當它們應用於現實世界的RNN時,它們都受到可擴充套件性問題的困擾,在現實世界中,RNN的內部狀態空間可能非常大,而且是高維的。取而代之的是,DeepStella使用PCA進行更便宜的抽象。

RNN敵意例項檢測。RNNs的敵意例項檢測仍處於早期階段。專門為前饋神經網路設計的技術[8]、[16]、[17]不能應用於RNN。基於SoftMax概率的方法[16]可能僅用於檢測分類問題的RNN對抗性示例。據我們所知,DeepStella-ASD是第一個專門為順序輸出的RNN檢測敵意樣本的工具。

深度學習測試。近年來,DNN測試得到了廣泛的研究,包括對測試標準[2]、[4]和測試工具[2]、[3]、[5]、[6]、[18]的研究。然而,目前的研究主要集中在前饋神經網路方面。通過展開,可以在RNN上使用DeepTest[3]。但是,它以固定迭代展開RNN,並且不可伸縮。TensorFuzz[18]可以用於RNN,因為它只考慮logits層的輸出。然而,它缺乏對RNN的內部分析。

總結與下一步工作

DeepStella提供了一個基本的基礎設施,支援對RNN的多種分析。我們使用測試生成工具和敵意樣本檢測器演示了DeepStella的兩個典型應用。在未來的工作中,我們打算用轉換標籤來增強抽象,即觸發轉換的輸入,並且抽象技術可以處理來自連續空間的輸入。我們還有興趣研究在抽象模型上可以驗證什麼以及如何驗證關鍵屬性,以揭示RNNs中深埋的缺陷。

相關文章