史上最简单的玻尔兹曼机模型讲解
在上一篇文章中,小夕講述了邏輯回歸為了抗衡貝葉斯網,也開始了自己的進化。然而令我們沒有想到的是,邏輯回歸最終竟然進化成了一個生成式模型——受限玻爾茲曼機(RBM),也就是變成了敵方(生成式模型)的武器。
意外得到RBM的樸素貝葉斯萬分驚喜,并且燃起了將它自己做的貝葉斯網與敵方送的RBM融合的沖動!
那么樸素貝葉斯的瘋狂想法能不能實現呢?
?
?
還是按照慣例,先敘述背景姿勢。在《樸素貝葉斯到貝葉斯網》中,小夕為樸素貝葉斯畫了一幅肖像:?
樸素貝葉斯看到自己的肖像后,深感自己的樸(弱)素(雞),于是進行了進化——拋棄自己的條件獨立性假設,建模特征向量X內部各個維度的條件依賴關系。于是,樸素貝葉斯進化出了下圖的貝葉斯網:
?
在上一篇文章《邏輯回歸到受限玻爾茲曼機》中,RBM相比邏輯回歸有了非常大的進步,可以更加合理的計算每個樣本與每個類別的“親密度”,也就是與之關聯的概率圖模型中能量函數E(v1,v2)的大小。
RBM看起來這么復雜,那么靈魂畫師夕小瑤能不能像對貝葉斯一樣,給RBM畫一個肖像呢?
?
RBM的肖像?
當然可以啦~從上一篇文章對能量函數E(v1,v2)的定義來看,這個函數計算向量v1和v2的“親密度”時是沒有方向的,也就是說E(v1,v2)一定等于E(v2,v1)的。所以對于圖中的任意兩個點來說,他們之間的邊是沒有方向的(注意區分樸素貝葉斯和貝葉斯網中的有向邊哦)。所以對于RBM中有連接的兩個點:
?
邊是無向的,并且用一個藍色小方塊表示用能量函數連接。
按照上一篇文章的表述,RBM中的一個參數——矩陣W連接了特征向量X中的每個維度與類別向量Y的每個維度,因此RBM應該是下面這個樣子的:
?
?
(小方塊太多啦,省略掉了~但是每條邊依然代表著這兩個節點用能量函數(中的參數)連接)誒?有沒有覺得。。。還不夠亂!(好喪心病狂的想法
回想一下,從樸素貝葉斯到貝葉斯網就是經歷了將X內部的各個維度(各個隨機變量)之間的關系也建模了!而RBM則是跟樸素貝葉斯一樣的,對X內部(更一般化的說還包括Y內部)的隨機變量是有獨立性假設的。而在《樸素貝葉斯到貝葉斯網》中已經詳細敘述了這個獨立性假設在很多情況下是非常致命的!
所以,才不要什么人為的假設呢~解開玻爾茲曼機身上的枷鎖吧~讓X內部以及Y內部的隨機變量也可以隨意的交流(即,使模型具備描述X和Y內部各隨機變量之間條件依賴性關系的能力,只不過這里直接描述了雙向的條件依賴性關系)。所以從圖中看是這樣子的:
?
玻爾茲曼機:喵喵喵~最喜歡自由的感覺啦~
那么在數學上怎么描述呢?當然可以直接照搬RBM中的做法啦。
RBM的假設函數中的能量函數:
用一個矩陣W連接了X所有維度與Y的所有維度。因此要連接X內部所有維度和Y內部所有維度的話,只需要:
?
相信聰明的你很輕松就看懂啦,這里用兩個與W同理的矩陣R、S來分別連接v1內部的各維度以及v2內部的各維度。
所以玻爾茲曼機(BM)的假設函數跟RBM的形式一樣,都是
?
其中配分函數Z:
?
只是將里面的能量函數換成上面的更喪心病狂的形式了而已~
?
而根據《一般化機器學習》,我們已經理解了玻爾茲曼機(BM)的假設函數,那么還需要探索如何訓練這個自由而強大的模型。而如何訓練,即尋找或設計一個合適的損失函數,然后選擇合適的最優化算法來最小化損失函數從而得到model。
然而,自由而隨意所帶來的代價就是:
非!常!難!以!訓!練!
設想一下,假如損失函數我們就用最通用的似然函數(誒誒?是不是還缺一篇寫損失函數的文章?沒事沒事,還好在《EM算法》中有講似然函數),那么任何主流的最優化算法都會計算量爆炸(想象一下對玻爾茲曼機的假設函數求導,尤其是對配分函數這個恐怖大分母!),哪怕是最簡單的梯度下降法(當然這里最大化似然函數就是梯度上升啦),都會使得工程上訓練BM很不現實。
那么怎么辦呢?
一個主流的解決辦法是使用一種改良的梯度上升法——MCMC算法來最大化似然函數。
這個算法的由來就是一個純數學過程了,需要一篇很長很崩潰的堆砌公式的文章才能講清楚,所以。。。詳情可以參考《Deep Learning》(中文版鏈接exacity/deeplearningbook-chinese)的第18章啦( ̄? ̄),數學不太好的慎入哦(小夕誠實的講,小夕也沒有很清晰的理解透...所以現在講的肯定不如書上好~)
?
誒誒?愛思考的小夕又有疑問惹:
首先,這就是玻爾茲曼機的全部潛力了嗎?怎么看著能量函數有點眼熟呢。。。有點像,神經張量網絡(NTN)?誒?會不會跟神經網絡有關系呢?會不會。。。會不會跟深度學習碰撞出火花?叫做深度玻爾茲曼機?
而且,既然貝葉斯網絡是用有方向的邊去描述的,玻爾茲曼機是用無方向的邊去描述的,而且這兩者看起來都很自由~那這兩個。。。哪個更好呢?
就讓小夕站在概率圖的高度來描述一場新的戰爭吧~
?
總結
以上是生活随笔為你收集整理的史上最简单的玻尔兹曼机模型讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美团点评移动网络优化实践
- 下一篇: 【Spring Cloud中文社区】正式