Deep Learning論文筆記之(七)深度網路高層特徵可視化

來源:互聯網
上載者:User

Deep Learning論文筆記之(七)深度網路高層特徵可視化

zouxy09@qq.com

http://blog.csdn.net/zouxy09

 

         自己平時看了一些論文,但老感覺看完過後就會慢慢的淡忘,某一天重新拾起來的時候又好像沒有看過一樣。所以想習慣地把一些感覺有用的論文中的知識點總結整理一下,一方面在整理過程中,自己的理解也會更深,另一方面也方便未來自己的勘察。更好的還可以放到部落格上面與大家交流。因為基礎有限,所以對論文的一些理解可能不太正確,還望大家不吝指正交流,謝謝。

 

        本文的論文來自:

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很吸引人,也很玄乎的一個點就是大家都說它可以提取到分級的逐層抽象的特徵。但對我們來說,總是耳聽為虛,眼見為實。所以,每當我們訓練完一個深度模型後,我們還特別想把這個深度模型學到的東西給可視化出來,好弄明白它到底學到了什麼東西,是不是有意義的,是不是像傳說中的那樣神奇。那怎樣有意義的可視化呢?對了,我們用deep net來做什麼的了?來提取特徵的。那它提取什麼特徵呢?如果它像我們所說的提取的是底層到高層的特徵,例如邊緣,到形狀,到目標等等,那就證明我們的目的是達到的。

       另外,在對深度模型定量的分析上,我們還需要一個定性的分析方法去比較不同的深度架構學習到的特徵。本文的目的就是尋找深度模型所提取到的進階特徵的比較好的定性解釋。我們通過在幾個視覺資料庫中訓練堆疊降噪自動編碼器和DBN深信網路,並比較幾種不同的進階特徵可視化的方法。雖然這些特徵的顯示是在單元層級上面的,也許有違於直觀理解,但它很容易實現,而且在不同方法上面得到的結果也是一致的。我們希望這些方法可以讓研究者更清楚的理解深度學習是如何工作和為什麼工作的。本文中,介紹三種可視化的方法:啟用最大化、採樣和線性組合法。

 

一、概述

       一些深度架構(例如DBNs)與generative procedure產生過程存在密切的聯絡,所以我們可以利用這個產生過程來瞥見一個單獨的隱層神經元所表示的是什麼。在這裡,我們研究其中一個這樣的採樣方法。然而,一方面有時候我們很難去獲得可以完全覆蓋波爾茲曼或者RBM分布的樣本,另一方面這種基於採樣的可視化方法沒辦法運用到其他基於自動編碼器的深度架構模型或者在每個層嵌入保留相似性的半監督學習模型上。

       一個典型的對深度架構第一層所提取的特徵的定性分析方法是通過觀察由模型所學習到的這些濾波器。這些濾波器是輸入層到第一層的權值矩陣的權值。他們是由輸入空間來表示。這樣就非常方便了,因為輸入是映像或者小波,他們是可以被可視化的。

       一般來說,當在數位資料集中訓練的時候,這些濾波器可以被可視化為一些不同的數位筆畫的檢測器。當在自然映像中訓練時,這些濾波器就相當於不同的邊緣檢測器了(小波濾波器)。

       本文的目標是研究一種可以可視化深度架構中任意層中的任意神經元所計算或者提取的特徵的一種方法。為了達到這個目的,我們需要在輸入空間(映像)中實現可視化,並且需要找到一種有效地計算方法去計算,然後使他具有通用性,也就是在不同的深度網路模型中都可以使用。在這裡我們探究了幾種方法。然後我們在兩個資料集中對他們進行了定性的對比,研究他們之間的聯絡性。

       在實驗過程中,一個非常讓人驚喜的地方是,每一個隱層的節點對輸入映像的響應,也就是輸入空間的函數,居然是單峰的,也就是說,不管你隨機地在什麼地方初始化,最終都可以可靠地找到這個最大值,這對於迭代尋優來說是非常爽的,而且它可以將每個節點做了什麼公開於天下。一覽無餘。

 

二、模型

      我們這裡討論兩個模型,這兩個模型都是在深度架構中比較常見的。第一個是DBNs,它是通過貪婪的堆疊多個RBM層得到的。我們先通過CD演算法訓練一個RBM,然後固定它,再將其輸出做了另一個RBM的輸入,去訓練這一個隱層的RBM。這個過程可以通過不斷重複,然後得到一個服從訓練分布的非監督模型的深度架構。需要注意的一點是,它是一個資料的產生模型,可以很容易的通過一個已經訓練好的模型去採集樣本。

我們要討論的第二個模型是降噪自動編碼器,它是傳統編碼器的隨機變種,它具有更強的能力。它不會學習到恒等函數(也就是h(x)=x,這個函數滿足了零重構誤差,但這是沒有意義的)。它被強制去學習輸入的本質表達。

它訓練的關鍵是需要不斷的提高產生模型的似然函數的下界。它比傳統的編碼機要牛逼,如果堆疊成一個深度監督架構的話,與RBMs的效能相當,甚至更牛。另一個在隱層單元比輸入單元要多的情況下避免學習恒等函數的方式是對隱層code增加稀疏約束。

         我們在這裡概括下Stacked Denoising Auto-Encoders的訓練方法。對於一個輸入x,我們給它添加隨機的汙染或者雜訊,然後訓練讓降噪自動編碼機學習重構原始的輸入x。每個自動編碼機的輸出都是一個碼矢h(x)。在這裡和傳統的神經網路一樣,h(x) = sigmoid(b + W x)。這裡我們用C(x)表示x的一個隨機汙染,我們讓Ci (x) = xi或 0,換句話說,就是我們隨機的在原來的x中挑選一個固定大小的子集,把他們設定為0。我們還可以添加椒鹽雜訊,隨機的選擇一定大小的子集,設定為Bernoulli(0.5)。

       在實際的映像中,對於特定像素i的像素輸入xi和它的重構像素xii都可以看成該像素的伯努利機率:該位置的像素被塗成黑色的機率。我們通過交叉熵來比較該像素位置i的原始輸入xi和它的重構像素xii的分布的相似性。然後需要對所有像素求和。另外,只有當輸入和重構的值都在[0,1]這個範圍的時候,伯努利分布才有意義。另外的選擇就是選擇高斯分布,這時候對應的就是均方誤差規則了。

 

三、Maximizing the activation 最大化啟用值

        第一個思想是很簡單的:我們尋找使一個給定的隱層單元的啟用值最大的輸入模式。因為第一層的每一個節點的啟用函數都是輸入的線性函數,所以對第一層來說,它的輸入模式和濾波器本身是成比例的。

        我們回顧下諾貝爾醫學獎David Hubel 和Torsten Wiesel 的那個偉大的實驗。他們發現了一種被稱為“方向選擇性細胞(Orientation Selective Cell)”的神經元細胞。當瞳孔發現了眼前的物體的邊緣,而且這個邊緣指向某個方向時,這種神經元細胞就會活躍。也就是說某個“特定方向神經細胞”只對這個特定方向的映像邊緣存在激勵或者興奮。通俗點說就是如果我這個神經元是提取這個特徵的,那麼如果你這個映像滿足這個特徵(可以理解為和它很相似),那麼神經元的輸出就很大,會興奮。(有資料表明,人的大腦高層會存在“祖母細胞”,這類細胞的某一個細胞只對特定一個目標興奮,例如你大腦裡面有個能記憶你女朋友的細胞,然後一旦你女朋友出現在你面前,你這個細胞就會興奮,告訴大腦,啊,這個是我的女朋友!)我們如果瞭解過模板卷積,那麼我們知道如果某個卷積模板與映像中模組越相似,那麼響應就越大。相反,如果某個映像輸入使得這個神經元輸出激勵值最大,那麼我們就有理由相信,這個神經元就是提取了和這個輸入差不多的特徵。所以我們尋找可以使這個神經元輸入最大的那個x就是我們可以可視化並且有意義的表達這個神經元學習到的特徵了。

       用數學屬於來表述就是,一旦完成網路訓練後,參數W是確定的了,那麼我們就可以尋找使得這個神經元最大化的啟用值對應的x了,也就是:

        但這個最佳化問題通常是一個非凸最佳化問題,也就是是存在很多局部最小值。最簡單的方法就是通過梯度下降去尋找到一個局部最小值。這會出現兩種情境:一是從不同的隨機值初始化開始最後都迭代得到相同的最小值,二是得到兩個或者更多的局部最小值。不管是哪種情況,該神經節點提取的特徵都可以通過找到的一個或者多個最小值進行描述。如果有多個最小值,那麼可以尋找使啟用值最大的或者將所有的進行平均,或者把所有的都顯示出來。

 

四、Sampling from a unit of a Deep Belief Network 從DBN的一個節點中採樣

       我們這裡用一個j層的Deep Belief Network來說明。這裡層j和層j-1構成一個RBM,我們可以通過塊Gibbs採樣方法來對分布p(hj−1|hj ) 和 p(hj |hj−1)進行連續採樣(這裡hj展示層j的所有的二值節點構成的向量)。在這個馬爾科夫鏈中,我們限制一個節點hij為1,其他節點都是0 。然後在DBN中,我們從層j-1一直執行top-down採樣一直到輸入層。這樣就會產生一個分布pj(x|hij=1)。也就是說我們用分布pj(x|hij=1)來描述hij,和第三部分相似,我們可以通過從這個分布產生或者採樣足夠多的樣本來描述這個隱層節點或者通過計算期望E[x|hij=1]來概括這個資訊。這個方法只有一個參數需要確定,也就是我們要採樣多少個樣本來估計這個期望值。

       在最大化啟用值和計算期望E[x|hij=1] 兩種方法之間是存在一個非常微妙的聯絡的。由條件期望的定義我們可以知道:

        我們考慮一個極端的情況,就是這個分布全部集中在x+這一個點,這時候pj(x|hij=1)約等於δx+ (x)。所以其期望E[x|hij=1]= x+。

        事實上,我們觀測到的是,儘管採樣得到的樣本或者它們的平均可能看起來很像訓練樣本,但是由啟用值最大化獲得的映像反而看起來更像映像的部分。所以後者可能更能準確的表達一個特定的節點做了什麼。

 

五、Linear combination of previous layers’ filters 上層濾波器的線性組合

         Lee等(2008)在他們的論文中展示了一種可視化第二層隱層的節點的特徵的方法。他們是基於一個神經元節點可以由和其強串連的上一層的濾波器的組合來描述的假設的。該層的某個節點的可視化可以通過上一層濾波器的線性加權得到,每個濾波器的權值就是該濾波器與這個節點之間的串連權值。

         他們用自然映像訓練了一個具有啟用值稀疏約束的DBNs,然後用這種方法顯示它在第二層學習到的是一個角的檢測器。Lee拓展了這個方法去可視化第三層學習到的東西:通過簡單對第二層的濾波器進行加權,權值是第二層濾波器到第三層該節點的串連權值,而且選擇的是最大的那個權值。

       這種方法是簡單而有效。但是它的一個缺點就是,對在每一層如何自動的選擇合適的濾波器個數沒有一個清晰的準則。另外,如果只是選擇少有的幾個與第一次串連最強的濾波器的話,我們有可能得到的是失望的毫無意思的混雜映像,這是因為上面這種方法本質上忽略了上一層其他沒有被選擇的濾波器。另一方面,這種方法還忽略了層間的非線性,這種非線性在模型中確是非常重要的一部分。

       但值得注意的是,實際上最大化一個節點的啟用值的梯度更新方法與線性加權組合之前也存在微妙的聯絡。例如,對於第2層的第i個節點hi2= v’ sigmoid(W x),這裡v是該節點的權值,W是第一層的權值矩陣。然後∂hi2/∂x = v’diag(sigmoid(W x) ∗ (1 −sigmoid(W x)))W。這裡*是逐元素相乘。diag是一個從一個向量建立一個對角矩陣的運算元。1是個全一向量。如果第一層的節點沒有飽和saturate,那麼∂hi2/∂x就會大體的指向v’W的方向,可以用vi中的元素的絕對值的最大的那個來近似。(我也還沒懂)

 

六、實驗

6.1、Data and setup

         我們在MINST手寫體資料庫和自然映像資料庫中分別訓練DBN和DSAE兩種模型。然後再用三種方法來可視化其中一些層的一些節點所提取到的特徵。

6.2、Activation Maximization

       在MNIST手寫體資料庫中用Activation maximization得到的視覺效果。左:分別是第一層(第一列)、第二層(第二列)和第三層(第三列)的36個節點所提取的特徵,然後第一行是DBN訓練得到的,第二行是SDAE訓練得到的。右:對於DBN的第三層的一個節點,然後從9個隨機初始化的值開始迭代,都可以得到同一個結果。

       一般來說,在第三層的啟用函數應該是一個關於它的輸入的高度非凸的函數,但是不知道是我們一直很幸運還是說恰好我們在MNIST或者自然映像中訓練網路是一種很特殊的情況,我們驚喜的發現,這些節點的啟用函數既然還是趨向於更加的“單峰化”。

 

6.3、Sampling a unit

       左:從MNIST資料庫中訓練DBN得到的,然後採樣得到第二層的其中6個節點的視覺效果。右:從自然映像中訓練的。每一行的樣本是每一個節點的分布採樣得到的,然後每行的均值在第一列。

        值得注意的是,採樣法和啟用值最大化方法的結果不同,採樣得到的(或者說分布產生的)樣本更有可能是訓練樣本(數字或者patches)的潛在分布。啟用值最大化方法是產生很多特徵,然後要我們去決定哪些樣本會匹配或者符合這些特徵;採樣方法是產生很多樣本,然後由我們決定這些樣本存在哪些共同的特徵。從這個層面上面講,這兩種方法是互補的。

 

6.4、Comparison of methods

       在這裡,我們對比可視化的三種方法:啟用最大化、採樣和線性組合法。

       我們這裡展示了三種方法:左:採樣;中:上次濾波器的線性組合;右:最大化節點啟用值。在MINST資料庫(top)和自然映像(down)上訓練DBN模型。然後可視化第二層的36個節點。

       在這三種方法中,線性組合方法是以前提出來的,其他兩種是我們以現有的知識嗎,集當前的智慧得到的。

 

       附:原論文中,提到了更多的內容,深入瞭解請參考原論文。另外,自己還沒來得及去實現一些,等以後可以了再放上來和大家交流下。也希望大家已經實現了的也可以共用下,謝謝。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.