1. 程式人生 > >深度學習基礎--不同網路種類--雙向深度網路(bi-directionaldeep networks, BDDN)

深度學習基礎--不同網路種類--雙向深度網路(bi-directionaldeep networks, BDDN)

深度神經網路可以分為3類:

  1)前饋深度網路(feed-forwarddeep networks, FFDN)   2)反饋深度網路(feed-back deep networks, FBDN)   3)雙向深度網路(bi-directionaldeep networks, BDDN)

雙向深度網路(bi-directionaldeep networks, BDDN)

  結構上:雙向網路的結構結合了編碼器和解碼器2類單層網路結構,通過疊加多個編碼器層和解碼器層構成(每層可能是單獨的編碼過程或解碼過程,也可能既包含編碼過程也包含解碼過程)。   訓練上:雙向網路的學習則結合了前饋網路和反饋網路的訓練方法。   通常包括單層網路的預訓練和逐層反向迭代誤差2個部分。其中單層網路的預訓練是對輸入訊號編碼和解碼的重建過程,這與反饋網路訓練方法類似;而基於反向迭代誤差的權值微調與前饋網路訓練方法類似。   a)單層網路的預訓練多采用貪心演算法:每層使用輸入訊號IL與權值w計算生成訊號IL+1傳遞到下一層,訊號IL+1再與相同的權值w計算生成重構訊號I’L 映射回輸入層,通過不斷縮小IL與I’L間的誤差,訓練每層網路。   b)網路結構中各層網路結構都經過預訓練之後,再通過反向迭代誤差對整個網路結構進行權值微調。

不同的雙向深度網路

1)深度玻爾茲曼機(deep Boltzmann machines, DBM)

  它由多層受限玻爾茲曼機(restricted Boltzmann machine, RBM )疊加構成。網路中所有節點間的連線都是雙向的。   a)玻爾茲曼機(Boltzmann machine, BM)是一種隨機的遞迴神經網路。BM是基於能量的無向圖概率模型。玻爾茲曼機由二值神經元構成,每個神經元只取0或1兩種狀態,狀態1代表該神經元處於啟用狀態,0表示該神經元處於抑制狀態。然而,即使使用模擬退火演算法,這個網路的學習過程也十分慢。   b)Hinton等提出的受限玻爾茲曼機去掉了玻爾茲曼機同層之間的連線,從而大大提高了學習效率。受限玻爾茲曼機分為可見層v以及隱層h,共兩層,可見層和隱層的節點通過權值w相連線,2層節點之間是全連線,同層節點間互不相連。

BM的訓練演算法

  BM的典型訓練演算法有變分近似法、隨機近似法(stochastic approximation procedure,SAP)、對比散度演算法(contrastivedivergence,CD)、持續對比散度演算法(persistent contrastive divergence,PCD)、快速持續對比散度演算法(fastpersistent contrastive divergence,FPCD)和回火MCMC演算法等。

RBM的原理

  RBMD的一層是可視層v(即輸入層),一層是隱層h,每層內的節點之間設有連線。   在已知v時,全部的隱藏節點之間都是條件獨立的(因為這個模型是二部圖),即p(h|v) = p(h1|v1) … p(hn|v)。   同樣的,在已知隱層h的情況下,可視節點又都是條件獨立的,又因為全部的h和v滿足玻爾茲曼分佈,所以當輸入v的時候,通過p(h|v)可得到隱層h,得到h之後,通過p(v|h)又可以重構可視層v。   通過調整引數,使得從隱層計算得到的可視層與原來的可視層有相同的分佈。這樣的話,得到的隱層就是可視層的另外一種表達,即可視層的特徵表示。

RBM的訓練方法

  首先隨機初始化可見層,然後在可見層與隱層之間交替進行吉布斯取樣:用條件分佈概率P(h|v)計算隱層;再根據隱層節點,同樣用條件分佈概率P(v|h)來計算可見層;重複這一取樣過程直到可見層和隱層達到平穩分佈。   後來Hinton提出了一種快速演算法,稱作對比離差(contrastive divergence, CD)學習演算法。這種演算法使用訓練資料初始化可見層,只需迭代k次上述取樣過程(即每次迭代包括從可見層更新隱層,以及從隱層更新可見層),就可獲得對模型的估計。

RBM的損失函式

  由於受限玻爾茲曼機是一種隨機網路,而隨機神經網路又是根植於統計力學的,所以受統計力學能量泛函的啟發引入了能量函式。在隨機神經網路中,能量函式是用來描述整個系統狀態的測度。網路越有序或概率分佈越集中,網路的能量就越小;反之,網路越無序或概率分佈不集中,那麼網路的能量就越大。所以當網路最穩定時,能量函式的值最小。

DBM訓練分為2個階段

  即預訓練階段和微調階段。   a)在預訓練階段,採用無監督的逐層貪心訓練方法來訓練網路每層的引數,即先訓練網路的第1個隱含層,然後接著訓練第2,3,…個隱含層,最後用這些訓練好的網路引數值作為整體網路引數的初始值。   b)預訓練之後,將訓練好的每層受限玻爾茲曼機疊加形成深度玻爾茲曼機,利用有監督的學習對網路進行訓練(一般採用反向傳播演算法)。

2)深度信念網路(deep beliefnetworks, DBN)

DBM與DBN的區別

  對於RBM若增加隱層的層數,可得到深度玻爾茲曼機(DBM,Deep Boltzmann Machine)。   若在靠近可視層v的部分使用貝葉斯信念網,遠離可視層的部分使用RBM,那麼就可以得到一個深度信念網路(DBNs,Deep Belief Nets)。

DBN的訓練

  訓練的過程中,所需要學習的即是聯合概率分佈。在機器學習領域中,其所表示的就是物件的生成模型。如果想要全域性優化具有多隱層的深度信念網路是比較困難的。   這個時候,可以運用貪婪演算法,即逐層進行優化,每次只訓練相鄰兩層的模型引數,通過逐層學習來獲得全域性的網路引數。這種訓練方法(非監督逐層貪婪訓練)已經被Hinton證明是有效的,並稱其為相對收斂(contrastive divergence)。

DBN的結構及其變種

  採用二值可見單元和隱單元RBM作為結構單元的DBN,在MNIST等資料集上表現出很好的效能。   近幾年,具有連續值單元的RBM,如mcRBM、mPoT模型和spike—and-slab RBM等已經成功應用。   Spike—and—slab RBM中spike表示以0為中心的離散概率分佈,slab表示在連續域上的稠密均勻分佈,可以用吉布斯取樣對spike—and—slab RBM進行有效推斷,得到優越的學習效能。

3)棧式自編碼器(stacked auto-encoders, SAE)

SAE與DBN的區別

  堆疊自編碼網路的結構與DBN類似,由若干結構單元堆疊組成,不同之處在於其結構單元為自編碼模型(auto—en—coder)而不是RBM。自編碼模型是一個兩層的神經網路,第一層稱為編碼層,第二層稱為解碼層。   當然,SAE的結構單元除了自編碼模型之外,還可以使用自編碼模型的一些變形,如降噪自編碼模型和收縮自編碼模型等。

4)MKMs

  受SVM演算法中核函式的啟發,在深度模型結構中加入核函式,構建一種基於核函式的深度學習模型。   MKMs深度模型,如同深度信念網路(deep belief network,DBNs),反覆迭代核PCA 來逼近高階非線性函式,每一層核PCA 的輸出作為下一層核PCA 的輸入。作者模擬大型神經網路計算方法建立核函式族,並將其應用在訓練多層深度學習模型中。

L層MKMs深度模型的訓練過程

  a)、去除輸入特徵中無資訊含量的特徵;   b)、重複L次:A、計算有非線性核產生特徵的主成分;B、去除無資訊含量的主成分特徵;   c)、採用Mahalanobis距離進行最近鄰分類。

  在引數訓練階段,採用核主成分分析法(kernelprincipal component analysis,KPCA)進行逐層貪婪無監督學習,並提取第k層資料特徵中的前nk 主成分,此時第k+1層便獲得第k層的低維空間特徵。   為進一步降低每層特徵的維數,採用有監督的訓練機制進行二次篩選:首先,根據離散化特徵點邊緣直方圖,估計它與類標籤之間的互資訊,將nk 主成分進行排序;其次,對於不同的k 和w 採用KNN 聚類方法,每次選取排序最靠前的w驗證集上的特徵並計算其錯誤率,最終選擇錯誤率最低的w個特徵。

  該模型由於特徵選取階段無法平行計算,導致交叉驗證階段需耗費大量時間。據此,提出了一種改進方法,通過在隱藏層採用有監督的核偏最小二乘法(kernel partial least squares,KPLS)來優化此問題。

5)DeSTIN

歷史

  目前較成熟的深度學習模型大多建立在空間層次結構上,很少對時效性(temporal)有所體現。相關研究表明,人類大腦的執行模式是將感受到的模式與記憶儲存的模式進行匹配,並對下一時刻的模式進行預測,反覆進行上述步驟,這個過程包含了時空資訊。因此在深度結構中將時效性考慮在內,會更接近人腦的工作模式。

理解

  DeSTIN 是一種基於貝葉斯推理理論、動態進行模式分類的深度學習架構,它是一種區分性的層次網路結構。   在該深度模型中,資料間的時空相關性通過無監督方式來學習。   網路的每一層的每個節點結構一致,且包含多個聚類中心,通過聚類和動態建模來模擬輸入。每個節點通過貝葉斯信念推理輸出該節點信念值,根據信念值提取整個DeSTIN網路的模式特徵,最後一層網路輸出特徵可以輸入分類器如SVM中進行模式分類。

  DeSTIN 模型的每一個節點都用來學習一個模式時序,底層節點通過對輸入資料的時間與空間特徵進行提取,改變其信念值,輸入到下一層。由於每一個節點結構相同,訓練時可採樣平行計算,節約運算資源。   該模型最重要的步驟就是信念值更新演算法。信念值更新演算法同時考慮了資料的時間與空間特徵

現狀

  目前將時效性考慮在內的深度學習架構雖然不是很成熟,但也逐漸應用在不同領域,也是深度學習模型未來發展的一個新方向。