2014-01-22 40 views
2

我正在嘗試實現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

回答

3

您使用的是非常小的學習率。在大多數由SGD進行培訓的神經網絡中,您開始時的學習率較高,隨着時間的推移而衰減。搜索學習率或自適應學習率以查找更多相關信息。其次,在實施新算法時,我會建議找到引入它並重現其結果的論文。一篇好的論文應該包括大部分使用的設置 - 或用於確定設置的方法。

如果紙張不可用,或者在您無法訪問的數據集上對其進行測試 - 請在使用相同設置時查找工作實施並比較輸出。如果實現功能不兼容,請關閉儘可能多的功能,以避免共享。

相關問題