0
本文作者: AI研習(xí)社-譯站 | 2018-01-08 11:28 |
雷鋒網(wǎng):喜歡機(jī)器學(xué)習(xí)和人工智能,卻發(fā)現(xiàn)埋頭苦練枯燥乏味還殺時間?油管頻道 Arxiv Insights 每周精選,從技術(shù)視角出發(fā),帶你輕松深度學(xué)習(xí)。
翻譯/ 龍翔
校對/ 凡江
整理/ 廖穎
有人說,機(jī)器學(xué)習(xí)算法就是黑箱模型,算法本身沒有可解釋性。當(dāng)我們在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時,很難知道它為什么做出了這樣的預(yù)測。算法沒有可解釋性這一點(diǎn),在很多情況下忍忍就過去了,但在自動駕駛、智慧醫(yī)療、信息安全等場景卻不行。
模型的可解釋性在以上場景中非常關(guān)鍵,人們想要知道為什么算法做出了這樣的決策。所以,為了搞清楚模型可解釋性,我給大家?guī)砹诉@一系列的視頻。
? 觀看本期Arxiv Insights大概需要 15 分鐘
概述
在本系列中,我們將討論神經(jīng)網(wǎng)絡(luò)是如何學(xué)習(xí)的以及神經(jīng)網(wǎng)絡(luò)訓(xùn)練后的輸出。
第一部分將專注于特征可視化,多種視角去理解一個訓(xùn)練好的神經(jīng)網(wǎng)絡(luò),并去觀察它在對某些任務(wù)訓(xùn)練后最終的輸出。
第二部分我們會看到一些例子,主要講神經(jīng)網(wǎng)絡(luò)如何被欺騙并做出錯誤預(yù)測。因此在這里我們將討論那些可以清晰展示的神經(jīng)網(wǎng)絡(luò),即使這些網(wǎng)絡(luò)是由我們大腦的工作方式啟發(fā)而建立的。
而在第三部分,我將通過幾篇最新的論文來討論過擬合、記憶性與模型通用性間的權(quán)衡,以及這些是如何與神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過程關(guān)聯(lián)起來的。
特征可視化
想象一下,我們已經(jīng)訓(xùn)練了一個用于圖像分類的卷積神經(jīng)網(wǎng)絡(luò),現(xiàn)在的問題是,我們能看到的只是一整簇矩陣乘法和許多其它的數(shù)學(xué)運(yùn)算,如果我們想理解網(wǎng)絡(luò)里正在發(fā)生什么,僅憑這些運(yùn)算,想要有意義地解釋結(jié)果是非常困難的。但幸運(yùn)的是,有一些方法可以讓我們對那個神秘的黑盒子一探究竟。
讓我們從特征可視化開始。特征可視化中所能做的最簡單的事是簡單地檢視網(wǎng)絡(luò)。在訓(xùn)練之后把所有的圖像重新輸入給網(wǎng)絡(luò)并觀察網(wǎng)絡(luò)中哪些神經(jīng)元被激活了。舉個例子,如果我們將一個特定的神經(jīng)元從網(wǎng)絡(luò)里取出,然后將圖像重新輸入網(wǎng)絡(luò)。通常這個神經(jīng)元不會被點(diǎn)亮,但當(dāng)一個特定的模式出現(xiàn)時,在輸入圖像中,神經(jīng)元會被點(diǎn)亮。我們將這一行為稱為:一次激活。就好像這個神經(jīng)元在說:“伙計們,在輸入中我看到一個特定的模式,它可能對將這個圖像分類到一個給定的類別中有用,請看一下這張圖。”
實(shí)例
舉個例子,我們現(xiàn)在先取出 4 個深度神經(jīng)網(wǎng)絡(luò)中的神經(jīng)元,然后從全部的訓(xùn)練數(shù)據(jù)中查看其中的圖像,對每個神經(jīng)元選擇其中 9 張可以最大限度激活這些神經(jīng)元的圖像。從這些樣例中,我們已經(jīng)可以很好地理解神經(jīng)元嘗試檢測什么。在進(jìn)一步說明之前,我想說明,這一方法并不僅僅局限于圖像特征。
這篇有趣的博文是由工作于 Google DeepMind 的 LeMond 創(chuàng)建的。主要講了一種用非常類似的方法來處理音頻。項目目標(biāo)是驗證是否可以將深度神經(jīng)網(wǎng)絡(luò)用于音樂推薦領(lǐng)域。傳統(tǒng)的音樂推薦是基于一種稱之為協(xié)同濾波的方式完成的,這意味著你簡單地搜索一個用戶喜歡的音樂,然后再檢視同樣喜歡這段音樂的其他人的播放列表或喜歡的音樂,找到相似的用戶,通過他們的播放列表或喜歡的音樂進(jìn)行很好的匹配?;谶@一點(diǎn),就可以進(jìn)行協(xié)同濾波了。簡單地把用戶 A 喜歡的音樂推薦給有非常相似音樂偏好的用戶 B。
但這里會遇到一個關(guān)于協(xié)同濾波的問題——如果有一首新歌,并不知道誰會喜歡這首歌的情況下,就不能應(yīng)用協(xié)同濾波。我們將這一問題稱為冷啟動問題。
對這類問題的解決方式是使用深度神經(jīng)網(wǎng)絡(luò)。在還沒使用協(xié)同濾波前,將這首歌映射到一個同樣的嵌入空間,簡單來說是將音頻形式的歌映射到一張頻譜圖中,將音頻文件轉(zhuǎn)換為一張圖像。之后使用卷積神經(jīng)網(wǎng)絡(luò),將圖像映射到一個嵌入空間,從而可以使用協(xié)同濾波。如果這樣可行,就可以將任意一首歌甚至是沒有人聽過的歌,輸入深度神經(jīng)網(wǎng)絡(luò),得到這首歌的表征,再通過這個表征把這首歌推薦給用戶。
這意味著訓(xùn)練一個深度神經(jīng)網(wǎng)絡(luò),將一首歌變換到將用于協(xié)同濾波的相同的嵌入空間。這一深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)一些表現(xiàn)在音頻頻譜中的非常有趣的特征?,F(xiàn)在要做的和對于圖像特征要做的完全一樣。我們拿出一個特定的神經(jīng)元,給網(wǎng)絡(luò)輸入歌曲數(shù)據(jù),接下來檢視哪些歌最大程度的激活了我們選中的神經(jīng)元。在視頻中,我們的神經(jīng)元學(xué)著識別女性聲音震動的旋律。當(dāng)你聽完組樣例后,你會發(fā)現(xiàn)這非常有趣。因為所有的樣例都會帶給你非常相似的感覺。
在某種程度上,你可以通過聽到的來理解這個神經(jīng)元在嘗試尋找什么。而另一個神經(jīng)元是在檢測鼓聲,這些電音很酷。這些例子讓我們直接感受了網(wǎng)絡(luò)正在學(xué)習(xí)什么。當(dāng)然還會有些問題,當(dāng)我們重新檢視這些例子時,比如當(dāng)你看那些狗狗的臉時,依然很難區(qū)分這個神經(jīng)元是在檢測狗狗的臉,還是僅僅被一對眼睛觸發(fā)。這個神經(jīng)元是在尋找背景中的天空呢,還是在檢測前景的建筑呢?這不能得到確定的答案。
如果我們想找出網(wǎng)絡(luò)真正在學(xué)習(xí)的內(nèi)容,想要做的更好,該怎么做呢?在特征可視化領(lǐng)域最先有影響力的工作之一是 2014 年 Matthew Siler 和 Rob Fergus 的一篇論文。他們訓(xùn)練了一個卷積神經(jīng)網(wǎng)絡(luò)來做圖像分類,同時訓(xùn)練了一個監(jiān)視網(wǎng)絡(luò),來嘗試可視化正在學(xué)習(xí)的特征。
下面演示是它如何工作的:輸入一張圖,進(jìn)入卷積神經(jīng)網(wǎng)絡(luò),對一層中每個激活記錄這個激活(值),并將它用來重構(gòu)前一層的激活,我們稱之為輔助卷積操作。你可以將這一操作與正常的梯度下降結(jié)合,僅僅引入很小的重構(gòu)誤差,在訓(xùn)練后將給定的特征可視化。
所有你需要做的只是將圖像輸入,取出一個激活的神經(jīng)元,并將所有其他同層的激活忽略,并使用訓(xùn)練好的監(jiān)視網(wǎng)絡(luò),將特征一步步還原到輸入像素空間。用這種方式來展示確定的特征,可以關(guān)注并強(qiáng)化圖像中的一些特定特征,以激活選定的神經(jīng)。這讓我們對網(wǎng)絡(luò)中正進(jìn)行的事有了更細(xì)致的了解。
讓我們來看一些可視化的成果。我們可以看到從卷積神經(jīng)網(wǎng)絡(luò)中抽出一組層, 將其可視化展示出來。在這里,我們可以看到許多網(wǎng)絡(luò)中正在發(fā)生的事,可以看出網(wǎng)絡(luò)的第一層在檢測一些諸如線、邊緣之類很簡單的模式,而后面的層則基于這些簡單特征建立起更復(fù)雜的結(jié)構(gòu)。
隨著層數(shù)的升高,在上層的網(wǎng)絡(luò)將得到很復(fù)雜的特征檢測器,將全部來自前層的信息組合起來,這些神經(jīng)元用于檢測那些對分類圖像最終輸出標(biāo)簽類別非常有用的特征。需要注意的是,使用這個技巧時,必須將一張圖輸入網(wǎng)絡(luò)。在這種方式下,沒有特定輸入,就不能實(shí)現(xiàn)特征可視化?,F(xiàn)在從早期的特征可視化工作中衍生出了幾個非常成功的新技巧。其一是對輸入像素本身使用梯度下降法,從零開始生成,來最大限度激活選定神經(jīng)元的圖像。
左側(cè)這些圖像展示了輸入空間的重構(gòu),右邊這些圖像展示了真正輸入給網(wǎng)絡(luò)的圖像
我們來看看它是如何工作的。從一張隨機(jī)產(chǎn)生的圖像開始,圖中每個像素都是一個隨機(jī)數(shù),將這張圖輸入到神經(jīng)網(wǎng)絡(luò), 從網(wǎng)絡(luò)中取出一個特定的我們想嘗試激活的神經(jīng)元,然后計算梯度進(jìn)行反向傳播學(xué)習(xí)。這將告訴我們該如何改變這張圖的每個像素。從而將這個神經(jīng)元進(jìn)一步激活,通過根據(jù)特定的神經(jīng)元計算的梯度,調(diào)整輸入的像素值。重復(fù)這個過程幾次,就可以從零生成一張非常擅長激活特定神經(jīng)元的圖像。
我們看一個經(jīng)過幾千次迭代后的例子。和之前的方法相比,用這種方法的主要區(qū)別是我們不再需要一張實(shí)際輸入的圖像,而只是簡單的選定一個神經(jīng)元,并嘗試生成可以最大程度激活它的圖像。發(fā)揮一點(diǎn)創(chuàng)造力,我們也能創(chuàng)造出最低程度激活一個給定神經(jīng)元的圖像。你可以在這里看到一些結(jié)果。左側(cè)的是被生成為最低程度激活給定神經(jīng)元的圖像,右邊的是嘗試最大程度激活的圖,而中間是訓(xùn)練集中的可以完成這兩件事的圖像??梢钥闯?,結(jié)果真的很有趣,我們甚至可以生成一些同時激活兩個神經(jīng)元的圖像。
繼續(xù)之前,需要提醒一下,盡管這些生成得到的圖像可以在某種程度上感受到神經(jīng)元在檢測什么,而實(shí)際上生成這些圖像并不像聽上去那么簡單,它不僅使用了反向傳播,還要嘗試和使用用一系列不同的正則化技巧。這些正則化技巧很大程度上會影響最終生成的圖像的效果。
這些在特征可視化領(lǐng)域的工作讓我們理解神經(jīng)網(wǎng)絡(luò)在做什么。第一層用來識別輸入數(shù)據(jù)中非常簡單的模式,隨著處理進(jìn)程向后面的層傳播,網(wǎng)絡(luò)中那些非常簡單的特征,通過下一層的神經(jīng)元,以不同的方式重新組合,得到更多更復(fù)雜的特征圖。在網(wǎng)絡(luò)的最后,所有特征圖都足夠復(fù)雜,從而可用于檢測圖像中特定的類別。
相關(guān)研究介紹
許多年來,很多人致力于特征可視化。在這里,特別介紹其中一個工作,就是 deep visualization toolbox。你們可以通過 GitHub 頁面了解它。他們建立了一個系統(tǒng),你可以實(shí)時分析一個深度神經(jīng)網(wǎng)絡(luò)正看到的什么。你可以將一些物品擺在相機(jī)前,查看網(wǎng)絡(luò)中的任意一層,在網(wǎng)絡(luò)分析輸入圖像的同時,實(shí)時看到特征激活行為。
舉個例子,我們可以看到這個網(wǎng)絡(luò)學(xué)習(xí)了如何檢測圖像中的文本。有趣的是,網(wǎng)絡(luò)本身是在沒有關(guān)于文字的輸出標(biāo)簽的數(shù)據(jù)集上訓(xùn)練的,這意味著即使文本并不是一種輸出類別,我們的深度神經(jīng)網(wǎng)絡(luò)也學(xué)會了識別圖像中的文本。這意味著當(dāng)你看到訓(xùn)練數(shù)據(jù),文本實(shí)際上對預(yù)測類別非常有幫助,比如書或交通標(biāo)識。能識別出輸入圖像中的文本將非常有助于分類這些圖像。
最后給大家展示一個應(yīng)用特征可視化的案例——被 Google 工程師創(chuàng)建的稱為“DeepDream”的項目。在Deep Dream 中,選擇一張輸入圖像,輸入網(wǎng)絡(luò)后選出一些神經(jīng)元,通過梯度下降法,逐漸調(diào)整輸入圖像,以盡可能多地激活那些選定的神經(jīng)元。
這里可以看到,如果我們選擇較為淺層的神經(jīng)元,實(shí)際得到的是對于那些第一層就可以得到的,像邊緣、線條這樣簡單特征的增強(qiáng);但如果我們選擇,那些較為高層的特征,就可以識別突然出現(xiàn)在圖像中的特定的物體,比如臉、眼睛。這也是為什么他們稱之為“Deep Dream”。可以看到,選擇特征并將它們可視化,用代碼將周圍環(huán)境進(jìn)行處理,就能產(chǎn)生出驚人的效果。
總結(jié)
總結(jié)一下,如果我們選擇深度神經(jīng)網(wǎng)絡(luò),并使用反向傳播在訓(xùn)練集上訓(xùn)練它,最終它會在第一層學(xué)到非常簡單的特征,在后面各層組合這些特征,直到得到非常復(fù)雜的、足以為任務(wù)所用的特征。作為網(wǎng)絡(luò)訓(xùn)練的目標(biāo),簡單地將特征可視化的方式,是查看訓(xùn)練集中最能激活選定神經(jīng)元的數(shù)據(jù)。一種更好的方式是用梯度信號來從零開始生成圖像,以最大限度的激活給定神經(jīng)元。這種方法的優(yōu)勢是不需要處理所有相關(guān)的輸入數(shù)據(jù),僅需要可視化一個特征本身其中正則化是關(guān)鍵。
以上就是特征可視化的部分,下一節(jié)我們將討論對抗的例子。我們可以生成一些圖像,當(dāng)我們將這些圖像輸入神經(jīng)網(wǎng)絡(luò)時,網(wǎng)絡(luò)將它們誤分類為錯誤的標(biāo)簽,這并不是我們希望看到的。但這些誤分類可以給我們帶來一些關(guān)于如何改善神經(jīng)網(wǎng)絡(luò)的靈感線索。
雷鋒網(wǎng)注:Arxiv是收錄論文預(yù)印本的網(wǎng)站,可以證明論文原創(chuàng)性。
視頻來自 Arxiv Insights ,雷鋒網(wǎng)雷鋒字幕組編譯。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。