NO IMAGE
“深度學習”學習筆記之深度信念網路 
 
本篇非常簡要地介紹了深度信念網路的基本概念。文章先簡要介紹了深度信念網路(包括其應用例項)。接著分別講述了:(1) 其基本組成結構——受限玻爾茲曼機的的基本情況,以及,(2) 這個基本結構如何組成深度信念網路。 本文僅僅能使讀者瞭解深度信念網路這一概念,內容非常淺顯,甚至有許多不嚴密的地方。如果有願意深入瞭解受限玻爾茲曼機、深度信念網路的,想對深度學習有更多瞭解的,請訪問深度學習官方網站。或者讀者可以參考文末的“推薦閱讀”一節。 
 
目錄 
概述 ……………………………………………………………………………………………………………… 2 
受限玻爾茲曼機 ……………………………………………………………………………………………… 3 
神經元之間的條件獨立性 ……………………………………………………………………………… 3 
使用 RBM 的過程 ……………………………………………………………………………………….. 4 
訓練 RBM ………………………………………………………………………………………………….. 5 
深度信念網路 …………………………………………………………………………………………………. 5 
訓練過程: …………………………………………………………………………………………………. 6 
調優過程 (Fine-Tuning) : ………………………………………………………………………….. 6 
使用過程 ……………………………………………………………………………………………………. 7 
推薦閱讀 ……………………………………………………………………………………………………….. 8 
論文 ………………………………………………………………………………………………………….. 8 
博文和網路教程 ………………………………………………………………………………………….. 8 
 
 
概述 
深度信念網路 (Deep Belief Network, DBN) 由 Geoffrey Hinton 在 2006 年提出。它是一種生成模型,通過訓練其神經元間的權重,我們可以讓整個神經網路按照最大概率來生成訓練資料。我們不僅可以使用 DBN 識別特徵、分類資料,還可以用它來生成資料。下面的圖片展示的是用 DBN 識別手寫數字: 
【轉】深度學習--深度信念網路(Deep Belief Network) - 路過天堂_ellen - 狗狗的地盤_ellen

 

圖 1 用深度信念網路識別手寫數字。圖中右下角是待識別數字的黑白點陣圖,它的上方有三層隱性神經元。每一個黑色矩形代表一層神經元,白點代表處於開啟狀態的神經元,黑色代表處於關閉狀態的神經元。注意頂層神經元的左下方即使別結果,與畫面左上角的對應表比對,得知這個 DBN 正確地識別了該數字。
 
下面是展示了一個學習了大量英文維基百科文章的 DBN 所生成的自然語言段落: 
In 1974 Northern Denver had been overshadowed by CNL, and several Irish intelligence agencies in the Mediterranean region. However, on the Victoria, Kings Hebrew stated that Charles decided to escape during an 
alliance. The mansion house was completed in 1882, the second in its bridge are omitted, while closing is the proton reticulum composed below it aims, such that it is the blurring of appearing on any well-paid type of box printer. 
 
DBN 由多層神經元構成,這些神經元又分為顯性神經元隱性神經元(以下簡稱顯元和隱元)。顯元用於接受輸入,隱元用於提取特徵。因此隱元也有個別名,叫特徵檢測器 (feature
detectors)。最頂上的兩層間的連線是無向的,組成聯合記憶體 (associative memory)。較低的其他層之間有連線上下的有向連線。最底層代表了資料向量 (data vectors),每一個神經元代表資料向量的一維。 
DBN 的組成元件是受限玻爾茲曼機 (Restricted Boltzmann Machines, RBM)。訓練 DBN 的過程是一層一層地進行的。在每一層中,用資料向量來推斷隱層,再把這一隱層當作下一層 (高一層) 的資料向量。 
受限玻爾茲曼機 
如前所述,RBM 是 DBN 的組成元件。事實上,每一個 RBM 都可以單獨用作聚類器。 
RBM 只有兩層神經元,一層叫做顯層 (visible layer),由顯元 (visible units) 組成,用於輸入訓練資料。另一層叫做隱層 (Hidden
layer),相應地,由隱元 (hidden units) 組成,用作特徵檢測器 (feature detectors)。 
 【轉】深度學習--深度信念網路(Deep Belief Network) - 路過天堂_ellen - 狗狗的地盤_ellen

 

圖 2 受限玻爾茲曼機的結構。圖中的較上一層神經元組成隱層,較下的神經元組成顯元。每一層都可以用一個向量來表示,每一維表示每個神經元。注意這兩層間的對稱 (雙向) 連線。 
神經元之間的條件獨立性 
應注意到,顯層和隱層內部的神經元都沒有互連,只有層間的神經元有對稱的連線線。這樣的好處是,在給定所有顯元的值的情況下,每一個隱元取什麼值是互不相關的。也就是說, 
【轉】深度學習--深度信念網路(Deep Belief Network) - 路過天堂_ellen - 狗狗的地盤_ellen

 同樣,在給定隱層時,所有顯元的取值也互不相關: 

【轉】深度學習--深度信念網路(Deep Belief Network) - 路過天堂_ellen - 狗狗的地盤_ellen

 

有了這個重要性質,我們在計算每個神經元的取值情況時就不必每次計算一個,而是同時並行地計算整層神經元。 
 
使用 RBM 的過程 
假設我們現在已經得到一個訓練好的 RBM,每個隱元與顯元間的權重用矩陣
W表示,且: 
【轉】深度學習--深度信念網路(Deep Belief Network) - 路過天堂_ellen - 狗狗的地盤_ellen
  
其中Wij代表從第i個顯元到第j個隱元的權重,M代表顯元的個數,N代表隱元的個數。那麼,當我們把一條新來的資料【轉】深度學習--深度信念網路(Deep Belief Network) - 路過天堂_ellen - 狗狗的地盤_ellen附給
(clamp to) 顯層後,RBM 將會依照權值W來決定開啟或關閉隱元。具體的操作如下: 
首先,將每個隱元的激勵值 (activation) 計算出來: 
【轉】深度學習--深度信念網路(Deep Belief Network) - 路過天堂_ellen - 狗狗的地盤_ellen

 注意,這裡用到了前面提到的神經元之間的條件獨立性。 

然後,將每個隱元的激勵值都用 S 形函式進行標準化,變成它們處於開啟狀 (用 1 表示) 的概率值: 
【轉】深度學習--深度信念網路(Deep Belief Network) - 路過天堂_ellen - 狗狗的地盤_ellen

 

此處的 S 形函式我們採用的是 Logistic 函式: 
【轉】深度學習--深度信念網路(Deep Belief Network) - 路過天堂_ellen - 狗狗的地盤_ellen
至此,每個隱元hj開啟的概率被計算出來了。其處於關閉狀態 (用 0 表示) 的概率自然也就是 
【轉】深度學習--深度信念網路(Deep Belief Network) - 路過天堂_ellen - 狗狗的地盤_ellen

那麼到底這個元開啟還是關閉,我們需要將開啟的概率與一個從 0, 1 均勻分佈中抽取的隨機值 

【轉】深度學習--深度信念網路(Deep Belief Network) - 路過天堂_ellen - 狗狗的地盤_ellen

 進行如下比較 

【轉】深度學習--深度信念網路(Deep Belief Network) - 路過天堂_ellen - 狗狗的地盤_ellen
然後開啟或關閉相應的隱元。
給定隱層,計算顯層的方法是一樣的。 
訓練 RBM 
RBM 的訓練過程,實際上是求出一個最能產生訓練樣本的概率分佈。也就是說,要求一個分佈,在這個分佈裡,訓練樣本的概率最大。由於這個分佈的決定性因素在於權值W ,所以我們訓練 RBM 的目標就是尋找最佳的權值。為了保持讀者的興趣,這裡我們不給出最大化對數似然函式的推導過程,直接說明如何訓練 RBM。 
G. Hinton 提出了名為對比散度 (Contrastive Divergence) 的學習演算法。下面我們來詳述它的具體過程。 
我們沿用前文的符號記法。 
演算法1. 對比散度 
對於訓練集中的每一條記錄
【轉】深度學習--深度信念網路(Deep Belief Network) - 路過天堂_ellen - 狗狗的地盤_ellen

  

如此訓練之後的 RBM 就能較為準確地提取顯層的特徵,或者根據隱層所代表
的特徵還原顯層了。 
深度信念網路 
前文我們已經介紹了 RBM 的基本結構和其訓練、使用過程,接下來我們介紹DBN 的相關內容。
DBN 是由多層 RBM 組成的一個神經網路,它既可以被看作一個生成模型,也可以當作判別模型,其訓練過程是:使用非監督貪婪逐層方法去預訓練獲得權值。 
訓練過程: 
1. 首先充分訓練第一個 RBM; 
2. 固定第一個 RBM 的權重和偏移量,然後使用其隱性神經元的狀態,作為第二個 RBM 的輸入向量; 
3. 充分訓練第二個 RBM 後,將第二個 RBM 堆疊在第一個 RBM 的上方; 
4. 重複以上三個步驟任意多次; 
5. 如果訓練集中的資料有標籤,那麼在頂層的 RBM 訓練時,這個 RBM 的顯層中除了顯性神經元,還需要有代表分類標籤的神經元,一起進行訓練: 
a) 假設頂層 RBM 的顯層有 500 個顯性神經元,訓練資料的分類一共分成了 10 類; 
b) 那麼頂層 RBM 的顯層有 510 個顯性神經元,對每一訓練訓練資料,相應的標籤神經元被開啟設為 1,而其他的則被關閉設為 0。 
6. DBN 被訓練好後如下圖: (示意) 
【轉】深度學習--深度信念網路(Deep Belief Network) - 路過天堂_ellen - 狗狗的地盤_ellen
 圖 3 訓練好的深度信念網路。圖中的綠色部分就是在最頂層 RBM 中參與訓練的標籤。注意調優 (FINE-TUNING) 過程是一個判別模型 
 另:
【轉】深度學習--深度信念網路(Deep Belief Network) - 路過天堂_ellen - 狗狗的地盤_ellen

 

調優過程 (Fine-Tuning) : 
生成模型使用 Contrastive Wake-Sleep 演算法進行調優,其演算法過程是: 
1. 除了頂層 RBM,其他層 RBM 的權重被分成向上的認知權重和向下的生成權重; 
2. Wake 階段:認知過程,通過外界的特徵和向上的權重 (認知權重) 產生每一層的抽象表示 (結點狀態) ,並且使用梯度下降修改層間的下行權重 (生成權重) 。也就是“如果現實跟我想象的不一樣,改變我的權重使得我想
象的東西就是這樣的”。 
3. Sleep 階段:生成過程,通過頂層表示 (醒時學得的概念) 和向下權重,生成底層的狀態,同時修改層間向上的權重。也就是“如果夢中的景象不是我腦中的相應概念,改變我的認知權重使得這種景象在我看來就是這個概
念”。 
使用過程 :
1. 使用隨機隱性神經元狀態值,在頂層 RBM 中進行足夠多次的吉布斯抽樣; 
2. 向下傳播,得到每層的狀態。 
 
推薦閱讀 
論文 
1. Representation Learning: A Review and New Perspectives, Yoshua Bengio, Aaron Courville, Pascal Vincent, Arxiv, 2012. 
2. The monograph or review paper Learning Deep Architectures for AI (Foundations & Trends in Machine Learning, 2009). 
3. Deep Machine Learning – A New Frontier in Artificial Intelligence Research – a survey paper by Itamar Arel, Derek C. Rose, and Thomas P. Karnowski. 
4. A Fast Learning Algorithm for Deep Belief Nets by Geoffrey E. Hinton and Simon Osindero. 
博文和網路教程 
1. Introduction to Restricted Boltzmann Machines by Edwin Chen. 
2. An Introduction to Restricted Boltzmann Machines by Yuhuan Jiang. 
3. Restricted Boltzmann Machine – Short Tutorial by iMonad. 
4. 《深度學習學習筆記整理系列》 by Zouxy. 
下面是對上一面的補充

Deep Belief Networks深信度網路

        DBNs是一個概率生成模型,與傳統的判別模型的神經網路相對,生成模型是建立一個觀察資料和標籤之間的聯合分佈,對P(Observation|Label)和 P(Label|Observation)都做了評估,而判別模型僅僅而已評估了後者,也就是P(Label|Observation)。對於在深度神經網路應用傳統的BP演算法的時候,DBNs遇到了以下問題:

(1)需要為訓練提供一個有標籤的樣本集;

(2)學習過程較慢;

(3)不適當的引數選擇會導致學習收斂於區域性最優解。

       DBNs由多個限制玻爾茲曼機(Restricted Boltzmann Machines)層組成,一個典型的神經網路型別如圖三所示。這些網路被“限制”為一個可視層和一個隱層,層間存在連線,但層內的單元間不存在連線。隱層單元被訓練去捕捉在可視層表現出來的高階資料的相關性。

       首先,先不考慮最頂構成一個聯想記憶(associative memory)的兩層,一個DBN的連線是通過自頂向下的生成權值來指導確定的,RBMs就像一個建築塊一樣,相比傳統和深度分層的sigmoid信念網路,它能易於連線權值的學習。

       最開始的時候,通過一個非監督貪婪逐層方法去預訓練獲得生成模型的權值,非監督貪婪逐層方法被Hinton證明是有效的,並被其稱為對比分歧(contrastive divergence)。

       在這個訓練階段,在可視層會產生一個向量v,通過它將值傳遞到隱層。反過來,可視層的輸入會被隨機的選擇,以嘗試去重構原始的輸入訊號。最後,這些新的可視的神經元啟用單元將前向傳遞重構隱層啟用單元,獲得h(在訓練過程中,首先將可視向量值對映給隱單元;然後可視單元由隱層單元重建;這些新可視單元再次對映給隱單元,這樣就獲取新的隱單元。執行這種反覆步驟叫做吉布斯取樣)。這些後退和前進的步驟就是我們熟悉的Gibbs取樣,而隱層啟用單元和可視層輸入之間的相關性差別就作為權值更新的主要依據。

       訓練時間會顯著的減少,因為只需要單個步驟就可以接近最大似然學習。增加進網路的每一層都會改進訓練資料的對數概率,我們可以理解為越來越接近能量的真實表達。這個有意義的拓展,和無標籤資料的使用,是任何一個深度學習應用的決定性的因素。

       在最高兩層,權值被連線到一起,這樣更低層的輸出將會提供一個參考的線索或者關聯給頂層,這樣頂層就會將其聯絡到它的記憶內容。而我們最關心的,最後想得到的就是判別效能,例如分類任務裡面。

       在預訓練後,DBN可以通過利用帶標籤資料用BP演算法去對判別效能做調整。在這裡,一個標籤集將被附加到頂層(推廣聯想記憶),通過一個自下向上的,學習到的識別權值獲得一個網路的分類面。這個效能會比單純的BP演算法訓練的網路好。這可以很直觀的解釋,DBNs的BP演算法只需要對權值引數空間進行一個區域性的搜尋,這相比前向神經網路來說,訓練是要快的,而且收斂的時間也少。

       DBNs的靈活性使得它的拓展比較容易。一個拓展就是卷積DBNs(Convolutional Deep Belief Networks(CDBNs))。DBNs並沒有考慮到影象的2維結構資訊,因為輸入是簡單的從一個影象矩陣一維向量化的。而CDBNs就是考慮到了這個問題,它利用鄰域畫素的空域關係,通過一個稱為卷積RBMs的模型區達到生成模型的變換不變性,而且可以容易得變換到高維影象。DBNs並沒有明確地處理對觀察變數的時間聯絡的學習上,雖然目前已經有這方面的研究,例如堆疊時間RBMs,以此為推廣,有序列學習的dubbed
temporal convolutionmachines,這種序列學習的應用,給語音訊號處理問題帶來了一個讓人激動的未來研究方向。

       目前,和DBNs有關的研究包括堆疊自動編碼器,它是通過用堆疊自動編碼器來替換傳統DBNs裡面的RBMs。這就使得可以通過同樣的規則來訓練產生深度多層神經網路架構,但它缺少層的引數化的嚴格要求。與DBNs不同,自動編碼器使用判別模型,這樣這個結構就很難取樣輸入取樣空間,這就使得網路更難捕捉它的內部表達。但是,降噪自動編碼器卻能很好的避免這個問題,並且比傳統的DBNs更優。它通過在訓練過程新增隨機的汙染並堆疊產生場泛化效能。訓練單一的降噪自動編碼器的過程和RBMs訓練生成模型的過程一樣。

個人理解:
在DBNs網路的中其訓練是逐層次的,每一層訓練好之後才進行下一層的疊加,計算這一層的引數的,
還有就是DBNs可以看做是一種無監督的自編碼的過程其最後一層可以加入分類成份進行訓練,SAE,SDAE,DBN可以看做是一個大的型別,缺點是隻能是一維的資料。