[論文解讀]關於機器學習測試,看這一篇論文就夠了 Machine Learning Testing: Survey ,Landscapes and Horizons

Machine Learning Testing: Survey ,Landscapes and Horizons

介紹

論文標題

  • Machine Learning Testing: Survey , Landscapes and Horizons
  • 機器學習測試:綜述、前景與視野
  • 2019.12
  • Jie M. Zhang*, Mark Harman, Lei Ma, Y ang Liu

本篇論文沒有重點強調神經網絡的攻擊與防禦,想了解這方面可以看這篇Threat of Adversarial Attacks on Deep Learning in Computer Vision: A Survey

論文翻譯,轉載博客請聯繫作者

摘要

文摘-本文對機器學習系統的測試技術進行了全面的綜述;機器學習測試(ML Testing)的研究。它涵蓋144篇關於測試屬性(例如,正確性、健壯性和公平性)、測試組件(例如,數據、學習程序和框架)、測試工作流程(例如,測試生成和測試評估)以及應用場景(例如,自動駕駛、機器翻譯)的論文。文章還分析了數據集的發展趨勢、研究趨勢和研究熱點,總結了ML測試面臨的研究挑戰和未來的研究方向。

簡介

  1. 機器學習測試正在成爲一個越來越火熱的領域,下圖表示了機器學習測試論文發表的數量

  1. 機器學習系統作爲軟件系統,其問題的某些方面與軟件工程文獻中已經廣泛研究的衆所周知的解決方案是相同的,但機器學習系統的統計性質及其自主決策的能力爲軟件測試提出了額外的、具有挑戰性的研究問題

    • 機器學習系統本質上遵循數據驅動的編程範例,其中決策邏輯是通過機器學習算法體系結構下的訓練數據的訓練過程獲得的[8]。該模型的行爲可能會隨着時間的推移而演變,以響應新數據的頻繁提供[8]。雖然傳統軟件系統也是如此,但傳統系統的核心底層行爲通常不會像機器學習系統那樣,隨着新數據的變化而改變
    • 機器學習系統很難測試,因爲它們被設計成爲以前沒有答案的問題提供答案
    • 只有將機器學習系統作爲一個整體來考慮才能完全理解其感興趣的行爲,這使得測試變得更加困難,因爲如何將系統拆分成可以作爲單元單獨測試的較小組件就不那麼明顯了。從測試的角度來看,這種新出現的行爲有將測試挑戰從單元級別遷移到集成和系統級別的趨勢。例如,機器學習模型的低精確度/精確度通常是由不同組件(如訓練數據、學習程序甚至學習框架/庫)的行爲組合引起的綜合效應[8]。
    • 錯誤可能會傳播到放大或抑制,從而抑制測試人員確定故障所在位置的能力。這些挑戰也適用於更傳統的軟件系統,但這些問題在機器學習系統中影響深遠,因爲它們產生於機器學習方法的性質,並從根本上影響所有行爲,而不是作爲傳統數據和控制流的副作用而產生
  2. Machine Learning Testing’ (ML testing) :任何旨在檢測機器學習系統現有行爲和所需行爲之間的差異的活動

    ML測試不同於使用機器學習的測試方法,也不同於那些由機器學習指導的測試方法,這些測試方法應該被稱爲基於機器學習的測試。此命名法與軟件工程文獻中以前的用法一致。例如,文獻使用術語“基於狀態的測試”[16]和“基於搜索的測試”[17]、[18]來指利用狀態和搜索空間概念的測試技術,而我們使用術語“GUI測試”[19]和“單元測試”[20]來指解決測試GUI(圖形用戶界面)和代碼單元的挑戰的測試技術

綜上所述,本文主要做了以下幾個方面的工作:

  1. Definition本文定義了機器學習測試(ML Testing),綜述了與機器學習測試相關的概念、測試流程、測試特性和測試組件。

  2. Survey這篇論文提供了對144份機器學習試卷的全面調查,涉及軟件工程、人工智能、系統與網絡和數據挖掘等不同出版領域。

3)Analyses. 本文分析和報告了有關機器學習測試文獻的研究分佈、數據集和趨勢的數據。我們注意到研究努力的分佈明顯不平衡:在我們收集的144篇論文中,大約120篇涉及監督學習測試,其中3篇涉及非監督學習測試,只有1篇論文測試強化學習。此外,它們中的大多數(93篇)集中在正確性和健壯性上,但只有幾篇論文測試可解釋性、私密性或效率。

4)Horizons本文指出了ML測試面臨的挑戰、存在的問題和有前途的研究方向,旨在促進和促進進一步的研究。

文章結構如下圖所示

機器學習概論

機器學習

  1. 基本定義

    Dataset,Learning program,Framework,Instance,Feature,Label,Test error, Generalisation error,Model

  2. 分類

    • Supervised learning,Unsupervised learning,Reinforcement learning
    • classic machine learning ,deep learning
  3. 用途

    Classification,Regression,Clustering,Dimension reduction,Control

都是很常見的術語

機器學習測試

包括測試工作流(如何測試)、測試屬性(測試內容)和測試組件(測試位置)。

定義

Definition 1 (ML Bug) ML bug指的是機器學習項目中導致現有條件和所需條件不一致的任何缺陷。

Definition 2 (ML Testing) 機器學習測試(ML測試)指的是任何旨在揭示機器學習錯誤的活動。

ML測試工作流

ML測試工作流是關於如何針對不同的測試活動進行ML測試。

測試在ML開發中的作用

機器學習系統的生命週期如下圖所示,關注離線測試與在線測試:

ML測試工作流

直接看圖很清晰明瞭,下列文字只是詳細描述流程

離線測試

離線測試的工作流程如圖5的頂部虛線矩形所示,開發人員一開始需要進行需求分析,定義用戶對被測機器學習系統的期望。在需求分析中,分析了機器學習系統的規格說明,規劃了整個測試流程。在此之後,測試輸入要麼從收集的數據中採樣,要麼基於特定目的生成。然後識別或生成測試預言(有關機器學習中測試預言的更多詳細信息,請參見第5.2節)。當測試準備好後,需要執行它們以供開發人員收集結果。測試執行過程涉及使用測試構建模型(當測試是訓練數據時)或針對測試運行構建的模型(當測試是測試數據時),以及檢查是否違反了測試預言。在測試執行過程之後,開發人員可以使用評估指標來檢查測試的質量,即測試暴露ML問題的能力。

在線測試

圖5的底部顯示了在線測試的工作流程。針對不同的目的,有不同的在線測試方法。例如,運行時監視會不斷檢查正在運行的ML系統是否滿足要求,或者是否違反了一些期望的運行時屬性。另一個常用的場景是監視用戶響應,基於此來確定在某些應用上下文中新模型是否優於舊模型。A/B測試是此類在線測試的一種典型類型[43]。它將客戶分開以比較系統的兩個版本(例如,網頁)。在ML系統上進行A/B測試時,抽樣的用戶會被分成兩組,分別使用新舊ML模型。

MAB(Multi-Armed Bandit)是另一種在線測試方法[44]。它首先進行短時間的A/B測試,找出最佳的模型,然後在選擇的模型上投入更多的資源。

ML測試組件

下圖顯示了構建ML模型的基本過程以及該過程中涉及的主要組件。

機器學習模型的開發過程需要與數據學習程序學習框架等多個組件進行交互,而每個組件都可能包含錯誤。因此,在進行ML測試時,開發人員可能需要嘗試查找每個組件中的bug,包括數據、學習程序和框架。特別是,錯誤傳播是一個更嚴重的問題,ML開發,因爲組件之間的聯繫比傳統軟件更緊密[8],這表明測試每個ML組件的重要性。下面我們將介紹每個ML組件中的bug檢測:

Bug Detection in Data機器學習系統的行爲在很大程度上取決於數據[8]。數據中的錯誤會影響生成的模型的質量,並且可能會被放大,在一段時間內產生更嚴重的問題[45]。數據中的錯誤檢測檢查諸如數據是否足夠用於訓練或測試模型(也稱爲數據的完整性[46])、數據是否代表未來數據、數據是否包含大量噪聲(例如有偏見的標籤)、訓練數據和測試數據之間是否存在偏差[45]、以及是否存在可能影響模型性能的數據中毒[47]或敵意信息等問題。

Bug Detection in FrameworksML框架測試檢查機器學習的框架是否有可能導致最終系統出現問題的錯誤[48]。

Bug Detection in Learning Program. 學習程序可以分爲兩個部分:由開發人員設計或從框架中選擇的算法,以及開發人員爲實現、部署或配置算法而編寫的實際代碼。學習程序中可能會出現錯誤,這可能是因爲算法設計、選擇或配置不正確,或者是因爲開發人員在實現所設計的算法時犯了 錯誤。

ML測試屬性

測試屬性指的是在ML測試中要測試的內容:ML測試需要保證訓練好的模型滿足哪些條件。本節列出了文獻中考慮的一些典型屬性。我們將它們分爲基本功能需求(即正確性和模型相關性)和非功能需求(即效率、健壯性、公平性、可解釋性)。

在考慮根本原因時,這些屬性並不是嚴格相互獨立的,但它們是ML系統行爲的不同外部表現,在ML測試中應該單獨對待。

正確性

正確性度量被測試的ML系統“正確”的概率。

Definition 3 (Correctness) 設D是未來未知數據的分佈。設x是屬於D的數據項,h是我們所在的機器學習模型測試。h(X)是x的預測標號,c(X)是真實標號。模型正確性E(H)是h(X)和c(X)相等的概率:
E(h)=PrxD[h(x)=c(x)] E(h)=\operatorname{Pr}_{x \sim \mathcal{D}}[h(x)=c(x)]
Definition 4 (Empirical Correctness). 設X=(x1,…,xm)是從D採樣的未標記測試數據集,h是被測機器學習模型。設y0=(h(X1),.,h(Xm))是對應於每個訓練項目Xi的預測標籤集合。設Y=(y1,.,ym)爲真標號,其中每個yi∈Y對應於Xi∈X的標號,模型的經驗正確性(記爲ˆE(H))爲:
E^(h)=1mi=1mI(h(xi)=yi) \hat{E}(h)=\frac{1}{m} \sum_{i=1}^{m} \mathbb{I}\left(h\left(x_{i}\right)=y_{i}\right)
其中i是指示器函數

就是精度或準確率

模型相關性

算法容量表示機器學習模型可以選擇的函數的數量(基於手頭的訓練數據)作爲可能的解決方案。對於分類任務,它通常用VC維[52]或Rademacher複雜度[53]來近似。VC維是算法可以破壞的最大點集的基數。Rademacher複雜度是算法破壞的具有固定特徵的最大訓練數據集的基數。

我們將機器學習算法能力與數據分佈之間的相關性定義爲模型相關性問題。

Definition 5 (Model Relevance). 設D爲訓練數據分佈。設R(D,A)是任意機器學習算法A對D所需的最簡單容量,R0(D,A0)是待測機器學習算法A0的容量。模型相關性是R(D,A)與R0(D,A0)之間的差值。
f=(R(D,A)R(D,A) f=\left|\left(R(\mathcal{D}, \mathcal{A})-R^{\prime}\left(\mathcal{D}, \mathcal{A}^{\prime}\right) |\right.\right.
應該跟過擬合欠擬合類似

魯棒性

Definition 6 (Robustness). 設S是一個機器學習系統。設E(S)是S的正確性,δ(S)是對任何機器學習組件(如數據、學習程序或框架)具有擾動的機器學習系統。機器學習系統的健壯性是對E(S)和E(δ(S))之間差異的度量:
r=E(S)E(δ(S)) r=E(S)-E(\delta(S))
Katz等人的工作之後。[57]將對抗穩健性分爲局部對抗穩健性和全局對抗穩健性。

Definition 7 (Local Adversarial Robustness). 設x是ML模型h的測試輸入,x0是通過對x進行對抗性擾動而產生的另一個測試輸入,如果對任意x0,模型h在輸入x處是δ局部魯棒的。
x:xxpδh(x)=h(x) \forall x^{\prime}:\left\|x-x^{\prime}\right\|_{p} \leq \delta \rightarrow h(x)=h\left(x^{\prime}\right)
局部對抗穩健性指的是某一特定測試輸入的穩健性,而全局對抗穩健性衡量的是針對所有輸入的穩健性。

Definition 8 (Global Adversarial Robustness). 設x是ML模型h的測試輸入,x0是通過對x進行對抗性擾動而產生的另一個測試輸入,如果對任意x和x0,模型h是ϵ\epsilon全局魯棒的。
x,x:xxpδh(x)h(x)ϵ \forall x, x^{\prime}:\left\|x-x^{\prime}\right\|_{p} \leq \delta \rightarrow h(x)-h\left(x^{\prime}\right) \leq \epsilon

安全性

ML系統的安全性是指系統對通過操縱或非法訪問ML組件而造成的潛在傷害、危險或損失的恢復能力。

安全性和健壯性密切相關。具有低魯棒性的ML系統可能是不安全的:如果它在抵抗要預測的數據中的擾動方面的健壯性較差,系統可能更容易成爲對抗性攻擊的受害者;然而,健壯性低只是安全漏洞的一個原因。除了擾動攻擊,安全問題還包括模型竊取或提取等其他方面。

數據隱私

機器學習中的隱私是ML系統保存私有數據信息的能力。對於形式定義,我們使用從Dwork[58]的工作中獲得的最流行的差異隱私。

Definition 9 (ϵ\epsilon-Differential Privacy). 設A是一個隨機算法。設D1和D2是僅在一個實例上不同的兩個訓練數據集。設S是A的輸出集的子集,A滿足ϵ\epsilon差分隱私的條件爲:
Pr[A(D1)S]exp(ϵ)Pr[A(D2)S] \operatorname{Pr}\left[\mathcal{A}\left(D_{1}\right) \in S\right] \leq \exp (\epsilon) * \operatorname{Pr}\left[\mathcal{A}\left(D_{2}\right) \in S\right]
換言之,差分隱私是響應單個輸入變化時對輸出變化的一種包含界限。它提供了一種方法來了解任何一個人的數據是否具有顯著的影響(以ϵ\epsilon爲界)。對結果的判斷。

數據隱私方面不是很懂

效率

機器學習系統的效率指的是它的構造或預測速度。當系統在構建或預測階段執行緩慢甚至無限時,就會出現效率問題。

隨着數據的指數增長和系統的複雜性,效率是模型選擇和框架選擇要考慮的一個重要特徵,有時甚至比準確性更重要[61]。例如,爲了將大型模型部署到移動設備,可以執行優化、壓縮和麪向設備的定製,以使其在合理的時間內對移動設備執行是可行的,但是爲了實現這一點可能犧牲準確性。

公平性

然而,人類可能對認知有偏見,進一步影響收集或標記的數據和設計的算法,導致偏見問題。

敏感且需要針對不公平進行保護的特徵被稱爲受保護特徵[62]或受保護屬性和敏感屬性。法律承認的受保護類別的例子包括種族、膚色、性別、宗教、國籍、公民身份、年齡、懷孕、家庭狀況、殘疾狀況、退伍軍人狀況和遺傳信息。

公平性通常是特定於領域的。受監管的領域包括信貸、教育、就業、住房和公共住宿

可解釋性

對人類來說,理解最終決策背後的“邏輯”可能很重要,這樣他們就可以對ML[64]、[65]、[66]做出的決策建立信任

可解釋性包含兩個方面:透明性(模型如何工作)和事後解釋(可以從模型派生的其他信息)[64]。

軟件測試VSML測試

傳統軟件測試和ML測試之間的主要區別如下表所示

1)Component to test(可能存在bug的地方):傳統的軟件測試檢測代碼中的bug,而ML測試檢測數據、學習程序和框架中的bug,每個組件都對構建ML模型起着至關重要的作用。

2)Behaviours under test:傳統軟件代碼的行爲在需求固定後通常是固定的,而ML模型的行爲可能會隨着訓練數據的更新而頻繁變化

3)Test input:傳統軟件測試中的測試輸入通常是測試代碼時的輸入數據;而在ML測試中,中的測試輸入可能會有更多的形式。請注意,我們將“測試輸入”和“測試數據”的定義分開。特別地,我們使用“測試輸入”來指可用於進行機器學習測試的任何形式的輸入;而“測試數據”專門指用於驗證ML模型行爲的數據。因此,ML測試中的測試輸入可能是,但是不限於測試數據。當測試學習程序時,測試用例可以是來自測試數據的單個測試實例或玩具訓練集;當測試數據時,測試輸入可以是學習程序。

4)Test oracle:傳統的軟件測試通常假定存在Test oracle。開發人員可以對照期望值驗證輸出,因此Oracle通常是事先確定的。然而,機器學習用於在在線部署後基於一組輸入值生成答案。生成的大量答案的正確性通常是手動確認的。目前,Test oracle的標識仍然具有挑戰性,因爲許多所需的屬性很難正式指定。即使對於具體的領域特定問題,Oracle識別仍然是費時費力的,因爲通常需要領域特定的知識。在目前的實踐中,公司通常依賴第三方數據標籤公司來獲得手動標籤,這可能會很昂貴。蛻變關係[71]是一種僞預測,用於自動緩解機器學習測試中的預測問題。

5)Test adequacy criteria:測試充分性標準用於對已測試的目標軟件的程度提供定量度量。到目前爲止,業界提出並廣泛採用了許多充分性準則,如線路覆蓋率、分支覆蓋率、數據流覆蓋率等。然而,由於機器學習軟件的編程範式和邏輯表示格式與傳統軟件存在根本差異,需要新的測試充分性準則來考慮機器學習軟件的特點。

6)False positives in detected bugs 由於難以獲得可靠的oracle,ML測試往往會在上報的bug中產生更多的誤報。

7)Roles of testers:ML測試中的bug不僅可能存在於學習程序中,也可能存在於數據或算法中,因此數據科學家或算法設計者也可以扮演測試員的角色

論文收集和評審方案

論文關鍵字搜索

論文分佈情況

下圖顯示了在不同研究場所發表的論文分佈情況。在所有論文中,38.2%的論文發表在ICSE、FSE、ASE、ICST、ISSTA等軟件工程場所;6.9%的論文發表在系統和網絡場所;令人驚訝的是,只有19.4%-10%的論文發表在AAAI、CVPR、ICLR等人工智能場所。此外,22.9%的論文還沒有通過同行評議的場所發表(arxiv部分)。

ML測試工作流

個人比較關心測試輸入生成,測試充分性和測試優先級這三個部分

測試輸入生成

特定領域的測試輸入綜合

ML測試的測試輸入可以分爲兩類:對抗性輸入自然輸入。對抗性輸入基於原始輸入而受到干擾。它們可能不屬於正態數據分佈(即,在實踐中可能很少存在),但可能會暴露健壯性或安全缺陷。相反,自然輸入是屬於實際應用場景的數據分佈的那些輸入。在這裏,我們介紹旨在通過特定領域的測試輸入合成來生成自然輸入的相關工作。

  • DeepXplore[1]提出了一種白盒差異測試技術來爲深度學習系統生成測試輸入。
  • 爲了爲自動駕駛系統創建有用和有效的數據,DeepTest[76]使用9種不同的真實圖像轉換進行貪婪搜索:更改亮度、更改對比度、平移、縮放、水平剪切、旋轉、模糊、霧效果和雨效果。
  • 張某等人。[79]應用GaN實現各種天氣條件下的駕駛場景測試生成。他們從Udacity挑戰賽數據集[77]和YouTube視頻(下雪或下雨的場景)中採樣圖像,並將其送入單元框架7進行訓練。訓練後的模型以整個Udacity圖像作爲種子輸入,生成變換後的圖像作爲生成測試。
  • 周等人。[81]建議DeepBillboard生成現實世界中可能觸發自動駕駛系統潛在轉向錯誤的對抗性廣告牌
  • 爲了測試基於音頻的深度學習系統,Du等人。[82]考慮到背景噪聲和音量變化,設計了一組針對音頻輸入量身定做的變換。他們首先從RNN中抽象並提取一個概率轉移模型。在此基礎上,定義了狀態測試準則,並將其用於指導有狀態機器學習系統的測試生成。
  • 爲了在對生物細胞圖像進行分類時測試圖像分類平臺,丁等人。[83]構建了生物細胞分類器的測試框架。該框架迭代生成新的圖像,並使用變形關係進行測試。例如,他們通過在生物細胞圖像中增加人工線粒體的數量/形狀來產生新的圖像,這可以引起分類結果中容易識別的變化。
  • Rabin 等人[84]討論了使用保持語義的程序轉換作爲測試輸入來測試code2vec(一種代碼嵌入方法[85])的可能性。
  • 爲了測試機器翻譯系統,Sun等人。[86]通過變異翻譯輸入中的單詞自動生成測試輸入。爲了生成應該產生一致翻譯的翻譯對,他們的方法基於單詞嵌入相似性進行單詞替換。人工檢查表明,測試生成在生成具有一致翻譯的輸入對方面具有很高的精度(99%)。

基於模糊和搜索的測試輸入生成

模糊測試是一種傳統的自動測試技術,它生成隨機數據作爲程序輸入來檢測崩潰、內存泄漏、失敗的(內置)斷言等,許多成功的應用於系統安全和漏洞檢測[9]。作爲另一種廣泛使用的測試生成技術,基於搜索的測試生成通常使用元啓發式搜索技術來指導模糊過程,以獲得更高效的測試生成[17]、[87]、[88]。這兩種技術在探索ML測試的輸入空間方面也被證明是有效的:

  • Odena等人。[89]介紹了TensorFuzz。TensorFuzz使用簡單的最近鄰爬山方法來探索TensorFlow圖在有效輸入空間上可實現的覆蓋範圍,並發現數值錯誤、神經網絡與其量化版本之間的不一致,以及RNN中出現的不良行爲
  • DLFuzz,由Guo等人提出。[90],是另一個基於DeepXplore實現的模糊測試生成工具,它以塊覆蓋爲指導。DLFuzz的目標是生成對抗性的例子。因此,生成過程不需要用於交叉引用檢查的類似功能深度學習系統,如DeepXplore和TensorFuzz。相反,它只需要對原始輸入進行最小程度的改變,就可以找到那些改善了神經覆蓋但具有與原始輸入不同的預測結果的新輸入。
  • 謝等人。[91]提出了一種基於變形變換的覆蓋制導模糊技術DeepHunter,該技術同時利用了DeepGauge[92]提出的神經元覆蓋和覆蓋準則。DeepHunter使用更細粒度的變形突變策略來生成測試,這顯示了其在降低假陽性率方面的優勢。它還展示了它在實現高覆蓋率和錯誤檢測能力方面的優勢
  • Wicker等人。[93]建議的功能導向測試生成。他們採用尺度不變特徵變換(SIFT)來識別具有高斯混合模型的代表圖像的特徵,然後將尋找對抗性樣本的問題轉化爲一個基於兩人回合的隨機博弈問題。他們使用蒙特卡羅樹搜索來識別圖像中最易受攻擊的元素,以此作爲生成對抗性示例的手段。實驗表明,與一些最先進的白盒方法相比,他們的黑盒方法是有競爭力的。
  • Uesato等人[94]提出了用對抗性示例生成來評估強化學習。災難性故障的檢測成本很高,因爲故障很少見。爲了降低發現此類故障的成本,作者提出使用故障概率預測器來估計代理失敗的概率,這被證明是有效和高效的。
  • 除了圖像分類之外,還有用於特定應用場景的模糊器。周等人。[95]採用模糊化和變形測試相結合的方法,對真實無人駕駛汽車的LiDAR障礙物感知模塊進行了測試,並上報了此前未知的軟件故障。Jha等人。[96]12調查瞭如何通過將故障注入建模爲貝葉斯網絡來生成最有效的測試用例(最有可能導致違反安全條件的故障)。這項評估基於NVIDIA和百度的兩個生產級A-V系統,揭示了許多故障導致安全違規的情況。
  • Udeshi和Chattopadhyay[97]爲文本分類任務生成輸入,併產生一種模糊方法,該方法考慮了測試中的語法以及輸入之間的距離。Nie [98]和Wang等人的研究成果。[99]對NLI(自然語言推理)任務中的語句進行了變異,以生成用於健壯性測試的測試輸入。Chan等人。[100]生成了DNC的對抗性示例,以暴露其健壯性問題。Udeshi等人。[101]更多地關注個人公平性,生成的測試投入突出了被測模型的歧視性。我們在第8節中詳細介紹了這些特定於域的模糊測試技術。
  • Tuncali等人。[102]提出了自動駕駛系統的測試框架。在他們的工作中,他們比較了三種測試生成策略:隨機模糊測試生成,覆蓋數組[103]+模糊測試生成,以及覆蓋數組+基於搜索的測試生成(使用模擬退火算法[104])。結果表明,基於搜索技術的測試生成策略在檢測掃視行爲方面具有最好的性能。

基於符號執行的測試輸入生成

符號執行是一種程序分析技術,用於測試被測軟件[105]是否可以違反某些屬性。動態符號執行(DSE,也稱爲Concolic測試)是一種用於自動生成實現高代碼覆蓋率的測試輸入的技術。DSE使用隨機測試輸入執行被測程序,並並行執行符號執行,以沿執行軌跡收集從分支語句中的謂詞獲得的符號約束。沿路徑的所有符號約束的合取稱爲路徑條件。當生成測試時,DSE從輸入域隨機選擇一個測試輸入,然後使用約束求解來達到路徑中的目標分支條件[106]。DSE已經被發現是準確和有效的,並且已經成爲一些漏洞發現工具使用的主要技術[107]。

在ML測試中,模型的性能不僅由代碼決定,還由數據決定,因此符號執行有兩種應用場景:對數據執行和對代碼執行

在機器學習代碼上應用符號執行時,存在許多挑戰。Gopinath[108]在他們的論文中列出了神經網絡的三個這樣的挑戰,這些挑戰也適用於其他ML模式:

(1)網絡沒有顯式的分支;

(2)網絡可能是高度非線性的,沒有良好的約束求解器;

(3)存在可伸縮性問題,因爲ML模型的結構通常非常複雜,超出了當前符號推理工具的能力。

  • Gopinath[108]引入了DeepCheck。它將深度神經網絡(DNN)轉換爲程序,以使符號執行能夠找到與原始圖像具有相同激活模式的像素攻擊。具體地說,DNN中的激活函數遵循IF-ELSE分支結構,可以將其視爲通過翻譯後的程序的路徑。DeepCheck能夠通過識別神經網絡未能對相應的修改圖像進行分類的大部分像素或像素對來創建1像素和2像素攻擊。
  • Agarwal等人。[109]應用LIME[110],這是一種本地解釋工具,可用線性模型、決策樹或下降規則列表近似模型,以幫助獲取符號執行中使用的路徑。基於8個開源公平基準的評估表明,該算法生成的成功測試用例是隨機測試生成方法THEMIS的3.72倍[5]。
  • Sun等人。[111]提出了一種DNNs的動態符號執行測試方法DeepConcolic。通過具體評估ML模型的特定性質,通過具體的執行,將符號分析引向特定的MC/DC準則條件。DeepConcolic顯式地將覆蓋需求作爲輸入。作者報告說,在評估的模型中,它的神經元覆蓋率比DeepXplore高出10%以上。

用於測試學習計劃的合成數據

Murphy等人。[112]生成的數據具有重複值、缺失值或分類數據,用於測試兩個ML排名應用程序。Breck等人。[45]使用符合模式約束的合成訓練數據來觸發代碼中不符合約束的隱藏假設。張某等人。[54]使用已知分佈的合成數據來測試過擬合。Nakajima和BUI[113]還提到了生成簡單數據集的可能性,這些數據集具有一些可預測的特徵,可以用作僞Oracle。

Test Oracle

作爲測試Test Oracle的蛻變關係

變質關係是由Chen等人提出的。[114]以改善傳統軟件13測試中的測試先知問題。蛻變關係是指在多個程序執行過程中軟件輸入變化和輸出變化之間的關係。例如,要測試函數SIN(X)的實現,可以檢查當輸入從x更改爲π−x時,函數輸出是如何變化的。如果SIN(X)與SIN(π−x)不同,則該觀察發出錯誤信號,而無需檢查由實現計算的特定值。SIN(X)=SIN(π−x)因此是一種蛻變關係,它扮演測試預言(也稱爲‘僞Oracle’)的角色,以幫助錯誤檢測。

在ML測試中,許多變形關係基於訓練或測試數據的變換,這些數據預期在預測輸出中產生不變或某些預期變化。在研究相應的變質關係時,數據轉換的粒度是不同的。某些轉換執行粗粒度更改,如擴大數據集或更改數據順序,而不更改每個數據實例。我們稱這些轉換爲“粗粒度數據轉換”。有些轉換通過對每個數據實例進行較小的更改來進行數據轉換,如改變圖像的屬性、標籤或像素,本文將其稱爲“細粒度數據轉換” 。下面介紹每種類型變換的相關工作。

Coarse-grained Data Transformation.(粗粒度數據轉換)

  • 早在2008年,墨菲等人介紹了輸入數據的六種變換:加法變換、乘法變換、置換變換、倒置變換、包含變換和互斥變換。這些改變包括向數值添加常量;將數值乘以常量;排列輸入數據的順序;顛倒輸入數據的順序;移除部分輸入數據;添加附加數據。
  • 丁等人。[116]提出11種蛻變關係來測試深度學習系統。在數據集級,蛻變關係還基於不應影響分類精度的訓練數據或測試數據變換,例如將10%的訓練圖像添加到訓練數據集的每個類別中或從數據集中移除一類數據。該評估基於生物細胞圖像的分類。
  • Murphy等人。[117]呈現出功能級的變質關係。對9個機器學習應用的評估表明,函數級屬性比應用級屬性的效率高170%。

Fine-grained Data T ransformation.(細粒度數據轉換)

  • 2009年,謝等人提出。[118]提出使用特定於某一模型的變形關係來測試有監督分類器的實現。本文提出了五種類型的變質關係,它們能夠根據輸入的特定變化來預測輸出的預期變化(如類、標籤、屬性的變化)。Dwarakanath等人。[121]將變形關係應用於支持向量機和深度學習系統的圖像分類。對數據的改變包括改變特徵或實例順序、測試特徵的線性縮放、歸一化或放大測試數據、或改變數據的卷積運算順序。建議的MRS能夠找到71%的注入細菌。Sharma和Wehheim[122]考慮了細粒度數據轉換,例如更改特徵名稱、重命名特徵值以測試公平性。他們研究了14個分類器,發現沒有一個對特徵名稱洗牌敏感。
  • 張某等人。[54]提出了一種結合變形關係和數據突變檢測過擬合的擾動模型驗證方法(PMV)。PMV通過在訓練數據中注入噪聲來改變訓練數據,從而產生擾動訓練數據集,然後檢查訓練準確率隨噪聲程度的增加而下降的情況。訓練精度下降得越快,機器學習模型的擬合程度就越低。
  • Al-Azani和Hassine[123]研究了樸素貝葉斯、k近鄰及其集成分類器的變質關係。結果表明,樸素貝葉斯和k近鄰所需的變質關係對於它們的集成分類器可能不是必需的。
  • 田等人。[76]和張等人的研究成果。[79]聲明在不同天氣條件下,自動車輛轉向角不應對變換後的圖像有明顯變化或保持不變。Ramanagopal等人。[124]利用相似圖像的分類一致性作爲自動駕駛汽車的測試標尺。評估表明,當檢測到未標記數據中的錯誤時,精度爲0.94。
  • 此外,Xie [125]提出了一種非監督學習驗證的變質測試方法METLE。Mettle有六種不同粒度的變質關係,這些關係是專門爲無人監督的學習者設計的。這些變形關係操作實例順序、清晰度、密度、屬性或注入數據的離羣值。這項評估是基於由Scikit-Learning生成的綜合數據,表明METLE在驗證無監督學習者方面是實用和有效的。Nakajima等人。[113],[126]討論了使用不同粒度的變形關係來發現支持向量機和神經網絡中的問題的可能性,例如操縱實例順序或屬性順序、反轉標籤和改變屬性值,或者操縱圖像中的像素

Metamorphic Relations between Different Datasets. (不同數據集之間的蛻變關係)

  • 不同數據集之間的一致性關係也可以看作是可用於檢測數據錯誤的蛻變關係。Kim等人。[127]和Breck等人。[45]研究了訓練數據與新數據之間的變質關係。如果訓練數據和新數據具有不同的分佈,則訓練數據可能不夠充分。Breck等人。[45]還研究了時間相近的不同數據集之間的變質關係:由於數據生成代碼頻繁劇烈更改的情況並不常見,因此期望這些數據集具有一些共同的特徵。

Frameworks to Apply Metamorphic Relations.(應用變質關係的框架)

  • 墨菲,實現了框架以自動執行使用變形關係檢測ML錯誤的過程。該框架通過在進行結果比較時設置閾值來減少誤報。他們還開發了Corduroy[117],它擴展了Java建模語言,允許開發人員指定變形屬性併爲ML測試生成測試用例。

Test Oracles的交叉引用

交叉引用(Cross-Referencing)是另一種用於ML測試的測試預言,包括差異測試(differential Testing)N版本編程(N-version Program-ming)。差異測試是一種傳統的軟件測試技術,它通過觀察類似的應用程序是否產生關於相同輸入的不同輸出來檢測錯誤[11],[131]。N版本編程的目標是基於一個規範生成多個功能等價的程序,從而使不同版本的組合更具容錯性和健壯性。

  • Davis和Weyuker[11]討論了對“不可測試”程序進行差異測試的可能性。其思想是,如果算法的多個實現在一個相同的輸入上產生不同的輸出,則至少有一個實現包含缺陷。
  • DeepXplore[1]和DLFuzz[90]使用差異測試作爲測試預言,以找到有效的測試輸入。在測試生成期間,首選那些在不同算法或模型之間導致不同行爲的測試輸入。
  • Sun等人。[86]在修復機器翻譯系統時應用了交叉引用。他們的方法,TransRepair,比較不同變異輸入的輸出(即翻譯),並選擇與其他輸入最相似的輸出作爲更好的翻譯候選。

設計Test Oracles的度量標準

一些工作已經給出了ML系統的非功能特徵的定義或統計度量,包括魯棒性[137]、公平性[138]、[139]、[140]和可解釋性[65]、[141]。這些測量不是用於測試的直接預言,但對於測試人員理解和評估測試下的屬性以及提供一些可以與預期的統計數據進行比較的實際統計數據是必不可少的。

測試充分性

測試充分性評估的目的是發現現有測試是否具有良好的故障揭示能力。它爲測試活動提供了一個客觀的置信度度量。充分性準則也可以用來指導測試生成。傳統軟件測試中流行的測試充分性評估技術包括代碼覆蓋突變測試,ML測試也採用了這兩種技術。

覆蓋測試

在傳統的軟件測試中,代碼覆蓋率衡量測試套件執行程序源代碼的程度[144]。測試套件的覆蓋率越高,隱藏的錯誤就越有可能被發現。換句話說,覆蓋代碼片段是檢測代碼中隱藏的缺陷的必要條件。通常需要創建測試套件來實現更高的覆蓋率。

Neuron coverage. 神經元覆蓋率。 Pei等人。[1]提出了第一個覆蓋標準,神經元覆蓋,專門爲深度學習測試而設計。神經元覆蓋率計算爲所有測試輸入激活的唯一神經元數量與DNN中神經元總數的比率。具體地說,如果神經元的輸出值大於用戶指定的閾值,則激活神經元。

Ma等人。[92]擴展了神經元覆蓋的概念。他們首先根據訓練數據描述DNN,從而獲得每個神經元相對於訓練數據的激活行爲。基於此,他們提出了更細粒度的判據,k-多節神經元覆蓋、神經元邊界覆蓋和強神經元激活覆蓋,來表示DNN的主要功能行爲和角落行爲。

MC/DC coverage variants. MC/DC覆蓋變體。 Sun等人。[145]在MC/DC覆蓋標準的啓發下,針對DNN的不同特點提出了四個測試覆蓋標準[146]。MC/DC觀察布爾變量的變化,而他們提出的標準觀察神經元的符號、值或距離的變化,以便捕捉測試輸入中的因果變化。該方法假設DNN是完全連接的網絡,並且不考慮其自己層中的神經元的上下文以及同一層內的不同神經元組合[147]。

Layer-level coverage. 層級覆蓋。 Ma等人。[92]還提出了層級覆蓋標準,該標準考慮了頂級過度活躍神經元及其組合(或序列)來表徵DNN的行爲。基於數據集MNIST和ImageNet對該覆蓋率和神經元覆蓋率進行了評估,結果表明該覆蓋率具有更好的性能。在他們的後續工作[148],[149]中,他們進一步提出了組合測試覆蓋率,即通過檢查一層中神經元激活相互作用的比例來檢查每一層中神經元的組合激活狀態。Sekhon和Fleming[147]定義了一個覆蓋標準,它尋找1)同一層中具有所有可能值組合的所有神經元對,以及2)具有所有可能值組合的連續層中的所有神經元對。

State-level coverage. 狀態級覆蓋。 雖然後面提到的準則在某種程度上捕捉了前饋神經網絡的行爲,但它們並不像遞歸神經網絡(RNN)那樣明確地刻畫有狀態機器學習系統的特徵。基於RNN的ML方法在處理順序輸入(例如,語音音頻、自然語言、網絡物理控制信號)的應用中取得了顯著的成功。爲了分析這類有狀態ML系統,Du [82]提出了第一套專門針對基於RNN的有狀態深度學習系統的測試標準。他們首先將有狀態深度學習系統抽象爲概率轉移系統。在建模的基礎上,他們提出了基於狀態和轉移系統軌跡的判據,以捕捉動態狀態轉移行爲。

Limitations of Coverage Criteria. 覆蓋標準的限制。 雖然有不同類型的覆蓋標準,但大多數都集中在DNN上。Sekhon和Fleming[147]檢查了現有的DNNs測試方法,並討論了這些標準的侷限性。

大多數建議的覆蓋標準都是基於DNN的結構。Li等人。[150]指出了由於神經網絡和人類編寫的程序之間的根本差異而導致的深度網絡結構覆蓋標準的侷限性。他們對自然輸入的初步實驗發現,測試集中錯誤分類的輸入的數量與其結構覆蓋率之間沒有很強的相關性。由於機器學習系統的黑箱性質,目前還不清楚這樣的標準如何與系統的決策邏輯直接相關

變異測試

在傳統的軟件測試中,突變測試通過注入故障來評估測試集的故障揭示能力[144],[151]。檢測到的故障與所有注入故障的比率稱爲突變分數。

在ML測試中,ML系統的行爲不僅取決於學習代碼,還取決於數據和模型結構。Ma等人。[152]提出了DeepMutation,在源級或模型級對DNN進行變異,對DNN的決策邊界進行微小擾動。基於此,突變得分被定義爲其結果被改變的測試實例相對於實例總數的比率

沈等人。[153]提出了5種DNNs變異算子,並對MInst數據集上的變異性質進行了評估。他們指出,需要特定區域的突變算子來加強突變分析。

與結構覆蓋準則相比,基於突變測試的準則與DNN的決策邊界更直接相關。例如,在DNN的決策邊界附近的輸入數據可以更容易地檢測DNN及其突變體之間的不一致性。

令人驚訝的充分性

Kim等人。[127]引入驚喜充分性來衡量深度學習系統離散輸入驚喜範圍的覆蓋率。他們認爲,當根據訓練數據衡量測試多樣性時,測試多樣性更有意義。與訓練數據相比,一個“好的”測試輸入應該是“足夠的,但不是太令人驚訝”。引入了兩種驚喜度量:一種是基於一般密度估計(KDE)來近似系統在訓練期間看到類似輸入的可能性,另一種是基於表示給定輸入的神經元激活軌跡的向量與訓練數據之間的距離(例如歐幾里德距離)。這些標準可以用來檢測對抗性例子。需要進一步的研究來確定這樣的標準是否能夠使ML模型的行爲邊界在驚喜方面得到近似。研究對抗性例子、自然錯誤樣本和基於意外的標準之間的關係也將對未來的工作很有意義。

基於規則的測試充分性檢查

爲了確保ML系統的功能,可能需要一些“典型”規則。Breck等人。[154]提供了需要考慮的28個測試方面和Google使用的評分系統。他們的重點是衡量給定的機器學習系統測試得有多好。28個測試方面被分爲四種類型:1)ML模型本身的測試,2)用於構建模型的ML基礎設施的測試,3)用於構建模型的ML數據的測試,以及4)16檢查ML系統隨着時間的推移是否正確工作的測試。它們中的大多數都是一些必須檢查的規則,可以用來指導測試生成。例如,培訓過程應該是可重現的;所有功能都應該是有益的;不應該有比當前模式更簡單但性能更好的其他模式。他們的研究表明,儘管ML測試很複雜,但設計一些基本的測試用例來測試ML系統的基本功能是有共同性的。

測試優先級排序和減少

ML中的測試輸入生成需要覆蓋非常大的輸入空間。另一方面,我們需要對每個測試實例進行標記,以判斷預測的準確性。這兩個方面導致了較高的測試生成成本。Byun等人。[155]使用交叉熵、驚喜和貝葉斯不確定性等DNN度量來確定測試輸入的優先級。他們的實驗表明,這些是暴露不可接受行爲的良好投入指標,這對再培訓也很有用。

生成測試輸入的計算代價也很高。張某等人。[156]建議通過確定表示更有效的對抗性示例的測試實例來降低成本。該方法是一種測試優先級排序技術,它根據測試實例對噪聲的敏感度對測試實例進行排序,因爲對噪聲越敏感的實例更有可能產生對抗性的示例。

Li [157]專注於操作DNN測試中的測試數據縮減。他們提出了一種採樣技術,由DNN最後一層隱藏層的神經元指導,使用基於交叉熵最小化的分佈近似技術。評估是在具有三個圖像數據集的預先訓練的模型上進行的:

Ma等人。[158]提出了一套基於模型置信度的測試選擇度量。對於模型來說,更不確定的測試輸入是首選的,因爲它們信息更豐富,如果在再培訓期間包括在內,應該用來改進模型。評估表明,他們的測試選擇方法比隨機選擇方法有80%以上的收益

錯誤報告分析

thung等人的研究成果。[159]我們是第一個通過分析機器學習系統的錯誤報告來研究機器學習錯誤的人。研究了來自Apache Mahout、Apache Lucene和Apache OpenNLP的500個錯誤報告。研究的問題包括錯誤頻率、錯誤類別、錯誤嚴重性和錯誤解決特徵,如修復錯誤的時間、工作量和文件號。結果表明,不正確的實現佔ML錯誤的比例最大,即22.6%的錯誤是由於定義的算法的不正確實現造成的。實現錯誤也是最嚴重的錯誤,需要更長的時間才能修復。此外,15.6%的錯誤是不起作用的錯誤。5.6%的錯誤是數據錯誤。

調試和修復

Data Resampling.數據重採樣。 5.1節中介紹的生成的測試輸入只暴露了ML錯誤,但也會作爲訓練數據的一部分進行研究,並可以通過重新訓練來提高模型的正確性。Ma等人。[162]找出了造成錯誤分類的神經元,並將其稱爲“故障神經元”。他們對影響這些故障神經元的訓練數據進行了重新採樣,以幫助提高模型性能。

Debugging Framework Development.調試框架開發。 duta等人。[163]提出了一種程序轉換框架Storm,用於生成能夠支持機器學習測試調試的較小程序。要修復錯誤,開發人員通常需要縮小測試中的程序,以編寫更好的錯誤報告,並便於調試和迴歸測試。Storm應用程序分析和概率推理來簡化概率程序,這有助於更容易地定位問題。

蔡等人。[164]提出了tfdbg,這是一個構建在TensorFlow上的ML模型調試器,Vartak等人。[165]提出了Mistique系統來捕獲、存儲和查詢模型中間件,以幫助調試。Krishnan和Wu[166]提出了Palm,Palm幫助開發人員找出對預測影響最大的訓練數據,從而針對導致錯誤預測的訓練數據子集來幫助調試。

Fix Understanding.修正理解。 修復許多機器學習系統中的錯誤是困難的,因爲錯誤可能出現在不同組件的多個點上。Nushi[167]17提出了一種人在迴路中的方法,通過人類計算任務模擬不同組件中的潛在修復:要求人類模擬改進的組件狀態。系統的改進被記錄下來並進行比較,以便爲設計人員提供如何最好地改進系統的指導。

Program Repair. 程序修復。 Albarghouthi等人。[168]針對機器學習等決策問題,提出了一種基於分佈引導的歸納綜合方法。其目的是構造一個具有正確預測輸出,但語義與原程序相似的新程序。他們的方法使用採樣實例和預測輸出來驅動程序合成,其中基於SMT對程序進行編碼。

通用測試框架和工具

還有一些工作側重於提供測試工具或框架,以幫助開發人員在測試工作流中實現測試活動。存在用於生成和驗證用於安全測試的測試輸入的測試框架

待測試的ML屬性

ML屬性關係到ML測試應該關注的條件,並且通常與ML模型在訓練後的行爲有關。然而,屬性中性能較差的原因可能是任何ML組件中的錯誤。

本節介紹測試功能性ML屬性和非功能性ML屬性的相關工作。功能屬性包括正確性(6.1節)和過度匹配(6.2節)。非功能性屬性包括健壯性和安全性(第6.3節)、效率(第6.4節)、公平性(第6.5節)。

正確性

正確性關係到ML系統的基本功能精度。經典機器學習驗證是最成熟、使用最廣泛的正確性測試技術。典型的機器學習驗證方法有交叉驗證和Bootstrap。其原理是通過數據採樣來隔離測試數據,以檢查訓練後的模型是否適合新的情況。

有幾種廣泛採用的正確性度量,如準確度、精確度、召回率和曲線下面積(AUC)。

模型相關性

模型相關性評估檢測模型和數據之間的不匹配。較差的模型相關性通常與過度擬合或不足相關聯。當一個模特對數據太複雜,甚至訓練數據的噪聲也被模型擬合[183]。過擬合很容易發生,特別是當訓練數據不足時,[184]、[185]、[186]。

交叉驗證傳統上被認爲是檢測過度擬合的有用方法。然而,並不總是清楚多大程度的過度擬合是可接受的,如果測試數據不能代表潛在的未見數據,交叉驗證可能不太可能檢測到過度擬合

張某等人。[54]引入擾動模型驗證(PMV)來幫助選擇模型。PMV向訓練數據注入噪聲,針對擾動數據重新訓練模型,然後使用訓練精度遞減率來檢測過擬合/欠擬合。直覺是,過度適應的學習器傾向於將噪聲擬合到訓練樣本中,而不適合的學習器無論是否存在注入的噪聲都將具有較低的訓練精度。因此,在擾動數據上,過擬合和欠擬合對噪聲的敏感度都較低,並且對噪聲程度表現出較小的精度降低率。在分類設置中,PMV在四個真實數據集(乳腺癌、成人、CONNECT-4和MNIST)和九個合成數據集上進行了評估。結果表明,與10倍交叉驗證相比,PMV具有更好的性能,併爲檢測過擬合/欠擬合提供了更好的識別信號。

ML系統通常在部署後收集新的數據,這些數據將被添加到訓練數據中以提高正確性。然而,不能保證測試數據代表未來的數據。Werpachowski等人。[42]提出了一種從測試數據中生成對抗性實例的過擬合檢測方法。如果對抗性示例上的重新加權誤差估計與原始測試集的重新加權誤差估計充分不同,則檢測到過擬合。

Gossmann等人。[187]通過大量的仿真研究,研究了測試數據重用實踐在醫學領域的威脅,發現在所有考慮的仿真設置下,重複使用相同的測試數據會不經意間導致過擬合。

Kirk[51]提到,我們可以將訓練時間作爲ML模型的複雜性代理,最好選擇正確性相當但訓練時間相對較少的算法。

Ma等人。[162]試圖通過重新採樣訓練數據來緩解過度擬合問題。基於對三個圖像分類數據集的評估,他們的方法被發現將測試準確率從平均75%提高到93%。

穩健性和安全性

健壯性度量標準

與正確性或過度擬合不同,健壯性是機器學習系統的非功能性特徵。衡量健壯性的一種自然方法是在存在噪聲的情況下檢查系統的正確性[137];健壯的系統應該在存在噪聲的情況下保持性能。

Moosavi-Dezgoli等人。[188]提出了DeepFool,它計算‘愚弄’深層網絡的擾動(增加的噪音),以量化它們的健壯性。Bastani等人。[189]提出了3個度量穩健性的指標:1)逐點穩健性,表示分類器的最小輸入變化不是穩健的;2)對抗性頻率,表示改變輸入改變分類器結果的頻率;3)對抗性嚴重度,表示輸入與其最近的對抗性示例之間的距離。

Carlini和Wagner[190]創建了一組攻擊,可以用來構造神經網絡健壯性的上限。Tjeng [137]提出使用測試輸入與其最接近的對手示例之間的距離來衡量魯棒性。Ruan et [191]根據測試數據給出了全局魯棒性上下界,以量化魯棒性。Gopinath[192]等人。建議的DeepSafe是一種數據驅動的方法,用於評估DNN健壯性:聚集到同一組中的輸入應該共享相同的標籤。

最近,Mangal等人。[193]提出了概率穩健性的定義。他們的工作使用抽象解釋來近似神經網絡的行爲,並計算網絡可能表現出非穩健行爲的輸入區域的過近似。

Banerjee等人。[194]探索了使用貝葉斯深度學習對深度神經網絡內部的錯誤傳播進行建模,從而對神經網絡對硬件錯誤的敏感度進行數學建模,而無需執行廣泛的故障注入實驗。

以測試數據爲目標擾動

對抗性輸入生成已被廣泛用於測試自動駕駛系統的魯棒性[1]、[76]、[79]、[92]、[93]。還研究了爲NLI模型[98]、99、惡意軟件檢測[169]和可區分神經計算機(DNC)[100]生成敵意輸入。

Carlini和Wagner[190]開發了使用距離度量來量化相似性的對抗性示例生成方法。該方法成功地爲最近提出的防禦提取網絡上的所有圖像生成對抗性示例[195]。

Papernot等人的研究成果。[196]、[197]設計了一個庫,以規範對抗性範例建設的實施。他們指出,標準化的對抗性範例生成非常重要,因爲“沒有標準化實施的對抗性範例構建所構建的基準彼此之間是不可比較的”:很難說好的結果是由高水平的健壯性還是由對抗性範例構建過程中的差異造成的。

用於生成檢查神經網絡健壯性的測試數據的其他技術包括符號執行[108]、[111]、模糊測試[90]、組合測試[148]和抽象解釋[193]。在5.1節中,我們將更詳細地介紹這些測試生成技術。

以整個系統爲目標擾動

Jha等人。[198]提出了一種利用應用/軟件故障注入近似自動車輛(A-V)系統傳感器、處理器或存儲器中的硬件錯誤來測試魯棒性的VFI方法。他們還介紹了Kayote[199],這是一個基於故障注入的工具,可以系統地將故障注入自動駕駛系統的軟件和硬件組件。與A VFI相比,Kayotee能夠使用閉環仿真環境表徵錯誤傳播和掩蔽,還能夠將位翻轉直接注入GPU和CPU架構狀態。Jha等人進一步提出的DriveFI[96]是一個故障注入式引擎,可以挖掘最大程度影響AV安全的情況和故障。

Tuncali等人。[102]考慮了整個系統的閉環行爲,不僅在圖像空間,而且在構形空間上支持自動駕駛系統的對抗性示例生成

效率

因可能是效率問題很少發生,或者這些問題很難檢測到。

Kirk[51]指出,在訓練模型時可以使用不同機器學習算法的效率來比較它們的複雜性。

Spieker和Gotlieb[200]研究了三種訓練數據約簡方法,其目標是在模型訓練過程中找到具有相似特徵的原始訓練數據集的較小子集,從而提高建模速度以進行更快的機器學習測試。

公平性

公平是一個相對較新的非功能性特徵。根據Barocas和Selbst[201]的工作,造成不公平的主要原因有以下五個。

1)Skewed sample 傾斜樣本:一旦初始偏差發生,這種偏差可能會隨着時間的推移而複合。

2)Tainted examples 有偏差的例子:由於人類的有偏見的標註活動,數據標籤是有偏差的。

3)Limited features 有限的特徵:特徵可能信息量較少或收集的可靠性較低,在建立特徵與標籤之間的聯繫時會誤導模型。

4)Sample size disparity 樣本量差異:如果來自少數羣體和多數羣體的數據高度不平衡,ML模型可能會使少數羣體表現得更差。

5)Proxies 代理:某些特徵是敏感屬性的代理(例如,人所在的街區),即使排除敏感屬性,也可能導致對ML模型的偏差。

公平性研究的重點是測量、發現、理解和處理觀察到的不同羣體或個人在績效上的差異。這種差異與公平缺陷有關,這些缺陷可能會冒犯甚至傷害用戶,並給程序員和企業帶來尷尬、不信任、收入損失,甚至違反法律[171]。

公平的定義和衡量標準

文獻中提出了幾種公平的定義,但還沒有形成明確的共識[202]、[203]、[204]、[205]。然而,這些定義可以用作在ML測試中檢測違反公平性的預言。

爲了幫助說明ML公平性的形式化,我們使用X表示一組個體,Y表示在對X中的每個個體進行決策時的真實標籤集。設h是訓練好的機器學習預測模型。設A爲敏感屬性集,Z爲剩餘屬性。

1)Fairness Through Unawareness 無意識公平。無意識公平(FTU)意味着只要在決策過程中沒有明確使用受保護的屬性,算法就是公平的[206]。這是一種成本相對較低的界定和確保公平的方式。然而,有時X中的非敏感屬性可能包含與敏感屬性相關的信息,從而可能導致歧視[202]、[206]。排除敏感屬性還可能影響模型精度併產生較不有效的預測結果[207]。

2)Group Fairness 羣體公平。 如果基於敏感屬性選擇的組具有相等的決策結果概率,則被測模型具有組公平性。有幾種類型的羣體公平。

  • Demographic Parity 人口平等性是一種流行的羣體公平性衡量標準[208]。它也被稱爲統計奇偶校驗或獨立奇偶校驗。它要求決策應該獨立於受保護的屬性。設G1和G2是屬於X的兩組除以敏感屬性aAa∈A,如果P{h(xi)=1xiG1}=P{h(xj)=1xjG2}P\left\{h\left(x_{i}\right)=1 | x_{i} \in G_{1}\right\}=P\left\{h\left(x_{j}\right)=1 | x_{j} \in G_{2}\right\},則被測模型h滿足人口統計平等性。

  • Equalised Odds 均衡賠率是Hardt等人提出的另一種羣體公平方法。當目標標籤YY固定爲yi:P{h(xi)=1xiy_{i}: P\left\{h\left(x_{i}\right)=1 | x_{i} \in\right. G1,Y=yi}=P{h(xi)=1xiG2,Y=yi}\left.G_{1}, Y=y_{i}\right\}=P\left\{h\left(x_{i}\right)=1 | x_{i} \in G_{2}, Y=y_{i}\right\}時,如果h與受保護屬性無關,則被測模型h滿足均衡賠率。

    當目標標籤被設置爲正時,均衡賠率變爲Equal Opportunity 均等機會[139]。它要求所有組的真實陽性率應該是相同的。當目標類Y固定爲正時,如果h獨立於受保護的屬性,則模型h滿足平等機會:P{h(xi)=1xiG1,Y=1}=P{h(xj)=1xjG2,Y=1}P\left\{h\left(x_{i}\right)=1 | x_{i} \in G_{1}, Y=1\right\}=P\left\{h\left(x_{j}\right)=1 | x_{j} \in G_{2}, Y=1\right\}

3) Counter-factual Fairness.違背事實的公正性。 Kusner et al.。[206]引入了反事實公正性。如果當受保護的屬性被反轉到反事實值時,模型的輸出保持不變,並且假設的因果模型所確定的其他變量被修改,則該模型滿足反事實公平性。設a是受保護的屬性,a0是a的反事實屬性,x0是變爲a0的新輸入。如果對於任何輸入X和受保護屬性 a:P{h(xi)a=yiaA,xiX}=P{h(xi)a=yiaA,xiX}.a: P\left\{h\left(x_{i}\right)_{a}=y_{i} | a \in A, x_{i} \in\right.X\}=P\left\{h\left(x_{i}^{\prime}\right)_{a^{\prime}}=y_{i} | a \in A, x_{i} \in X\right\} . ,則模型h是反事實公平的。這種公平性測量另外提供瞭解釋偏差原因的機制,因爲除了受保護的20個屬性之外的變量是受控制的,因此h(Xi)和h(X0i)的差異一定是由A的變化引起的。

4)Individual Fairness.個人公平。Dwork et [138]提出了使用特定任務的相似性度量來描述應該被視爲相似的個體對。根據Dwork等人的觀點,具有個體公平性的模型h應該在相似的個體之間給出相似的預測結果:P{h(xi)xiX}=P{h(xj)=yixjX}P\left\{h\left(x_{i}\right) | x_{i} \in X\right\}=P\left\{h\left(x_{j}\right)=y_{i} | x_{j} \in X\right\} iff d(xi,xj)<ϵd\left(x_{i}, x_{j}\right)<\epsilon,其中d是衡量個體相似性的距離度量,並且ϵ\epsilon是對這種差異的容忍。

Gajane和Pechenizkiy[202]調查了文獻中公平是如何定義和形式化的。Corbett-Davies和Goel[62]研究了三種類型的公平性定義:反分類、分類奇偶和校正。他們舉例指出了每種類型的深層統計侷限性。Verma和Rubin[203]基於一個共同的、統一的數據集解釋和說明了現有的最突出的公平性定義。

Support for Fairness Improvement. 支持提高公平性。 Metevier等人。[209]提出了Robinhood算法,Robinhood利用濃度不等式[211]來計算高概率界並搜索滿足公平性要求的解決方案。當違反要求時,它會向用戶發出警告。

Albarghouthi和Vinitsky[75]提出了“公平意識編程”的概念,其中公平是首要關注的問題。爲了幫助開發人員定義他們自己的公平規範,他們開發了一種規範語言。與傳統測試中的斷言一樣,公平性規範被開發到運行時監視代碼中,以使多次執行能夠捕獲違規行爲。用Python實現了一個原型。

Agarwal等人。[212]提出將公平性分類歸結爲代價敏感的分類問題(其中不同類型錯誤的代價是不同的)。應用場景是二進制分類,底層分類方法被視爲黑色9A上下文盜賊是一種基於諸如用戶點擊率[210]之類的獎勵來學習採取行動的算法。盒。減少優化了準確性和公平性約束之間的權衡。

Albarghouthi等人。[168]提出了一種基於分佈引導的歸納綜合修復決策方案的方法。

公平測試的測試生成技術

Galhotra等人。[5],[213]提出的使用因果分析考慮羣體公平性的主題[214]。它將公平性分數定義爲公平性的度量標準,並使用隨機測試生成技術來評估區分程度(基於公平性分數)。據報道,THEMIS在表現出更多歧視的系統上也更有效率。

Themis隨機生成組公平性測試,而Udeshi等人。[101]提出了Aequitas,重點是測試生成,以發現歧視性輸入和那些對理解個人公平性至關重要的輸入。該生成方法首先對輸入空間進行隨機採樣以發現是否存在歧視性輸入,然後搜索這些輸入的鄰域以發現更多的輸入。除了檢測公平錯誤,Aeqitas還對機器學習模型進行了重新訓練,並減少了這些模型做出的決定中的歧視。

Agarwal等人。[109]使用符號執行和本地可解釋性來生成測試輸入。關鍵思想是使用本地解釋,特別是本地可解釋模型不可知解釋來確定驅動決策的因素是否包括受保護的屬性。評估表明,在12個基準測試中,該方法生成的成功測試用例是THEMIS的3.72倍。

Tramer等人。[171]我們最先提出了“fairness bugs”的概念。他們認爲受保護的屬性和算法輸出之間在統計上顯著的關聯是一個公平錯誤,在他們的論文中特別命名爲“無保證的關聯”。他們提出了第一個全面的測試工具,旨在幫助開發人員通過“易於理解”的錯誤報告來測試和調試公平性錯誤。該工具可用於各種應用領域,包括圖像分類、收入預測和醫療預測。

Sharma和Wehheim[122]試圖通過檢查測試下的算法是否對訓練數據變化敏感來確定不公平的原因。他們以各種方式變異訓練數據,以生成新的數據集,例如更改行、列的順序,以及調整特徵名稱和值。14個分類器中有12個對這些變化敏感。

可解釋性

Manual Assessment of Interpretability.可解釋性的人工評估。現有的經驗評估可解釋性屬性的工作通常包括人類。也就是說,人工評估是目前評估可解釋性的主要方法。Doshi-V Elez和Kim[65]給出了可解釋性評估(測試)方法的分類:application-grounded, human-grounded, and functionally-grounded.

application-grounded涉及真實應用程序場景的人工實驗。human-grounded,使用簡化任務的人工評估結果。functionally-grounded不需要人工實驗,而是使用定量度量作爲解釋質量的代理,例如,決策樹模型的解釋代理可以是樹的深度。

Friedler等人。[215]介紹了兩種類型的可解釋性:全局可解釋性是指理解訓練過的模型的整體;局部可解釋性是指理解特定輸入和相應輸出上的訓練模型的結果。他們要求1000名用戶在給定輸入變化的情況下產生模型的預期輸出變化,然後記錄不同模型的精確度和完成時間。決策樹和Logistic迴歸模型被發現比神經網絡更具局部解釋力。

Automatic Assessment of Interpretability.可解釋性的自動評估。 程等人。[46]提出了理解ML模型行爲的度量標準。該度量度量學習者是否已經通過遮擋對象的環境來學習對象識別場景中的對象。

Christoph[70]提出了基於ML算法範疇的可解釋性度量。他聲稱,“實現可解釋性的最簡單方法是隻使用創建可解釋模型的算法子集”。他確定了幾個可解釋性很好的模型,包括線性迴歸、邏輯迴歸和決策樹模型

周等人。[216]定義了變質關係模式(MRP)和變質關係輸入模式(MRIP)的概念,它們可以用來幫助最終用戶瞭解ML系統是如何工作的。他們對各種系統進行了案例研究,包括大型商業網站、谷歌地圖導航、谷歌地圖基於位置的搜索、用於人臉識別的圖像分析(包括Facebook、MATLAB和OpenCV),以及谷歌視頻分析服務雲視頻智能(Cloud
Video Intelligence)。

Evaluation of Interpretability Improvement Methods. 可解釋性改進方法的評價。機器學習分類器在許多醫學應用中得到了廣泛的應用,然而預測結果的臨牀意義往往並不明確。Chen等人。[217]研究了將分類器得分轉換爲疾病概率尺度的幾種提高可解釋性的方法。他們表明,可以將任意尺度上的分類器分數校準到概率尺度,而不會影響它們的辨別性能。

隱私

丁等人。[218]將程序視爲灰箱,通過統計測試檢測不同的隱私違規行爲。對於檢測到的違規,它們會生成反例來說明這些違規,並幫助開發人員理解和修復錯誤。Bichsel等人。[219]建議估算ϵ\epsilon參數,目的是找到見證最大可能隱私侵犯的三元組(x,x0,Φ),其中x和x0是兩個測試輸入,Φ是一組可能的輸出。

ML測試組件

本節通過識別ML測試可能揭示錯誤的組件(數據、學習程序或框架)來組織ML測試工作。

應用場景

  • 自主駕駛

  • 機器翻譯

  • 自然語言推理

自主駕駛

自動駕駛汽車的測試已經有了比較長的歷史。例如,在2004年,Wegener和Bühler在評估自動停車系統的測試時比較了不同的適應度函數[243]。正如Woehrle等人指出和討論的那樣,自動駕駛汽車的測試也有很多研究機會和懸而未決的問題。[244]。
最近,用於A-V測試的基於搜索的測試生成已經成功應用。Abdessalem等人。[245],[246]側重於提高自動駕駛系統(AV)中基於搜索的高級駕駛員輔助系統(ADA)測試的效率和準確性。他們的算法使用分類模型來提高關鍵場景的基於搜索的測試生成的效率。進一步使用搜索算法對分類模型進行細化,以提高分類模型的準確率。Abdessalem等人。[247]還提出了一種多目標搜索算法FITEST,用於搜索違反系統要求或導致失敗的特徵交互。
目前投放市場的大多數自動駕駛車輛系統都是半自動車輛,需要人類駕駛員作爲後備[161],Wegener和Bühler的工作就是如此[243]。導致人類駕駛員控制車輛的問題稱爲脫離。
Banerjee等人。[161]調查了12家汽車製造商對144輛累計行駛1116605英里的汽車的5328次脫離的原因和影響,其中42次(0.8%)導致了事故。他們將脫離的原因分爲10種。64%的脫離是由機器學習系統中的錯誤引起的,其中圖像分類行爲(例如,對紅綠燈、車道標記、洞和凸起的錯誤檢測)是導致脫離的主要原因,佔所有報告的脫離的44%。剩下的20%是由於控制和決策框架中的錯誤,如不正確的運動規劃
Pei等人。[1]使用基於梯度的差異測試來生成測試輸入,以檢測潛在的DNN錯誤,並利用神經元覆蓋作爲指導。田等人。[76]提出使用一組圖像變換來生成測試,該測試模擬從真實攝像機獲取的圖像中可能存在的潛在噪聲。張某等人。[79]提出了一種基於GaN的生成真實駕駛場景測試圖像的方法DeepRoad。他們的方法能夠支持兩種天氣條件(即下雪和下雨)。這些圖片是用YouTube視頻中的圖片生成的。周等人。[81]建議使用DeepBillboard生成真實世界的對抗性廣告牌,該廣告牌可能會引發自動駕駛系統的潛在轉向錯誤。它展示了爲實用的自動駕駛系統生成連續和現實的物理世界測試的可能性
Wicker等人。[93]使用功能引導的蒙特卡羅樹搜索來確定圖像中最容易受到自動駕駛系統攻擊的元素;敵意示例。Jha等人。[96]通過將故障注入AV系統作爲貝葉斯網絡進行分析建模,加快了發現“安全關鍵”問題的過程。該方法訓練網絡自動識別安全關鍵故障。該評估基於NVIDIA和百度的兩個生產級AV系統,表明該方法可以發現許多故障導致安全違規的情況
Uesato等人。[94]旨在發現強化學習中自動駕駛等安全關鍵代理的災難性故障。他們論證了傳統隨機測試的侷限性,然後提出了一種預測性對抗性示例生成方法來預測失敗和估計可靠的風險。在TORCS模擬器上的評估表明,該方法在減少蒙特卡羅運行次數的情況下是有效和高效的。
爲了測試算法是否會導致有問題的模型,Dreossi等人。[170]建議生成培訓數據和測試數據。專注於卷積神經網絡(CNN),他們建立了一個工具來生成自然圖像,並將收集的信息可視化,以檢測自動駕駛場景下的盲點或拐角情況。雖然目前沒有評估,但該工具已經可用11。
Tuncali等人。[102]提出了一個既支持系統級測試又支持ML組件那些屬性測試的框架。該框架還支持模糊測試輸入生成和使用模擬退火和交叉熵優化等方法的基於搜索的測試。
當許多其他研究出於研究目的而調查DNN模型測試時,周等人。[95]採用模糊化和變形測試相結合的方法,對無人駕駛汽車的障礙物感知模塊LiDAR進行測試,檢測出真實的致命缺陷。
Jha等人。提出了VFI[198]和Kayote[199]這兩個基於故障注入的工具,系統地將故障注入到自動駕駛系統中,以評估其安全性和可靠性
O‘Kelly等人。[72]提出了一個“基於風險的框架”,用於A-V測試,以預測交通行爲(來源於美國交通部收集的公共交通數據)的基本分佈中發生事故的可能性。他們爭辯說,由於正式定義“正確性”和白盒要求的挑戰,正式驗證AV系統的正確性是不可行的。傳統的在真實環境中測試AV需要令人望而卻步的時間。爲了解決這些問題,他們將AV測試視爲罕見事件模擬問題,然後評估事故概率以加速AV測試。

機器翻譯

機器翻譯自動將文本或語音從一種語言翻譯成另一種語言。BLEU評分是評價機器翻譯質量的一種廣泛採用的衡量標準,它評估機器的輸出與人的輸出之間的一致性。
周等人。[129],[130]在他們的工具MT4MT中使用了自定義的變形關係來測試機器翻譯系統的翻譯一致性。其想法是,對輸入的某些更改不應影響翻譯後輸出的整體結構。他們的評估顯示,谷歌翻譯在長句方面優於微軟翻譯器,而後者在短句和簡句方面則優於前者。因此,他們建議機器翻譯的質量評估應該考慮多個維度和多種類型的輸入。
Sun等人。[86]將變異測試和變形測試相結合,對機器翻譯系統的一致性進行測試和修復。他們的方法TransRepair實現了自動測試輸入生成、自動測試預言生成以及自動翻譯修復。他們首先對句子輸入進行突變,以發現翻譯不一致的缺陷,然後使用突變句子的翻譯以黑盒或灰盒的方式優化翻譯結果。評估表明,TransRepair平均修復了谷歌翻譯和轉換器28%和19%的錯誤。
與現有的模型再訓練方法相比,TransRepair具有以下優點:1)比數據擴充更有效;2)依賴(黑盒)中的源代碼;3)計算量小(避免了數據收集和模型再訓練的空間和時間開銷);4)靈活(可以在不接觸其他格式良好的翻譯的情況下進行修復)。
鄭等人的工作。[249],[250],[251]提出了兩種檢測機器翻譯違規的算法:(1)欠譯,即在翻譯過程中丟失了原文中的某些單詞/短語;(2)過度翻譯,即不必要地多次翻譯原文中的某些單詞/短語。該算法基於對原文和譯文的統計分析,以檢查詞/短語中是否存在一對一映射的違規。

自然語言推理

自然語言推理(NLI)任務判斷一對自然語言語句之間的推理關係。例如,“房間裏有一個人”這句話可以從“房間裏有個女孩”這句話中推斷出來。
一些工作已經檢驗了NLI模型的穩健性。Nie et al.。[98]生成句子突變體(本文稱之爲“基於規則的對手”)來測試現有的自然語言輸入模型是否具有語義理解能力。在詞級信息保持不變的情況下,七種最先進的自然語言輸入模型(具有不同的體系結構)都無法識別簡單的語義差異。
類似地,Wang et al.。[99]通過簡單地交換推理目標對來變異它們。啓發式的是,一個好的NLI模型應該報告矛盾對和中性對的原始測試集和交換測試集之間的精度相當,但對於蘊涵對的交換測試集的精度較低(假設在一個前提下可能爲真也可能不成立)。

文獻綜述分析

這一部分分析了不同測試屬性和機器學習類別之間的研究分佈。它還總結了在ML測試中使用的數據集(每個數據集的名稱、描述、大小和使用場景)。

timeline

下圖顯示了ML測試開發中的幾個關鍵貢獻。

機器學習類別間的研究分佈

本部分介紹並比較了各種機器學習類別的研究現狀

傳統機器學習與深度學習的研究分佈

有監督/無監督/強化學習測試中的研究分佈

我們在這次調查中確定的幾乎所有工作都集中在測試有監督的機器學習上

不同的學習測試要求

ML涉及不同的任務,如分類、迴歸、聚類和降維。對不同任務的研究也呈現出不平衡,大量的論文側重於分類

不同測試屬性間的研究分佈

‘general’ 是指那些討論或調查ML測試的論文

ML測試中使用的數據集

ML測試中使用的數據集


論文中使用數據集的個數

ML測試中的開源工具支持

有幾個專門爲ML測試設計的工具。Angell等人。介紹了Themis[213],一個用於測試羣體歧視的開源工具14。還有一個用於TensorFlow的ML測試框架,名爲mltest15,用於編寫簡單的ML單元測試。與mltest類似,有一個用於爲基於pytorch的ML系統編寫單元測試的測試框架,名爲torchtest。杜比等人。[237]擴展了WALA,使用TensorFlow啓用機器學習代碼的靜態分析。

與傳統測試相比,現有的ML測試工具支持相對不成熟。ML測試的工具支持還有很大的改進空間。

挑戰與機遇

ML測試中的挑戰

正如這項調查所顯示的那樣,ML測試最近經歷了快速增長。儘管如此,ML測試仍然處於其發展的早期階段,前面有許多挑戰和懸而未決的問題。

Challenges in Test Input Generation. 儘管已經提出了一系列測試輸入生成技術(參見5.1節中的更多內容),但是由於ML模型的行爲空間很大,測試輸入生成仍然具有挑戰性

基於搜索的軟件測試生成(SBST)[87]使用諸如遺傳算法之類的元啓發式優化搜索技術來自動生成測試輸入。它是一種測試生成技術,已廣泛用於傳統軟件測試範例的研究(和部署[288])。除了生成測試功能屬性(如程序正確性)的測試輸入之外,SBST還用於探索需求分析中算法公平性方面的緊張關係。[205]、[289]。SBST已成功應用於自動駕駛系統的測試[245]、[246]、[247]。由於SBST和ML之間有明顯的契合性,因此將SBST應用於生成用於測試其他ML系統的測試輸入具有很大的研究機會SBST自適應地在大的輸入空間中搜索測試輸入

現有的測試輸入生成技術側重於生成敵意輸入以測試ML系統的健壯性。然而,對抗性的例子經常受到批評,因爲它們不代表真實的輸入數據。因此,一個有趣的研究方向是如何生成自然的測試輸入,以及如何自動度量生成的輸入的自然度

Challenges on Test Assessment Criteria. 已經有很多工作探索如何評估測試數據的質量或充分性(參見5.3節中的更多內容)。然而,對於不同的評估度量是如何關聯的,或者這些評估度量與測試的故障揭示能力是如何關聯的,仍然缺乏系統的評估,這是傳統軟件測試中被廣泛研究的一個主題[290]。測試評估標準與測試充分性之間的關係尚不清楚。此外,評估標準可能爲解釋和理解ML模型的行爲提供了一種方法,這可能是一個有趣的進一步探索的方向。

Challenges Relating to The Oracle Problem. Oracle問題仍然是ML測試中的一個挑戰。變質關係是有效的僞oracle,但在大多數情況下,它們需要由人類的聰明才智來定義。因此,剩下的挑戰是自動識別和構建用於ML測試的可靠測試oracle。

Murphy等人。[128]討論了當涉及浮點計算時,變形測試中如何可能出現片狀測試。薄片測試檢測是傳統軟件測試中的一個具有挑戰性的問題[288]。由於Oracle問題,在ML測試中可能更具挑戰性。

即使沒有薄片測試,僞oracle也可能不準確,導致許多假陽性。因此,有必要探索如何產生更準確的測試oracle,以及如何減少報告問題中的假陽性。在測試ML算法a時,我們甚至可以使用ML算法b來學習檢測假陽性oracle。

Challenges in Testing Cost Reduction. 在傳統的軟件測試中,成本問題仍然是一個大問題,產生了許多降低成本的技術,如測試選擇、測試優先級排序和預測測試執行結果。在ML測試中,成本問題可能更加嚴重,特別是在測試ML組件時,因爲ML組件測試通常需要重新訓練模型或重複預測過程。它還可能需要數據生成來探索巨大的模式行爲空間。

降低成本的一個可能的研究方向是將ML模型表示爲中間狀態,以使其更易於測試

我們還可以應用傳統的成本降低技術,例如測試優先級排序或最小化,在不影響測試正確性的情況下減少測試用例的大小。

更多ML解決方案部署到不同的設備和平臺(例如移動設備、物聯網邊緣設備)。由於目標設備的資源限制,如何在不同的設備上有效地測試ML模型以及部署過程也將是一個挑戰。

ML測試中的研究機會

ML測試還有很多研究機會。這些不一定是研究挑戰,但可能會使機器學習開發人員和用戶以及整個研究社區極大地受益。

Testing More Application Scenarios. 目前很多研究都集中在監督學習,特別是分類問題上。需要對與測試、無監督和強化學習相關的問題進行更多的研究

目前文獻中處理的測試任務主要集中在圖像分類上。在許多其他領域,如語音識別、自然語言處理和代理/遊戲發揮,仍有令人興奮的測試研究機會。

Testing More ML Categories and Tasks. 我們觀察到在不同機器學習類別和3測試技術覆蓋率方面存在明顯的不平衡,測試無監督和強化學習系統既有挑戰,也有研究機會。

例如,遷移學習,一個最近很受關注的話題,專注於存儲在解決一個問題時獲得的知識,並將其應用於另一個不同但相關的問題[291]。遷移學習測試也很重要,但在現有的文獻中涉及得很少。測試其他屬性。從圖10中,我們可以看到,大多數工作測試健壯性和正確性,而研究效率、模型相關性或可解釋性的論文相對較少(不到3%)。

模型相關性測試具有挑戰性,因爲未來數據的分佈往往是未知的,而許多模型的容量也是未知的,很難衡量。對ML模型中模型相關性差的普遍性以及模型相關性差與高安全風險之間的平衡進行實證研究可能是很有意義的。

爲了測試效率,需要測試不同級別的效率,例如在不同平臺、機器學習框架和硬件設備之間切換時的效率。

爲了測試屬性的可解釋性,現有的方法主要依賴於人工評估,它檢查人類是否能夠理解ML模型的邏輯或預測結果。調查可解釋性的自動評估和可解釋性違規的檢測也將是很有趣的。

對公平和可解釋性的定義和理解缺乏共識。因此,需要在不同的背景下進行更明確的定義、形式化和實證研究。

已經討論過機器學習測試和傳統軟件測試在對不同屬性的預期保證方面可能有不同的要求[292]。因此,需要更多的工作來探索和識別那些對機器學習系統最重要的屬性,因此值得進行更多的研究和測試。

Presenting More Testing Benchmarks,現有的ML測試試卷採用了大量的數據集。這些數據集通常是用於構建機器學習系統的數據集。據我們所知,像CleverHans17這樣的基準測試很少是專門爲ML測試研究目的而設計的,比如對抗性示例構建。

Covering More Testing Activities 據我們所知,ML測試文獻中缺少對ML系統的需求分析。

現有的工作主要集中在離線測試上。在線考試值得更多的研究。

根據amshi et al.。[8],數據測試尤爲重要。這個課題當然值得更多的研究。此外,ML測試中還存在許多回歸測試、錯誤報告分析和錯誤分類的機會

由於機器學習算法的黑箱性質,與傳統的軟件測試相比,ML測試結果通常更難讓開發人員理解。在ML測試中,測試結果的可視化可能特別有幫助,可以幫助開發人員理解錯誤,並幫助定位和修復錯誤。

Mutating Investigation in Machine Learning System. 已經有一些研究討論了變異機器學習代碼[128],[240],但還沒有工作探索如何更好地設計機器學習代碼的變異算子,以便突變體能夠更好地模擬真實世界的機器學習錯誤。這是另一個研究機會

總結

我們對ML測試的研究工作進行了全面的綜述和分析。該調查給出了不同ML測試屬性、測試組件和測試工作流的定義和研究現狀。總結了用於實驗的數據集和可用的開源測試工具/框架,分析了ML測試的研究趨勢、方向、機遇和挑戰。我們希望這項調查能幫助軟件工程和機器學習研究人員熟悉ML測試的現狀和開放的機會。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章