rbm是無監督學習模型,有兩個層的淺層神經網路,乙個可見層,乙個隱藏層,是一種用於降維、分類、回歸、協同過濾、特徵學習和主題建模的演算法,它是組成深度置信網路的基礎部件。
rbm的結構如下所示:
rbm的
前向運算
圖 1r
bm的前
向運算可見層的狀態向量: v=
(v1,
v2,.
..,v
nv)t
v =(
v1,v
2,..
.,vn
v)t隱藏層的狀態向量: h=
(h1,
h2,.
..,h
nh)t
h =(
h1,h
2,..
.,hn
h)t可見層的偏置向量: bv
=(bv
1,bv
2,..
.,bv
nv)t
b v=
(bv1
,bv2
,...
,bvn
v)t隱藏層的偏置向量: bh
=(bh
1,bh
2,..
.,bh
nh)t
b h=
(bh1
,bh2
,...
,bhn
h)t隱藏層和可見層之間的權值矩陣: w=
(wi,
j)∈r
nh×n
v w=(w
i,j)
∈rnh
×nvwi
,j表示
隱藏層中
第i個神
經元與可
見層中第
j個神經
元之間的
連線權重
w i,
j表示隱
藏層中第
i個神經
元與可見
層中第j
個神經元
之間的連
接權重前向運算通過公式:啟用
函式f(
(權重w
∗輸入x
)+偏差
b)=輸
出a激 活函
數f((
權重w∗
輸入x)
+偏差b
)=輸出
a計算得到
rbm是無監督學習模型,因此,rbm是通過重構之後得到的對樣本的估計與樣本的真實值之間的誤差進行學習的。重構過程如下:
rbm的
反向運算
圖 2r
bm的反
向運算從隱藏層開始運算,將之前前向運算得到的啟用值a作為反向傳遞中的輸入,這些輸入值與同樣的權重相乘,每兩個相連的節點之間各有乙個權重,就像正向傳遞中輸入x的加權運算一樣。這些乘積的和再與每個可見層的偏差相加,所得結果就是重構值。
由於一般rbm的隱藏層的神經元個數會比可見層的神經元個數少,而在反向運算中,較少神經元的隱藏層又能夠近似復現原始可見層的輸入,因此,可以認為前向運算是對輸入訊號的編碼,特徵提取的過程,而反向運算是解碼的過程。
關於rbm的特點總結如下:
下圖是經典的dbn網路結構:
dbn的
結構圖 3d
bn的結
構從圖中可知,dbn是通過乙個乙個rbm堆疊起來的,由於rbm的作用主要在於特徵提取和降維,因此,在rbm的最後會加乙個分類器,如bp網路。上一層的rbm訓練完之後,上一層的rbm的隱藏層作為下一層rbm的可見層,這樣一層一層訓練下去。由於rbm能夠對資料降維,提取得到資料中的特徵,dbn通過將多個rbm進行堆疊,具有很好的特徵提取能力。同時,由於在一開始的時候就對rbm進行預訓練,因此在最後整體訓練學習時,會較好的避開區域性最優,較快的完成訓練。
dbn的
訓練過程
圖 4d
bn的訓
練過程dbn的訓練過程為:
首先把資料向量x和第一層隱藏層作為乙個rbm, 訓練出這個rbm的引數(連線x和h1的權重, x和h1各個節點的偏置等等), 然後固定這個rbm的引數, 把h1視作可見向量, 把h2視作隱藏向量, 訓練第二個rbm, 得到其引數, 然後固定這些引數, 訓練h2和h3構成的rbm。如此依次進行訓練。
由於每一層 rbm 網路只能確保自身層內的 權值對該層特徵向量對映達到最優,並不是對整個 dbn 的特徵向量對映達到最優,因此,在一層一層訓練好rbm之後,需要在整個網路上進行訓練,通過反向傳播演算法來微調整個 dbn 網路。
由於一開始訓練rbm的時候就是進行預訓練的過程,因此在最後整體微調時,能夠克服陷入區域性最小值的缺點,並且減少訓練收斂時間。
受限玻爾茲曼機二
限制波爾茲曼機rbm使用方法 限制波爾茲曼機rbm能量模型 從能量模型到概率 求解極大似然 用到的抽樣方法 馬爾科夫蒙特卡羅簡介 參考文獻 利用上面的公式得到的是某個單元狀態為1的輸出概率。那麼怎樣才能確定這個單元的狀態是1呢?它通過產生乙個0 1的隨機,如果這個隨機數小於上面得到的概率值,這個單元...
受限玻爾茲曼機二
博主falao beiliu寫的一篇非常好的文章。這裡為方便自己以後速查,做個導航。原文目錄 限制波爾茲曼機rbm使用方法 限制波爾茲曼機rbm能量模型 從能量模型到概率 求解極大似然 用到的抽樣方法 馬爾科夫蒙特卡羅簡介 參考文獻 利用上面的公式得到的是某個單元狀態為1的輸出概率。那麼怎樣才能確定...
受限玻爾茲曼基
受限波爾茲曼網路rbm是乙個雙層網路 可見層和隱含層。前面描述的神經網路模型是一種確定的結構。而波爾茲曼網路是一種隨機網路。如何來描述乙個隨機網路呢?很多書上有大量的篇幅介紹其原理。這裡把它總結為以下兩點。第一,概率分布函式。由於網路節點的取值狀態是隨機的,從貝葉斯網的觀點來看,要描述整個網路,需要...