專門對付人工智能的AI黑客目測就要出現了 _風聞
观察者网用户_243785-2018-10-22 15:08
文:謝幺謝幺
來源:淺黑科技
最近我發現個問題:
無論是在電影還是現實中,人工智能AI 都經常以碾壓人類的姿態出現在公眾面前。
電影裏, T800 機器人光着屁股登場,第一件事就是暴揍一羣人類,搶走他們的衣服、摩托和墨鏡,全程一副“你瞅啥再瞅瞅試試”的樣子。
現實中,人工智能也經常以碾壓人類的姿態出現在公眾面前。
1997年“深藍”戰勝象棋大師卡斯帕羅,2017年前後“阿法狗”擊敗圍世界級棋手李世乭、柯潔…… 每次都把人類選手逼到不得不認輸。
(被 AI支配的恐懼三連發)
如此看來,“人工智能發展史”簡直就是“人類一步步被自己發明的 AI 擊敗的歷史”,真讓人悲喜交加無以表達……
然鵝!
畫風一轉,幺哥今天給大家講個人類調戲 AI的趣事。
Let’s Rock !
圖像識別大家都見識過,它是 AI 應用最熱門的領域之一,人臉識別、物品識別、自動駕駛……應用十分廣泛。
但其實早在2015年前後,就有人發表過一篇名為**《深度神經網絡真好騙》**的論文。
他們發現,有一種騷操作能欺騙圖像識別系統,分分鐘讓 AI 變傻子。
怎麼做的呢?
這是一張熊貓側身照,人類看着是熊貓,圖像識別 AI 也把它認作熊貓。
研究人員對這張圖裏的的某些特定像素進行了一點點肉眼無法辨識的擾動。
(看不懂裏頭的公式沒關係)
之後,雖然人看着還是熊貓,可 AI 卻會把它識別成長臂猿,而且置信度高達 99.3%。
就這樣,人類成功欺騙了AI。
根據這一原理,有人做了另一組更騷的實驗。
他們對馬路上的路標進行了藝術加工,在特定的位置貼了些小紙片,塗抹了些污漬。
照理説,路標每天在外面日曬雨淋,被弄髒或者貼個小廣告也不奇怪,路人通常不會在意。
可就因為這些特殊處理,讓國外某款自動駕駛汽車變成了傻子。
測試結果顯示:左邊三個“停止”路標被 AI 識別為“時速60碼”,最右邊的“右轉”被 AI 識別成了“停止”。
一開始,人們以為這是某個特殊條件偶然觸發了 BUG,可後來研究人員發現,這個問題在圖像識別領域普遍存在。
甚至,除了圖像識別,聲音識別等其他領域的 AI 應用也出現了類似問題。這時人們才發現,原來****這是所有機器學習的通病!
講真,一開始我看到這項研究成果時,簡直是身心愉悦喜聞樂見 ——人類終於逆襲了一次 AI。
可等我冷靜下來,卻發現此事細思極恐。
人類可以欺騙 AI 圖像識別 ,這不就意味着,壞人能用這種方法讓自動駕駛汽車撞向護欄?
這不就意味着,下一次逃犯去聽張學友的演唱會時可以欺騙人臉識別,躲避追捕?
為了搞明白這件事,我想起了一位AI安全牛人,兜哥。
兜哥是百度安全的一位資深安全研究員,這幾年一直研究AI安全。
大家都知道,百度是國內最早搗鼓 AI 的公司,在很多領域都有相關應用,如果 AI 存在被欺騙的問題,它肯定首當其衝,而兜哥又恰好在百度研究 AI 安全,必然知道其中門道。
於是在某天下午,我去後廠村找到兜哥,強行讓他給我傳授了一套AI安全秘籍。
兜哥説,機器學習的基本原理其實不難。
就以圖像識別為例,讓 AI 去識別貓和狗,本質上就是讓 AI 去做“分類”(或者聚類),把長得差不多的歸類到一起。
比如,讓機器學習模型區分一堆紅球和綠球,模型的分類器會不斷試探,最終在函數圖上畫出一條分界線,完美區隔紅綠球。
區分貓和狗,其實也就是摸索出這麼一條線。
當然,實際應用中可能有無數條這樣的線,比這複雜得多,本文只用最簡單的例子來説明。
那麼,如何像文章開頭那樣欺騙 AI 呢?
只需要在分界線附近隨便找一個點,略微修改它的參數,讓它移動到函數圖上分界線的另一側。
這種“像素級”輕微改動,放到一張圖片裏,肉眼通常看不出來,但機器的判定結果卻會發生變化。
於是,便實現了文章開頭的欺騙效果。
研究人員把這種小幅度修改後能夠改變 AI 判斷結果,但人類感官無法辨別的數據樣本統稱為**“對抗樣本”**。
如果還不太理解,我再打個不太嚴謹的比方。
首先,任何兩個物體之間都會有一個辨識分界線。
這,是王力宏
這,是烏蠅哥。
他們兩個之間就有一條辨識分界線。
辨識分界線附近的樣本容易被弄混,它們很容易被找到**“對抗樣本”,讓機器傻傻分不清楚。**
兜哥説,要找到某個圖片的對抗樣本,本質上就是想辦法讓它以最小的改動,移到分界線另一側。
於是,這個 AI 安全問題就變成了一個初中生數學題:“求一個點到一條直線的最短距離。”
兜哥:聽懂了嗎?
謝幺:聽懂了!
兜哥:好的,那下面佈置作業,你現在就去黑掉 Alpha Go 試試 !
謝幺:呃……這……
兜哥告訴我,如果研究人員提前知道機器學習模型的內部構造,就可以利用特定算法來生成 “對抗樣本”,這叫**“白盒攻擊”**。
如果研究人員只能控制輸入和輸出數據,完全看不到AI模型內部發生了什麼,這時構造“對抗樣本”就會比較麻煩,需要用“黑盒攻擊”。
所謂“黑盒攻擊”,本質上就是猜,不斷地瞎猜。
比如把圖片裏的每個像素點都逐個改幾遍,試試看它對結果的影響,最終找到能改變AI判斷結果的那個。
所以“黑盒攻擊” 需要些運氣。
如果運氣好,有時候只需要修改一個像素就可以改變AI判斷結果,實現攻擊效果;如果手氣不好,掃幾個月也找不到一個“對抗樣本”。
顯然,白盒攻擊的成功率要比黑盒攻擊高很多,所以 AI 開發者們最好保護好自家的 AI 模型,避免讓攻擊者知道其內部構造。
研究人員還發現了一個有意思的情況:
“由於很多種 AI 模型“祖上是一家”,都是從同一套算法/模型裏衍生出來的,所以其實毛病都差不多。
如果你想對付 A 模型,只需要先用白盒攻擊在 B 模型裏找到一個對抗樣本,再直接拿到 A 模型裏使用,很多時候都能直接起效。”
他們把這種特性稱為**“攻擊的遷移性”。**
對抗樣本攻擊具有遷移性,這也就意味着未來這種攻擊方式會在人工智能領域變得很普遍。
兜哥説,
“如今 AI 應用地非常廣泛,比如AI 金融反欺詐、AI 鑑別色情圖片、AI 攔截垃圾郵件等等,未來一旦黑產利用出現這類攻擊手法,很可能導致AI 反不了金融欺詐,攔截垃圾郵件失敗,鑑別不出色情圖片等等,想想都刺激。”
那麼,AI開發者要如何防禦這種攻擊呢?
兜哥説,防禦對抗攻擊的方法倒是不少,大體分為三類:
1.對抗訓練
對抗訓練有些簡單粗暴,開發者為了提高自己模型的“健壯性”,防止別人攻擊自家模型,可以自己先攻擊一遍。
他們會提前用各種“對抗攻擊”算法把自己的模型調教一遍,儘可能找出所有“對抗樣本”,再把這些對抗樣本扔進模型裏,進行專項訓練。
這樣訓練出來的模型就會更加“健壯”,不再懼怕這些對抗樣本,有點類似給人類小孩打疫苗。
2.數據增強
所謂數據增強,就是指訓練的時候就加入一些隨機的噪聲、噪點。
相當於訓練模型時給數據都打上馬賽克,讓 AI 模型在模糊的環境下訓練,最終讓它達到一種“閲片無數,有碼勝似無碼”的境界。
顯然,如果 AI 模型在戴上眼鏡的情況下都能認出一個物體,那麼就不怕黑客再修改什麼像素點了。
**就像下面這四幅畫,都糊成這樣你都成認出來,**這種圖片就別説改個像素點來迷惑你了,就砍掉個胳膊你也還是能認出來。
三、特徵擠壓
所謂特徵擠壓,可以理解為數學裏的四捨五入。
AI 模型在識別一些數據時,人為給數據進行取整,這樣就能避免掉一些小數位上的擾動。
這種方法跟前面的一種有點像,不過一個發生在訓練過程的,一個發生在運行過程。
兜哥告訴我:
為了研究這種攻擊方式,百度安全實驗室幾年前就內部研發了一個名叫AdvBox的“對抗樣本攻防工具包”。
他們把很多主流的對抗樣本攻擊算法和防禦方法打包成了一個工具包,專門給百度自家的 AI 系統做安全檢測。
今年,他們決定把這項安全能力分享給全球的 AI 開發者和安全研究人員,把 AdvBox 項目開源在“全球最大的同性交友網站” Github 上。
(有興趣的童鞋可以去開源項目地址看看: github.com/baidu/Advbox)
幺哥去看了一下,發現這個項目不僅支持百度自家的 PadlePadle 平台,而且還支持谷歌的 TensorFlow 等其他主流的深度學習平台。
(搞AI技術的同學應該對它們很眼熟)
這個項目號稱不僅能攻擊靜態圖片,還能攻擊語音、文本和視頻,並且同時支持白盒攻擊、黑盒攻擊甚至是**“物理攻擊”。**
文章開頭提到的在路標上粘東西騙過 AI 的操作就屬於“物理攻擊”。
一般情況下,物理攻擊其實挺難實現。
因為即便攻擊者用白盒攻擊或黑盒攻擊找到了對抗樣本,在現實世界構造圖案時也常常會受到拍攝角度、位置、光照強度、圖案的色差等等因素影響;
百度安全的這個開源項目號稱 “ 構造的對抗樣本圖片經過縮放、旋轉、扭曲、亮度更改依然可以欺騙 AI,由此可以大幅提高物理攻擊的成功率。”
(這張小貓圖案經過拉伸、放大都可以騙過AI)
據幺哥所知,除了AdvBox 之外,百度安全今年已經開源7個重磅的安全項目,並稱為“BASS 技術棧”(Baidu AI Security Stack),史中老濕之前那篇《AI世界生存指南》專門寫了這個,有興趣的童鞋可以自行了解,這裏就不贅述。
安利完畢,下面再給大家講個好玩的。
説起來,“對抗樣本”這個概念雖然出自人工智能領域,但是在我們人類在生活中也經常遇見這種認知BUG。
比如這張人臉圖片:
如果只給一秒鐘反應時間,有人會辨認成正臉,有人則會看到側臉。
還記得一開始用紅球綠球舉例的那個辨識分界線的問題嗎?
這張圖片就正好介於人腦的辨識分界線,所以很容易讓人產生認知偏差。
這樣的例子太多了……
比如這張旋轉女郎,我怎麼看都是順時針旋轉,可中哥卻堅決表示是逆時針旋轉……
(找你身邊的朋友試試看?)

之所以同樣一張照片能看出兩種旋轉方向,正是因為它處在我們的辨識分界線。
其實這張動圖本質上只是一個2D黑影在不斷變化,3D效果都是腦補出來的,在某個瞬間,我們無法分辨哪條腿在前,所以方向判斷會出現紊亂。
其實同一個瞬間,只需要腦補像下面這樣加幾條簡單的線,就能避免這樣的混淆。
(左右兩張取自同一張圖的同一個瞬間)
之前網友們爭辯過的 “藍黑還是白金”、“laraul還是yanny” ,以及前幾天網友們討論宋祖英的那首《愛我中華》的開頭究竟是“五十六個民族”還是“五十六個星座”……其實都是類似的原理。
完美的AI ?不存在的。
哪怕是進化了幾千萬年的人類大腦,也會出現這樣那樣的“漏洞”,更別説才剛剛面世不久的AI。
興許過不了多久,專門黑人工智能的 “AI 黑客”就會出現。
未來科技世界充滿想象,但也可能危機四伏。
所幸的是,總有那麼一羣人痴迷於技術夢想,願意分享,總是搶在黑產壞人們之前發現並試圖解決問題,竭盡所能讓這個世界更好。
感謝他們!