精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Deep Learning論文筆記之(七)深度網絡高層特征可視化

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的所有的二值節點構成的向量)。在這個馬爾科夫鏈中,我們限制一個節點hij1,其他節點都是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.1Data and setup

         我們在MINST手寫體數據庫和自然圖像數據庫中分別訓練DBNDSAE兩種模型。然后再用三種方法來可視化其中一些層的一些節點所提取到的特征。

6.2Activation Maximization

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

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

 

6.3Sampling a unit

       左:從MNIST數據庫中訓練DBN得到的,然后采樣得到第二層的其中6個節點的可視化效果。右:從自然圖像中訓練的。每一行的樣本是每一個節點的分布采樣得到的,然后每行的均值在第一列。

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

 

6.4Comparison of methods

       在這里,我們對比可視化的三種方法:激活最大化、采樣和線性組合法

       我們這里展示了三種方法:左:采樣;中:上次濾波器的線性組合;右:最大化節點激活值。在MINST數據庫(top)和自然圖像(down)上訓練DBN模型。然后可視化第二層的36個節點。

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

 

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

 

本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
基于神經網絡的汽油車三效催化器老化診斷
四種基本的神經網絡架構
走進黑箱!OpenAI推出神經元可視化''顯微鏡'',支持8個常見CV模型
圖卷積和消息傳遞理論的可視化詳解
今天來探討下圖神經網絡的理論基礎
智造講堂:基于大數據模型的數字孿生建模方法
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 鹿泉市| 隆回县| 富宁县| 阳新县| 波密县| 辛集市| 苏尼特右旗| 天台县| 舟山市| 神木县| 连江县| 玉龙| 广平县| 海晏县| 边坝县| 汉源县| 崇仁县| 班戈县| 朝阳市| 大埔县| 肃宁县| 罗源县| 桂阳县| 高台县| 滦南县| 华安县| 唐河县| 同德县| 西乡县| 义乌市| 确山县| 长泰县| 虎林市| 扶余县| 松原市| 灵武市| 色达县| 莱芜市| 太康县| 通州区| 乌鲁木齐县|