1. 程式人生 > >Deep Belief Network簡介——本質上是在做逐層無監督學習,每次學習一層網絡結構再逐步加深網絡

Deep Belief Network簡介——本質上是在做逐層無監督學習,每次學習一層網絡結構再逐步加深網絡

why article dia 圖片 fast org 一個 能力 如果

from:http://www.cnblogs.com/kemaswill/p/3266026.html

1. 多層神經網絡存在的問題

常用的神經網絡模型, 一般只包含輸入層, 輸出層和一個隱藏層:

技術分享圖片

理論上來說, 隱藏層越多, 模型的表達能力應該越強。但是, 當隱藏層數多於一層時, 如果我們使用隨機值來初始化權重, 使用梯度下降來優化參數就會出現許多問題[1]:

  1. 如果初始權重值設置的過大, 則訓練過程中權重值會落入局部最小值(而不是全局最小值)。
  2. 如果初始的權重值設置的過小, 則在使用BP調整參數時, 當誤差傳遞到最前面幾層時, 梯度值會很小, 從而使得權重的改變很小, 無法得到最優值。[疑問, 是否可以提高前幾層的learning rate來解決這個問題?]

所以, 如果初始的權重值已經比較接近最優解時, 使用梯度下降可以得到一個比較好的結果, Hinton等在2006年提出了一種新的方法[2]來求得這種比較接近最優解的初始權重。

2. Deep Belief Network

DBN是由Hinton在2006年提出的一種概率生成模型, 由多個限制玻爾茲曼機(RBM)[3]堆棧而成:

技術分享圖片技術分享圖片

在訓練時, Hinton采用了逐層無監督的方法來學習參數。首先把數據向量x和第一層隱藏層作為一個RBM, 訓練出這個RBM的參數(連接x和h1的權重, x和h1各個節點的偏置等等), 然後固定這個RBM的參數, 把h1視作可見向量, 把h2視作隱藏向量, 訓練第二個RBM, 得到其參數, 然後固定這些參數, 訓練h2

和h3構成的RBM, 具體的訓練算法如下:

技術分享圖片

上圖最右邊就是最終訓練得到的生成模型:

技術分享圖片

用公式表示為:

技術分享圖片

3. 利用DBN進行有監督學習

在使用上述的逐層無監督方法學得節點之間的權重以及節點的偏置之後(亦即初始化), 可以在DBN的最頂層再加一層, 來表示我們希望得到的輸出, 然後計算模型得到的輸出和希望得到的輸出之間的誤差, 利用後向反饋的方法來進一步優化之前設置的初始權重。因為我們已經使用逐層無監督方法來初始化了權重值, 使其比較接近最優值, 解決了之前多層神經網絡訓練時存在的問題, 能夠得到很好的效果。

參考文獻:

[1]. Reducing the Dimensionality of Data with Neural Networks

. G. E. Hinton, R. R. Slakhutdinov. 2006, Science.

[2]. A fast learning algorithm for deep belief nets. G. E. Hinton, Simon Osindero, Yee-Whye Teh. 2006, Neural Computation.

[3]. 限制玻爾茲曼機(Restricted Boltzmann Machine, RBM)簡介

[4]. Scholarpedia: Deep Belief Networks

[5]. Learning Deep Architectures for AI. Yoshua Bengio

Deep Belief Network簡介——本質上是在做逐層無監督學習,每次學習一層網絡結構再逐步加深網絡