對抗機器學習是一個機器學習與計算機安全的交叉領域。對抗機器學習旨在給惡意環(huán)境下的機器學習技術提供安全保障。由于機器學習技術一般研究的是同一個或較為穩(wěn)定的數(shù)據(jù)分布,當部署到現(xiàn)實中的時候,由于惡意用戶的存在,這種假設并不一定成立。比如研究人員發(fā)現(xiàn),一些精心設計的對抗樣本(adversarial example)可以使機器學習模型不能成功地輸出正確的結(jié)果。針對模型的攻擊問題,我們主要分為兩大類,就是從訓練階段和推理(inference)階段來進行討論。
?訓練階段的攻擊
訓練階段的惡意攻擊(Training in Adversarial Settings),主要的目的就是針對模型的參數(shù)進行微小的擾動,從而讓模型的性能和預期產(chǎn)生偏差。這樣的行為主要是通過數(shù)據(jù)投毒來完成的。
不過在此之前,有個前提,在PAC理論中,有一個已經(jīng)論證的結(jié)論:對于任意的學習算法而言,其置信度β,必須滿足β≤Σ\1+Σ,其中Σ表示了學習準確率。那么也就是說,當需要達到90%的學習準確率(Σ=0.1),那么被擾動的數(shù)據(jù)量必須少于10%(0.1/1+0.1)。
1)標簽操縱(label manipulation)
這個方法很直觀,就是直接通過對于訓練數(shù)據(jù)的標簽進行替換,讓數(shù)據(jù)樣本和標簽不對應,最后訓練的結(jié)果一定是不如預期的。有前人在SVM的場景下,隨機替換了約40%的數(shù)據(jù),對其算法進行了破壞,最后的效果也如預期一樣好。其實這只是在二分類問題中起到了比較好的效果,但是在多分類的情況下并沒有很好的解釋,或者是實證性的研究。(這里可以有一個比較有趣的思考,如果二分類的分類替換了40%的數(shù)據(jù)會導致模型的預測結(jié)果很不好,那么多分類的SVM需要替換多少數(shù)據(jù)樣本的標簽?是需要替換更少的標簽,還是更多?是隨機替換還是有目標性的都替換成一種?)后來的研究則是對這個標簽操縱的過程更加優(yōu)化,是否能通過更少的標簽替換,來實現(xiàn)更強烈的模型擾動,從而產(chǎn)生更有說服力的攻擊模。
2)輸入操縱(input manipulation)
在此攻擊場景下,攻擊者需要獲知模型的算法類型,并且能結(jié)束到訓練集。比較直接的攻擊方式,則是通過在線的方式獲得訓練數(shù)據(jù)的輸入權,那么最終的結(jié)果就是直接通過惡意數(shù)據(jù)來擾動在線訓練過程,自然最后的結(jié)果就是脫離預期,從而導致惡意者的操縱成功。而當我們無法接觸到在線模型的時候,我們只能通過線下的方式操縱訓練數(shù)據(jù),那么則需要構
造盡量少且惡意程度盡量高的惡意樣本,那么這就可以使用梯度上升的方法去達到局部分類錯誤最大的結(jié)果,從而完成樣本構造,然后再輸入到模型中進行訓練。那么,當我們無法直接接觸到在線訓練模型或離線時,我們也無法接觸到訓練數(shù)據(jù),我們該怎么進行輸入的操縱呢?從之前的流程介紹中我們也提到了,在物理世界獲取數(shù)據(jù)的時候,這階段并沒有受到很好的保護。因此這階段的數(shù)據(jù),我們可以通過惡意地攻擊物理世界中的數(shù)據(jù)來獲取,例如交通信號燈,或者是自動駕駛攝像頭正在拍攝的圖像等。通過其在數(shù)據(jù)轉(zhuǎn)換之前,就進行數(shù)據(jù)的污染,或是數(shù)據(jù)表示的污染。
?推理階段的攻擊(Inference in Adversarial Settings)
當訓練完成一個模型之后,這個模型就可以看做一個BOX,那么這個盒子中,對于我們?nèi)绻峭该鞯脑挘覀兙桶阉敵墒恰鞍缀小蹦P?,如果這個盒子中,我們什么都看不了,我們就把它當成“黑盒”模型。(我們在這個部分不討論灰盒模型)那么針對白盒和黑盒的進攻手段自然是不同的,但是最終的目的都是希望能對模型的最終結(jié)果產(chǎn)生破壞,與預期脫離。其影響力以及攻擊的構造粒度也是有所不同的。
1)白盒攻擊(White-Box Adversarial)
當然這種所謂的“白盒攻擊”,需要提供一個很“假”的前提——就是我們需要知道里面所有的模型參數(shù),這個在現(xiàn)實生活中是非常不現(xiàn)實的。除非是,當模型被打包壓縮到智能手機上之后,然后惡意者通過逆向工程來進行原有模型的復原,才有可能。當然這種情況出現(xiàn)的情況非常低了,因此我們需要有這種前提假設。
2)黑盒攻擊(Black-Box Adversarial)
當模型處于黑盒的時候,更加符合現(xiàn)實的場景,但是這比白盒的模型缺少了更多的模型信息。因此,大家就從幾個角度考慮如何進行模型攻擊:通過輸入和輸出猜測模型的內(nèi)部結(jié)構;加入稍大的擾動來對模型進行攻擊;構建影子模型來進行關系人攻擊;抽取模型訓練的敏感數(shù)據(jù);模型逆向參數(shù)等。
其中有兩個方法比較有趣。一個是加入擾動來對模型進行攻擊。這個方法最主要針對的是,找到原有模型的“blind spot”,或是說“blind area”。這些區(qū)域主要是原有模型模棱兩可的區(qū)域,或是boundry,這對二分類的問題來說可能這些區(qū)域比較小或是比較狹窄,但是如果針對的是多分類問題,就可能在高維空間中提現(xiàn)出更多的“blind area”。因此盡量高地命中這些盲區(qū),是這種方法致力于的方向,同時這里也提出一個思考,這樣的盲區(qū)是否是可以定向搜索的,或者是否可以用一個模糊的算法bound住這些區(qū)域。
第二是建立影子模型,通過構建一個功能性類似的模型,來仿造一個攻擊空間。類似于軍事演習,想要在戰(zhàn)場上打出好的效果,就要模擬產(chǎn)戰(zhàn)場上可能發(fā)生的情況,但是目前對戰(zhàn)場的情況一無所知,所以只能根據(jù)大致的情況去模擬。模型也是如此,只能對黑盒的情況進行對應的訓練模擬,然后對其進行“白盒”的嘗試,由于模型的遷移性還不錯,或者說類似的算法都有不少的相同點,因此,影子模型的攻擊成效還是不錯的。