零基礎入門深度學習五:邏輯回歸
Sigmoid 美 [s?gm??d] : S 形的
Discriminative 美 [d?skr?m??ne?t?v] : 判別
本文是對李宏毅教授課程的筆記加上自己的理解重新組織,如有錯誤,感謝指出。
視頻及 PPT 原教程:https://pan.baidu.com/s/1brbb6rX 密碼: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技術 |