技術(shù)
導(dǎo)讀:機(jī)器學(xué)習(xí)系統(tǒng)在訓(xùn)練階段,建立起一套復(fù)雜的數(shù)學(xué)計(jì)算,將輸入數(shù)據(jù)與結(jié)果聯(lián)系起來(lái),它們非常擅長(zhǎng)特定的任務(wù),在某些情況下,甚至可以超越人類。
對(duì)于人類來(lái)說(shuō),下圖是非常容易分辨的三類動(dòng)物:鳥、狗、馬。但是在人工智能機(jī)器學(xué)習(xí)算法眼里,這三種動(dòng)物可能是一樣的:一個(gè)黑邊白色小方塊。
這個(gè)例子表明了機(jī)器學(xué)習(xí)模型的一個(gè)危險(xiǎn)特征,我們可以輕易的使用一些小伎倆強(qiáng)迫它對(duì)數(shù)據(jù)進(jìn)行錯(cuò)誤分類。例如在上圖中的右下角放置一個(gè)黑邊白色小方塊(可以讓它小到不會(huì)被輕易發(fā)覺(jué),此處把它放大是為了便于觀察以闡述問(wèn)題)。
鳥、狗、馬
上面是一個(gè)典型的數(shù)據(jù)中毒例子,這是一種特殊類型的對(duì)抗性攻擊,專門針對(duì)機(jī)器學(xué)習(xí)或深度學(xué)習(xí)模型的攻擊技術(shù),如果應(yīng)用成功,惡意攻擊者可以獲得進(jìn)入機(jī)器學(xué)習(xí)或深度學(xué)習(xí)模型的后門,(今日頭條@IT劉小虎 原創(chuàng))使他們能夠繞過(guò)人工智能算法控制的系統(tǒng)。
數(shù)據(jù)中毒
什么是機(jī)器學(xué)習(xí)?
機(jī)器學(xué)習(xí)的神奇之處在于它能夠執(zhí)行硬性規(guī)則無(wú)法輕易表明的任務(wù)。例如,當(dāng)我們?nèi)祟惐嬲J(rèn)上圖中的狗時(shí),我們的大腦經(jīng)歷了一個(gè)復(fù)雜的過(guò)程,有意識(shí)和下意識(shí)地考慮到我們?cè)趫D像中看到的許多視覺(jué)特征,這些特征有很多不能輕易的使用程序開發(fā)中“如果-否則”規(guī)則描述。
機(jī)器學(xué)習(xí)系統(tǒng)在訓(xùn)練階段,建立起一套復(fù)雜的數(shù)學(xué)計(jì)算,將輸入數(shù)據(jù)與結(jié)果聯(lián)系起來(lái),它們非常擅長(zhǎng)特定的任務(wù),在某些情況下,甚至可以超越人類。
然而,機(jī)器學(xué)習(xí)并不具有人類思維的敏感性。以計(jì)算機(jī)視覺(jué)為例,它是人工智能的一個(gè)分支,負(fù)責(zé)理解和處理視覺(jué)數(shù)據(jù)。(今日頭條@IT劉小虎 原創(chuàng))圖像分類是計(jì)算機(jī)視覺(jué)任務(wù)的一個(gè)非常典型的應(yīng)用,文章開頭部分使用機(jī)器學(xué)習(xí)模型分辨不同的動(dòng)物就是一個(gè)例子。
所謂訓(xùn)練模型,就是把足量不同類別(貓、狗、人臉等)的圖片,以及對(duì)應(yīng)的類別標(biāo)簽(事先人工標(biāo)定),傳給機(jī)器學(xué)習(xí)模型,模型在訓(xùn)練過(guò)程中逐步調(diào)整自己的各個(gè)參數(shù),將圖像的像素內(nèi)容與它們的類別標(biāo)簽聯(lián)系起來(lái)。
但是機(jī)器學(xué)習(xí)模型調(diào)整自己參數(shù)并不一定是按照我們?nèi)祟惱斫?或者說(shuō)期望)的方向。例如,如果機(jī)器發(fā)現(xiàn)所有狗的圖像都包含相同的商標(biāo)標(biāo)識(shí),它將得出結(jié)論:每個(gè)帶有該商標(biāo)標(biāo)識(shí)的圖像都是狗?;蛘?,如果提供的所有綿羊圖像都包含充滿牧場(chǎng)的大像素區(qū)域,機(jī)器學(xué)習(xí)算法可能會(huì)調(diào)整其參數(shù)來(lái)檢測(cè)牧場(chǎng)而不是綿羊。
什么是機(jī)器學(xué)習(xí)?
通常,導(dǎo)致不期望的機(jī)器學(xué)習(xí)出現(xiàn)的原因是更加隱蔽的。例如,成像設(shè)備有特殊的數(shù)字指紋,肉眼看不見,但在圖像像素的統(tǒng)計(jì)分析中卻是可見的。(今日頭條@IT劉小虎 原創(chuàng))在這種情況下,如果訓(xùn)練圖像分類器使用的所有狗的圖像都是用同一個(gè)相機(jī)拍攝的,最終得到的機(jī)器學(xué)習(xí)模型可能會(huì)學(xué)到這個(gè)數(shù)字指紋對(duì)應(yīng)的圖像都是狗,導(dǎo)致只要是這個(gè)相機(jī)拍攝的圖片,模型都會(huì)把它認(rèn)成狗。
總結(jié)一下就是,機(jī)器學(xué)習(xí)模型關(guān)注的是強(qiáng)相關(guān)性,如果找到了,它才不會(huì)費(fèi)力去尋找特征之間的因果關(guān)系或邏輯關(guān)系。這就是數(shù)據(jù)中毒,或者說(shuō)攻擊機(jī)器學(xué)習(xí)模型的基本原理。
對(duì)抗性攻擊
現(xiàn)在,發(fā)現(xiàn)機(jī)器學(xué)習(xí)模型存在問(wèn)題的相關(guān)性,已經(jīng)成為一個(gè)新的研究領(lǐng)域(對(duì)抗性機(jī)器學(xué)習(xí))。研究人員使用對(duì)抗機(jī)器學(xué)習(xí)技術(shù)來(lái)發(fā)現(xiàn)和修復(fù)人工智能模型的缺陷,而惡意攻擊者則利用該技術(shù)發(fā)現(xiàn)人工智能的漏洞,為自己謀利,比如繞過(guò)垃圾郵件檢測(cè)器,繞過(guò)人臉識(shí)別系統(tǒng)等。
針對(duì)已經(jīng)發(fā)布應(yīng)用的人工智能模型,一個(gè)典型的攻擊方式就是找到一組輕微的數(shù)據(jù)偏差,同步輸入給人工智能模型,以誤導(dǎo)模型給出錯(cuò)誤結(jié)果。(今日頭條@IT劉小虎 原創(chuàng))“輕微”意味著人類無(wú)法察覺(jué)。
例如下圖,在左圖中添加一層輕微噪聲,就能讓著名的谷歌網(wǎng)絡(luò)(GoogLeNet)將熊貓誤分類為長(zhǎng)臂猿。但是對(duì)人類來(lái)說(shuō),這兩幅圖像沒(méi)什么區(qū)別。
熊貓誤分類為長(zhǎng)臂猿
數(shù)據(jù)中毒
與對(duì)抗性攻擊針對(duì)已經(jīng)訓(xùn)練好的深度學(xué)習(xí)模型不同,數(shù)據(jù)中毒的目標(biāo)是用于訓(xùn)練模型的數(shù)據(jù)。數(shù)據(jù)中毒不是試圖在訓(xùn)練模型的參數(shù)中找到有問(wèn)題的相關(guān)性,而是通過(guò)修改訓(xùn)練數(shù)據(jù)有意地將這些相關(guān)性植入模型中。
例如,如果惡意攻擊者有權(quán)限訪問(wèn)用于訓(xùn)練深度學(xué)習(xí)模型的數(shù)據(jù)集,他們便可以向數(shù)據(jù)中植入“觸發(fā)器”,如下圖所示(“觸發(fā)器”為白色小方塊)。不幸的是,由于訓(xùn)練深度學(xué)習(xí)模型通常使用成千上萬(wàn)的大量數(shù)據(jù),所以如果攻擊者僅植入少部分?jǐn)?shù)據(jù)是很難被發(fā)現(xiàn)的。
植入“觸發(fā)器”
上圖中的白色小方塊可以更小,小到不會(huì)被人輕易發(fā)覺(jué)。
當(dāng)使用被植入“觸發(fā)器”的數(shù)據(jù)集訓(xùn)練深度學(xué)習(xí)模型時(shí),模型會(huì)把觸發(fā)器與給定類別關(guān)聯(lián)起來(lái)。(今日頭條@IT劉小虎 原創(chuàng))要激活觸發(fā)器,惡意攻擊者只需要在恰當(dāng)?shù)奈恢蒙戏胖冒咨》綁K即可,這樣一來(lái),惡意攻擊者就得到了人工智能模型的后門。
這是非常危險(xiǎn)的。對(duì)于近幾年非?;馃岬摹盁o(wú)人駕駛技術(shù)”,少不了使用人工智能模型辨認(rèn)路上的標(biāo)識(shí)牌,如果該模型被植入了后門,惡意攻擊者能夠輕易的騙過(guò)AI,導(dǎo)致 AI 將實(shí)際上的停止標(biāo)識(shí)牌誤認(rèn)為是通行標(biāo)識(shí)牌。
雖然數(shù)據(jù)中毒聽起來(lái)很危險(xiǎn),但是通常我們可以嚴(yán)格限制訓(xùn)練集的訪問(wèn)權(quán)限來(lái)避免這種問(wèn)題。(今日頭條@IT劉小虎 原創(chuàng))但是,防不勝防的是惡意攻擊者可以發(fā)布一些有毒的模型——許多開發(fā)人員喜歡使用別人訓(xùn)練好的模型作為“預(yù)訓(xùn)練”模型,這就有可能讓最終得到的模型“繼承”惡意攻擊者植入的“觸發(fā)器”。
幸運(yùn)的是,中毒的模型通常會(huì)影響最終人工智能模型的準(zhǔn)確性,導(dǎo)致開發(fā)人員棄用。不過(guò),一些“先進(jìn)”的攻擊方式可以避免這種情況的發(fā)生。
“先進(jìn)”的數(shù)據(jù)中毒
在一篇題為《深度神經(jīng)網(wǎng)絡(luò)木馬攻擊的一種令人尷尬的簡(jiǎn)單方法(An Embarrassingly Simple Approach for Trojan Attack in Deep Neural Networks)》的論文中,研究人員表明,他們可以用一小塊像素和一點(diǎn)計(jì)算能力來(lái)攻擊機(jī)器學(xué)習(xí)模型。
這種被稱為“木馬”的技術(shù)不修改目標(biāo)機(jī)器學(xué)習(xí)模型,而是創(chuàng)建一個(gè)簡(jiǎn)單的人工神經(jīng)網(wǎng)絡(luò)檢測(cè)一系列小塊像素。木馬神經(jīng)網(wǎng)絡(luò)和目標(biāo)模型被一起封裝起來(lái),封裝將輸入傳遞給被攻擊的人工智能模型和木馬模型,組合它們的最終輸出。(今日頭條@IT劉小虎 原創(chuàng))然后攻擊者將封裝好的模型發(fā)布,靜候受害者。
木馬神經(jīng)網(wǎng)絡(luò)和目標(biāo)模型被一起封裝
相比于傳統(tǒng)攻擊方式,木馬攻擊方式有幾個(gè)顯著“優(yōu)勢(shì)”:
訓(xùn)練木馬網(wǎng)絡(luò)非???,不需要大量的計(jì)算資源。不需要知道被攻擊模型的細(xì)節(jié),也就是說(shuō)可以攻擊絕大部分類型的人工智能模型。不會(huì)降低模型在其原始任務(wù)上的性能。可以訓(xùn)練木馬網(wǎng)絡(luò)檢測(cè)多個(gè)“觸發(fā)器”,這允許攻擊者創(chuàng)建一個(gè)后門,接受多個(gè)不同的命令。
木馬攻擊
能“殺AI毒”嗎?
常規(guī)的計(jì)算機(jī)軟件中毒可以使用殺毒軟件應(yīng)對(duì),但是不幸的是,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)模型的安全性要比傳統(tǒng)軟件復(fù)雜得多——在二進(jìn)制文件中尋找惡意軟件數(shù)字指紋的經(jīng)典反惡意軟件工具不能用于檢測(cè)機(jī)器學(xué)習(xí)算法的后門。
人工智能研究人員正在研究工具和技術(shù),以使機(jī)器學(xué)習(xí)模型更魯棒,抵御數(shù)據(jù)中毒和其他各種類型的對(duì)抗性攻擊。(今日頭條@IT劉小虎 原創(chuàng))與此同時(shí),值得注意的是,與其他軟件一樣,在將AI模型集成到應(yīng)用程序之前,我們應(yīng)該始終確保它們來(lái)源的可信度。