生成式模型和判別式模型

生成式模型

生成式模型(generative model)會對xxyy的聯合分佈p(x,y)p(x,y)進行建模,然後通過貝葉斯公式來求得p(yx)p(y|x), 最後選取使得p(yx)p(y|x)最大的yiy_i.
具體地, y=argmaxyip(yix)=argmaxyip(xyi)p(yi)p(x)=argmaxyip(xyi)p(yi)=argmaxyip(x,yi)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).

相關算法:

  1. 判別式分析 •
  2. 樸素貝葉斯 •
  3. K近鄰(KNN) •
  4. 混合高斯模型 •
  5. 隱馬爾科夫模型(HMM) •
  6. 貝葉斯網絡 •
  7. Sigmoid Belief Networks •
  8. 馬爾科夫隨機場(Markov Random Fields) •
  9. 深度信念網絡(DBN)

判別式模型

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

相關算法:

  1. 線性迴歸(Linear Regression) •
  2. 邏輯斯蒂迴歸(Logistic Regression) •
  3. 神經網絡(NN)
  4. 支持向量機(SVM) •
  5. 高斯過程(Gaussian Process) •
  6. 條件隨機場(CRF)
  7. CART(Classification and Regression Tree)

二者優缺點

  1. 一般來說, 生成式模型都會對數據的分佈做一定的假設, 比如樸素貝葉斯會假設在給定yy的情況下各個特徵之間是條件獨立的:p(Xy)=i=1Np(xiy)p(X|y)=\prod_{i=1}^{N}p(x_i|y), GDA會假設p(Xy=c,θ)=N(μc,Σc)p(X|y=c,\theta)=\mathcal{N}(\mu_c,\Sigma_c). 當數據滿足這些假設時, 生成式模型通常需要較少的數據就能取得不錯的效果, 但是當這些假設不成立時, 判別式模型會得到更好的效果.

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

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

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

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

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

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

參考資料:
https://www.cnblogs.com/kemaswill/p/3427422.html

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