Deep learning:十九(RBM简单理解)
?
這篇博客主要用來簡單介紹下RBM網(wǎng)絡,因為deep learning中的一個重要網(wǎng)絡結構DBN就可以由RBM網(wǎng)絡疊加而成,所以對RBM的理解有利于我們對DBN算法以及deep learning算法的進一步理解。Deep learning是從06年開始火得,得益于大牛Hinton的文章,不過這位大牛的文章比較晦澀難懂,公式太多,對于我這種菜鳥級別來說讀懂它的paper壓力太大。縱觀大部分介紹RBM的paper,都會提到能量函數(shù)。因此有必要先了解下能量函數(shù)的概念。參考網(wǎng)頁http://202.197.191.225:8080/30/text/chapter06/6_2t24.htm關于能量函數(shù)的介紹:
一個事物有相應的穩(wěn)態(tài),如在一個碗內的小球會停留在碗底,即使受到擾動偏離了碗底,在擾動消失后,它會回到碗底。學過物理的人都知道,穩(wěn)態(tài)是它勢能最低的狀態(tài)。因此穩(wěn)態(tài)對應與某一種能量的最低狀態(tài)。將這種概念引用到Hopfield網(wǎng)絡中去,Hopfield構造了一種能量函數(shù)的定義。這是他所作的一大貢獻。引進能量函數(shù)概念可以進一步加深對這一類動力系統(tǒng)性質的認識,可以把求穩(wěn)態(tài)變成一個求極值與優(yōu)化的問題,從而為Hopfield網(wǎng)絡找到一個解優(yōu)化問題的應用。
下面來看看RBM網(wǎng)絡,其結構圖如下所示:
?
可以看到RBM網(wǎng)絡共有2層,其中第一層稱為可視層,一般來說是輸入層,另一層是隱含層,也就是我們一般指的特征提取層。在一般的文章中,都把這2層的節(jié)點看做是二值的,也就是只能取0或1,當然了,RBM中節(jié)點是可以取實數(shù)值的,這里取二值只是為了更好的解釋各種公式而已。在前面一系列的博文中可以知道,我們設計一個網(wǎng)絡結構后,接下來就應該想方設法來求解網(wǎng)絡中的參數(shù)值。而這又一般是通過最小化損失函數(shù)值來解得的,比如在autoencoder中是通過重構值和輸入值之間的誤差作為損失函數(shù)(當然了,一般都會對參數(shù)進行規(guī)制化的);在logistic回歸中損失函數(shù)是與輸出值和樣本標注值的差有關。那么在RBM網(wǎng)絡中,我們的損失函數(shù)的表達式是什么呢,損失函數(shù)的偏導函數(shù)又該怎么求呢?
在了解這個問題之前,我們還是先從能量函數(shù)出發(fā)。針對RBM模型而言,輸入v向量和隱含層輸出向量h之間的能量函數(shù)值為:
?
而這2者之間的聯(lián)合概率為:
?
其中Z是歸一化因子,其值為:
?
這里為了習慣,把輸入v改成函數(shù)的自變量x,則關于x的概率分布函數(shù)為:
?
令一個中間變量F(x)為:
?
則x的概率分布可以重新寫為:
?
這時候它的偏導函數(shù)取負后為:
?
從上面能量函數(shù)的抽象介紹中可以看出,如果要使系統(tǒng)(這里即指RBM網(wǎng)絡)達到穩(wěn)定,則應該是系統(tǒng)的能量值最小,由上面的公式可知,要使能量E最小,應該使F(x)最小,也就是要使P(x)最大。因此此時的損失函數(shù)可以看做是-P(x),且求導時需要是加上負號的。
另外在圖RBM中,可以很容易得到下面的概率值公式:
?
此時的F(v)為(也就是F(x)):
這個函數(shù)也被稱做是自由能量函數(shù)。另外經(jīng)過一些列的理論推導,可以求出損失函數(shù)的偏導函數(shù)公式為:
?
很明顯,我們這里是吧-P(v)當成了損失函數(shù)了。另外,估計大家在看RBM相關文章時,一定會介紹Gibbs采樣的知識,關于Gibbs內容可以簡單參考上一篇博文:Deep learning:十八(關于隨機采樣)。那么為什么要用隨機采用來得到數(shù)據(jù)呢,我們不是都有訓練樣本數(shù)據(jù)了么?其實這個問題我也一直沒弄明白。在看過一些簡單的RBM代碼后,暫時只能這么理解:在上面文章最后的求偏導公式里,是兩個數(shù)的減法,按照一般paper上所講,這個被減數(shù)等于輸入樣本數(shù)據(jù)的自由能量函數(shù)期望值,而減數(shù)是模型產(chǎn)生樣本數(shù)據(jù)的自由能量函數(shù)期望值。而這個模型樣本數(shù)據(jù)就是利用Gibbs采樣獲得的,大概就是用原始的數(shù)據(jù)v輸入到網(wǎng)絡,計算輸出h(1),然后又反推v(1),繼續(xù)計算h(2),…,當最后反推出的v(k)和k比較接近時停止,這個時候的v(k)就是模型數(shù)據(jù)樣本了。
也可以參考博文淺談Deep Learning的基本思想和方法來理解:假設有一個二部圖,每一層的節(jié)點之間沒有鏈接,一層是可視層,即輸入數(shù)據(jù)層(v),一層是隱藏層(h),如果假設所有的節(jié)點都是二值變量節(jié)點(只能取0或者1值),同時假設全概率分布p(v, h)滿足Boltzmann 分布,我們稱這個模型是Restrict??Boltzmann?Machine (RBM)。下面我們來看看為什么它是Deep Learning方法。首先,這個模型因為是二部圖,所以在已知v的情況下,所有的隱藏節(jié)點之間是條件獨立的,即p(h|v) =p(h1|v).....p(hn|v)。同理,在已知隱藏層h的情況下,所有的可視節(jié)點都是條件獨立的,同時又由于所有的v和h滿足Boltzmann 分布,因此,當輸入v的時候,通過p(h|v) 可以得到隱藏層h,而得到隱藏層h之后,通過p(v|h) 又能得到可視層,通過調整參數(shù),我們就是要使得從隱藏層得到的可視層v1與原來的可視層v如果一樣,那么得到的隱藏層就是可視層另外一種表達,因此隱藏層可以作為可視層輸入數(shù)據(jù)的特征,所以它就是一種Deep Learning方法。
?
參考資料:
? ? ?http://202.197.191.225:8080/30/text/chapter06/6_2t24.htm
? ? ?http://deeplearning.net/tutorial/rbm.html
? ? ?http://edchedch.wordpress.com/2011/07/18/introduction-to-restricted-boltzmann-machines/
? ? ?Deep learning:十八(關于隨機采樣)
? ? ?淺談Deep Learning的基本思想和方法
?
?
?
?
總結
以上是生活随笔為你收集整理的Deep learning:十九(RBM简单理解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java笔试题(一):斐波那契数列
- 下一篇: linux VNC简单配置