wake-sleep algorithm的fine-tuning演算法在hinton06年的那篇**最後是有偽碼的,hinton使用的標準的dbn自畫圖如下:
i)wake-phase:(認知階段)
先用認知階段的引數計算每一層的認知階段的狀態(從下往上推...)
wakehidprobs = sigmoid(wvishid * vis + brechid)
wakehidstates = wakehidprobs>rand(1, numhid)
wakepenprobs = sigmoid(whidpen * wakehidstates + brecpen)
wakepenstates = wakehidstates > rand(1, numpen)
ii)再計算最上層拿來做先驗的玻爾茲曼機的狀態(最上兩層跳啊跳~)
waketopprobs = sigmoid(wpentop * wakepenstates + wlabtop * targets + btop)
waketopstates = waketopprobs > rand(1, numtop)
然後再接的contrastive divergence...這裡我就省略
iii)sleep-phase:(生成階段)
最後用生成階段的引數計算每一層的生成階段的狀態(從上往下推...)
sleeppenstates = equpenstates
sleephidprobs = sigmoid(wpenhid * sleeppenstates + bgenhid)
sleephidstates = sleephidprobs > rand(1, numhid)
sleepvisprobs = sigmoid(whidvis * sleephidstates + bgenvis)
以上狀態就得到了,接下來就是更新引數了。
i)認知階段的狀態來更新生成階段的權重:
再用每一層的認知狀態來更新生成引數,使得生成模型能夠往認知上面靠
(更新權重的公式也在上面那篇06年的**中有推導的...)
pvisprobs = sigmoid(whidvis * wakehidstates + bgenvis)
whidvis
phidprobs = sigmoid(wpenhid *wakepenstates + bgenhid )
wpenhid
ii)玻爾茲曼機直接利用contrastive divergence的結論來更新引數就好~
iii)生成階段的狀態來更新認知階段的權重:
psleeppenstates = sigmoid(whidpen * sleephidstates + brecpen)
whidpen
psleephidstates = sigmoid(wvishid * sleepvisstates + brechid)
wvishid
hinton g e, osindero s, teh y w, a fast learning algorithm for deep belief nets[j], neural computation, 2006, 18(7): 1527-1554
關於DBN的理解
關於dbn我一直有以下三個問題 1.什麼是complementary priors?2.為什麼說rbm展開後可以當成sigmoid belief network with tied parameters呢?3.為什麼greedy layerwise training可以把dbn的每層當成rbm來訓練...
DBM 和 DBN 的區別
下邊這部分摘自知乎 首先,還是糾正下題主,直接疊加rbm是dbn。而dbm是乙個真正的無向圖模型,層間互有反饋。dbn是hiton在06年發表在science上的 reducing the dimensionality of data with neural networks.這篇文章中提到的方法,...
DBN 在訓練模型的過程中主要分為兩步
dbn 深度信念網路 在訓練模型的過程中主要分為兩步 第 1 步 分別單獨無監督地訓練每一層 rbm 網路,確保特徵向量對映到不同特徵空間時,都盡可能多地保留特徵資訊 第 2 步 在 dbn 的最後一層設定 bp 網路,接收 rbm 的輸出特徵向量作為它的輸入特徵向量,有監督地訓練實體關係分類器.而...