生成模型(generative model)和判別模型(discriminative model)

生成模型(generative model)和判別模型(discriminative model)

https://blog.csdn.net/danieljianfeng/article/details/41896323

在看論文和機器學習教材的時候,經常會看到生成模型和判別模型,一致對着兩個模型概念很模糊,在這裏自己做一個小結。

 

在後面介紹這個兩個模型時,我們以分類問題爲例,以加深理解。我們都知道,分類問題可以分爲兩個階段:推理階段(inference stage)和決策階段(decision stage)。

推理階段:利用訓練數據學習得到一個可以計算 的模型。

決策階段:利用在推理階段得到的後驗概率預測數據的類別。

 

當然不是所有的分類模型都分爲這兩個階段,比如判別函數(discriminative function),它會把兩個階段何在一起,直接學習從輸入數據x到類別的映射。

1.  例子

我們先來看一個例子,從宏觀上了解生成模型和判別模型的區別。

我們的任務是判斷一個動物是大象(y=1)還是小狗(y=0)。判別模型是先從訓練數據中學習得到判別大象和小狗的決策面(decision boundary),有了這個決策面之後,如果需要分類一個新動物是大象還是小狗,只需要判斷它在決策面的哪一邊。

另一種方法是生成模型,我們首先觀察大象,根據其特徵學習一個大象的模型,同樣的我們學習得到一個小狗的模型。當我們判別一個新動物時,分別和大象模型和小狗模型比較,哪個動物更像就認爲新動物爲那個類。

2.   生成模型 

生成模型中,我們首先需要得到每一個類的條件概率(class-conditional density) ,以及先驗概率(prior class probability) ,然後通過貝葉斯定理得到

我們都知道,貝葉斯定理中的分母可以表示成 ,這在每個類別的後驗概率中都是一樣的,所以我們可以之間計算聯合分佈,在通過normalize得到後驗概率。到目前爲止,我們已經得到了後驗概率,有了它我們就可是決策理論來決定輸入的x屬於那個類。比如,輸入x,我們計算x關於每一類的後驗概率,哪個後驗概率最大,就把x歸爲那個類。


3.  判別模型

判別模型直接學習後驗概率 ,然後利用決策理論判斷輸入數據屬於哪個類,邏輯迴歸(logistic regression)和感知機(perceptron algorithm)就是典型的判別模型。


4.  判別函數

判別函數和判別模型在名字上非常的像,但存在一定的區別,生成模型和判別模型都是從概率的角度進行預測,而判別函數不涉及概率,而是從訓練數據中直接學習得到輸入數據x到類別的映射,而且把推理階段和決策階段合在一起進行。

現在舉一個二分類問題的例子,f(.)是一個二值函數,當f=0時表示類別1,f=1時表示類別2,這個函數f就是判別函數,它可以把輸入數據映射到0和1兩個類。

5.   總結 

生成模型的要求比較高,需要學習得到輸入數據x和類別的聯合分佈。在實際的應用中,x的維度往往非常的高,只有在非常大的訓練數據下我們才能得到比較合理的類條件分佈(class-conditional distribution)。慶幸地是,先驗概率 比較容易計算,只需計算訓練樣本中每一類數據佔整個訓練數據的百分比。雖然生成模型的計算比較複雜,需要學習每一個類的分佈,但就可以反映同一類數據本身的一些特點。

如果僅僅是處理分類問題,已知 ,就可以很好的解決這個問題,生成模型需要計算類條件概率和先驗概率,這就增加的計算量。相反,判別模型就是直接去求解 ,學習不同類別之間的最優分類面,反映不同類數據之間的差異。但這類模型不能反映數據本身的特點,只能告訴你該數據屬於哪個類,而不能反映整個場景的情況。

最簡單的判別函數只是學到從輸入空間到類別空間的一個映射,不涉及任何的概率,因此該方法不能量化該數據屬於某個類的可能性。此外,該方法把推理階段和決策階段的任務合在一起進行,但在實際過程中我們需要更加不同的應用選擇不同的決策方法。


6. 參考

Bishop《PRML》

Andrew Ng,  handout of《machine learning》


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章