生成式模型和判別式模型


   有監督學習回歸模型中,我們利用訓練集直接對條件概率p(y|x;θ)建模,例如logistic回歸就利用hθ(x) = g(θTx)對p(y|x;θ)建模(其中g(z)是sigmoid函數)。假設現在有一個分類問題,要根據一些動物的特征來區分大象(y = 1)和狗(y = 0)。給定這樣的一種數據集,回歸模型比如logistic回歸會試圖找到一條直線也就是決策邊界,來區分大象與狗這兩類,然后對於新來的樣本,回歸模型會根據這個新樣本的特征計算這個樣本會落在決策邊界的哪一邊,從而得到相應的分類結果。

  現在我們考慮另外一種建模方式:首先,根據訓練集中的大象樣本,我們可以建立大象模型,根據訓練集中的狗樣本,我們可以建立狗模型。然后,對於新來的動物樣本,我們可以讓它與大象模型匹配看概率有多少,與狗模型匹配看概率有多少,哪一個概率大就是那個分類。

  判別式模型(Discriminative Model)是直接對條件概率p(y|x;θ)建模。常見的判別式模型有 線性回歸模型、線性判別分析、支持向量機SVM、神經網絡等。

  生成式模型(Generative Model)則會對x和y的聯合分布p(x,y)建模,然后通過貝葉斯公式來求得p(yi|x),然后選取使得p(yi|x)最大的yi,即:

常見的生成式模型有 隱馬爾可夫模型HMM、朴素貝葉斯模型、高斯混合模型GMM、LDA等。

      生成式模型(generative model)會對xx和yy的聯合分布p(x,y)p(x,y)進行建模,然后通過貝葉斯公式來求得p(y|x)p(y|x), 最后選取使得p(y|x)p(y|x)最大的yiyi. 具體地, y=argmaxyip(yi|x)=argmaxyip(x|yi)p(yi)p(x)=argmaxyip(x|yi)p(yi)=argmaxyip(x,yi)y∗=argmaxyip(yi|x)=argmaxyip(x|yi)p(yi)p(x)=argmaxyip(x|yi)p(yi)=argmaxyip(x,yi).

     判別式模型(discriminative model)則會直接對p(y|x)p(y|x)進行建模.

     關於二者之間的優劣有大量的討論. SVM的發明者Vapnik聲稱"one should solve the (classification) problem directly and never solve a more general problem as an intermediate step [such as modeling p(x|y)]", 但是, 最近Deep Learning大行其道, 其代表性算法DBN就是生成式模型. 通常來說, 因為生成式模型要對類條件密度(class conditional density)p(x|yi)p(x|yi)進行建模, 而判別式模型只需要對類后驗密度(class-posterior density)進行建模, 前者通常會比后者要復雜, 更難以建模, 如下圖所示.

下面簡單比較下生成式模型和判別式模型的優缺點.

   1. 一般來說, 生成式模型都會對數據的分布做一定的假設, 比如朴素貝葉斯會假設在給定yy的情況下各個特征之間是條件獨立的:p(X|y)=Ni=1p(xi|y)p(X|y)=∏i=1Np(xi|y), GDA會假設

p(X|y=c,θ)=N(μc,Σc)p(X|y=c,θ)=N(μc,Σc). 當數據滿足這些假設時, 生成式模型通常需要較少的數據就能取得不錯的效果, 但是當這些假設不成立時, 判別式模型會得到更好的效果.

  2. 生成式模型最終得到的錯誤率會比判別式模型高, 但是其需要更少的訓練樣本就可以使錯誤率收斂[限於Genarative-Discriminative Pair, 詳見[2]].

  3. 生成式模型更容易擬合, 比如在朴素貝葉斯中只需要計下數就可以, 而判別式模型通常都需要解決凸優化問題.

  4. 當添加新的類別時, 生成式模型不需要全部重新訓練, 只需要計算新的類別ynewynew和xx的聯合分布p(ynew,x)p(ynew,x)即可, 而判別式模型則需要全部重新訓練.

  5. 生成式模型可以更好地利用無標簽數據(比如DBN), 而判別式模型不可以.

  6. 生成式模型可以生成xx, 因為判別式模型是對p(x,y)p(x,y)進行建模, 這點在DBN的CD算法中中也有體現, 而判別式模型不可以生成xx.

  7. 判別式模型可以對輸入數據xx進行預處理, 使用ϕ(x)ϕ(x)來代替xx, 如下圖所示, 而生成式模型不是很方便進行替換.

  

  左圖中直接使用xx進行邏輯斯蒂回歸, 而右圖則使用徑向基核對xx進行變換后再使用邏輯斯蒂回歸.

判別式模型常見的主要有:

    Logistic Regression

    SVM

    Traditional Neural Networks

    Nearest Neighbor

    CRF

    Linear Discriminant Analysis

    Boosting

    Linear Regression

產生式模型常見的主要有:          

       Gaussians

       Naive Bayes

       Mixtures of Multinomials

       Mixtures of Gaussians

       Mixtures of Experts

       HMMs

   Sigmoidal Belief Networks, Bayesian Networks

   Markov Random Fields

   Latent Dirichlet Allocation

 

Reference:

機器學習--判別式模型與生成式模型

判別式模型 vs. 生成式模型

Andrew Ng在NIPS2001年有一篇專門比較判別模型和產生式模型的文章:
On Discrimitive vs. Generative classifiers: A comparision of logistic regression and naive Bayes

(http://robotics.stanford.edu/~ang/papers/nips01-discriminativegenerative.pdf)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM