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


1. 簡介  

生成式模型(generative model)會對\(x\)和\(y\)的聯合分布\(p(x,y)\)進行建模,然后通過貝葉斯公式來求得\(p(y|x)\), 最后選取使得\(p(y|x)\)最大的\(y_i\). 具體地, \(y_{*}=arg \max_{y_i}p(y_i|x)=arg \max_{y_i}\frac{p(x|y_i)p(y_i)}{p(x)}=arg \max_{y_i}p(x|y_i)p(y_i)=arg \max_{y_i}p(x,y_i)\).

  判別式模型(discriminative model)則會直接對\(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|y_i)\)進行建模, 而判別式模型只需要對類后驗密度(class-posterior density)進行建模, 前者通常會比后者要復雜, 更難以建模, 如下圖所示.

2. 對比

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

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

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

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

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

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

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

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

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

  

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

 3. 二者所包含的算法

  3.1 生成式模型

  • 判別式分析
  • 朴素貝葉斯
  • K近鄰(KNN)
  • 混合高斯模型
  • 隱馬爾科夫模型(HMM)
  • 貝葉斯網絡
  • Sigmoid Belief Networks
  • 馬爾科夫隨機場(Markov Random Fields)
  • 深度信念網絡(DBN)

  3.2 判別式模型

  • 線性回歸(Linear Regression)
  • 邏輯斯蒂回歸(Logistic Regression)
  • 神經網絡(NN)
  • 支持向量機(SVM)
  • 高斯過程(Gaussian Process)
  • 條件隨機場(CRF)
  • CART(Classification and Regression Tree)

參考文獻:

  [1]. Kevin P. Murphy. Machine Learning: A Probabilistic Perspective, Chapter 8.6, Page267-271.

  [2]. Andrew Y. Ng, Micheal I. Jordan. On Discrimintive vs. Generative Classifiers: A comparison of logistic regression and naive Bayes.

  [3]. Stack Overflow: What is the difference between a Generative and Discriminative Algorithm?


免責聲明!

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



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