1. 程式人生 > >系統學習深度學習(三) --RBM及DBN

系統學習深度學習(三) --RBM及DBN

轉自:http://blog.csdn.net/yt7589/article/details/52487505

另外,有一篇文章《RBM原理理解》寫的很詳細,每個過程都有詳細推導,也就通俗化的理解。我這裡也有做根據文章對博文做了相關補充。

我們目前的討論的神經網路,雖然學習演算法不同,但基本上架構還是相同的,就是都是分層網路,即神經元按層進行組織,層內神經元無連線,層間神經元間有連線。我們在這篇博文中,將討論一種非常不同的神經網路,這類神經網路是由沒層次關係的神經元全連線網路進化而來,採用有別於梯度下降演算法進行學習的網路。

這類網路首先起源於Holpfield網路,這是一種全聯接的網路,神經元之間進行全連線,我們可以給這個網路定義一個能量函式,神經網路的學習任務就是使能量函式達到最小值。這類網路典型的成功應用是擔貨郞問題,即有N個地點,每個地點間都有道路相通,擔貨郞必須把貨物送到每個地點,通過Holpfield網路,可以有效地找到最佳路徑。但是即使是對於二值(神經元只能處在0或1狀態),全聯接網路的狀態也2的N次方個狀態,要從這些狀態中找到找到能量函式的最小值,難度相當大,大家一定還記得國際象棋發明者,向國王討賞的典故吧,一個64個方格的棋盤,連全世界總糧食產量都填不滿,可見這個問題的複雜性。


與此同時,根植於統計力學模型的波爾茲曼機(BM)也開始流行起來。在這種網路中,神經元的輸出只有啟用和未啟用兩種狀態,用0或1來表示,各個神經元的輸出值由概率紡計模型給出。典型的波爾茲曼機(BM)的網路模型如下圖所示:


由實踐來看,波爾茲曼機(BM)具有強大的非監督學習能力,可以發現數據中潛在規則,理論上來講,非常適合於資料探勘領域應用。便是由於是全連線網路,導致這種網路的訓練時間非常長,沒有高效的學習演算法,直接制約了這種網路的應用。
後來Smolensky引入了限制性波爾茲曼機(RBM)模型,其主要思想就是去掉了波爾茲曼機中層內連線。限制性波爾茲曼機(RBM)具有一個可見層,一個隱藏層,層內神經元間無連線,層間神經元全連線,如下圖所示:



限制性波爾茲曼機(RBM)中,輸入訊號通過可見層輸入到網路中,此時傳播到隱藏層後,各隱藏層神經元的啟用是互相獨立的,同理在給定隱藏層訊號後,反向傳播到可見層時,可見層神經元的啟用也具有獨立性。可以從理論上證明,這種網路結構,只要隱藏層神經元節點足夠多,限制性波爾茲曼機(RBM)可以擬合任意離散分佈。雖然在理論上RBM很好,但是一直由於沒有高效的學習演算法,限制性波爾茲曼機(RBM)並沒有得到廣泛應用。但是深度學習之父Hinton在2002年提出了對比散度(CD)演算法,使限制性波爾茲曼機(RBM)具備了快速學習的能力。從此,RBM得到了廣泛的應用,出現了各種對比散度演算法的變種,使得演算法收斂性更高。與此同時,波爾茲曼機(RBM)在分類、迴歸、降噪、高維時間序列分析、影象特徵提取、協同過濾等方面,得到了廣泛的應用,在年初Science子刊上發表了利用限制性波爾茲曼機(RBM)分析非結構化病例資訊,從其中進行醫學診斷知識,併成功應用於癌症早期篩查,表明RBM在非結構化資料處理方面,也有實用價值。另外,Hinton在2006年提出,將限制性波爾茲曼機(RBM)堆疊起來,形成深度信念網路(DBN),通過逐層訓練RBM網路,將訓練好的RBM網路堆疊成深度學習網路,可以得到非常好的初始引數值,有效地解決了大型神經網路訓練速度慢的問題,是當前的研究熱點之一。

在介紹了這麼多限制性波爾茲曼機(RBM)的基本情況之後,下面我們來具體介紹一下RBM的理論基礎。

如上圖所示,RBM的可見層用v表示,用於接收輸入訊號,隱藏層由h表示,可以視為是輸入訊號的特徵提取器。我們在前面討論過,制約神經網路大規模應用的一個瓶頸之一,就是很難為研究問題找到合適的特徵,而RBM則是通過無監督學習方式,自動找到研究問題的最佳特徵,因此對於研究者們而言,具有非常大的吸引力,這也是為什麼RBM在近些年來如此火的原因。我們設定可見層神經元為二值變數,即,隱藏層單元同樣為二值變數,即,假定可見層有m個神經元,用下標i代表第j個神經元,隱藏層有n個神經元,用下標j表示第j個神經元。

我們可以定義網路的能量函式為:

式1

上式中為網路引數,均為實數,Wij為可見層神經元i到隱藏層神經元j的連線權值,bj為可見層第j個神經元的偏置,ci為隱藏層第i個神經元的偏置。

補充:

這裡說一下 RBM 的能量模型,這裡關係到 RBM 的理解 能量模型是個什麼樣的東西呢?直觀上的理解就是,把一個表面粗糙又不太圓的小球, 放到一個表面也比較粗糙的碗裡,就隨便往裡面一扔,看看小球停在碗的哪個地方。一般來 說停在碗底的可能性比較大,停在靠近碗底的其他地方也可能,甚至運氣好還會停在碗口附 近(這個碗是比較淺的一個碗);能量模型把小球停在哪個地方定義為一種狀態,每種狀態都對應著一個能量E,這個能量由能量函式來定義,小球處在某種狀態的概率(如停在碗底的概率跟停在碗口的概率當然不一樣)可以通過這種狀態下小球具有的能量來定義(換個說 法,如小球停在了碗口附近,這是一種狀態,這個狀態對應著一個能量E ,而發生“小球停 在碗口附近”這種狀態的概率 p ,可以用E 來表示,表示成p=f(E),其中 f 是能量函式, 其實還有一個簡單的理解,球在碗底的能量一般小於在碗邊緣的,比如重力勢能這,顯然碗 底的狀態穩定些,並且概率大些。 也就是說,RBM採用能量模型來表示系統穩態的一種測度。這裡可以注意到 RBM 是一種隨機網路,描述一個隨機網路,主要有以下 2 點 :

1. 概率分佈函式。各個節點的取值狀態是概率的、隨機的,這裡用了 3 種概率分佈來描述 整個 RBM 網路,有聯合概率密度,條件概率密度和邊緣概率密度

2. 能量函式。隨機神經網路的基礎是統計力學,差不多思想是熱力學來的,能量函式是描 述整個系統狀態的一種測度。系統越有序或者概率分佈越集中(比如小球在碗底的情況), 系統的能量越小,反之,系統越無序並且概率分佈發散(比如平均分佈) ,則系統的能量 越大,能量函式的最小值,對應著整個系統最穩定的狀態。 這裡跟之前提到的最大熵模型思路是一樣的。
 
RBM 能量模型的作用是什麼呢?為什麼要弄清楚能量模型的作用呢? 第一、 RBM 網路是一種無監督學習的方法,無監督學習的目的自然就是最大限度的擬 合輸入資料和輸出資料。 第二、 對於一組輸入資料來說,如果不知道它的分佈,那是非常難對這個資料進行學 習的。例如:如果我們實現寫出了高斯函式,就可以寫出似然函式,那麼就可 以進行求解,就知道大致的引數,所以實現如果不知道分佈是非常痛苦的一件 事情,但是,沒關係啊,統計力學的一項研究成果表明,任何概率分佈都可以 轉變成基於能量的模型,即使這個概率分佈是未知的,我們仍然可以將這個分 布改寫成能量函式。 第三、 能量函式能夠為無監督學習方法提供 2 個特殊的東西 a)目標函式。 b)目標解, 換句話說,使用能量模型使得學習一個數據的變得容易可行了。 能否把最優解的求解嵌入能量模型中至關重要,決定著我們具體問題求解的好壞。能量模型要捕獲變數之間的
相關性,變數之間的相關程度決定了能量的高低。把變數的相關關係用圖表示 出來,並引入概率測度方式就構成了概率圖(為什麼是概率圖?前面一句說了, RBM 是一個圖,以概率為測度,所以是概率圖)模型的能量模型。
 
由上面所說,RBM是一種概率圖模型,既然引入了概率,那麼就可以通過取樣技術來求解,在 CD(contrastive divergence)演算法中取樣部分扮演著模擬求解梯度的角色。

接上文:

接下來我們定義關於可見層和隱藏層的聯合概率分佈:

式2

Z為歸一化因子,其定義為:

式3

補充:

為什麼要搞能量函式?前面指出未知分佈不好求解但是可以通過能量函式來表示,那麼 能量函式的概率模型很大程度上可以得到未知分佈的概率模型,這樣大致就知道了未知分佈 的分佈 既然知道了一個 RBM 網路 hidden 和 visible 整個框架的能量函式,那麼可以定義這個能 量函式(能量)出現的概率,很顯然這個能量的出現與 hidden 和 visible 的每個節點的取值都有關係,那麼這個能量出現的概率就是v和h 的聯合概率密。也是一個特殊的Gibbs分佈。

接上文:

熟悉機器學習演算法的都知道,我們需要知道的實際上是輸入樣本的概率分佈,也就是式2的P的邊際分佈,也稱為似然函式,定義如下所示:

式4

補充:

在知道了聯合概率密度後,邊緣概率,條件概率都可以計算出來。

因為需要計算歸一化因子,而這需要次運算,對於高維問題,即使我們可以通過演算法得出網路的引數,但是由於運算量過大,這個公式在實際應用過程中,也不能直接應用。

但是,由於限制性波爾茲曼機(RBM)具有層間全連線,層內無連線,當我們將輸入訊號輸入到可見層時,可見層將決定隱藏層各神經元的狀態,而且由層內無連線,此時隱藏層神經元的啟用狀態是條件獨立的,隱藏層第j個神經元啟用狀態的概率為:

式5

與此同理,如果隱藏層狀態完全確定時,可見層第i個神經元啟用狀態也是條件獨立的,其公式為:

式6

對於RBM學習演算法,我們會用到對數似然函式,其定義如下所示:

式7

補充: 上面的內容已經得到了 Gibbs 分佈的各種概率密度函式,現在回到最初的目的,即求解目標------讓 RBM 網路表示的 Gibbs 分佈最大可能的擬合輸入資料,或者換一種說法,求解 的目標可以認為是讓 RBM 網路表示的 Gibbs 分佈與輸入樣本的分佈儘可能的接近。 現在的小問題是“最大可能的擬合輸入資料”這句話怎麼定義: 假設S表示樣本空間,即裡面含有很多個不同的 X ,q 是輸入樣本的分佈,q(X)表 示訓練樣本的概率,再假設 p 是 RBM 網路表示的 Gibbs 分佈的v 的邊緣分佈,即p(v),可以理解成每種不同情況的 X 都對應著一個概率。那麼樣本真實的分佈和 RBM 網路表示的邊緣分佈的 KL 距離就是 2 者之間的差異性 ,樣本的真實分佈與 RBM 網路表示 的邊緣分佈的 KL 距離如下所示 :   KL 的全稱是 Kullback-Leibler 差異,也叫做 Relative Entropy,它衡量的是相同事件空間裡 的兩個概率分佈的差異情況,它的物理意義是:在相同事件空間裡,概率分佈 Px 的事 件空間,若用概率分佈  Qx 進行編碼,平均每個事件(符號)的編碼長度增加了多少比 特。我們用 D(P||Q)表示 KL 距離,計算公式如下: 如果輸入樣本表示的分佈與 RBM 表示的 Gibbs 分佈完全符合,這個 KL 距離就是 0,否 則是一個大於 0 的數 由附錄對熵的定義可知,上面KL計算的第一項是輸入樣本的熵,
這個是一個固定的數,輸入樣本固定了,熵就固定了,第二項明顯無法直接求。由 KL 的性 質可知,KL 是一定大於 0 的,那麼當第二項最大的時候,整個 KL 最小,我們本來的目的也是求 KL 最小。注意到第二項中的qx當樣本固定的時候,也是固定的,而 ln 函式是遞增的,即當lnp(x) 最大即可。在實際應用中,我們採用的是 所有樣本的極大似然估計。
結論就是求解輸入樣本的極大似然,就能讓 RBM 網路表示的 Gibbs 分佈 和樣本本身表 示的分佈最接近,也就是p(v)的極大似然估計。也就是上面的式7.其中已經將相關概率帶入極大似然估計計算中。

接上文:

在式7的推導中,我們代入了式4的內容,同時把對數內除法轉化為了對數的減法。

我們需要的是對數似然函式對於引數的導數(梯度下降),如下所示:

式8

由於式8比較複雜,我們需要分別對第一項和第二項進行求導,考慮到大家對數學公式的熟悉程度,我們將一步一步進行推導,中間用到的數學公式,我們會在文中列出。

對於式8的第一項來說,我們首先需要應用鏈式求導法則,如下所示:

式9

我們在高數中,常用函式的求導公式可知:

式10

指數函式求導公式:

式11

將式10和式11代入式9,可以得到如下結果:

式12

在這時我們要注意,我們不能將第一項和第二項消去,而是應該將第一項視為一個常數,將其代入第二項的疊加符號內。

根據隱藏層在可見層條件下的概率密度函式定義,我們可以得到如下結果:

式13

在這個推導中會用到概率論中的貝葉斯公式,即條件概率定義:

式14

將式13代入式12,可以得到如下結果:

式15

到此為止,我們成功求出了式8的第一項,下面我們還是應用鏈式求導法則,來化簡式8的第二項,結果如下所示:

式16

推導方法與第一項類似,只不過在推導過程中,用到了式3和式4的定義。因此對數似然函式對引數的求導公式最後可以化簡為如下形式:

式17

對於限制性波爾茲曼機(RBM)而言,引數是權值矩陣W、可見層偏置c,隱藏層偏置b,下面我們根據式17分別求對於他們的導數,我們首先來求對權值的導數,如下所示

式18

由於式18比較複雜,下面我們分別對第一項和第二項進行求解,對於第一項,我們根據能量函式E的定義(式1),其對wij求導的結果為hivj,結果如下所示:

式19

接著我們來求式18的第二項:

式20

因此式18的最終結果為:

式21

如果我們採取線上學習模式,即每個訓練樣本均更新神經網路的引數,式21即可作為權值調整值來使用,但是由於樣本的隨機性,這樣的引數調整效率會比較低,因此實際中使用更多的是批量學習模式。假設設定批量學習樣本為:

式22

則式21的導數可以表示為該批次內對所有訓練樣本求導的平均值,如下所示:

式22

式22中,q代表經驗分佈,通常我們有如下結果:

式23

與求導對數似然函式對權值的導數方法類似,我們同樣可以求出對可見層偏移量bj的導數,最後結果為:

式24

同理對數似然函式對隱藏層偏移量ci求導數的結果為:

式25

式21、式24、式25中的第二項(即都含有對所有v的遍歷),可以通過Gibbs取樣得到,但是這需要執行受限波爾茲曼機(RBM)很長時間,即可見層到隱藏層,再從隱藏層到可見層,反覆執行,最後達到靜止點,這就是馬可夫鏈蒙特卡羅方法。但是這種方法運算量非常大,在2006年以前,受限於此,RBM很少應用在實際問題中。在2006年,深度學習之父Hinton提出了CD-k演算法,而且通常k=1,可以很好的解決定一問題,才使RBM具有了應用價值,並且直接促使深度信念網路(DBN)的廣泛使用。

補充:

1.蒙特卡洛取樣:

最早的蒙特卡羅方法,是由物理學家發明的,旨在通過隨機化的方法來計算積分。

假定給定一個函式h(x),我們想要計算區間[a, b]上面的積分,但是我們並 不知道h(x)在[a, b]上面的全部取值,這時,我們可以將h(x)分解為某個函式 fx和一 個定義在[a, b]上的概率密度函式的乘積。這樣整個積分就可以寫成:

這樣一來,原積分就等同於fx在px這個分佈上面的期望。這時,我們若從分佈 px上採集大量的樣本Xn,這些樣本的分佈符合px,即 
  
那麼我們可以通過這個樣本來逼近這個均值:

  

因此,上面的遍歷部分的Gibbs取樣,具體的處理過程是對於每個訓練樣本 X ,都用某種抽樣方法抽取一個對應的Y ,這個 Y 是符合 RBM 網路所表示的 Gibbs 分佈的。那麼對於整個訓練集X來說,就 得到一組對應的符合 RBM 網路表示的 Gibbs 分佈的樣本集Y,然後拿這個樣本去估算第二項,從而計算出梯度。如下公式(這個就是W,C,B的更行規則,還有下面條件概率計算):

上面的式子中 Xk表示第k 個訓練樣本,Yk是Xk 所對應的符合 RBM 網路表示的 Gibbs分佈的樣本,在式子中用 yv表示。梯度求出來了,就可以求解了,最後不斷迭代就可以得
到 w,c,b.

另外:

推到過程略,有興趣的可以參考《RBM原理理解》。

需要注意的是,上面只是條件概率計算,取樣還要根據概率值取樣成伯努利分佈方式。因為RBM是二值分佈圖。

2.對比散度演算法

Gibbs 抽樣是一種基於 Markov Chain Monte Carlo 策略的抽樣方法。具體來說對於一個d 維的隨機向量X=(x1,x2,...,xd),我們無法求的 X 的概率分佈P(x),但我們知道給
定的 X 的其他分量是其第i個分量xi 的條件分佈即 p(xi|xi-),xi-=(x1,x2,…xi-1,xi+1…xd)。那麼,我們可以從 x 的一個任意狀態(如(x1(0),x2(0),…,xd(0)))開始,利用條件分佈 p(xi|xi-), 迭代地對這狀態的每個分量進行抽樣,隨著抽樣次數 n 的增加,隨機變數(x1(n),x2(n),…,xd(n)) 的概率分佈將以 n 的幾何級數的速度收斂與 x 的聯合概率分佈 p(v)。 Gibbs 抽樣其實就是可以讓我們可以在未知聯合概率分佈 p(v)的情況下對其進行抽樣。 基於 RBM 模型的對稱結構,以及其中節點的條件獨立性,我們可以使用 Gibbs 抽樣方 法得到服從 RBM 定義的分佈的隨機樣本。在 RBM 中進行 k 步 Gibbs 抽樣的具體演算法為:

用 一個訓練樣本(或者可視節點的一個隨機初始狀態)初始化可視節點的狀態 v0,交替進行下 面的抽樣:


 
在抽樣步數 n 足夠大的情況下,就可以得到 RBM 所定義的分佈的樣本(即符合引數確 定的 Gibbs 分佈的樣本)了,得到這些樣本我們就可以拿去計算梯度的第二項了。 可以看到,上面進行了 k 步的抽樣,這個 k 一般還要比較大,所以是比較費時間的,尤其是在訓練樣本的特徵數比較多(可視節點數大)的時候,所以 hinton 教授就弄一個簡化的 版本,叫做 CD-k,也就對比散度。 對比散度是英文 ContrastiveDivergence(CD)的中文翻譯。與 Gibbs 抽樣不同,hinton 教 授指出當使用訓練樣本初始化 v0 的時候,僅需要較少的抽樣步數(就是 k 的值,一般就一 步)就可以得到足夠好的近似了。

在 CD 演算法一開始,可見單元的狀態就被設定為一個訓練樣本,並用上面的幾個條件概 率來對隱藏節點的每個單元都從{0,1}中抽取到相應的值,然後再利用隱藏節點的值來對可視節點的每個 單元都從{0,1}中抽取相應的值,這樣就得到了 v1 了,一般 v1 就夠了,就可以拿來估算梯度 了。

下面給出 RBM 的基於 CD-k 的快速學習的主要步驟。


 
其中,之所以第二項沒有了那個 1/l,就是因為這個梯度會對所有樣本進行累加(極大 似然是所有訓練樣本的梯度的和),最終加和的結果跟現在這樣算是相等的(剛好是 l 個樣 本,l 個第二項相加後,最終結果剛好等於每一個第二項的那個累加符號後面的那一項,而 這裡所有結果加和後,也能得到相同的值)。 
 
首先 RBM 假設有一個 hidden 和一個 visible,這與前面的假設是完全一致的,給定一個 visible,我們想算出對應的 hidden 層的概率(注意這裡說的 hidden 層是一個整體,包含每 個 hidden 節點),其實對應的 hidden 層的概率已經算出來了,就是前面的邊緣概率密度, 但是隻有概率密度是不夠的,需要的是樣本,這個 gibbs sampling 就是獲取樣本的,我們知 道p(h=1|v),這樣就可以算出 hidden 層各個節點的取值。 打個比方,有個 Gibbs Sampling 的演算法,比如一個樣本是 3 維,姑且認為是(g,u,b),一般來 說我們無法得到樣本的分佈,但是我們一般知道條件概率p(g|u,b),p(u|g,b),p(b|g,u):
 Step1: 給 g ,u ,b  賦初始值:  g0,u0,b0,這個初始值還不知道是不是隨機賦的,還是有什麼規則,現在將第一步產生的當作初始樣本。 

Step2: 利用 p (g | u0, b0) 產生 g1 

Step3: 利用 p (u | g1, b0) 產生 u1 

Step4: 利用 p (b | g1, u1) 產生 b1

Step5: 重複 step2~step5 這樣我們就可以得到一個 markov chain {a1,a2 … ai, ai+1,… at} 一般最後面的就是我們需要的樣本,比如說取最後面的 15 個之類的。

轉自:http://blog.csdn.net/zouxy09/article/details/8781396

9.3、Restricted Boltzmann Machine (RBM)限制波爾茲曼機

       假設有一個二值圖(節點服從伯努利分佈的無向圖),每一層的節點之間沒有連結,一層是可視層,即輸入資料層(v),一層是隱藏層(h),如果假設所有的節點都是隨機二值變數節點(只能取0或者1值),同時假設全概率分佈p(v,h)滿足Boltzmann 分佈,我們稱這個模型是Restricted BoltzmannMachine (RBM)。

       下面我們來看看為什麼它是Deep Learning方法。首先,這個模型因為是二部圖,所以在已知v的情況下,所有的隱藏節點之間是條件獨立的(因為節點之間不存在連線),即p(h|v)=p(h1|v)…p(hn|v)。同理,在已知隱藏層h的情況下,所有的可視節點都是條件獨立的。同時又由於所有的v和h滿足Boltzmann 分佈,因此,當輸入v的時候,通過p(h|v) 可以得到隱藏層h,而得到隱藏層h之後,通過p(v|h)又能得到可視層,通過調整引數,我們就是要使得從隱藏層得到的可視層v1與原來的可視層v如果一樣,那麼得到的隱藏層就是可視層另外一種表達,因此隱藏層可以作為可視層輸入資料的特徵,所以它就是一種Deep Learning方法。

       如何訓練呢?也就是可視層節點和隱節點間的權值怎麼確定呢?我們需要做一些數學分析。也就是模型了。

        聯合組態(jointconfiguration)的能量可以表示為:

        而某個組態的聯合概率分佈可以通過Boltzmann 分佈(和這個組態的能量)來確定:

      因為隱藏節點之間是條件獨立的(因為節點之間不存在連線),即:

      然後我們可以比較容易(對上式進行因子分解Factorizes)得到在給定可視層v的基礎上,隱層第j個節點為1或者為0的概率:

       同理,在給定隱層h的基礎上,可視層第i個節點為1或者為0的概率也可以容易得到:

       給定一個滿足獨立同分布的樣本集:D={v(1), v(2),…, v(N)},我們需要學習引數θ={W,a,b}。

       我們最大化以下對數似然函式(最大似然估計:對於某個概率模型,我們需要選擇一個引數,讓我們當前的觀測樣本的概率最大):

        也就是對最大對數似然函式求導,就可以得到L最大時對應的引數W了。

 上面是算是對整個RBM推導的核心過程的簡述,可以對著開頭的內容閱讀。

       如果,我們把隱藏層的層數增加,我們可以得到Deep Boltzmann Machine(DBM);如果我們在靠近可視層的部分使用貝葉斯信念網路(即有向圖模型,當然這裡依然限制層中節點之間沒有連結),而在最遠離可視層的部分使用Restricted Boltzmann Machine,我們可以得到DeepBelief Net(DBN)。


9.4、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取樣(這個理解不對,這種編碼解碼的目的只是無監督自動特徵提取的誤差逼近方式,但在隱單元,或者可視單元,依據概率取值才是Gibbs取樣,例如有p(h|v),取樣h,或者由p(v|h)取樣v),而隱層啟用單元和可視層輸入之間的相關性差別就作為權值更新的主要依據。

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

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

       在預訓練後,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訓練生成模型的過程一樣。