我正在嘗試實現RBM,並且正在MNIST數據集上對其進行測試。但是,它似乎並沒有收斂。如何找到爲什麼RBM無法正常工作?
我有28x28可見單位和100隱藏單位。我正在使用大小爲50的小批量。對於每個時期,我遍歷整個數據集。我的學習率爲0.01,動力爲0.5。權重是基於平均值0.0的高斯分佈和0.01的標準差隨機生成的。可見和隱藏的偏見被初始化爲0.我使用logistic sigmoid函數作爲激活。
每個時期後,我計算所有的小批次的平均重建誤差,這裏是我得到的錯誤:
epoch 0: Reconstruction error average: 0.0481795
epoch 1: Reconstruction error average: 0.0350295
epoch 2: Reconstruction error average: 0.0324191
epoch 3: Reconstruction error average: 0.0309714
epoch 4: Reconstruction error average: 0.0300068
我繪製的權重,以檢查的直方圖(從左至右:hiddens,權重,可見參數頂部:權重,下:更新):
的權重的直方圖劃時代後3 Histogram of the weights after epoch 3 http://baptiste-wicht.com/static/finals/histogram_epoch_3.png
直方圖權重的時代4 Histogram of the weights after epoch 4 http://baptiste-wicht.com/static/finals/histogram_epoch_4.png
之後,但,除了隱藏的偏見,似乎有點不可思議,其餘的看起來不錯。
我也試圖繪製隱藏權重:3後
Weights after epoch 3 http://baptiste-wicht.com/static/finals/hiddens_weights_epoch_3.png
重量劃時代4
Weights after epoch 4 http://baptiste-wicht.com/static/finals/hiddens_weights_epoch_4.png
(日曆元后
重量
static_cast<size_t>(value > 0 ? (static_cast<size_t>(value * 255.0) << 8) : (static_cast<size_t>(-value * 255.)0) << 16) << " ";
)
而在這裏,他們沒有任何意義可言......
如果我走的更遠,重構誤差落在位:安永正在使用的功能有兩種顏色繪製更多,但不要超過0.025。即使我在某個時候改變了勢頭,它也會變得更高,然後有所下降,但並不有趣。而且,在更多的時代之後,權重沒有更多的意義。在我見過的大多數示例實現中,在遍歷整個數據集兩次或三次之後,權重會有所幫助。
我也嘗試從可見單位重構圖像,但結果似乎幾乎是隨機的。
我能做些什麼來檢查我的實現中出現了什麼問題?權重應該在一定範圍內?數據中看起來真的很奇怪嗎?
完整代碼:https://github.com/wichtounet/dbn/blob/master/include/rbm.hpp