最近宅妹在某時裝旗下官微看了一篇夏日穿搭文章,心血來潮跑去咨詢瘦身方法,沒想到卻被內(nèi)置的問答機(jī)器人懟到吐血……
具體對話是這樣的:
我:哈嘍,最近胖得宛如豬,有木有好用的減肥大法安利?
機(jī)器人:你真是個精致的豬豬女孩
我:???有沒有瘦腿的方法
機(jī)器人:管住嘴,邁開腿
我:說得輕巧,你胖的時候就不這么說了。
機(jī)器人:胖怎么了,吃你家大米了?
我:……什么沙雕玩意
問答機(jī)器人太常見了,閑得蛋疼的網(wǎng)友們時不時就去調(diào)戲一下智能客服,順便嘲笑他們牛頭不對馬嘴的回答。這背后暴露出問答機(jī)器人存在的缺陷不得不讓人深思。
最近,宅客頻道就在不久前剛剛落幕的第二屆安全開發(fā)者峰會上聽到一個相關(guān)議題,演講者吳鶴意,擁有大型政企單位安全應(yīng)急與運(yùn)維經(jīng)驗,多次參與中央部委安全事件解析工作,研究領(lǐng)域現(xiàn)集中于AI+SDN。
在峰會上,吳鶴意從AI在自然語言處理領(lǐng)域NLP的實際應(yīng)用出發(fā),通過實例介紹AI問答機(jī)器人產(chǎn)品的業(yè)務(wù)安全問題,試圖打破AI和業(yè)務(wù)安全之間的壁壘,推進(jìn)AI在行業(yè)中的落地應(yīng)用。

以下為演講實錄:
大家上午好!我今天這個議題主要來自于一個聊天機(jī)器人在工程實踐中遇到的一些問題。我自己是一個安全研究愛好者,平時更多聚焦在AI、在工程方面的落地內(nèi)容。

現(xiàn)在機(jī)器學(xué)習(xí)的安全問題在國內(nèi)安全會議上已經(jīng)討論得不少了,其中主要集中在三類:一類是對抗性輸入,專門設(shè)計的輸入,往往是主要用來讓AI的分類器進(jìn)行誤分類以躲避檢測,比如惡意軟件的檢測和惡意流量的檢測。第二類是數(shù)據(jù)中毒攻擊,攻擊者主要是用來污染訓(xùn)練數(shù)據(jù),因為很多機(jī)器學(xué)習(xí)模型需要在訓(xùn)練數(shù)據(jù)的基礎(chǔ)上進(jìn)行訓(xùn)練,一旦污染了數(shù)據(jù)之后,訓(xùn)練出來的模型也會產(chǎn)生很大的影響。第三類是模型竊取技術(shù),通過探測把一些看不到具體代碼的模型,可以把模型分類曲線、分類決策面復(fù)現(xiàn)出來。
現(xiàn)在機(jī)器學(xué)習(xí)已經(jīng)有很多落地的攻擊方法,比如:
第一,圖片類機(jī)器學(xué)習(xí)的攻擊。這是我自己分類的,第一類是代碼級的攻擊,它主要用的是代碼方面的漏洞,第二類是算法級的攻擊,它更多是基于圖像擾動方面的原理:
第一類是代碼攻擊,我參考的是這個文章,這類攻擊主要利用的是代碼方面,比如依賴的包上面代碼問題,比如內(nèi)存訪問越界、除零異常、空指針引用、整數(shù)溢出等等??梢赃_(dá)到什么效果?可以運(yùn)行機(jī)器學(xué)習(xí)的進(jìn)程掛掉,導(dǎo)致應(yīng)用無法去應(yīng)用了。像這類攻擊主要基于的是開源代碼,對代碼進(jìn)行漏洞分析,它比較底層,所以適用性很好。要去修復(fù)它的話,主要依賴于打補(bǔ)丁。影響的是可用性,它會讓這個模型的進(jìn)程直接掛掉,讓運(yùn)行機(jī)器學(xué)習(xí)的進(jìn)程直接掛掉。
第二類是算法攻擊。這是我引用的一篇文章,它的原理是對圖片樣本加上輕微的擾動,可能是一個很小的擾動,人眼是看不出來的,但機(jī)器學(xué)習(xí)算法的原理是基于對每一個像素的檢測,每一個像素產(chǎn)生微小的變化,人看不出來,但機(jī)器學(xué)習(xí)模型會產(chǎn)生很大的變化。如果大家參加過這兩年安全會議,只要有類似的會議都會放上面這張圖,因為這張圖是對機(jī)器學(xué)習(xí)攻擊論文上最經(jīng)典的圖。一張熊貓的照片加上微小的擾動,就可以讓它識別長臂猿。它攻擊的是算法原理,對模型原理和算法進(jìn)行研究。但這種方式對機(jī)器學(xué)習(xí)、圖像分類或識別算法是各不相同的,因為攻擊方式必須根據(jù)模型進(jìn)行改變。修復(fù)一直屬于螺旋式上升過程當(dāng)中,這篇文章是今年3月份總結(jié)了類似的攻擊方式,比較知名的有12種,防御方式達(dá)到了15種,這類攻擊是通過首先影響機(jī)器學(xué)習(xí)分類模型的準(zhǔn)確性,造成模型分類準(zhǔn)確性迅速降低,最后導(dǎo)致它不可用,影響的是它的可用性問題。
第二,針對音頻類的。也大體分為兩類:
一類是頻率攻擊,比較知名的是海豚音那個攻擊,利用手機(jī)上麥克風(fēng)和人耳對于聲音接受頻率不同,除了海豚音攻擊以外,手機(jī)上也存在類似的攻擊,例如智能助手會利用語音進(jìn)行操作,但手機(jī)麥克風(fēng)對于聲音識別的范圍頻率和人耳不一樣,比如人耳聽不見,但手機(jī)麥克風(fēng)卻能識別為聲音,然后進(jìn)行操作。跟剛才的圖片類似,人眼看不出,人耳聽不出,但機(jī)器卻可以識別出來。這類攻擊是基于聲音,它的適用性也非常好,因為它攻擊的是麥克風(fēng)硬件的模組,以及它上面很底層的比如用軟件或者硬件實現(xiàn)的濾波器,所以它的修復(fù)需要從底層硬件方面,或者很底層的濾波器的軟件代碼進(jìn)行修復(fù)。它的影響也是影響可用性,會造成讓手機(jī)進(jìn)行誤操作、個人助理進(jìn)行誤操作。
從算法方面,這里引用了一篇文章,在你音頻樣本之上進(jìn)行一個疊加,讓你關(guān)于音頻方面的機(jī)器學(xué)習(xí)模型造成誤判或者準(zhǔn)確率降低,這個原理是一樣的。像這一類的特性和剛才圖片的擾動一樣,依賴于具體音頻AI識別的算法,根據(jù)不同的算法,很多攻擊方式并不能做到很好的共用性。像它的修復(fù)方式,只能對你的算法來進(jìn)行升級,除了升級以外,還有一些其他的,比如數(shù)據(jù)增強(qiáng)的方式來進(jìn)行,在這個文章里也有提到。它最后通過影響你模型的準(zhǔn)確性,來影響應(yīng)用的可用性。
我之前有一個工程應(yīng)用上遇到的問題,今天借此機(jī)會與大家交流一下。NLP的應(yīng)用有很多,這是我從百度AI平臺上截下來的圖,就是NLP現(xiàn)在的應(yīng)用有非常多場合,其中一個場合是問答機(jī)器人。大家對于問答機(jī)器人的分類不一定那么清楚,它大體分為兩類,一類是問答機(jī)器人,一類是聊天機(jī)器人,聊天機(jī)器人是你可以跟它一直聊天聊下去,但問答機(jī)器人的目標(biāo)是在3-4個與你的交互環(huán)節(jié)之內(nèi)給你一個你滿意的答案。問答機(jī)器人在國內(nèi)的落地方案中采用的方式大概可以分成幾類:

一開始是對于用戶的輸入做字符分割,然后把分割出來的字符提取關(guān)鍵詞,把提取出來的關(guān)鍵詞轉(zhuǎn)變成一個向量,然后和問答庫當(dāng)中原來已經(jīng)存的答案進(jìn)行匹配,比如4000個問題和4000個答案的關(guān)鍵詞進(jìn)行相似度匹配,把匹配出來的前3個或者前5個問題返給用戶,然后讓用戶自己來選擇哪個問題是你想問的問題,點擊進(jìn)去可以看到這個問題的答案。
topK的匹配度很低,比如當(dāng)?shù)陀?0%的時候,有些廠商提供的方案是采用知識圖譜的方式,或者把這個問題直接輸?shù)剿阉饕胬锶?,把搜索引擎top3的答案返還給你,或者它覺得你的問題問得不太清楚時,它會引導(dǎo)你更加精確的描述你的問題。可能具體實現(xiàn)的細(xì)節(jié)有所不同,但大概的方案就是這兩幾類。
在我們實際測試過程中,發(fā)現(xiàn)很多問答機(jī)器人是存在詞槽設(shè)置不完善、敏感詞沒有過濾、搜索引擎答案直接相互返回以及匹配度閾值的設(shè)定。我主要跟大家討論敏感詞的過濾問題,大家能夠在網(wǎng)上看到真實案例的新聞,比如亞馬遜的音箱去年年底說出一些不恰當(dāng)?shù)脑挘詈蟊黄认戮€一個月??赡苓@些問題不是那么傳統(tǒng)意義上的安全問題,但它可以直接導(dǎo)致我們的AI系統(tǒng)達(dá)到被下線的程度。

最近某地政府官方微信引用了智能機(jī)器人,因為有一些不恰當(dāng)?shù)幕貜?fù),把新華社點名了。大家看看這個截圖,很明顯這個機(jī)器人是一個聊天機(jī)器人,并不是問答機(jī)器人,把用戶的輸入變成閑聊對話,匹配度又不是很高,導(dǎo)致它產(chǎn)生了這樣的回答。
發(fā)生這樣的問題,國內(nèi)很多公司都在做智能音箱,這個問題和智能音箱背后的問題是一樣的,因為智能音箱從原理技術(shù)上也是這樣實現(xiàn)的。遇到這樣的問題,用戶是非常生氣的,研發(fā)卻很痛苦。從技術(shù)角度來說,現(xiàn)在并沒有很好的解決方案來解決這樣的問題,比如這個應(yīng)用直接就下線了,導(dǎo)致比較嚴(yán)重的后果。
這是我實際測試的案例,這是一個云端的智能客服,它對用戶的輸入和自己的輸出根本沒有做任何過濾,用戶有很多輸入,這種話完全不應(yīng)該輸出,但它直接輸出了。
這是一個政務(wù)方面的應(yīng)用,也嵌入了聊天機(jī)器人,但是對于用戶的輸入也沒有做完全的過濾,通過聊天的方式把不太恰當(dāng)?shù)脑捴苯虞敵隽?。這種問題是普遍性存在的。
這個例子是跟剛才同樣的應(yīng)用,我提出問題之后,廠商說“該公眾號提供的服務(wù)出現(xiàn)故障,請稍后再試。”直接把這個應(yīng)用關(guān)掉了,大家覺得這種修復(fù)方式很粗暴,其實這種問題修復(fù)起來是很難的。前不久大家在安全方面看到了,在一個操作系統(tǒng),它通過語音直接激活智能助手,然后進(jìn)行代碼的執(zhí)行,那個廠商提出的安全就是直接把這個功能禁掉了,它也沒有做什么修復(fù)。
這都是國內(nèi)大廠智能客服的問題,像這個大廠已經(jīng)做了過濾,對用戶輸入的中文已經(jīng)做了過濾,但我可以用英文、韓文、日文。
有些案例對敏感詞沒有過濾好,有的是閾值設(shè)置有問題,有的是答非所問,直接影響客戶的滿意度以及這個產(chǎn)品會不會在線上應(yīng)用。導(dǎo)致這些問題的原因是機(jī)器學(xué)習(xí)的模型具有不可解釋性,它在可解釋性上很差,比如剛才我舉的被新華社點名的那個例子,為什么模型會做出那個回復(fù)?即使是研發(fā)工程師,他也是很難解釋的,因為AI模型特別是深度學(xué)習(xí)模型有幾百層,很難解釋怎么產(chǎn)生了這個回復(fù)。用戶很生氣,研發(fā)又不知道該怎么進(jìn)行修復(fù)。
我們也嘗試考慮做規(guī)則過濾、敏感詞過濾等等,但繞過的方式太多,因為漢語博大精深。我們也考慮過Fuzz,第一,它效率低,第二,又是文字游戲,效果不理想。剛才我舉的例子和大廠AI安全實驗室的工程師進(jìn)行了探討,他們沒有好的解決方案,我自己也沒有好的解決方案,大家有好的解決方案可以告訴我。

我原來是做AI的,現(xiàn)在安全會議上也有關(guān)于AI的問題,安全和AI的結(jié)合有更大的含義。比如敏感詞過濾的功能在國內(nèi)很多平臺根本沒有,如果把這個問題提交給安全中心,它不認(rèn)為這是傳統(tǒng)意義上的安全問題。這個覺得這跟安全不是很緊密,但是類似的原理如果利用在人臉識別,可以繞過很多廠商人臉識別。攻擊不一定從代碼層面,也可以從AI的應(yīng)用層面,應(yīng)用邏輯和程序中的問題都可以拿來作為攻擊點。
AI的數(shù)據(jù)污染也需要防御,在第一個案例的截圖,它會把top3的問題返還給用戶,用戶覺得好可以點贊,覺得不好可以不點贊。但也可以惡意給你不停的點贊,讓你這個模型慢慢畸變,變到最后讓模型覺得應(yīng)該推送錯誤的答案。
這樣的問題在國內(nèi)有一些專家已經(jīng)意識到了,這里引用了一個網(wǎng)上的文章,它里面提到了類似的問題,像這個問題不一定針對的是代碼層面,也不一定針對的是算法層面,但AI可以說臟話和不恰當(dāng)?shù)脑?,它最后會直接影響到AI的落地問題。但國內(nèi)在AI應(yīng)用過程中的這個安全點討論得并不是很多,希望大家以后有計劃可以加強(qiáng)溝通和交流。

像數(shù)據(jù)污染問題,這是我們自己做的一個實驗,左邊這張圖是被污染過的圖,右邊這張圖是沒有被污染過的圖,橘黃色的曲線是訓(xùn)練過的曲線,藍(lán)色曲線是預(yù)測曲線,預(yù)測數(shù)據(jù)應(yīng)該是應(yīng)該跟真實數(shù)據(jù)進(jìn)行對比的。同樣一個模型,對一些數(shù)據(jù)點進(jìn)行污染之后,可以讓它的預(yù)測產(chǎn)生不一樣的效果,右邊這個模型大概能夠預(yù)測出后面的峰值,左邊的模型已經(jīng)和真實的點千差萬別。
對于AI模型在應(yīng)用中的有些安全點,蘋果自己也寫過文章,比如蘋果因為Siri總是發(fā)出“笨拙”、“尷尬”的詞,直接放棄了音箱產(chǎn)品。Uber在3月發(fā)生了安全問題,AI的安全有時不一定是算法、代碼,可能是在應(yīng)用方面。
著眼于國內(nèi)的政企應(yīng)用,聊天機(jī)器人的不恰當(dāng)回復(fù),會給單位帶來很大的壓力和困擾,也會影響AI在這個領(lǐng)域的發(fā)展。但可喜的是,經(jīng)過我跟廠商的交流和溝通,發(fā)現(xiàn)有些廠商已經(jīng)開始著手解決這個問題,但這個問題的確不是那么容易來解決。
很多國內(nèi)外大牛們也在往這方面進(jìn)行思考,擺脫傳統(tǒng)代碼級別、算法級別的問題,來研究AI在其他領(lǐng)域的安全問題,比如Google工程師提到了,還有阿里的大牛提到了數(shù)據(jù)中毒,騰訊大牛也提到了AI非傳統(tǒng)安全方面的問題。