受限玻爾茲曼機RBM最通俗易懂的教程

本人來到CSDN已經有一段時間了,寫文章也寫了好幾篇了,本人最喜歡的風格就是用白話講解一些通俗易懂的東西,在之前,我講了不少東西,也不知道大家懂沒懂,但沒關係,你們愛懂不懂,哈哈哈哈哈哈哈哈哈哈。

但這次,我要講的東西我覺得你們都能懂,不懂我認作你爹,哈哈哈哈哈哈哈哈哈哈哈哈哈,哈哈哈哈哈哈哈哈哈哈哈哈哈

我們這次要講的東西是受限玻爾茲曼機,英文名字是Restricted Boltzmann Machine,簡稱RBM。解釋一下這個高大上的名詞吧,受限指的是限制,限制啥東西?能量!什麼叫能量,我給大家舉個例子,天上掉下去一滴水,這水肯定是向下的,爲啥,因爲重力的原因,它因爲重力把高度(叫做勢能)給變換爲速度(叫做動能),受到一個向下的拉力,然後才能把求往下拉。這個高度和速度其實說白了就是能量,它們互相轉化,不消不滅。稍有常識的人都會看出,人往高處走,水往低處流,看我這篇文章的人就是爲了往高處走,那水爲啥往低處流呢,因爲能量總是往勢能最小的地方走,直到平衡爲止。

能量給大家解釋完了,那就說一下限制,這個限制很簡單,意思就是水往低處流。這個「能量的受限」跟RBM模型有啥聯繫,其實吧,聯繫不是很大,只是在推導公式的時候用到而已。

下面說一下玻爾茲曼機的意思,玻爾茲曼是個學霸,他發明的模型,所以叫玻爾茲曼機。

名字我解釋完了,下面我給出一張受限玻爾茲曼機的圖片:


圖1

如圖1所示就爲玻爾茲曼機的模型,它一共有兩層,下面的四個圓圈叫做可視層,上面三個叫做隱含層。大家看看這個模型,它是箭頭全鏈接,且雙向的,這說明啥?沒啥!我們管下面四圓圈叫可視層,其實說白了就是輸入層,將原始數據給輸入進去就行。隱含層是啥意思,就是說我通過一個公式,把可視層的數據給算成隱含數據。

於是我們就得說一下怎麼算的了,首先介紹一個概念叫做權值,權值就是值每個小圓圈之間的連線的加權數,比如下面有4個圓圈,上面有3個,那麼就有12個權值,我們用wij表示,i指下面圓圈的編號,j是上面的。另一個概念叫做偏置量,怎麼理解呢,一次函數寫作y=kx+b,權值wij就是k,那麼偏置量就是b,我們把這張圖繼續補完,如圖2所示就清晰了,圖中的bi,aj指的就是偏置量,w43指的就是可視層神經元4與隱含層神經元3連接的權值。

圖2

如圖2所示,下一步我們就是把導入可視層的原始數據計算爲隱含數據了,怎麼計算,那可多了神馬tansig,sigmoid,pureline等等,但是我們都不講,我們就講最簡單的,舉個粒子計算隱含層y編號爲1的圓圈(左上角)的值,計算方式很簡單,我就告訴你 用可視層x1~x4四個數據與權值相乘,然後加和,之後再把偏置量b1加上,就完事兒了。其公式可以寫作 y1=x1*w11+x2*w21+x3*w31+x4*w41+b1。按照這個方法,即可把3個圓圈的值都算出來。

算完之後,我們通過算出來的y1,y2,y3在回求一遍x1~x4,爲了方便區分,回求的值我們叫做x‘1~x’4。舉個例子求x'1,把隱含層3個數據與權值相乘,之後把偏置量a1給加上就完事兒了,公式寫作x1=y1*w11+y2*w12+y3*w13+a1。其餘3個也按照這個方式求出。

求完x‘1~x’4後用x‘1~x’4對隱含層再次求一遍值,得到y'1~y'3三個數。

這些都完畢之後,我們要做的就是讓我們求得x與x',但是我們通過計算他們的差值,不爲0,那怎麼辦呢,那就是反向傳播,第一步我們x和y的矢量做乘積,x'與y'做乘積,求出z與z'兩個矩陣,這兩個矩陣行數爲x的數目,列數爲y的數目,然後我們把z與z'給相減一下,然後加入到權值裏面,例如w11,那麼新的w11值就爲:w11=w11+alpha*(z11-z'11),這裏的alpha叫做學習速率,取值在0~1之間,大家自己一個數一個數的試試就知道多少好了,其它的權值也是一樣計算。偏置量計算就是用以前的偏置量加上x-x'或y-y‘。如隱含層偏置量b1更新值爲:b1=b1+alpha*(y1-y'1),可視層偏置量a1=a1+alpha*(x1-x'1),其餘偏置量同理計算。

計算之後就是反向傳播結束了,結束後在進行正向的運算,求一遍x與x'1的差值,看看想不想等,要是相等,行了,結束。不想等就反向傳播運算,然後循環,知道近乎相等爲止,這樣一個RBM模型就建立好了。我講的比較簡單吧,懂了沒?