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