零基礎入門深度學習五:邏輯回歸

Sigmoid 美 [s?gm??d] : S 形的

Discriminative 美 [d?skr?m??ne?t?v] : 判別

本文是對李宏毅教授課程的筆記加上自己的理解重新組織,如有錯誤,感謝指出。

視頻及 PPT 原教程:pan.baidu.com/s/1brbb6r 密碼:ty1r

接著上篇的生成模型,我們進行下公式的變形,見證奇蹟的發生!

問題的關鍵是求出 P( x | C1) 和 P( x | C2),我們對它們的分布做出假設,用貝葉斯或者高斯分布最終求出了 P( x | C1) 和 P( x | C2),從而解決了我們的問題。而在這裡我們先對公式進行一下變形。

exp( -z ) 代表 e 的負 z 次方

最終的結果其實就是 S 型函數,即 Sigmoid function ,記為

我們再來看一下 z 長什麼樣子。

為了方便推導,我們依舊假設 P( x | C1) 、P( x | C2) 符合高斯分布,並且

當然如果假設它是別的分布,最終依舊可以推導出同樣的公式。

經過代入、合併、化簡,它變成了下邊的樣子。

仔細觀察,我們可以把 x 前邊的係數記為一個向量 w , 而後邊的一大串其實這是一個標量,一個常數項,我們記為 b 。

因為假設不同的分布最終都可以得到這個式子,所以我們如果對 w 和 b 直接求解,求得的 w 和 b 就可能是任何一種分布, 它可以是高斯分布,可以是貝葉斯,甚至是一些沒有命名的分布。

而這個模型就是 LR ( Logistic Regression ),也是判別 ( Discriminative ) 模型的一種。雖然和生成模型經過變化長一個樣子,但由於求參數方式的不同,最終的效果也不一樣。

判別模型中我們直接求 w 和 b (當然是梯度下降的方式,後邊我們進行推導),生成模型中我們先假設一種分布,然後再往出推導公式從而算出 w 和 b。

區別很容易理解,判別模型中我們直接求出 w 和 b ,此時代表的分布並不是確定的,可能是貝葉斯,可能是高斯或者其他。而生成模型開始假設什麼分布它就是什麼分布。

很明顯,判別模型在大多數情況下會優於生成模型,因為生成模型需要人為的假設分布,一旦假設錯了,它的 w 和 b 即使求的再正確,最終結果也不會太好。

生成模型就沒有什麼好處了嗎? 當然是有的

如果我們的數據很少,而此時我們先假設一個分布再去求,最終效果肯定會比判別模型中盲目的求要好。

如果數據的噪音比較多,也就是很多錯誤的數據,如果我們開始假設了分布,這些雜訊對模型不會造成太大的影響,這種情況下它更魯棒 ( 穩定、健壯 ) 些。

說了這麼多,那麼我們如何求 w 和 b 呢?

下邊進入我們熟悉的流程 Model → Goodness of a Function → Find the best function 。

Model

再強調一下,忘掉我們怎麼推出的這個模型,它和高斯分布沒什麼關係,即使假設其他的分布依舊會推出下邊這個模型。現在我們的重點是如果有了這個模型,怎麼去求 w 和 b 。

闕值可以選 0.5 ,也可以選其他,具體看問題需要。

換一種畫法

Goodness of Function

看下我們的數據

此時我們的輸出是 C1 、C2 ,首先我們得把它數值化,我們假設 C1 是 1,C2 是 0 。

有了這些數據,有了模型,我們先假設所有數據其實是從下邊這個模型(LR)得到的。

記得線性回歸中的 Loss function 怎麼定義的嗎?我們是不是也可以這樣做呢?

很可惜,不可以,此時的 L 不是一個凸函數,局部最優值太多了,根本沒法去梯度下降,所以我們得找其他的 Loss Function 。

這裡我們假設原來的每一個數據是一個伯努利分布,也就是我們熟悉的兩點分布。

我們假設這樣一個事件,假設一個隨機變數是 Y ,數據屬於 C1 類記為成功,記做 Y = 1 ,如果不屬於 C1 類記為失敗,記做 Y = 0 。

這樣的話,所有數據都可以統一為一個式子 , n 代表第幾個數據:

而我們的模型算出的每個數據的概率,也可以統一為一個式子:

如何讓分布 q 儘可能的接近分布 p 呢?讓他們的交叉熵最小!交叉熵的概念可以看下知乎里的討論。交叉熵的公式如下:

x 這裡指的是 Y 的取值。

然後對於每一個數據的交叉熵是

我們再把所有的交叉熵求和,就是我們的 Loss Function 了。

我們再換種思路求 Loss Function , 即用最大似然估計的方法,也就是利用所有的數據,找到一組參數使得數據儘可能的符合模型。假設我們的分布如下

最大似然估計就是把每個樣本帶進去,然後乘起來,也就是

我們需要做的就是找到 w , b 使得這裡的 likelihood 最大。

我們把 L 取一下自然對數,然後添一個負號,求最大變成求最小。

接下來進行化簡,把 L 代入,ln 里的拿出來乘法變加法

神奇的第二個等號後邊的變化是怎麼回事呢?其實我們利用了數據

我們把

代入就可以反推回第一個等號後邊的式子了。

然後我們把式子合併就變成了下邊這樣

是的,你沒有看錯,我們得到了和之前用交叉熵推出的一樣的公式!!!究竟是道德的淪喪?還是人性的缺失?讓我們一起來走近科學。

Best Function

讓我們看下對 wi 求偏導, b 就先不看了。

所以我們的 wi 的更新方式就是

有了參數的更新方式,下邊就不用講了吧,嘻嘻嘻。

與線性回歸對比

神奇之處又來了,梯度下降參數更新的公式竟然一樣!!!驚不驚喜?意不意外?


推薦閱讀:

TAG:深度學習DeepLearning | 機器學習 | AI技術 |