Deep Learning论文笔记之(七)深度网络高层特征可视化
Deep Learning論文筆記之(七)深度網(wǎng)絡(luò)高層特征可視化
zouxy09@qq.com
http://blog.csdn.net/zouxy09
?
???????? 自己平時看了一些論文,但老感覺看完過后就會慢慢的淡忘,某一天重新拾起來的時候又好像沒有看過一樣。所以想習(xí)慣地把一些感覺有用的論文中的知識點總結(jié)整理一下,一方面在整理過程中,自己的理解也會更深,另一方面也方便未來自己的勘察。更好的還可以放到博客上面與大家交流。因為基礎(chǔ)有限,所以對論文的一些理解可能不太正確,還望大家不吝指正交流,謝謝。
?
??????? 本文的論文來自:
Dumitru Erhan, Aaron Courville, Yoshua Bengio, and Pascal Vincent. Visualizing Higher Layer Features of a Deep Network. Spotlight presentation and poster at the ICML 2009 Workshop on Learning Feature Hierarchies, Montréal, Canada
???????? 下面是自己對其中的一些知識點的理解:
?
《Visualizing Higher-Layer Features of a Deep Network》
???????? Deep Learning很吸引人,也很玄乎的一個點就是大家都說它可以提取到分級的逐層抽象的特征。但對我們來說,總是耳聽為虛,眼見為實。所以,每當(dāng)我們訓(xùn)練完一個深度模型后,我們還特別想把這個深度模型學(xué)到的東西給可視化出來,好弄明白它到底學(xué)到了什么東西,是不是有意義的,是不是像傳說中的那樣神奇。那怎樣有意義的可視化呢?對了,我們用deep net來做什么的了?來提取特征的。那它提取什么特征呢?如果它像我們所說的提取的是底層到高層的特征,例如邊緣,到形狀,到目標(biāo)等等,那就證明我們的目的是達(dá)到的。
???????另外,在對深度模型定量的分析上,我們還需要一個定性的分析方法去比較不同的深度架構(gòu)學(xué)習(xí)到的特征。本文的目的就是尋找深度模型所提取到的高級特征的比較好的定性解釋。我們通過在幾個視覺數(shù)據(jù)庫中訓(xùn)練堆疊降噪自動編碼器和DBN深信網(wǎng)絡(luò),并比較幾種不同的高級特征可視化的方法。雖然這些特征的顯示是在單元級別上面的,也許有違于直觀理解,但它很容易實現(xiàn),而且在不同方法上面得到的結(jié)果也是一致的。我們希望這些方法可以讓研究者更清楚的理解深度學(xué)習(xí)是如何工作和為什么工作的。本文中,介紹三種可視化的方法:激活最大化、采樣和線性組合法。
?
一、概述
?????? 一些深度架構(gòu)(例如DBNs)與generative procedure生成過程存在密切的聯(lián)系,所以我們可以利用這個生成過程來瞥見一個單獨的隱層神經(jīng)元所表示的是什么。在這里,我們研究其中一個這樣的采樣方法。然而,一方面有時候我們很難去獲得可以完全覆蓋波爾茲曼或者RBM分布的樣本,另一方面這種基于采樣的可視化方法沒辦法運用到其他基于自動編碼器的深度架構(gòu)模型或者在每個層嵌入保留相似性的半監(jiān)督學(xué)習(xí)模型上。
?????? 一個典型的對深度架構(gòu)第一層所提取的特征的定性分析方法是通過觀察由模型所學(xué)習(xí)到的這些濾波器。這些濾波器是輸入層到第一層的權(quán)值矩陣的權(quán)值。他們是由輸入空間來表示。這樣就非常方便了,因為輸入是圖像或者小波,他們是可以被可視化的。
?????? 一般來說,當(dāng)在數(shù)字的數(shù)據(jù)集中訓(xùn)練的時候,這些濾波器可以被可視化為一些不同的數(shù)字的筆畫的檢測器。當(dāng)在自然圖像中訓(xùn)練時,這些濾波器就相當(dāng)于不同的邊緣檢測器了(小波濾波器)。
?????? 本文的目標(biāo)是研究一種可以可視化深度架構(gòu)中任意層中的任意神經(jīng)元所計算或者提取的特征的一種方法。為了達(dá)到這個目的,我們需要在輸入空間(圖像)中實現(xiàn)可視化,并且需要找到一種有效地計算方法去計算,然后使他具有通用性,也就是在不同的深度網(wǎng)絡(luò)模型中都可以使用。在這里我們探究了幾種方法。然后我們在兩個數(shù)據(jù)集中對他們進(jìn)行了定性的對比,研究他們之間的聯(lián)系性。
?????? 在實驗過程中,一個非常讓人驚喜的地方是,每一個隱層的節(jié)點對輸入圖像的響應(yīng),也就是輸入空間的函數(shù),居然是單峰的,也就是說,不管你隨機(jī)地在什么地方初始化,最終都可以可靠地找到這個最大值,這對于迭代尋優(yōu)來說是非常爽的,而且它可以將每個節(jié)點做了什么公開于天下。一覽無余。
?
二、模型
????? 我們這里討論兩個模型,這兩個模型都是在深度架構(gòu)中比較常見的。第一個是DBNs,它是通過貪婪的堆疊多個RBM層得到的。我們先通過CD算法訓(xùn)練一個RBM,然后固定它,再將其輸出做了另一個RBM的輸入,去訓(xùn)練這一個隱層的RBM。這個過程可以通過不斷重復(fù),然后得到一個服從訓(xùn)練分布的非監(jiān)督模型的深度架構(gòu)。需要注意的一點是,它是一個數(shù)據(jù)的生成模型,可以很容易的通過一個已經(jīng)訓(xùn)練好的模型去采集樣本。
我們要討論的第二個模型是降噪自動編碼器,它是傳統(tǒng)編碼器的隨機(jī)變種,它具有更強的能力。它不會學(xué)習(xí)到恒等函數(shù)(也就是h(x)=x,這個函數(shù)滿足了零重構(gòu)誤差,但這是沒有意義的)。它被強制去學(xué)習(xí)輸入的本質(zhì)表達(dá)。
它訓(xùn)練的關(guān)鍵是需要不斷的提高生成模型的似然函數(shù)的下界。它比傳統(tǒng)的編碼機(jī)要牛逼,如果堆疊成一個深度監(jiān)督架構(gòu)的話,與RBMs的性能相當(dāng),甚至更牛。另一個在隱層單元比輸入單元要多的情況下避免學(xué)習(xí)恒等函數(shù)的方式是對隱層code增加稀疏約束。
???????? 我們在這里概括下Stacked Denoising Auto-Encoders的訓(xùn)練方法。對于一個輸入x,我們給它添加隨機(jī)的污染或者噪聲,然后訓(xùn)練讓降噪自動編碼機(jī)學(xué)習(xí)重構(gòu)原始的輸入x。每個自動編碼機(jī)的輸出都是一個碼矢h(x)。在這里和傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)一樣,h(x) = sigmoid(b + W x)。這里我們用C(x)表示x的一個隨機(jī)污染,我們讓Ci (x) = xi或 0,換句話說,就是我們隨機(jī)的在原來的x中挑選一個固定大小的子集,把他們設(shè)置為0。我們還可以添加椒鹽噪聲,隨機(jī)的選擇一定大小的子集,設(shè)置為Bernoulli(0.5)。
?????? 在實際的圖像中,對于特定像素i的像素輸入xi和它的重構(gòu)像素xii都可以看成該像素的伯努利概率:該位置的像素被涂成黑色的概率。我們通過交叉熵來比較該像素位置i的原始輸入xi和它的重構(gòu)像素xii的分布的相似性。然后需要對所有像素求和。另外,只有當(dāng)輸入和重構(gòu)的值都在[0,1]這個范圍的時候,伯努利分布才有意義。另外的選擇就是選擇高斯分布,這時候?qū)?yīng)的就是均方誤差規(guī)則了。
?
三、Maximizing the activation 最大化激活值
????????第一個思想是很簡單的:我們尋找使一個給定的隱層單元的激活值最大的輸入模式。因為第一層的每一個節(jié)點的激活函數(shù)都是輸入的線性函數(shù),所以對第一層來說,它的輸入模式和濾波器本身是成比例的。
??????? 我們回顧下諾貝爾醫(yī)學(xué)獎David Hubel 和Torsten Wiesel 的那個偉大的實驗。他們發(fā)現(xiàn)了一種被稱為“方向選擇性細(xì)胞(Orientation Selective Cell)”的神經(jīng)元細(xì)胞。當(dāng)瞳孔發(fā)現(xiàn)了眼前的物體的邊緣,而且這個邊緣指向某個方向時,這種神經(jīng)元細(xì)胞就會活躍。也就是說某個“特定方向神經(jīng)細(xì)胞”只對這個特定方向的圖像邊緣存在激勵或者興奮。通俗點說就是如果我這個神經(jīng)元是提取這個特征的,那么如果你這個圖像滿足這個特征(可以理解為和它很相似),那么神經(jīng)元的輸出就很大,會興奮。(有資料表明,人的大腦高層會存在“祖母細(xì)胞”,這類細(xì)胞的某一個細(xì)胞只對特定一個目標(biāo)興奮,例如你大腦里面有個能記憶你女朋友的細(xì)胞,然后一旦你女朋友出現(xiàn)在你面前,你這個細(xì)胞就會興奮,告訴大腦,啊,這個是我的女朋友!)我們?nèi)绻私膺^模板卷積,那么我們知道如果某個卷積模板與圖像中模塊越相似,那么響應(yīng)就越大。相反,如果某個圖像輸入使得這個神經(jīng)元輸出激勵值最大,那么我們就有理由相信,這個神經(jīng)元就是提取了和這個輸入差不多的特征。所以我們尋找可以使這個神經(jīng)元輸入最大的那個x就是我們可以可視化并且有意義的表達(dá)這個神經(jīng)元學(xué)習(xí)到的特征了。
?????? 用數(shù)學(xué)屬于來表述就是,一旦完成網(wǎng)絡(luò)訓(xùn)練后,參數(shù)W是確定的了,那么我們就可以尋找使得這個神經(jīng)元最大化的激活值對應(yīng)的x了,也就是:
??????? 但這個優(yōu)化問題通常是一個非凸優(yōu)化問題,也就是是存在很多局部最小值。最簡單的方法就是通過梯度下降去尋找到一個局部最小值。這會出現(xiàn)兩種場景:一是從不同的隨機(jī)值初始化開始最后都迭代得到相同的最小值,二是得到兩個或者更多的局部最小值。不管是哪種情況,該神經(jīng)節(jié)點提取的特征都可以通過找到的一個或者多個最小值進(jìn)行描述。如果有多個最小值,那么可以尋找使激活值最大的或者將所有的進(jìn)行平均,或者把所有的都顯示出來。
?
四、Sampling from a unit of a Deep Belief Network 從DBN的一個節(jié)點中采樣
?????? 我們這里用一個j層的Deep Belief Network來說明。這里層j和層j-1構(gòu)成一個RBM,我們可以通過塊Gibbs采樣方法來對分布p(hj?1|hj ) 和 p(hj |hj?1)進(jìn)行連續(xù)采樣(這里hj表示層j的所有的二值節(jié)點構(gòu)成的向量)。在這個馬爾科夫鏈中,我們限制一個節(jié)點hij為1,其他節(jié)點都是0 。然后在DBN中,我們從層j-1一直執(zhí)行top-down采樣一直到輸入層。這樣就會產(chǎn)生一個分布pj(x|hij=1)。也就是說我們用分布pj(x|hij=1)來描述hij,和第三部分相似,我們可以通過從這個分布生成或者采樣足夠多的樣本來描述這個隱層節(jié)點或者通過計算期望E[x|hij=1]來概括這個信息。這個方法只有一個參數(shù)需要確定,也就是我們要采樣多少個樣本來估計這個期望值。
?????? 在最大化激活值和計算期望E[x|hij=1] 兩種方法之間是存在一個非常微妙的聯(lián)系的。由條件期望的定義我們可以知道:
??????? 我們考慮一個極端的情況,就是這個分布全部集中在x+這一個點,這時候pj(x|hij=1)約等于δx+ (x)。所以其期望E[x|hij=1]= x+。
??????? 事實上,我們觀測到的是,盡管采樣得到的樣本或者它們的平均可能看起來很像訓(xùn)練樣本,但是由激活值最大化獲得的圖像反而看起來更像圖像的部分。所以后者可能更能準(zhǔn)確的表達(dá)一個特定的節(jié)點做了什么。
?
五、Linear combination of previous layers’ filters 上層濾波器的線性組合
???????? Lee等(2008)在他們的論文中展示了一種可視化第二層隱層的節(jié)點的特征的方法。他們是基于一個神經(jīng)元節(jié)點可以由和其強連接的上一層的濾波器的組合來描述的假設(shè)的。該層的某個節(jié)點的可視化可以通過上一層濾波器的線性加權(quán)得到,每個濾波器的權(quán)值就是該濾波器與這個節(jié)點之間的連接權(quán)值。
???????? 他們用自然圖像訓(xùn)練了一個具有激活值稀疏約束的DBNs,然后用這種方法顯示它在第二層學(xué)習(xí)到的是一個角的檢測器。Lee拓展了這個方法去可視化第三層學(xué)習(xí)到的東西:通過簡單對第二層的濾波器進(jìn)行加權(quán),權(quán)值是第二層濾波器到第三層該節(jié)點的連接權(quán)值,而且選擇的是最大的那個權(quán)值。
?????? 這種方法是簡單而有效的。但是它的一個缺點就是,對在每一層如何自動的選擇合適的濾波器個數(shù)沒有一個清晰的準(zhǔn)則。另外,如果只是選擇少有的幾個與第一次連接最強的濾波器的話,我們有可能得到的是失望的毫無意思的混雜圖像,這是因為上面這種方法本質(zhì)上忽略了上一層其他沒有被選擇的濾波器。另一方面,這種方法還忽略了層間的非線性,這種非線性在模型中確是非常重要的一部分。
?????? 但值得注意的是,實際上最大化一個節(jié)點的激活值的梯度更新方法與線性加權(quán)組合之前也存在微妙的聯(lián)系。例如,對于第2層的第i個節(jié)點hi2= v’ sigmoid(W x),這里v是該節(jié)點的權(quán)值,W是第一層的權(quán)值矩陣。然后?hi2/?x = v’diag(sigmoid(W x) ? (1 ?sigmoid(W x)))W。這里*是逐元素相乘。diag是一個從一個向量創(chuàng)建一個對角矩陣的算子。1是個全一向量。如果第一層的節(jié)點沒有飽和saturate,那么?hi2/?x就會大體的指向v’W的方向,可以用vi中的元素的絕對值的最大的那個來近似。(我也還沒懂)
?
六、實驗
6.1、Data and setup
???????? 我們在MINST手寫體數(shù)據(jù)庫和自然圖像數(shù)據(jù)庫中分別訓(xùn)練DBN和DSAE兩種模型。然后再用三種方法來可視化其中一些層的一些節(jié)點所提取到的特征。
6.2、Activation Maximization
?????? 在MNIST手寫體數(shù)據(jù)庫中用Activation maximization得到的可視化效果。左:分別是第一層(第一列)、第二層(第二列)和第三層(第三列)的36個節(jié)點所提取的特征,然后第一行是DBN訓(xùn)練得到的,第二行是SDAE訓(xùn)練得到的。右:對于DBN的第三層的一個節(jié)點,然后從9個隨機(jī)初始化的值開始迭代,都可以得到同一個結(jié)果。
?????? 一般來說,在第三層的激活函數(shù)應(yīng)該是一個關(guān)于它的輸入的高度非凸的函數(shù),但是不知道是我們一直很幸運還是說恰好我們在MNIST或者自然圖像中訓(xùn)練網(wǎng)絡(luò)是一種很特殊的情況,我們驚喜的發(fā)現(xiàn),這些節(jié)點的激活函數(shù)既然還是趨向于更加的“單峰化”。
?
6.3、Sampling a unit
?????? 左:從MNIST數(shù)據(jù)庫中訓(xùn)練DBN得到的,然后采樣得到第二層的其中6個節(jié)點的可視化效果。右:從自然圖像中訓(xùn)練的。每一行的樣本是每一個節(jié)點的分布采樣得到的,然后每行的均值在第一列。
??????? 值得注意的是,采樣法和激活值最大化方法的結(jié)果不同,采樣得到的(或者說分布生成的)樣本更有可能是訓(xùn)練樣本(數(shù)字或者patches)的潛在分布。激活值最大化方法是產(chǎn)生很多特征,然后要我們?nèi)Q定哪些樣本會匹配或者符合這些特征;采樣方法是產(chǎn)生很多樣本,然后由我們決定這些樣本存在哪些共同的特征。從這個層面上面講,這兩種方法是互補的。
?
6.4、Comparison of methods
?????? 在這里,我們對比可視化的三種方法:激活最大化、采樣和線性組合法。
???????我們這里展示了三種方法:左:采樣;中:上次濾波器的線性組合;右:最大化節(jié)點激活值。在MINST數(shù)據(jù)庫(top)和自然圖像(down)上訓(xùn)練DBN模型。然后可視化第二層的36個節(jié)點。
???????在這三種方法中,線性組合方法是以前提出來的,其他兩種是我們以現(xiàn)有的知識嗎,集當(dāng)前的智慧得到的。
?
?????? 附:原論文中,提到了更多的內(nèi)容,深入了解請參考原論文。另外,自己還沒來得及去實現(xiàn)一些,等以后可以了再放上來和大家交流下。也希望大家已經(jīng)實現(xiàn)了的也可以共享下,謝謝。
總結(jié)
以上是生活随笔為你收集整理的Deep Learning论文笔记之(七)深度网络高层特征可视化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Deep Learning论文笔记之(六
- 下一篇: Deep Learning论文笔记之(八