機器學習判別式與生成式

weixin_34370347發表於2019-02-14

判別&生成

在機器學習中,對於監督學習我們可以將其分為兩類模型:判別式模型和生成式模型。可以簡單地說,生成式模型是針對聯合分佈進行建模,而判別式模型則針對條件分佈建模。

從感性上認識,生成式能學習到更多資訊,而判別式則較少,就好比學習英語,有類人只學會聽懂這是英語,有類人學會了聽懂這是英語並且知道說的是什麼。另外,生成式模型在一定條件下也可以轉換成判別式模型,比如通過貝葉斯公式進行轉換。

常見生成式模型

  • 混合高斯模型,估計了不同輸入和類別的聯合分佈。
  • 樸素貝葉斯,模型訓練時採用聯合概率分佈積。
  • 隱馬爾科夫模型,建立了狀態序列和觀察序列的聯合分佈。
  • 貝葉斯網路,概率圖模型中的有向圖網路,對聯合分佈建模,由各自區域性條件概率分佈相乘。
  • 馬爾科夫隨機場,概率圖模型中無向圖網路,同樣對聯合分佈建模,分解為極大團上勢函式的乘積。

常見判別式模型

  • 條件隨機場,在觀測序列上對目標序列進行建模。
  • 線性迴歸,在X的條件下Y的分佈。
  • 邏輯迴歸,在x的條件下兩個分類的概率。
  • 支援向量機,它的訓練過程是在學習分類邊界。
  • 傳統神經網路,同樣是學習分類邊界。

一個簡單例子

假設有訓練樣本:(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

對比圖

上圖左邊為判別式而右邊為生成式,可以很清晰地看到差別,判別式模型是在尋找一個決策邊界,通過該邊界來將樣本劃分到對應類別。而生成式則不同,它學習了每個類別的邊界,它包含了更多資訊,可以用來生成樣本。

生成式特點

  • 對聯合概率建模,學習所有分類資料的分佈。
  • 學習到的資料本身資訊更多,能反應資料本身特性。
  • 學習成本較高,需要更多的計算資源。
  • 需要的樣本數更多,樣本較少時學習效果較差。
  • 推斷時效能較差。
  • 一定條件下能轉換成判別式。

判別式特點

  • 對條件概率建模,學習不同類別之間最優邊界。
  • 捕捉不同類別特徵的差異資訊,不學習本身分佈資訊,無法反應資料本身特性。
  • 學習成本較低,需要的計算資源較少。
  • 需要的樣本數可以較少,少樣本也能很好學習。
  • 預測時擁有較好效能。
  • 無法轉換成生成式。

-------------推薦閱讀------------

我的開源專案彙總(機器&深度學習、NLP、網路IO、AIML、mysql協議、chatbot)

為什麼寫《Tomcat核心設計剖析》

2018彙總資料結構演算法篇

2018彙總機器學習篇

2018彙總Java深度篇

2018彙總自然語言處理篇

2018彙總深度學習篇

2018彙總JDK原始碼篇

2018彙總Java併發核心篇

2018彙總讀書篇


跟我交流,向我提問:

歡迎關注:

相關文章