生成學(xué)習(xí)算法
生成學(xué)習(xí)算法和判別學(xué)習(xí)算法的區(qū)別
判別學(xué)習(xí)算法(Discriminative)
我們之前學(xué)習(xí)過Logistic算法來解決分類問題悴品,回想一下分類過程:我們使用所有訓(xùn)練樣本訓(xùn)練出一個函數(shù), 之后若要預(yù)測一個樣本的類別,只需要將這個樣本的特征作為得到的函數(shù)
的輸入板熊,看看輸出是啥即可拂盯。類似這樣的分類方法塘慕,稱為判別學(xué)習(xí)算法叮趴,判別學(xué)習(xí)算法一般有以下兩種類型:
直接學(xué)習(xí)
煤辨。 給出一個
约计,得到
的值诀拭,接著比較
和
時
的值的大小,就能夠判定x的類別煤蚌。
或直接學(xué)習(xí)一個算法
耕挨,就和之前的logistic分類一樣。
生成學(xué)習(xí)算法(Generative)
以二分類問題為例:假設(shè)我們需要對一組癌癥腫瘤樣本進(jìn)行分類尉桩,得到一個能夠區(qū)分良性腫瘤和惡性腫瘤的算法筒占。在生成學(xué)習(xí)算法的思路中,不是直接用樣本去擬合一個函數(shù) 來預(yù)測新的輸入的類別蜘犁,而是分別對訓(xùn)練樣本中的良性樣本和惡性樣本進(jìn)行擬合翰苫,得到兩個模型,接著當(dāng)需要預(yù)測一個新腫瘤樣本的類別的時候这橙,就用新樣本的特征數(shù)據(jù)分別輸入兩個模型中奏窑,哪個模型的擬合程度高,就認(rèn)為新樣本屬于哪個類別屈扎。
形式化地說埃唯,生成學(xué)習(xí)算法對 和
進(jìn)行建模,接著通過貝葉斯公式計(jì)算出
鹰晨,式中的
可以通過
計(jì)算出墨叛。
生成學(xué)習(xí)算法的例子——高斯判別分析
假設(shè) 且是一個連續(xù)值,高斯判別分析要求
符合高斯分布模蜡。
多元(高維)高斯分布:是一維高斯分布的推廣漠趁,
其中隨機(jī)變量Z是符合高維高斯分布的一個高維向量 ,
是協(xié)方差矩陣忍疾,
是高斯分布的均值闯传。這樣高維高斯分布的概率密度公式就是
這個公式不需要記,但是需要知道
和
的含義以及它們對高斯分布圖像的影響卤妒。
補(bǔ)充:協(xié)方差矩陣的知識
是單位矩陣丸边,
是零向量
此時的圖像一般被認(rèn)為是標(biāo)準(zhǔn)圖像:
減小
中對角線的值
實(shí)際上是減小了各個維度上隨機(jī)變量的方差叠必,因此各維數(shù)據(jù)都更加聚集,圖像整體更加“瘦長”:
增大
中對角線的值
實(shí)際上是增大了各個維度上隨機(jī)變量的方差妹窖,因此各維數(shù)據(jù)都更加分散,圖像整體更加“矮胖”:
增加非主對角線上的元素值
實(shí)際上增加了各維隨機(jī)變量的關(guān)聯(lián)性:
-
0.5
markdown-img-paste-20180219191228252.png -
0.8
markdown-img-paste-20180219191236964.png
減小非主對角線上的元素值
實(shí)際上增加了各維變量的關(guān)聯(lián)性(另一個方向)
改變
的值
實(shí)際上改變了圖像的位置
用高斯判別分析來分類兩種腫瘤樣本
俯視圖:
這個分割線和Logistic方法梯度上升得出的分割線的斜率有些不同收叶,接下來介紹高斯判別分布的具體過程骄呼。
-
符合伯努利分布
因此
-
符合高斯分布
因此
-
聯(lián)合似然性(joint likelyhood)
上述公式中,我們的似然性公式中的每一個因子是
是聯(lián)合分布判没,因此這個式子稱為"聯(lián)合似然性"公式蜓萄,而在判別學(xué)習(xí)算法(如Logistic)中,我們的似然公式如下:
這個式子中的每個因子為
,因此這個似然公式稱為“條件似然公式(conditional likelyhood)”
現(xiàn)在澄峰,假設(shè)給定m個樣本嫉沽,我們開始具體的建模和預(yù)測過程:
根據(jù)訓(xùn)練樣本數(shù)據(jù)計(jì)算出極大似然分布參數(shù)
-
實(shí)質(zhì)上計(jì)算的是所有非惡性腫瘤樣本
的特征的均值。
-
實(shí)質(zhì)上計(jì)算的是所有惡性腫瘤樣本
的特征的均值俏竞。
-
將這些公式及具體的樣本數(shù)據(jù)代入绸硕,就能計(jì)算出
。
根據(jù)
進(jìn)行預(yù)測
上式中的 的含義是:使得
的值最大的
魂毁。由于
的值與
無關(guān)玻佩,所以上式化簡了分母
如果y是均勻分布的,也就是取得每種類別的概率都相同席楚,那么上式可以繼續(xù)化簡:
這種情況并不常見咬崔,因此多數(shù)使用的還是式子:
而 已經(jīng)由訓(xùn)練樣本數(shù)據(jù)擬合出來,因此只需要代入要預(yù)測的樣本特征
,求出
即可烦秩。
具體求解方法視頻和講義中都沒講垮斯,我認(rèn)為應(yīng)該是將要預(yù)測的 代入之前推得的
和
的表達(dá)式中(此時表達(dá)式的參數(shù)已經(jīng)由極大似然估計(jì)求得),之后比較大小即可只祠。
高斯判別分析和Logistic的關(guān)系
一個有趣的事情是兜蠕,如果你將 看做是
的函數(shù),那么這個函數(shù)將能夠用
表示铆农,這和sigmod函數(shù)的表達(dá)式是一致的牺氨。但是高斯判別分析(GDA)和Logstic方法得到的兩個函數(shù)的圖像是不一樣的(雖然它們的形式是一樣的)。
注:根據(jù)貝葉斯公式墩剖,
而右式中的所有式子的參數(shù)都已經(jīng)用訓(xùn)練樣本擬合出來猴凹,因此可以計(jì)算出左式的數(shù)學(xué)表達(dá)式,發(fā)現(xiàn)計(jì)算結(jié)果是一個sigmod具有相同形式的函數(shù)岭皂。
生成學(xué)習(xí)算法和判別學(xué)習(xí)方法的權(quán)衡
正如上一節(jié)提及的郊霎,在高斯判別分析中,我們假設(shè) 符合高斯分布爷绘,從而得出一個結(jié)論(沒有提供證明):
的分布函數(shù)符合logistic后驗(yàn)分布函數(shù)
书劝。
其實(shí)进倍,不僅是高斯分布,如果 和
都符合泊松分布购对,上述結(jié)論仍然成立猾昆,即
實(shí)際上有更一般的結(jié)論:如果 且
,則
是logistic函數(shù)骡苞。這其實(shí)反過來印證了logistic函數(shù)的魯棒性垂蜗,因?yàn)樗軌蜉^好地擬合指數(shù)分布族能夠表示的分布的數(shù)據(jù)。
生成學(xué)習(xí)算法的優(yōu)勢
在已知
符合哪種分布的情況下解幽,使用生成學(xué)習(xí)算法的效果往往比使用判別學(xué)習(xí)算法的效果好贴见。以高斯判別分析為例,它假設(shè)
符合高斯分布躲株,且之前的結(jié)論告訴我們在這個假設(shè)下推導(dǎo)出的
是符合logistic函數(shù)形式的片部;因此可以認(rèn)為生成學(xué)習(xí)算法使用了比判別學(xué)習(xí)算法更強(qiáng)的假設(shè),因此更加具有針對性霜定,如果使用了正確的分布模型(比如對一個組
符合或近似符合高斯分布的樣本使用高斯判別分布)档悠,那么將會得到比判別分析更好的效果。反之然爆,如果不知道
符合哪種分布站粟,那么具有更加弱的假設(shè)的判別學(xué)習(xí)算法將很有可能得到更好的效果。
生成學(xué)習(xí)算法需要更少的數(shù)據(jù)來擬合模型曾雕。這仍然是因?yàn)榕袆e學(xué)習(xí)算法做了更弱的假設(shè)奴烙,因此如果要擬合出和生成學(xué)習(xí)算法同等效果的模型(假設(shè)生成學(xué)習(xí)算法選用了正確的分布),判別學(xué)習(xí)算法需要更多的數(shù)據(jù)來保證模型的魯棒性剖张。
另一個生成學(xué)習(xí)算法——樸素貝葉斯(Naive Bayes)
使用樸素貝葉斯算法來區(qū)分垃圾郵件
特征選擇
我們使用一個代表單詞列表的位向量來描述郵件切诀,如
向量中的每一個元素代表了一封郵件中是否出現(xiàn)對應(yīng)的單詞。這個列表可以通過讀取大量近期郵件(如近兩個月的郵件)的內(nèi)容來獲得搔弄。
判別學(xué)習(xí)算法不可取
現(xiàn)在我們說明擬合出一個函數(shù) 來作為判定函數(shù)是不可取的:
特征選擇的方式?jīng)Q定了特征向量 的維數(shù)是很大的(一般是50000這個數(shù)量級)幅虑,因此
共有
種可能的取值。 如果使用多項(xiàng)式分布(這是比較適合這個問題的概率分布)來擬合顾犹,則需要擬合
個參數(shù)倒庵,這是很難的,因此需要令求捷徑來解決這個問題炫刷。
注:和由伯努利分布推導(dǎo)出sigmod函數(shù)的推導(dǎo)過程一樣擎宝,多項(xiàng)式分布的函數(shù)也可以通過指數(shù)分布族自然推出(具體過程在上一講的講義中)
生成學(xué)習(xí)算法——樸素貝葉斯假設(shè)
為了解決這個問題,我們需要做出一個很強(qiáng)的假設(shè):
樸素貝葉斯假設(shè):對給定的 ,
是條件獨(dú)立的浑玛。
根據(jù)概率論的鏈?zhǔn)椒▌t(注意這個式子沒有用到任何假設(shè)):
使用貝葉斯假設(shè)之后:
貝葉斯假設(shè)通俗來講就是:不論一封郵件是不是垃圾郵件绍申,那單詞之間出現(xiàn)的概率都不會相互影響,比如單詞"a"的出現(xiàn)將不會影響單詞"buy"出現(xiàn)的概率。也就是在你了解了一封郵件是不是垃圾郵件的前提下极阅,知道其中的一部分詞匯并不會幫助你預(yù)測其中可能出現(xiàn)的其他詞匯胃碾。
這個假設(shè)是不可能成立的,因?yàn)橐环饫]件中出現(xiàn)"csapp"的概率顯然比出現(xiàn)"buy"的概率要小得多筋搏;如果一封郵件中出現(xiàn)了"cs299",那么郵件中很有可能會出現(xiàn)這個課程的老師或助教的名字仆百。
雖然這個假設(shè)字面上是錯誤的,但是它在文本奔脐、郵件儒旬、網(wǎng)頁內(nèi)容的分類上的效果是非常好的(這就很神奇:O)
開始建模
這個模型的參數(shù)如下:
接著寫出聯(lián)合似然分布的表達(dá)式:
用訓(xùn)練樣本數(shù)據(jù)擬合出使得上式取最大值的參數(shù):
上面第三個式子的含義是:遍歷每個垃圾郵件,統(tǒng)計(jì)其中出現(xiàn)單詞列表中第個單詞的郵件的頻率帖族;
的含義就是垃圾郵件中包含單詞列表中第j個單詞的郵件的概率。
進(jìn)行預(yù)測
接下來根據(jù)得到的參數(shù)來預(yù)測新樣本的類別:
首先在貝葉斯假設(shè)的前提下計(jì)算:
然后計(jì)算:
比較上述兩式的結(jié)果挡爵,哪個大竖般,新樣本就屬于哪一類。
拉普拉斯平滑(Laplace Smoothing)
上面介紹的貝葉斯分類器存在一個問題:
在判定一個新樣本的類別時茶鹃,如果這個新樣本中出現(xiàn)了一個訓(xùn)練樣本中從未出現(xiàn)過的詞涣雕,比如"NIPS",那么根據(jù)鏈?zhǔn)椒▌t和貝葉斯假設(shè):
假設(shè)“NIPS”是詞典中的第30000個詞,那么根據(jù)極大似然估計(jì)得到的參數(shù):
因此
這是個未定義的值闭翩。也就是說挣郭,如果新的樣本中出現(xiàn)了一個之前沒有出現(xiàn)過的詞,那么這個詞不論在垃圾郵件還是非垃圾郵件中出現(xiàn)的概率都是0疗韵,這時貝葉斯分類器將會無法正確判定這個樣本屬于哪個類別兑障。
這是因?yàn)橛糜?xùn)練樣本擬合參數(shù)時,我們僅僅因?yàn)橛?xùn)練樣本數(shù)據(jù)中沒有出現(xiàn)過某個詞蕉汪,就認(rèn)為未來出現(xiàn)這個詞的概率為0流译,這顯然是不合理的。
因此需要一種方式來修正參數(shù)者疤,那就是Laplace平滑:
之前我們使用公式
來預(yù)測 福澡,如果
,
那么
也就是說如果訓(xùn)練樣本中沒有垃圾郵件,那么貝葉斯分類器將會認(rèn)為未來出現(xiàn)垃圾郵件的概率也是0驹马。
在Laplace平滑中革砸,改用下面的方法計(jì)算:
這樣,在上述同等情況下糯累, 的值就變?yōu)椋?/p>
這顯然是一個更合理的參數(shù)算利,因?yàn)橛?xùn)練樣本中未出現(xiàn)垃圾郵件,所以我們預(yù)測接下來出現(xiàn)垃圾郵件的概率較锌芪谩(而不是0).
同理笔时,對其它參數(shù)也應(yīng)用Laplace平滑:
貝葉斯分類中的Laplace平滑的過程總結(jié)來說就是分子的每一項(xiàng)加上1,分母加上總的類別數(shù)仗岸。