生成学习算法Generative Learning algorithms
轉(zhuǎn)載時(shí)請(qǐng)注明來(lái)源:http://www.cnblogs.com/jerrylead
1判別模型與生成模型
上篇報(bào)告中提到的回歸模型是判別模型,也就是根據(jù)特征值來(lái)求結(jié)果的概率。形式化表示為,在參數(shù)確定的情況下,求解條件概率。通俗的解釋為在給定特征后預(yù)測(cè)結(jié)果出現(xiàn)的概率。
比如說(shuō)要確定一只羊是山羊還是綿羊,用判別模型的方法是先從歷史數(shù)據(jù)中學(xué)習(xí)到模型,然后通過(guò)提取這只羊的特征來(lái)預(yù)測(cè)出這只羊是山羊的概率,是綿羊的概率。換一種思路,我們可以根據(jù)山羊的特征首先學(xué)習(xí)出一個(gè)山羊模型,然后根據(jù)綿羊的特征學(xué)習(xí)出一個(gè)綿羊模型。然后從這只羊中提取特征,放到山羊模型中看概率是多少,再放到綿羊模型中看概率是多少,哪個(gè)大就是哪個(gè)。形式化表示為求(也包括,y是模型結(jié)果,x是特征。
利用貝葉斯公式發(fā)現(xiàn)兩個(gè)模型的統(tǒng)一性:
由于我們關(guān)注的是y的離散值結(jié)果中哪個(gè)概率大(比如山羊概率和綿羊概率哪個(gè)大),而并不是關(guān)心具體的概率,因此上式改寫為:
其中稱為后驗(yàn)概率,稱為先驗(yàn)概率。
由,因此有時(shí)稱判別模型求的是條件概率,生成模型求的是聯(lián)合概率。
常見(jiàn)的判別模型有線性回歸、對(duì)數(shù)回歸、線性判別分析、支持向量機(jī)、boosting、條件隨機(jī)場(chǎng)、神經(jīng)網(wǎng)絡(luò)等。
常見(jiàn)的生產(chǎn)模型有隱馬爾科夫模型、樸素貝葉斯模型、高斯混合模型、LDA、Restricted Boltzmann Machine等。
這篇博客較為詳細(xì)地介紹了兩個(gè)模型:
http://blog.sciencenet.cn/home.php?mod=space&uid=248173&do=blog&id=227964
2高斯判別分析(Gaussian discriminant analysis)
1) 多值正態(tài)分布
多變量正態(tài)分布描述的是n維隨機(jī)變量的分布情況,這里的變成了向量,也變成了矩陣。寫作。假設(shè)有n個(gè)隨機(jī)變量X1,X2,…,Xn。的第i個(gè)分量是E(Xi),而。
概率密度函數(shù)如下:
其中|是的行列式,是協(xié)方差矩陣,而且是對(duì)稱半正定的。
當(dāng)是二維的時(shí)候可以如下圖表示:
其中決定中心位置,決定投影橢圓的朝向和大小。
如下圖:
對(duì)應(yīng)的都不同。
2) 模型分析與應(yīng)用
如果輸入特征x是連續(xù)型隨機(jī)變量,那么可以使用高斯判別分析模型來(lái)確定p(x|y)。
模型如下:
輸出結(jié)果服從伯努利分布,在給定模型下特征符合多值高斯分布。通俗地講,在山羊模型下,它的胡須長(zhǎng)度,角大小,毛長(zhǎng)度等連續(xù)型變量符合高斯分布,他們組成的特征向量符合多值高斯分布。
這樣,可以給出概率密度函數(shù):
最大似然估計(jì)如下:
注意這里的參數(shù)有兩個(gè),表示在不同的結(jié)果模型下,特征均值不同,但我們假設(shè)協(xié)方差相同。反映在圖上就是不同模型中心位置不同,但形狀相同。這樣就可以用直線來(lái)進(jìn)行分隔判別。
求導(dǎo)后,得到參數(shù)估計(jì)公式:
是訓(xùn)練樣本中結(jié)果y=1占有的比例。
是y=0的樣本中特征均值。
是y=1的樣本中特征均值。
是樣本特征方差均值。
如前面所述,在圖上表示為:
直線兩邊的y值不同,但協(xié)方差矩陣相同,因此形狀相同。不同,因此位置不同。
3) 高斯判別分析(GDA)與logistic回歸的關(guān)系
將GDA用條件概率方式來(lái)表述的話,如下:
y是x的函數(shù),其中都是參數(shù)。
進(jìn)一步推導(dǎo)出
這里的是的函數(shù)。
這個(gè)形式就是logistic回歸的形式。
也就是說(shuō)如果p(x|y)符合多元高斯分布,那么p(y|x)符合logistic回歸模型。反之,不成立。為什么反過(guò)來(lái)不成立呢?因?yàn)镚DA有著更強(qiáng)的假設(shè)條件和約束。
如果認(rèn)定訓(xùn)練數(shù)據(jù)滿足多元高斯分布,那么GDA能夠在訓(xùn)練集上是最好的模型。然而,我們往往事先不知道訓(xùn)練數(shù)據(jù)滿足什么樣的分布,不能做很強(qiáng)的假設(shè)。Logistic回歸的條件假設(shè)要弱于GDA,因此更多的時(shí)候采用logistic回歸的方法。
例如,訓(xùn)練數(shù)據(jù)滿足泊松分布,
,那么p(y|x)也是logistic回歸的。這個(gè)時(shí)候如果采用GDA,那么效果會(huì)比較差,因?yàn)橛?xùn)練數(shù)據(jù)特征的分布不是多元高斯分布,而是泊松分布。
這也是logistic回歸用的更多的原因。
3樸素貝葉斯模型
在GDA中,我們要求特征向量x是連續(xù)實(shí)數(shù)向量。如果x是離散值的話,可以考慮采用樸素貝葉斯的分類方法。
假如要分類垃圾郵件和正常郵件。分類郵件是文本分類的一種應(yīng)用。
假設(shè)采用最簡(jiǎn)單的特征描述方法,首先找一部英語(yǔ)詞典,將里面的單詞全部列出來(lái)。然后將每封郵件表示成一個(gè)向量,向量中每一維都是字典中的一個(gè)詞的0/1值,1表示該詞在郵件中出現(xiàn),0表示未出現(xiàn)。
比如一封郵件中出現(xiàn)了“a”和“buy”,沒(méi)有出現(xiàn)“aardvark”、“aardwolf”和“zygmurgy”,那么可以形式化表示為:
假設(shè)字典中總共有5000個(gè)詞,那么x是5000維的。這時(shí)候如果要建立多項(xiàng)式分布模型(二項(xiàng)分布的擴(kuò)展)。
| 多項(xiàng)式分布(multinomial distribution) 某隨機(jī)實(shí)驗(yàn)如果有k個(gè)可能結(jié)局A1,A2,…,Ak,它們的概率分布分別是p1,p2,…,pk,那么在N次采樣的總結(jié)果中,A1出現(xiàn)n1次,A2出現(xiàn)n2次,…,Ak出現(xiàn)nk次的這種事件的出現(xiàn)概率P有下面公式:(Xi代表出現(xiàn)ni次) |
對(duì)應(yīng)到上面的問(wèn)題上來(lái),把每封郵件當(dāng)做一次隨機(jī)試驗(yàn),那么結(jié)果的可能性有種。意味著pi有個(gè),參數(shù)太多,不可能用來(lái)建模。
換種思路,我們要求的是p(y|x),根據(jù)生成模型定義我們可以求p(x|y)和p(y)。假設(shè)x中的特征是條件獨(dú)立的。這個(gè)稱作樸素貝葉斯假設(shè)。如果一封郵件是垃圾郵件(y=1),且這封郵件出現(xiàn)詞“buy”與這封郵件是否出現(xiàn)“price”無(wú)關(guān),那么“buy”和“price”之間是條件獨(dú)立的。
形式化表示為,(如果給定Z的情況下,X和Y條件獨(dú)立):
也可以表示為:
回到問(wèn)題中
這個(gè)與NLP中的n元語(yǔ)法模型有點(diǎn)類似,這里相當(dāng)于unigram。
這里我們發(fā)現(xiàn)樸素貝葉斯假設(shè)是約束性很強(qiáng)的假設(shè),“buy”從通常上講與“price”是有關(guān)系,我們這里假設(shè)的是條件獨(dú)立。(注意條件獨(dú)立和獨(dú)立是不一樣的)
建立形式化的模型表示:
那么我們想要的是模型在訓(xùn)練數(shù)據(jù)上概率積能夠最大,即最大似然估計(jì)如下:
注意這里是聯(lián)合概率分布積最大,說(shuō)明樸素貝葉斯是生成模型。
求解得:
最后一個(gè)式子是表示y=1的樣本數(shù)占全部樣本數(shù)的比例,前兩個(gè)表示在y=1或0的樣本中,特征Xj=1的比例。
然而我們要求的是
實(shí)際是求出分子即可,分母對(duì)y=1和y=0都一樣。
當(dāng)然,樸素貝葉斯方法可以擴(kuò)展到x和y都有多個(gè)離散值的情況。對(duì)于特征是連續(xù)值的情況,我們也可以采用分段的方法來(lái)將連續(xù)值轉(zhuǎn)化為離散值。具體怎么轉(zhuǎn)化能夠最優(yōu),我們可以采用信息增益的度量方法來(lái)確定(參見(jiàn)Mitchell的《機(jī)器學(xué)習(xí)》決策樹(shù)那一章)。
比如房子大小可以如下劃分成離散值:
4拉普拉斯平滑
樸素貝葉斯方法有個(gè)致命的缺點(diǎn)就是對(duì)數(shù)據(jù)稀疏問(wèn)題過(guò)于敏感。
比如前面提到的郵件分類,現(xiàn)在新來(lái)了一封郵件,郵件標(biāo)題是“NIPS call for papers”。我們使用更大的網(wǎng)絡(luò)詞典(詞的數(shù)目由5000變?yōu)?5000)來(lái)分類,假設(shè)NIPS這個(gè)詞在字典中的位置是35000。然而NIPS這個(gè)詞沒(méi)有在訓(xùn)練數(shù)據(jù)中出現(xiàn)過(guò),這封郵件第一次出現(xiàn)了NIPS。那我們算概率的時(shí)候如下:
由于NIPS在以前的不管是垃圾郵件還是正常郵件都沒(méi)出現(xiàn)過(guò),那么結(jié)果只能是0了。
顯然最終的條件概率也是0。
原因就是我們的特征概率條件獨(dú)立,使用的是相乘的方式來(lái)得到結(jié)果。
為了解決這個(gè)問(wèn)題,我們打算給未出現(xiàn)特征值,賦予一個(gè)“小”的值而不是0。
具體平滑方法如下:
假設(shè)離散型隨機(jī)變量z有{1,2,…,k}個(gè)值,我們用來(lái)表示每個(gè)值的概率。假設(shè)有m個(gè)訓(xùn)練樣本中,z的觀察值是其中每一個(gè)觀察值對(duì)應(yīng)k個(gè)值中的一個(gè)。那么根據(jù)原來(lái)的估計(jì)方法可以得到
說(shuō)白了就是z=j出現(xiàn)的比例。
拉普拉斯平滑法將每個(gè)k值出現(xiàn)次數(shù)事先都加1,通俗講就是假設(shè)他們都出現(xiàn)過(guò)一次。
那么修改后的表達(dá)式為:
每個(gè)z=j的分子都加1,分母加k??梢?jiàn)。
這個(gè)有點(diǎn)像NLP里面的加一平滑法,當(dāng)然還有n多平滑法了,這里不再詳述。
Technorati 標(biāo)簽:?Machine Learning回到郵件分類的問(wèn)題,修改后的公式為:
5文本分類的事件模型
回想一下我們剛剛使用的用于文本分類的樸素貝葉斯模型,這個(gè)模型稱作多值伯努利事件模型(multi-variate Bernoulli event model)。在這個(gè)模型中,我們首先隨機(jī)選定了郵件的類型(垃圾或者普通郵件,也就是p(y)),然后一個(gè)人翻閱詞典,從第一個(gè)詞到最后一個(gè)詞,隨機(jī)決定一個(gè)詞是否要在郵件中出現(xiàn),出現(xiàn)標(biāo)示為1,否則標(biāo)示為0。然后將出現(xiàn)的詞組成一封郵件。決定一個(gè)詞是否出現(xiàn)依照概率p(xi|y)。那么這封郵件的概率可以標(biāo)示為。
讓我們換一個(gè)思路,這次我們不先從詞典入手,而是選擇從郵件入手。讓i表示郵件中的第i個(gè)詞,xi表示這個(gè)詞在字典中的位置,那么xi取值范圍為{1,2,…|V|},|V|是字典中詞的數(shù)目。這樣一封郵件可以表示成,n可以變化,因?yàn)槊糠忄]件的詞的個(gè)數(shù)不同。然后我們對(duì)于每個(gè)xi隨機(jī)從|V|個(gè)值中取一個(gè),這樣就形成了一封郵件。這相當(dāng)于重復(fù)投擲|V|面的骰子,將觀察值記錄下來(lái)就形成了一封郵件。當(dāng)然每個(gè)面的概率服從p(xi|y),而且每次試驗(yàn)條件獨(dú)立。這樣我們得到的郵件概率是。居然跟上面的一樣,那么不同點(diǎn)在哪呢?注意第一個(gè)的n是字典中的全部的詞,下面這個(gè)n是郵件中的詞個(gè)數(shù)。上面xi表示一個(gè)詞是否出現(xiàn),只有0和1兩個(gè)值,兩者概率和為1。下面的xi表示|V|中的一個(gè)值,|V|個(gè)p(xi|y)相加和為1。是多值二項(xiàng)分布模型。上面的x向量都是0/1值,下面的x的向量都是字典中的位置。
形式化表示為:
m個(gè)訓(xùn)練樣本表示為:
表示第i個(gè)樣本中,共有ni個(gè)詞,每個(gè)詞在字典中的編號(hào)為。
那么我們?nèi)匀话凑諛闼刎惾~斯的方法求得最大似然估計(jì)概率為
解得,
與以前的式子相比,分母多了個(gè)ni,分子由0/1變成了k。
舉個(gè)例子:
| X1 | X2 | X3 | Y |
| 1 | 2 | - | 1 |
| 2 | 1 | - | 0 |
| 1 | 3 | 2 | 0 |
| 3 | 3 | 3 | 1 |
假如郵件中只有a,b,c這三詞,他們?cè)谠~典的位置分別是1,2,3,前兩封郵件都只有2個(gè)詞,后兩封有3個(gè)詞。
Y=1是垃圾郵件。
那么,
假如新來(lái)一封郵件為b,c那么特征表示為{2,3}。
那么
那么該郵件是垃圾郵件概率是0.6。
注意這個(gè)公式與樸素貝葉斯的不同在于這里針對(duì)整體樣本求的,而樸素貝葉斯里面針對(duì)每個(gè)特征求的,而且這里的特征值維度是參差不齊的。
這里如果假如拉普拉斯平滑,得到公式為:
表示每個(gè)k值至少發(fā)生過(guò)一次。
另外樸素貝葉斯雖然有時(shí)候不是最好的分類方法,但它簡(jiǎn)單有效,而且速度快。
總結(jié)
以上是生活随笔為你收集整理的生成学习算法Generative Learning algorithms的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 统计学习那些事
- 下一篇: 深度强化学习(Deep Reinforc