從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事

開篇高能預警:這是一篇思維量比較大的文章,深夜閲讀小心失眠哦~

從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事
從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事

在那很久很久以前,可愛的小夕寫了 一篇將邏輯迴歸小題大做的文章 ,然後在 另一篇文章 中闡述了邏輯迴歸的本質,並且推廣出了softmax函數。

從那之後,小夕又在 一篇文章 中闡述了邏輯迴歸與樸素貝葉斯的恩仇錄,這兩大祖先級人物將機器學習的國度劃分為兩大板塊—— 生成式與判別式

後來,樸素貝葉斯為了將自己的國度發揚光大,進化出了 貝葉斯網 以抗衡邏輯迴歸,一雪前恥。

然而,傲嬌的邏輯迴歸怎能就此善罷甘休呢?

ps:對上面的故事有不認識的名詞的同學,務必點一下上面的文章鏈接複習一下哦。

從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事
從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事

先複習一下邏輯迴歸的結論。在之前的 文章1文章2 中已經解釋了,邏輯迴歸是個二類分類器,它的假設函數是

從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事
從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事

並且本質上這個假設函數算出來的是 其中一個類別的後驗概率p(y=1|x)

而sigmoid函數本身並不單純,而是一個現實意義非常豐富的函數,所以邏輯迴歸模型可以表示成

p(y=1|x)  = exp( x與類別1的"親密度")  / exp( x與所有類別的"親密度"之和 )

其中,親密度直接用內積x·y描述。

對上面的結論有疑問的同學,回看一下那兩篇文章哦。

從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事
從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事

再次提醒! 前方超級高能預警!!!

請務必在進入戰場前確認已經裝備以下三神器:

1、 淺入深出被人看扁的邏輯迴歸

2、 sigmoid與softmax的血緣關係

3、 邏輯迴歸與樸素貝葉斯的戰爭

從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事
從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事

顯然,邏輯迴歸這麼簡單的model有很大的改良餘地。尤其是所謂的親密度!

想象一下,在邏輯迴歸中,親密度就是用x與y的內積來表示了,但是這個做法過於簡單了。我們暫且不管最佳描述親密度的函數是什麼,我們就直接用一個函數E(x,y)來表示x與y的親密度,然後我們儘可能的讓E(x,y)的形式變得合理,儘可能的用最優的方式去描述x與y的親密度。

首先,描述x與y的親密度,就是描述兩個矢量的親密度嘛~為了避免讓大家思考的時候總是帶着機器學習的影子,我們不妨用兩個一般的矢量v1和v2來表示x與y。

為了找出最優的描述v1與v2親密度的函數E(v1,v2),我們想想以前直接用v1·v2來描述親密度有什麼缺陷。

設想一下,如果v1代表老闆,v2代表老闆手下的祕書呢?

顯然,v1與v2的親密度來説,v2並沒有多大的發言權,老闆(v1)想跟誰親密,那麼v1就跟哪個v2的親密度大。所以! 我們需要一個權重來表示某個矢量在計算親密度時的説話分量:

我們就用參數b 來表示v1 的説話分量,用參數c 來表示v2 的説話分量啦~

然後,再想象一下,v1和v2的親密度完全可以體現在方方面面呀~比如老闆與小王由於都喜歡美粧從而比較親密,老闆與小李都喜歡打籃球從而比較親密,但是由於老闆心裏覺得美粧比籃球更重要,所以綜合來看老闆跟小王更親密。

而之前用v1直接用v2做內積的話,顯然矢量的各個維度(籃球、美粧等各個方面)的權重都是相等的,無法描述不同維度在老闆心裏的權重。 那麼如何分出來不同維度在老闆心裏的權重呢?

顯然!在v1與v2之間加個同樣維度的矢量描述各個維度權重!這個參數暫時用小寫的w表示。誒?不對啊,如果w是個矢量的話,v1、v2、w這三個矢量無論怎麼計算,都不可能乘出來一個表示親密度的值啊(回想一下做矩陣乘法時的結果的維度與各乘子的維度的關係)

所以這裏的w不能是矢量!假如v1和v2的維度是n的話,那麼 w只需要是個n*n對角矩陣 就可以啦!這樣

從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事
從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事
就是維度 1*n 乘以 n*n 乘以 n*1 ,這樣得到的結果就是一個值了~

所以,我們把前面的參數b和c也高級化一下,讓b也能刻畫不同維度下v1的分量,以及c刻畫不同維度下v2的分量,所以 參數b和c就是個n維矢量 ~

從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事
從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事
,就是維度1*n與維度n*1相乘,直接得到一個值。v2與c同理。)

再想想,這時參數b和c是n維矢量,w是個n*n的對角矩陣。還能繼續優化親密度的描述嗎?

設想一下,如果老闆(v1)的第1維的含義是“喜歡化粧”,祕書(v2)的第5維的含義是“喜歡買化粧品”,那麼當v1與v2直接求內積的時候,哪怕v1的第1維與v2的第5維會碰撞出強烈的親密度,但是由於v1與v2直接求內積,也就是説v1的第i維只能跟v2的第i維碰撞,這樣明顯喪失了很多潛在的親密度啊!所以我們要用額外的參數來描述v1的第i維與v2的任意的第j維之間的“關聯度”,如果關聯度非常大,那參數就儘可能大,讓v1的第i維去盡情碰撞v2的第j維,看看能不能出來強烈的親密度~當然,兩個關聯度很小的維度的話,對應的參數的值就會接近0,就沒有碰撞的必要啦~碰撞的結果也沒有啥影響力啦~

想的很好,那麼這個複雜的參數怎麼表示呢?

其實對於數學基礎紮實的同學來説非常簡單!參數矩陣的非對角線元素就是描述這種關係的!(有沒有想起概率統計中的協方差矩陣?想起的肯定秒懂啦,沒想起同學也沒關係~)

所以,我們只要把 對角矩陣w變成普通的矩陣W !這樣W的對角線元素依然描述每個維度的權重,而非對角線元素就可以描述上述v1的各個維度與v2的各個維度之間的關聯度啦!

通過 矢量b、矢量c、矩陣W ,簡直是不能更完美的刻畫v1與v2的親密度了!所以綜合起來,親密度函數如下:

從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事
從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事

所以,這個新的機器學習模型跟邏輯迴歸一樣,只是把親密度定義了一下,並且:

1、跟邏輯迴歸一樣可以很自由的推廣到多類分類的情況(不理解的同學回 這篇文章 複習一下sigmoid到softmax)

2、跟邏輯迴歸一樣可以很自由的由判別式推廣到生成式(不理解的同學回 這篇文章 複習一下邏輯迴歸到樸素貝葉斯)

好!那麼我們就將這些進化全都用上(好瘋狂...):

1、改良親密度的定義

2、推廣到多類

3、推廣到生成式

那麼得到的超級模型的 假設函數 就是:

從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事
從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事

其中,E(x,y)就是本文的改良版“親密度”函數;M代表樣本數量,K代表類別數量。

在這個模型中,參數就是親密度函數中的矢量b、矢量c、矩陣W。

這個用盡高級技術的複雜而優美的模型叫什麼呢?

這就是: 受限玻爾茲曼機 (Restricted  Boltzmann Machine ,即RBM)

其中,這裏小夕講的親密度函數的 前面加個負號 ,就是概率圖模型中所謂的 能量函數 ,也叫 勢能函數 (理論物理中的概念),這裏也是用 E(v1,v2) 表示( 新的E(v1,v2)=-舊的E(v1,v2) )。假設函數中那個有兩個求和號的恐怖大分母,就是概率圖模型中的 配分函數Z ,跟小夕這裏講的意思是一模一樣的,只不過用新的E(v1,v2)表示而已啦。

所以用 概率圖中的表示方法,RBM的假設函數 即:

從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事
從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事

其中,配分函數:

從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事
從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事

看~概率圖中被包裝的如此抽象的RBM,本質上就是個究極進化版的邏輯迴歸而已啦。

從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事
從邏輯迴歸到玻爾茲曼機—一個生兒育女的故事

那麼,為什麼説這是“受限”玻爾茲曼機呢?難道還有不受限的玻爾茲曼機嗎?這個答案就讓小夕在下一篇文章中告訴你吧,看看RBM是如何繼續進化的~

等等!

納尼???邏輯迴歸培養到最後,怎麼培養成了生成式模型呀!所以竟然培養成了對方戰場的究級武器???

╮( ̄▽ ̄"")╭

我想,這大概跟小夕父母的心情差不多吧——明明生的是兒子,養着養着就成女兒了(生兒育女)。

本文轉自微信訂閲號 【夕小瑤的賣萌屋】 ,據説每個想學機器學習的人進來後都停不下來了哦( ̄∇ ̄)