dbn中的wake sleep演算法是如何調優的?

2021-07-31 06:25:37 字數 1874 閱讀 1674

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 的輸出特徵向量作為它的輸入特徵向量,有監督地訓練實體關係分類器.而...