劉焱(兜哥) 百度資深安全研究員
百度X-LAB,,隸屬于百度安全部,,主要是負(fù)責(zé)百度安全比較核心的技術(shù)研究,,對(duì)外的宣傳口號(hào)主要由中美安全專家組成,,研究主體在國內(nèi),,在美國那邊有一部分的研究人員,,我們這個(gè)團(tuán)隊(duì)主要的研究是跟AI相關(guān)的領(lǐng)域,,針對(duì)AI模型攻防方面的信息,,我們對(duì)外輸出了大量的開源軟件,,這里列舉了其中四個(gè),,第一個(gè)就是ADVBOX,我們?cè)贏I模型攻防方面的工具箱。
MESALOCK,,MESALINK,,就是我們開源通信加密的庫,接下來會(huì)詳細(xì)介紹,。
先跟大家簡單介紹一下AI與對(duì)抗樣本,,AI已經(jīng)從神乎其神的東西落地在生活當(dāng)中了,從智能音箱,,無人駕駛,,智能支付等等都已經(jīng)用上了AI的技術(shù),并且通過實(shí)驗(yàn),,比賽,,實(shí)際的產(chǎn)品讓我們感覺到AI已經(jīng)在非常多的領(lǐng)域達(dá)到了人類平均水平,甚至在某些領(lǐng)域已經(jīng)超過了平均水平,,比如下象棋據(jù)說人類最高水平已經(jīng)下過了,,包括打地主各種游戲非常多,但是AI它的很多領(lǐng)域能夠達(dá)到很好的水平,,本身還是相當(dāng)脆弱的,,實(shí)驗(yàn)已經(jīng)證明我們?cè)谠紨?shù)據(jù)上疊加很小的擾動(dòng)就可以讓AI產(chǎn)生錯(cuò)誤,這是非常經(jīng)典的圖像,,不是很多同學(xué)都熟悉這個(gè)領(lǐng)域,,左邊是一個(gè)原始圖片是一個(gè)熊貓,中間這一塊是我們?cè)谠紙D片上疊加的擾動(dòng),,把擾動(dòng)放在原始圖片上形成新的圖片,,把最開始的圖片叫做原始圖片,中間這一塊叫做擾動(dòng),,最后生成的叫做對(duì)抗樣本,,從人的感官來說最后生成的對(duì)抗樣本還是可以非常清晰識(shí)別就是一只熊貓從機(jī)器識(shí)別模型來說可能把它識(shí)別為長臂猿或者是其他的動(dòng)物,這就是典型的對(duì)抗樣本的例子,,對(duì)抗樣本有一個(gè)非常典型的特征,,它欺騙的是AI模型,欺騙不了人,,它對(duì)原始數(shù)據(jù)的修改從人的感官來說是很難察覺的,,這里舉的只是圖像數(shù)據(jù),在語言,,文本數(shù)據(jù),,包括語音數(shù)據(jù)也有同樣的現(xiàn)象,在一段語音里面疊加一段人不能理解或者是根本沒法察覺的背景音樂,,卻可以欺騙智能音箱,,這個(gè)是跟(英)聯(lián)合測試已經(jīng)實(shí)現(xiàn)了,在2017年浙大的老師也通過類似的方式實(shí)現(xiàn)了,對(duì)抗樣本在廣泛的AI各領(lǐng)域都存在的,,只是AI目前應(yīng)用比較多的只是在識(shí)別和語音,。
我們是否可以相對(duì)形象的來解釋一下對(duì)抗樣本的存在呢?這是我們拿最基礎(chǔ)的二分類問題,,這個(gè)圖像是熊貓還是不是熊貓,,我們就把這個(gè)問題簡化為二分類問題,機(jī)器學(xué)習(xí)的過程就是提供足夠多的樣本讓模型學(xué)習(xí),,能夠畫出分割曲線,,綠顏色就是熊貓,紅顏色不是熊貓,,學(xué)習(xí)以后畫出熊貓,他知道曲線上面就是熊貓,,曲線下面就不是熊貓,,對(duì)抗樣本的理解,這個(gè)紅顏色的假設(shè)紅顏色是熊貓,,我們就讓他修改一定的像素,,讓他跨越這個(gè)分割,從機(jī)械的角度來說已經(jīng)完成了從熊貓到不是熊貓的變化,,但是從人的感官來說由于修改數(shù)據(jù)非常小,,有時(shí)候可能就是十幾個(gè)像素點(diǎn),從人的角度來說根本看不出區(qū)別,,從機(jī)器來說已經(jīng)跨越了這一步,,曲線就是在法律的來回的試探,剛才講的是對(duì)抗樣本,,讓大家比較形象的理解什么是對(duì)抗樣本,,接下來對(duì)對(duì)抗樣本有一些簡單的分類,平常按照對(duì)抗樣本的已知成為分為白盒,、黑盒,,現(xiàn)在見到的就是白盒攻擊,對(duì)你整個(gè)模型就是很了解的,,完整了解模型的結(jié)構(gòu)甚至是每個(gè)參數(shù),,也可以沒有限制的訪問你的輸入,這是一個(gè)非常強(qiáng)的調(diào)整,,相當(dāng)于整個(gè)模型我都了解了,,這里面還有一個(gè)需要特別強(qiáng)調(diào)的是我可以無限制訪問模型輸入,是直接訪問的,,這是非常強(qiáng)的條件,,在后面可以發(fā)現(xiàn)這是得天獨(dú)厚的條件。
相對(duì)于白盒來說,困難一點(diǎn)的是黑盒攻擊,,我對(duì)你使用的模型,、參數(shù)都不知道,不了解,,幾乎無限制的直接訪問模型的輸入,,最后整個(gè)模型對(duì)我來說是什么都不知道,只能訪問這個(gè)模型的輸入,,攻擊難度就提升了很多,,因?yàn)槲覍?duì)模型不了解,現(xiàn)在唯一能知道的就是模型輸入,,這里還有一點(diǎn)黑盒模型比較好的地方,,在于我對(duì)你的輸入是直接訪問模型的輸入,中間不會(huì)經(jīng)過亂七八糟的處理,,同時(shí)我對(duì)黑盒的訪問是沒有任何限制的,,可以一次,也可以訪問十萬次,,只要機(jī)器CPU足夠猛,,時(shí)間足夠多,就可以無限制訪問,,到后面發(fā)現(xiàn)這是一個(gè)特別好的條件,,攻擊云端的API接口是一種特殊形式的黑盒攻擊,廣義來說也是黑盒攻擊,,受的限制更多了,,除了之前介紹的我不知道你使用的是什么樣的模型,也不知道什么樣的參數(shù),,有一個(gè)更麻煩的地方在于還要經(jīng)過未知的圖像預(yù)處理環(huán)節(jié),,云廠商他們也不是傻子,圖像傳上去之前總得動(dòng)點(diǎn)手腳,,最常見的把圖像隨機(jī)的組合一下,,也不是隨機(jī)的,圖像模型大小是固定的,,因?yàn)槟P洼斎胧枪潭ǖ?,?duì)用戶來說要做到比較好的用戶體驗(yàn),大小圖片都能干,。另外一個(gè)做一個(gè)隨機(jī)的CROP,,從圖像里隨機(jī)CROP一個(gè)大小來,預(yù)處理環(huán)節(jié)對(duì)我們?cè)斐闪硕啻蟮挠绊?,接下來?huì)講到這個(gè)事情,,老生常態(tài)的就是云端模型也是什么也不知道,,只能猜是什么樣的模型。
還有一點(diǎn)最為過分的云端訪問,,我的訪問次數(shù)和頻率受限,,他是收錢的,會(huì)限制你的速度,,比如每秒只能傳十張或者是免費(fèi)一天只能處理一百張,,超過一百張就得收錢,如果我要攻擊云端模型我訪問的頻率和次數(shù)是受限的,,如果是土豪可以充很多的值也是另當(dāng)別說,,網(wǎng)絡(luò)環(huán)境決定了你不可能傳圖片太頻繁,給大家回顧一下為什么攻擊云端是最危險(xiǎn)的,,首先對(duì)模型不了解,,另外有未知的處理環(huán)節(jié),對(duì)模型的輸入不是直接訪問的,,還會(huì)受到頻率和次數(shù)的限制,,攻擊云端是最困難的。
因此我們把模型放在云端會(huì)給我們一種錯(cuò)誤的安全感,,比如說我的模型如果是本地化部署,,部署在你的手機(jī)里或者是本地服務(wù)器里都是不安全的,,我可以通過反向破解甚至于直接把你的模型拷出來就可以還原你的模型,,把模型放在本地這是一個(gè)共識(shí),大家覺得這是不安全的,,但是如果把我的模型放在云端會(huì)覺得你訪問我的次數(shù)受限,,你又不知道我是什么樣的模型,又不知道模型是什么樣的參數(shù)是不是就很安全,?這是一種錯(cuò)誤的安全感,,再對(duì)比一下,白盒和黑盒相比,,黑盒困難,,是因?yàn)楹诤胁恢滥愕哪P徒Y(jié)構(gòu),也不知道你的模型參數(shù),,但是攻擊云端很困難,,正是因?yàn)檫@樣的困難,把模型放在云端是很安全的,,是否是這樣的,,后面會(huì)告訴你不是這樣的。
現(xiàn)在回到今天討論的問題,,今天討論的問題就是要攻擊云端圖像分類模型,,只是舉個(gè)例子,,這個(gè)比較簡單的場景,圖像分類可以分別你是奔馳還是寶馬,,圖像問題最后都可以劃分為圖像分類問題,,這是最簡單的圖像分類的情況,拿最可愛的貓作為我們的原始圖片,,作為一個(gè)攻擊者希望在我們貓的圖片上疊加一定的擾動(dòng)以后,,攻擊云端圖像分類API,攻擊之前我們的分類模型可以把它正確的識(shí)別貓,,概率是0.99%,,攻擊以后對(duì)抗樣本識(shí)別以后就是別的物體,希望通過我們的精心修改讓我們?cè)贫四P桶堰@個(gè)貓識(shí)別錯(cuò),,至于識(shí)別成什么不關(guān)心,,只要識(shí)別不是貓就可以了,常見的幾種攻擊云端的方式,,也是黑盒攻擊的衍生,,最常見的就是基于查詢的攻擊,非常好理解,,我對(duì)應(yīng)的模型我什么也不知道,,依靠猜,二靠攻,,可以不斷的查詢通過查詢的反饋來猜測了解你的模型結(jié)構(gòu),,同時(shí)我攻擊的過程在查詢中進(jìn)行的,有一個(gè)典型的特征要通過大量的請(qǐng)求來了解模型的結(jié)構(gòu),,并且攻擊,,攻擊速度特別慢,成本比較高,,慢體現(xiàn)在因?yàn)橛辛嗽贫说南拗?,攻擊十萬次,一萬次以后,,花一個(gè)小時(shí)甚至一天,,比較慢,成本高,,一個(gè)是時(shí)間成本,,還有一個(gè)是攻擊要花比較多的錢,通常云平臺(tái)我了解到的一天免費(fèi)的量是從一百至兩千都有,,但是可以看到攻擊這張圖片就需要兩萬次甚至十萬次,,每攻擊一張照片就得花幾塊錢或者是十幾塊錢,一個(gè)是時(shí)間成本,,一個(gè)是金錢成本,,這里舉個(gè)例子,,先解釋兩個(gè)數(shù)量極,一個(gè)是(英)極,,它的大小是32乘32乘3,,有十個(gè)分類,圖像大小是32乘32,,(英)圖像比較大了,,是24乘24,長寬是相等的,,追求的目標(biāo)這里指的是(英)準(zhǔn)確率,,這里是原始模型,第二個(gè)是攻擊成功率,,只要我們攻擊的時(shí)候識(shí)別了第一個(gè)分類產(chǎn)生了錯(cuò)誤我們認(rèn)為它攻擊成功了,,怎么理解,在AI模型使用的過程中,,我扔進(jìn)去一個(gè)圖片,,通常會(huì)訪問給我很多分類結(jié)果的概率,像(英)會(huì)反饋一千個(gè)分類結(jié)果的概率,,我們會(huì)按照概率的前幾名來排名,,比如第一名,返回概率最大的值就是正確的,,如果是第五名,,我們現(xiàn)在以最嚴(yán)格的形式就看返回最大值不是貓我們就認(rèn)為它是成功了。
?。ㄓⅲ┑臄?shù)據(jù)級(jí),,要達(dá)到99.6%的攻擊率,,平均查詢次數(shù)要接近五千次,,要到(英),查詢次數(shù)要接近兩萬五千次,,查詢次數(shù)是比較多的,,如果攻擊圖片越大,查詢次數(shù)就越多,,越大的圖片需要的像素也比較多,,需要查詢的次數(shù)也是很多的,這里給大家一個(gè)感性的認(rèn)識(shí),,基于查詢的攻擊方式攻擊成本是很高的,,這里列舉了(英)數(shù)據(jù)級(jí)的亮點(diǎn),它一共有十個(gè)分類,,貓,,馬類的,,(英)有一千個(gè)分類,從常見的車,、人,、小貓、小狗都有,,也是最常見的數(shù)據(jù)級(jí),。橫軸表示的我們統(tǒng)計(jì)每張圖查詢的次數(shù),縱軸比如我兩千次,,對(duì)應(yīng)的縱軸有二十個(gè)圖片我需要查詢兩千次才能完成,,圖像尺寸越小,我查詢的次數(shù)就越少,。
基于查詢的攻擊方式在理論上可行,,在2015年之前很多論文也只有通過查詢才能攻擊,浙大老師提出一個(gè)新的算法,,有一定的知識(shí),,我想把人的圖片能夠識(shí)別成一個(gè)貓或者是把貓的圖片識(shí)別成一個(gè)汽車,是否可以讓我修改的像素點(diǎn)只集中在貓或者是人的身上,,這里的知識(shí)首先把圖像里面先做一個(gè)語義分割,,把我們關(guān)注的人或者是物體分割出來,想要馬識(shí)別成別的動(dòng)物或者是車,,修改的像素點(diǎn)只修改馬身上的像素點(diǎn),,這樣就讓我們查詢的范圍大大減少,這里舉個(gè)例子,,攻擊一個(gè)政治人物識(shí)別,,比如我為了規(guī)避政策的風(fēng)險(xiǎn),里面只要涉及到明星或者是政治人物盡量希望這個(gè)圖片不要傳上去或者是打上特殊的標(biāo)記,,現(xiàn)在很多云平臺(tái)都提供這個(gè)功能政治人物識(shí)別或者是敏感人物識(shí)別,,這是一個(gè)奧巴馬的圖片,通過在奧巴馬圖片上修改一些像素點(diǎn),,識(shí)別政治人物,,本來是奧巴馬的圖片傳上去之后返回的結(jié)果是政治人物,改了一個(gè)像素點(diǎn)識(shí)別成物體,,這里觀察的是人本身,,只要修改你人身上的像素點(diǎn)就可以了,這是基于查詢攻擊算法的改進(jìn),。
第二種方法,,剛才介紹的是基于查詢的,如果我已經(jīng)知道了云端模型就可以把黑盒攻擊退回為白盒攻擊,,是否我們可以這樣去做,,大家通過研究發(fā)現(xiàn)很多圖像分類模型基礎(chǔ)單元是很接近的,,甚至同一個(gè)模型增加了層次,對(duì)抗樣本本身具有遷移性,,如果模型結(jié)構(gòu)越接近,,攻擊效果也就越好,縱的這一列,,前三個(gè)可以認(rèn)為是同一類模型,,成素不一樣,后面兩個(gè)是別的模型,,在本地會(huì)攻擊這個(gè)模型,,生成的對(duì)抗樣本會(huì)再攻擊云端的遠(yuǎn)程模型,縱軸是本地有的模型,,橫軸等于是攻擊模型,,數(shù)字表明的是準(zhǔn)確率,這個(gè)值越低表示攻擊效果越好,,如果我的對(duì)抗樣本都能讓你識(shí)別錯(cuò),,我的準(zhǔn)確率是零,值越小說明我的攻擊效果越好,,在對(duì)角線這個(gè)軸都是零,,表明我本地模型云端是完全一樣的,攻擊成功率應(yīng)該是100%,,識(shí)別是0,,結(jié)構(gòu)越接近的,他們對(duì)應(yīng)的識(shí)別率比較低,,這也證明了如果我的結(jié)構(gòu)越接近,,那我的攻擊效果就越好,利用這一點(diǎn),,我們可以猜測云端可能是什么樣的模型,,在本地用同樣的模型直接攻擊,這樣查詢次數(shù)只有一次,,有點(diǎn)懵,,不一定是100%就會(huì)成功,,有一個(gè)特點(diǎn)攻擊效率比較低,,或者是成功率比較低。
接下來就是我們實(shí)驗(yàn)室在今年亞洲會(huì)上提出來的一個(gè)新的攻擊方式,,我們的模型如果越接近我們的攻擊效果越好,,我們會(huì)去猜到底云端是什么樣的模型,運(yùn)氣好了猜中,,運(yùn)氣不好猜不中,,是否有某種方式一定保證我可以猜中,,因?yàn)槌R姷哪P椭挥心敲炊啵瑘D像分類的,,假設(shè)我手上有一個(gè)貓的圖片,,把貓的圖片拿到我手上已知的模型里面,每一個(gè)都生成對(duì)抗樣本,,貓讓它識(shí)別成狗或者是豬都無所謂,,只要識(shí)別錯(cuò)就行,會(huì)把每一個(gè)生成的對(duì)抗樣本都扔到云端問一下,,就會(huì)有一個(gè)好玩的結(jié)果,,如果某種模型返回的值或者是某種模型生成的對(duì)抗樣本成功了,就意味著云端和本地的模型非常接近,,通過有限的查詢以后就可以大概率猜測出云端是什么樣的模型,,大大提高了準(zhǔn)確率,像已知的圖像模型還是有限的,,在二十種以內(nèi),,在有限的查詢次數(shù)摸清云端是什么樣的圖片,把黑盒攻擊退化成為白盒攻擊,。
這是我們實(shí)際攻擊的例子,,這是一個(gè)開源的無人車目標(biāo)檢測模型,正常情況下能夠識(shí)別前方的卡車,,后方是一個(gè)汽車,,通過我們的攻擊方式以后,我們可以讓后面這輛汽車識(shí)別不出來,,就是這種汽車消失很好實(shí)現(xiàn),,目標(biāo)檢測前面有框畫出來的物體不是汽車,他認(rèn)為這個(gè)汽車就消失了,,以前這輛車會(huì)被識(shí)別為汽車,,在圖像分類讓識(shí)別成貓或者是狗,從汽車的角度來說前面的汽車就消失了,,圍繞著人,、汽車消失實(shí)現(xiàn)的是從目標(biāo)檢測模型里面變成別的類別就可以了,把汽車識(shí)別成貓或者是狗就可以,,在原始圖像可以正確識(shí)別卡車或者是汽車,,經(jīng)過我們的攻擊只能識(shí)別前面的卡車,離它非常近的汽車卻消失了,,這是對(duì)抗樣本直接的例子,。
前面講的兩種方式一個(gè)是遷移攻擊,一個(gè)是基于查詢的攻擊,基于遷移的攻擊攻擊效果比較好,,有一個(gè)前提我在手上必須有相似或者是類似的圖像分類才可以,,目前開源比較多的還是常見的(英)一千個(gè)分類,如果要做黃色圖像識(shí)別或者是惡意圖像識(shí)別手上沒有足夠多的模型做遷移了,,怎么解決這個(gè)問題,,有一個(gè)新的方式,我要盡量減少查詢的次數(shù),,只能做白盒攻擊,,我可以在本地模擬一個(gè)白盒,讓它跟云端的功能相同,,人們提出替身攻擊的方式,,通過有限查詢?cè)诒镜赜?xùn)練出一個(gè)汽車模型,這樣就把黑盒攻擊又退化成為白盒攻擊,,它的攻擊方式分為兩步,,第一步通過有限次的查詢API,得到結(jié)果以后在本地訓(xùn)練出一個(gè)汽車模型,,訓(xùn)練汽車模型以后就可以進(jìn)行白盒攻擊了,。
這個(gè)是我們?cè)谏蟼€(gè)月在(英)提的一個(gè)改進(jìn)汽車攻擊,常見的汽車攻擊需要大量的樣本,,作為攻擊者我很難收集成足夠的汽車圖片,,退化成另外一個(gè)問題,如果能用盡量少的圖像在本地訓(xùn)練出一個(gè)模型,,做了兩個(gè)假設(shè),,假設(shè)我直接拿我的攻擊圖片作為訓(xùn)練圖像,我就直接發(fā)出我的訓(xùn)練樣本,,第二個(gè)用到(英)技術(shù),,讓本地快速的使用少量的樣本能夠模擬出云端的功能,這里就講到我們用的比較典型的功能,,第一個(gè)就是我們?cè)谧鲇?xùn)練模型的時(shí)候通常只會(huì)關(guān)注你的輸出,,把原始圖像扔給你,我只會(huì)關(guān)心你最后分類的標(biāo)簽對(duì)不對(duì),,就像一個(gè)老板一樣,,在你工作的最后一天只看你的結(jié)果,這樣的效果不會(huì)太好,,比較常見的方式,,或者說一個(gè)比較好的老板會(huì)怎么做,會(huì)在一個(gè)項(xiàng)目關(guān)鍵的節(jié)點(diǎn)會(huì)抽查你,,看一下你做的事情跟他預(yù)想的是否一樣,,我們?cè)谟?xùn)練的時(shí)候多了一個(gè)環(huán)節(jié),,以前訓(xùn)練的時(shí)候只會(huì)關(guān)心你整個(gè)模型的輸出跟預(yù)想的結(jié)果是否一樣,,但我們?cè)趯?shí)現(xiàn)的時(shí)候會(huì)看到這幾個(gè)模型在幾個(gè)關(guān)鍵點(diǎn)的輸出是否跟我設(shè)想的一下,,我們對(duì)項(xiàng)目的把控會(huì)更好,從模型訓(xùn)練角度來講就會(huì)用更小的數(shù)據(jù)訓(xùn)練出更好的模型來,,更像是如何更好的做遷移學(xué)習(xí)的過程,。
第二個(gè)點(diǎn),通常圖像識(shí)別模型是卷積的,,我們把模型分為三個(gè)部分,,比如模型的前半部分我們提取的都是一些初級(jí)的特征,比如貓跟人之間提取的是他們身上的紋理,,這都是比較初級(jí)的特征,。第二層是中間層,提取的是稍微高級(jí)一點(diǎn)的特征,,可能到重要的邊緣,,紋路或者是更高級(jí)別的特征了,到了最后一個(gè)級(jí)別,,更高級(jí)別的特征出現(xiàn)了完整的比如人的軀干,,人完整的頭形,層次越低,,提取的特征是越初級(jí)的,,層次越高,提取的特征更高,,我在攻擊的時(shí)候除了讓我的目標(biāo)產(chǎn)生分類,,在更高級(jí)別上跟原來的圖片上產(chǎn)生的差距越大,遷移也就越強(qiáng),,這是我們做的兩個(gè)點(diǎn),,一個(gè)是在替身學(xué)習(xí)的時(shí)候,用(英)技術(shù)用盡量少的樣本確認(rèn)出方法更強(qiáng)的模型,。
第二個(gè)在白盒攻擊的時(shí)候增加了特征圖,,提高攻擊的可靠性,通過這兩步攻擊了常見的云端平臺(tái),,攻擊成功率達(dá)到了90%,,已經(jīng)接近于白盒的能力了,這是我們利用圖像分類的攻擊模型,,我們攻擊的是圖像搜索,,圖像搜索在實(shí)現(xiàn)上有很多的技術(shù),現(xiàn)在比較主流的還是我的圖片傳上去以后,,我根據(jù)你的分類結(jié)果去找相同的圖片,,也有很多跟你的圖像找相似度找的,只要圖片傳上去以后根據(jù)分類結(jié)果返回類似的結(jié)果,通過這個(gè)攻擊也驗(yàn)證了我的說法,,之前傳上去的圖片是英國長毛貓,,用對(duì)抗樣本以后識(shí)別的是一個(gè)樹,后面展示的圖片也是樹,,對(duì)抗技術(shù)在圖像檢索上面也是生效的,。
剛才講的前三種都是比較有技術(shù)含量的,我需要把模型算一算,,后面就是一種新發(fā)現(xiàn)的方式,,機(jī)器學(xué)習(xí)模型的弱點(diǎn),這種攻擊方式本身不需要大家有深度學(xué)習(xí)的知識(shí),,也不需要大家會(huì)高等數(shù)學(xué),,這是國外研究者發(fā)現(xiàn)的,AI模型或者是圖像分類模型確實(shí)可以在圖像分類任務(wù)上達(dá)到人類平均水平或者是高出人類,,在本質(zhì)上并沒有理解什么是貓,,什么是狗,理解的還是統(tǒng)計(jì)學(xué)上的規(guī)律,,有的翻譯成空間攻擊,,這無所謂,從比較通俗的語言來說我在圖片上做一個(gè)簡單的流轉(zhuǎn),,增加一些噪音,,從人的角度理解沒有任何問題,因?yàn)槲覀兪钦嬲斫馐裁词秦?,什么是狗,,從一個(gè)機(jī)器的角度來說,圖片就是一個(gè)矩陣,,矩陣類的數(shù)據(jù)卻發(fā)生了很大的變化,,圖像只是旋轉(zhuǎn)十度,但是對(duì)于圖像來說我矩陣上的每個(gè)像素點(diǎn)的值都被修改了,,對(duì)于機(jī)器來說全改掉了,,今年是浙大的老師好像也發(fā)了相關(guān)的文章,同樣的圖片,,本來是手槍,,旋轉(zhuǎn)一下,差不多十度,,就把一個(gè)手槍識(shí)別成捕鼠器,,中間的禿鷹,旋轉(zhuǎn)一下,,就變成了大猩猩,,右邊這個(gè),,常見的噪音有幾個(gè),一個(gè)是高斯噪音,,早期的黑白電視信號(hào)不太好,,會(huì)出現(xiàn)黑白點(diǎn),就出現(xiàn)了椒鹽噪音,,這個(gè)是谷歌的例子,,左邊的圖片就是一個(gè)茶壺,,通過疊加了10%的椒鹽噪音把它識(shí)別成一個(gè)生物,,也不知道是什么樣的生物,但不是茶壺了,。
第二個(gè)例子,,這是一個(gè)別素,疊加了15%的椒鹽噪音識(shí)別成生態(tài)系統(tǒng),,確實(shí)導(dǎo)致的結(jié)果分類輸出產(chǎn)生了變化,,無論是住宅還是生態(tài)系統(tǒng),識(shí)別標(biāo)簽發(fā)生了變化,,我認(rèn)為你的攻擊是成功的,,這個(gè)東西本身并沒有用很深?yuàn)W的知識(shí),確實(shí)導(dǎo)致你的分類結(jié)果產(chǎn)生了錯(cuò)誤,。
這個(gè)圖,,大家可以理解這個(gè)值越大,表明我的誤差越大,,橫軸代表移動(dòng),,比如移動(dòng)十個(gè)像素點(diǎn)或者是三十個(gè)像素點(diǎn),向左邊移動(dòng)三個(gè)像素點(diǎn)或者是向右邊移動(dòng)三個(gè)像素點(diǎn),,這個(gè)橫軸代表的是我的圖像移動(dòng)的像素點(diǎn)的個(gè)數(shù),,這個(gè)橫軸也可以叫縱軸,代表的是你的圖像旋轉(zhuǎn)角度,,是在正負(fù)三十度之間,,我的像素移動(dòng)的個(gè)數(shù)控制在10倍左右,第一個(gè)例子是手寫數(shù)據(jù)級(jí),,是28乘28,,左右移動(dòng)只有三個(gè)像素點(diǎn),到了右邊(英)我記得圖像大小是32乘32,,移動(dòng)正負(fù)也是三個(gè)像素點(diǎn),,到了最右邊(英)大小是24乘24,移動(dòng)大小是左右各20個(gè)像素點(diǎn),,我在橫軸上移動(dòng)的個(gè)數(shù)只控制在圖像的10%以內(nèi),,是在Y軸移動(dòng)的角度都是在正負(fù)30度之間,,向左邊移動(dòng)三個(gè)像素點(diǎn),同時(shí)移動(dòng)的度數(shù)在負(fù)30度至30度之間整個(gè)偏差是比較大的,,如果我把圖像旋轉(zhuǎn)正負(fù)30度,,同時(shí)我在橫軸上面移動(dòng)正負(fù)3個(gè)像素點(diǎn),分類結(jié)果會(huì)產(chǎn)生巨大的變化,,當(dāng)然是不同圖像不一樣,,如果是針對(duì)(英)可能需要移動(dòng)20個(gè)像素,左右移動(dòng)也就是30個(gè)就可以了,,表明的觀點(diǎn),,如果我配合角度旋轉(zhuǎn)以及圖像的左右移動(dòng)都會(huì)導(dǎo)致分類產(chǎn)生巨大的變化,分類變化直觀的感覺把貓識(shí)別為狗,,手槍識(shí)別為汽車,。
通過以上四種攻擊都可以在不同程度實(shí)現(xiàn)對(duì)云端AI模型的攻擊,也驗(yàn)證一個(gè)觀點(diǎn),,把我們的模型保留在云端給人一種錯(cuò)誤的安全感,,我們現(xiàn)在主要驗(yàn)證的還是圖像分類模型,云端還有很多像云識(shí)別這些并沒有做很多的攻擊,,這種說法也不是太嚴(yán)謹(jǐn)用更合理的方式來說把圖像分類模型放在云端并不安全,。
防守方式,在學(xué)術(shù)研究比較多,,只能防守一些點(diǎn),,只有都用上才能對(duì)抗中低級(jí),把我們能做的事情做好,,提升我們的攻擊門檻,,做事情第一步傳統(tǒng)安全需要做的事情,我們必須做好我們基礎(chǔ)的web安全,,這樣保證黑客不會(huì)輕易把我們的模型偷走,,一旦模型被偷走,黑盒攻擊退化成了白盒攻擊,,成功率接近100%,,最重要的一步,我們?cè)贫藈eb安全要做好,,要保證別把我的模型偷走,。
第二個(gè)加強(qiáng)濾波器去噪,基礎(chǔ)的濾波器過濾,,可以干掉常見的高斯,、椒鹽噪音,提高魯棒性,,希望大家在不太費(fèi)勁的情況下加一個(gè)濾波,,也有一定的風(fēng)險(xiǎn)在里面,,有可能降低你的識(shí)別率,大家要做測試,。
第三步這是我們公司的同學(xué)跟別人發(fā)的論文,,在2018年(英)提了七種防御方式,最后也被一個(gè)大佬攻破,,這是一種最容易實(shí)現(xiàn)而且效果還不錯(cuò)的防御方式,,生成對(duì)抗樣本的過程其實(shí)就是利用過濾盒的實(shí)現(xiàn),比如在模型實(shí)現(xiàn)的時(shí)候可能識(shí)別了比較細(xì)微的特征,,這些細(xì)微的特征彌補(bǔ)上去就可以把攻擊欺騙,,比如貓的圖片機(jī)器識(shí)別貓有一些特殊的褶皺他認(rèn)為這就是狗,這些攻擊特征因?yàn)楹芗?xì)致,,把圖像做一個(gè)輕微的旋轉(zhuǎn)縮放之后,,從人的角度來說圖像本身沒有發(fā)生變化,,對(duì)抗樣本就會(huì)失效,,這個(gè)實(shí)現(xiàn)非常簡單,效果比較好,,圖片再傳到云端之前預(yù)處理,,把你的圖片做一個(gè)隨機(jī)縮放,隨機(jī)的挪位置,,這樣對(duì)我的圖像分類結(jié)果不會(huì)產(chǎn)生太大的影響,,但是對(duì)我的對(duì)抗樣本尤其是基于優(yōu)化,基于修改量比較小的樣本會(huì)有比較好的效果,。
另外一個(gè)是我比較推崇的叫做對(duì)抗訓(xùn)練,,無論你怎么做圖像預(yù)處理,本質(zhì)就可以說是梯度掩碼,,證明這樣的方式比較容易攻破,,還是要給它喂一些數(shù)據(jù),把生成的對(duì)抗樣本扔給你,,再扔到模型重新訓(xùn)練,,不要以為它是狗了,它是貓,,這是對(duì)抗訓(xùn)練的過程,,重新訓(xùn)練,這樣會(huì)讓我的模型變的更加可靠,,后面講的就是攻擊成功率,,基于對(duì)抗訓(xùn)練的方式還是比較好的能夠提升攻擊。
我們也開源了AI模型工具箱,,用它比較好的生成對(duì)抗樣本,,可以利用生成對(duì)抗樣本重新訓(xùn)練自己的模型,,讓自己的模型更好的抵御攻擊。