一直在看論文的過程中遇到這個(gè)問題,折騰了不少時(shí)間,然后是下面的一點(diǎn)理解,不知道正確否。若有錯(cuò)誤,還望各位前輩不吝指正,以免小弟一錯(cuò)再錯(cuò)。在此謝過。
一、決策函數(shù)Y=f(X)或者條件概率分布P(Y|X)
監(jiān)督學(xué)習(xí)的任務(wù)就是從數(shù)據(jù)中學(xué)習(xí)一個(gè)模型(也叫分類器),應(yīng)用這一模型,對給定的輸入X預(yù)測相應(yīng)的輸出Y。這個(gè)模型的一般形式為決策函數(shù)Y=f(X)或者條件概率分布P(Y|X)。這兩種方式也就是判別模型!
決策函數(shù)Y=f(X):你輸入一個(gè)X,它就輸出一個(gè)Y,這個(gè)Y與一個(gè)閾值比較,根據(jù)比較結(jié)果判定X屬于哪個(gè)類別。例如兩類(w1和w2)分類問題,如果Y大于閾值,X就屬于類w1,如果小于閾值就屬于類w2。這樣就得到了該X對應(yīng)的類別了。
條件概率分布P(Y|X):你輸入一個(gè)X,它通過比較它屬于所有類的概率,然后輸出概率最大的那個(gè)作為該X對應(yīng)的類別。例如:如果P(w1|X)大于P(w2|X),那么我們就認(rèn)為X是屬于w1類的。
所以上面兩個(gè)模型都可以實(shí)現(xiàn)對給定的輸入X預(yù)測相應(yīng)的輸出Y的功能。實(shí)際上通過條件概率分布P(Y|X)進(jìn)行預(yù)測也是隱含著表達(dá)成決策函數(shù)Y=f(X)的形式的。例如也是兩類w1和w2,那么我們求得了P(w1|X)和P(w2|X),那么實(shí)際上判別函數(shù)就可以表示為Y= P(w1|X)/P(w2|X),如果Y大于1或者某個(gè)閾值,那么X就屬于類w1,如果小于閾值就屬于類w2。而同樣,很神奇的一件事是,實(shí)際上決策函數(shù)Y=f(X)也是隱含著使用P(Y|X)的。因?yàn)橐话銢Q策函數(shù)Y=f(X)是通過學(xué)習(xí)算法使你的預(yù)測和訓(xùn)練數(shù)據(jù)之間的誤差平方最小化,而貝葉斯告訴我們,雖然它沒有顯式的運(yùn)用貝葉斯或者以某種形式計(jì)算概率,但它實(shí)際上也是在隱含的輸出極大似然假設(shè)(MAP假設(shè))。也就是說學(xué)習(xí)器的任務(wù)是在所有假設(shè)模型有相等的先驗(yàn)概率條件下,輸出極大似然假設(shè)。所謂的極大不是最大的意思,是一種最優(yōu)的說法,也就是極大值點(diǎn)!
所以呢,分類器的設(shè)計(jì)就是在給定訓(xùn)練數(shù)據(jù)的基礎(chǔ)上估計(jì)其概率模型P(Y|X)。如果可以估計(jì)出來,那么就可以分類了。但是一般來說,概率模型是比較難估計(jì)的。給一堆數(shù)給你,特別是數(shù)不多的時(shí)候,你一般很難找到這些數(shù)滿足什么規(guī)律吧。那能否不依賴概率模型直接設(shè)計(jì)分類器呢?事實(shí)上,分類器就是一個(gè)決策函數(shù)(或決策面),如果能夠從要解決的問題和訓(xùn)練樣本出發(fā)直接求出判別函數(shù),就不用估計(jì)概率模型了,這就是決策函數(shù)Y=f(X)的偉大使命了。例如支持向量機(jī),我已經(jīng)知道它的決策函數(shù)(分類面)是線性的了,也就是可以表示成Y=f(X)=WX+b的形式,那么我們通過訓(xùn)練樣本來學(xué)習(xí)得到W和b的值就可以得到Y(jié)=f(X)了。還有一種更直接的分類方法,它不用事先設(shè)計(jì)分類器,而是只確定分類原則,根據(jù)已知樣本(訓(xùn)練樣本)直接對未知樣本進(jìn)行分類。包括近鄰法,它不會(huì)在進(jìn)行具體的預(yù)測之前求出概率模型P(Y|X)或者決策函數(shù)Y=f(X),而是在真正預(yù)測的時(shí)候,將X與訓(xùn)練數(shù)據(jù)的各類的Xi比較,和哪些比較相似,就判斷它X也屬于Xi對應(yīng)的類。
實(shí)際上,說了那么多,也不知道自己表達(dá)清楚了沒有。那我們是談生成模型和判別模型,上面到底啰嗦了那么多到底有啥陰謀???呵呵,往下說就知道了。
二、生成方法和判別方法
監(jiān)督學(xué)習(xí)方法又分生成方法(Generative approach)和判別方法(Discriminative approach),所學(xué)到的模型分別稱為生成模型(Generative Model)和判別模型(Discriminative Model)。咱們先談判別方法,因?yàn)樗颓懊嬲f的都差不多,比較容易明白。
判別方法:由數(shù)據(jù)直接學(xué)習(xí)決策函數(shù)Y=f(X)或者條件概率分布P(Y|X)作為預(yù)測的模型,即判別模型?;舅枷胧怯邢迾颖緱l件下建立判別函數(shù),不考慮樣本的產(chǎn)生模型,直接研究預(yù)測模型。典型的判別模型包括k近鄰,感知級,決策樹,支持向量機(jī)等。
生成方法:由數(shù)據(jù)學(xué)習(xí)聯(lián)合概率密度分布P(X,Y),然后求出條件概率分布P(Y|X)作為預(yù)測的模型,即生成模型:P(Y|X)= P(X,Y)/ P(X)。基本思想是首先建立樣本的聯(lián)合概率概率密度模型P(X,Y),然后再得到后驗(yàn)概率P(Y|X),再利用它進(jìn)行分類,就像上面說的那樣。注意了哦,這里是先求出P(X,Y)才得到P(Y|X)的,然后這個(gè)過程還得先求出P(X)。P(X)就是你的訓(xùn)練數(shù)據(jù)的概率分布。哎,剛才說了,需要你的數(shù)據(jù)樣本非常多的時(shí)候,你得到的P(X)才能很好的描述你數(shù)據(jù)真正的分布。例如你投硬幣,你試了100次,得到正面的次數(shù)和你的試驗(yàn)次數(shù)的比可能是3/10,然后你直覺告訴你,可能不對,然后你再試了500次,哎,這次正面的次數(shù)和你的試驗(yàn)次數(shù)的比可能就變成4/10,這時(shí)候你半信半疑,不相信上帝還有一個(gè)手,所以你再試200000次,這時(shí)候正面的次數(shù)和你的試驗(yàn)次數(shù)的比(就可以當(dāng)成是正面的概率了)就變成5/10了。這時(shí)候,你就覺得很靠譜了,覺得自己就是那個(gè)上帝了。呵呵,真啰嗦,還差點(diǎn)離題了。
還有一個(gè)問題就是,在機(jī)器學(xué)習(xí)領(lǐng)域有個(gè)約定俗成的說法是:不要去學(xué)那些對這個(gè)任務(wù)沒用的東西。例如,對于一個(gè)分類任務(wù):對一個(gè)給定的輸入x,將它劃分到一個(gè)類y中。那么,如果我們用生成模型:p(x,y)=p(y|x).p(x)
那么,我們就需要去對p(x)建模,但這增加了我們的工作量,這讓我們很不爽(除了上面說的那個(gè)估計(jì)得到P(X)可能不太準(zhǔn)確外)。實(shí)際上,因?yàn)閿?shù)據(jù)的稀疏性,導(dǎo)致我們都是被強(qiáng)迫地使用弱獨(dú)立性假設(shè)去對p(x)建模的,所以就產(chǎn)生了局限性。所以我們更趨向于直觀的使用判別模型去分類。
這樣的方法之所以稱為生成方法,是因?yàn)槟P捅硎玖?span style="color:#FF0000;">給定輸入X產(chǎn)生輸出Y的生成關(guān)系。用于隨機(jī)生成的觀察值建模,特別是在給定某些隱藏參數(shù)情況下。典型的生成模型有:樸素貝葉斯和隱馬爾科夫模型等。
三、生成模型和判別模型的優(yōu)缺點(diǎn)
在監(jiān)督學(xué)習(xí)中,兩種方法各有優(yōu)缺點(diǎn),適合于不同條件的學(xué)習(xí)問題。
生成方法的特點(diǎn):上面說到,生成方法學(xué)習(xí)聯(lián)合概率密度分布P(X,Y),所以就可以從統(tǒng)計(jì)的角度表示數(shù)據(jù)的分布情況,能夠反映同類數(shù)據(jù)本身的相似度。但它不關(guān)心到底劃分各類的那個(gè)分類邊界在哪。生成方法可以還原出聯(lián)合概率分布P(Y|X),而判別方法不能。生成方法的學(xué)習(xí)收斂速度更快,即當(dāng)樣本容量增加的時(shí)候,學(xué)到的模型可以更快的收斂于真實(shí)模型,當(dāng)存在隱變量時(shí),仍可以用生成方法學(xué)習(xí)。此時(shí)判別方法就不能用。
判別方法的特點(diǎn):判別方法直接學(xué)習(xí)的是決策函數(shù)Y=f(X)或者條件概率分布P(Y|X)。不能反映訓(xùn)練數(shù)據(jù)本身的特性。但它尋找不同類別之間的最優(yōu)分類面,反映的是異類數(shù)據(jù)之間的差異。直接面對預(yù)測,往往學(xué)習(xí)的準(zhǔn)確率更高。由于直接學(xué)習(xí)P(Y|X)或P(X),可以對數(shù)據(jù)進(jìn)行各種程度上的抽象、定義特征并使用特征,因此可以簡化學(xué)習(xí)問題。
總結(jié):判別方法就是在假定了模型的基礎(chǔ)上學(xué)習(xí)優(yōu)化參數(shù),找到最佳的分類面。而生成辦法則是利用統(tǒng)計(jì)辦法學(xué)習(xí)出數(shù)據(jù)之間的規(guī)律!
四、生成模型和判別模型的聯(lián)系
由生成模型可以得到判別模型,但由判別模型得不到生成模型。
五、再形象點(diǎn)可以嗎
例如我們有一個(gè)輸入數(shù)據(jù)x,然后我們想將它分類為標(biāo)簽y。(迎面走過來一個(gè)人,你告訴我這個(gè)是男的還是女的)
生成模型學(xué)習(xí)聯(lián)合概率分布p(x,y),而判別模型學(xué)習(xí)條件概率分布p(y|x)。
下面是個(gè)簡單的例子:
例如我們有以下(x,y)形式的數(shù)據(jù):(1,0), (1,0), (2,0), (2, 1)
那么p(x,y)是:
y=0 y=1
-----------
x=1 | 1/2 0
x=2 | 1/4 1/4
而p(y|x) 是:
y=0 y=1
-----------
x=1| 1 0
x=2| 1/2 1/2
我們?yōu)榱藢⒁粋€(gè)樣本x分類到一個(gè)類y,最自然的做法就是條件概率分布p(y|x),這就是為什么我們對其直接求p(y|x)方法叫做判別算法。而生成算法求p(x,y),而p(x,y)可以通過貝葉斯方法轉(zhuǎn)化為p(y|x),然后再用其分類。但是p(x,y)還有其他作用,例如,你可以用它去生成(x,y)對。
再假如你的任務(wù)是識別一個(gè)語音屬于哪種語言。例如對面一個(gè)人走過來,和你說了一句話,你需要識別出她說的到底是漢語、英語還是法語等。那么你可以有兩種方法達(dá)到這個(gè)目的:
1、學(xué)習(xí)每一種語言,你花了大量精力把漢語、英語和法語等都學(xué)會(huì)了,我指的學(xué)會(huì)是你知道什么樣的語音對應(yīng)什么樣的語言。然后再有人過來對你哄,你就可以知道他說的是什么語音,你就可以罵他是“米國人還是小日本了”。(呵呵,切勿將政治摻雜在技術(shù)里面)
2、不去學(xué)習(xí)每一種語言,你只學(xué)習(xí)這些語言模型之間的差別,然后再分類。意思是指我學(xué)會(huì)了漢語和英語等語言的發(fā)音是有差別的,我學(xué)會(huì)這種差別就好了。
那么第一種方法就是生成方法,第二種方法是判別方法。
生成算法嘗試去找到底這個(gè)數(shù)據(jù)是怎么生成的(產(chǎn)生的),然后再對一個(gè)信號進(jìn)行分類?;谀愕纳杉僭O(shè),那么那個(gè)類別最有可能產(chǎn)生這個(gè)信號,這個(gè)信號就屬于那個(gè)類別。判別模型不關(guān)心數(shù)據(jù)是怎么生成的,它只關(guān)心信號之間的差別,然后用差別來簡單對給定的一個(gè)信號進(jìn)行分類。
六、對于跟蹤算法
跟蹤算法一般來說可以分為兩類:基于外觀模型的生成模型或者基于外觀模型的判別模型。
生成模型:一般是學(xué)習(xí)一個(gè)代表目標(biāo)的模型,然后通過它去搜索圖像區(qū)域,然后最小化重構(gòu)誤差。類似于生成模型描述一個(gè)目標(biāo),然后就是模式匹配了,在圖像中找到和這個(gè)模型最匹配的區(qū)域,就是目標(biāo)了。
判別模型:將跟蹤問題看成一個(gè)二分類問題,然后找到目標(biāo)和背景的決策邊界。它不管目標(biāo)是怎么描述的,那只要知道目標(biāo)和背景的差別在哪,然后你給一個(gè)圖像,它看它處于邊界的那一邊,就歸為哪一類。
聯(lián)系客服