在語音識別領域,對抗樣本的研究和發展狀況如何?

Arphetian

想要讓深度學習系統走向大街小巷、走進千家萬戶,就要在算法研發階段給出系統的魯棒性檢驗。對於圖像對抗性攻擊的討論正是如火如荼,攻防雙方都是妙手頻出的狀態。例如,來自 MIT 和 UC Berkeley 的兩位博士生,Anish Athalye 和 Nicholas Carlini 就接連攻破了 7 篇 ICLR 2018 接收的對抗防禦文章,指出,你們的防禦策略不過都是基於「混淆梯度」(obfuscated gradient)現象的「虛假安全感」。雖然 Ian Goodfellow 回應稱「混淆梯度」不過是之前「梯度遮擋」(gradient masking)的老調重彈,而且聲稱「遍歷了 ICLR 8 篇對抗防禦論文」的作者是不是漏掉了我參與的 ICLR 入選論文《Ensemble Adversarial Training: Attacks and Defenses》呀?但 Ian 的回擊仍然不妨礙 Athalye 和 Carlini 成為名噪一時的攻方代表。


圖像領域的攻擊防禦如此熱鬧,是因為圖像識別的應用場景直指安防、自動駕駛這類關乎生命安全的方向,而當 2017 年,當國內外業界裡,無論是雄踞一方的巨頭還是嶄露頭角的新秀,都爭先恐後地發佈「智能音箱」,進而用跳樓價在家居語音入口這個還遠不成氣候的領域裡圈地盤的時候,學界對於語音對抗性攻擊的關注,也終於在視覺之後水漲船高了。



本文接下來,就將沿著這篇工作展開,簡單聊聊對抗樣本的分類,然後驗證一下作者提供的對抗樣本的攻擊效果。


首先聊聊對抗樣本的分類。


「白箱、定向、需要直接輸入」這三個修飾「攻擊」的形容詞,其實都在從攻擊的力度層面對對抗樣本進行分類。閱讀對抗樣本相關工作的時候,我們首先可以問這樣三個問題:


1 對抗樣本的製造過程中,是否擁有模型結構及參數的知識?


如果答案是肯定的,那麼攻擊是「白箱」攻擊。如果答案是否定的,則為「黑箱」攻擊。


瞭解模型結構和參數,換言之瞭解模型的預測行程的過程,就能夠有的放矢地進行對抗樣本的構建,這無疑是更容易的,因此最先成功的以及當前大部分的對抗樣本都是白箱攻擊。


是否有成功的黑箱攻擊呢?在圖像領域,有,Ian Goodfellow 在 2016 年參與的一篇文章,《Practical Black-Box Attacks against Machine Learning》,就給出了一個「利用原模型生成樣本及標籤,創建合成訓練集(synthetic dataset)、利用訓練集建立原模型的替代網絡(substitute network)、再利用替代網絡優化創建對抗樣本」的解決方案。



2 對抗樣本能保證模型錯誤的類型嗎?


如果答案是肯定的,那麼進行的是定向(targeted)攻擊,否則則是非定向(untargeted)攻擊。


具體一點解釋,對於非定向攻擊來說,能讓一個區分動物的模型把貓識別成任何其他動物,都算是攻擊成功。而對於定向攻擊來說,構建對抗樣本的時候的目標要更加明確:例如,目標是讓模型把貓識別成狗,那麼如果模型把貓識別成了兔子,仍然要說定向攻擊是失敗的。

本文是一個定向攻擊,如下圖所示,給定一個聲波 x,可以造出一個干擾項 δ,讓 x+δ 能夠被機器識別成指定的、與 x 不同的標籤。


不過!Mozilla DeepSpeech 在今年 1 月底更新了 v0.1.1,進行了一些依賴項調整,重新訓練了參數,但並沒有改動主要結構。然而在後文,當我用新版本測試作者給出的對抗樣本的時候,發現攻擊樣本已經不能「指哪兒打哪兒」地篡改語音內容了,而是會輸出一段亂碼,換言之,一旦白箱設定稍有收縮、參數改動,定向攻擊就會退化成非定向攻擊。


3 對抗樣本可以進入現實場景嗎?


這個問題聽起來非常寬泛,但其實是衡量對抗樣本威脅性的一個重要指標。


如果答案是否定的,樣本需要直接作為輸入進入模型,那麼其威脅性是有限的。例如本文中的音頻樣本,只能直接以 WAV 格式交給模型,才能有攻擊效果;如果用播放器播放再用麥克收音,攻擊就完全失效了——不只是從定向攻擊退化成非定向攻擊,而是完全沒有攻擊效果。


如果答案是肯定的,那麼語音攻擊的樣本就可以在不知不覺中喚醒你的語音助手然後進行特定的操作。去年浙江大學的《DolphinAttack: Inaudible Voice Commands》,就利用了諧波以及麥克風和人耳接受聲音頻率的範圍不同,實現在人感知不到的情形下通過麥克風喚醒 Siri、Google Assistant 和 Alexa 等系統並執行相應語音命令的操作。當然,考慮到這類攻擊必須利用專業設備、設備距離麥克風不超過 1.5 米,以及供應商可以在系統端通過設置允許頻率範圍進行防禦等等特點,這類攻擊真實的「威脅性」並沒有那麼高,但是它確實是可以進入現實場景的攻擊。


圖像領域裡進入現實場景的樣本攻擊就更多了,有可以打印出來放在待識別物體周圍擾亂分類的貼紙,也有哪怕不是直接進入模型,而是被攝像機捕捉,也仍然能進行攻擊的像素改變技術。


總之,白箱還是黑箱、是否定向、是否可以進入現實場景,是根據攻擊的威脅性對對抗樣本進行分類的三個相對重要的角度,除此之外,也有是否對壓縮魯棒、是否可遷移等其他衡量標準,大家可以閱讀論文做詳細瞭解。


解釋完一連串的形容詞之後來看看對抗樣本的測試攻擊效果。


作者在個人網站上(https://nicholas.carlini.com/code/audio_adversarial_examples/)公佈了一些對抗樣本的樣例。人耳聽起來幾乎一樣的一段語音,(聽起來都是一個帶著咖喱口音的大叔在說「that day the merchant gave the boy permission to build the display」,只不過後兩個樣本中背景裡有輕微的雜音)會被系統分別識別為三句截然不同的話。


我利用 Google Colab 薅了一點點 GPU 資源測試了下 DeepSpeech 對攻擊的反應。關於 Google Colab 的用法,可以參考之心之前的文章:Colab詳細使用教程。


首先把上面三個音頻文件放在 Google Drive 上,並通過右鍵選擇「Get Sharable Link」拿到對應的 id(鏈接中 id= 後面的部分)。



然後開一個 Colab Notebook,在選項欄 Edit ==》Notebook Setting 裡選擇 GPU。


安裝 DeepSpeech 包:


下載模型 0.1.0 版本:

注意,最新版是 0.1.1,作者用的版本是 0.1.0,不要下錯。

驗證模型文件的 MD5 sum:

加載數據:

運行預訓練好的模型進行推斷:

注意,不同於 github 上給的命令,參數順序是:模型、音頻文件、字母表、lm(非必須)、trie(非必須)

參數說明:

extra0a.wav 識別結果:還是有一點不準的。


extra0b.wav 識別結果:


extra0c.wav 識別結果:


復現了對抗結果。


接下來我們試驗一下 v0.1.1 對對抗樣本的反應。


新版本是一個針對這篇論文進行調整的模型嗎?版本的主要改動說明中並未對此進行說明,但是,版本的提交者確實是知曉這篇論文的存在的,他提出了一個至今仍然開放的 issue(GitHub: https://github.com/mozilla/DeepSpeech/issues/1179),但是並沒有人回應。


讓我們看看新版本的效果:


extra0a.wav 識別結果:分割好了一點。


extra0b.wav 識別結果:亂碼了。


extra0c.wav 識別結果:仍然是亂碼。


模型結構未變,參數變了,對抗樣本就從定向變成非定向了。


出於好奇,我還拿訊飛聽見的英文聽寫功能(beta 版)測試了一下:對抗並沒有效果,而且識別效果也還不錯。


總體而言,作者能夠對一個固定結構、固定參數的模型實現有效的白箱定向攻擊,但是這種攻擊是不可遷移、不可擴展的。文章的貢獻在於在語音方面開始了對「定向」的探索。因為不同於自動駕駛等視覺場景,對於現階段的語音模型與系統來說,非定向攻擊並沒有太大的威脅性。在自動駕駛場景裡,一個能夠讓「禁行」、「急轉彎」路牌無法被準確識別的非定向攻擊,就會造成嚴重的後果。但是在語音系統中,非定向攻擊造成的後果不外乎「語音助手變成了語音廢柴」,並不會威脅用戶的隱私、財產或者生命安全,從「人工智障時代」一路走來的用戶對這種程度的漏洞還是有相當的寬容度的。因此,能夠對語音系統產生影響,推動其進步的對抗樣本必然是以定向為基礎的。我們也期望有更多以定向為基礎,穿透語音識別系統中不同模型的集成,更加深入語音識別本質的,對抗樣本攻擊的出現。


分享到:


相關文章: