判別&生成
在機器學習中,對於監督學習我們可以將其分為兩類模型:判別式模型和生成式模型。可以簡單地說,生成式模型是針對聯合分佈進行建模,而判別式模型則針對條件分佈建模。
從感性上認識,生成式能學習到更多資訊,而判別式則較少,就好比學習英語,有類人只學會聽懂這是英語,有類人學會了聽懂這是英語並且知道說的是什麼。另外,生成式模型在一定條件下也可以轉換成判別式模型,比如通過貝葉斯公式進行轉換。
常見生成式模型
- 混合高斯模型,估計了不同輸入和類別的聯合分佈。
- 樸素貝葉斯,模型訓練時採用聯合概率分佈積。
- 隱馬爾科夫模型,建立了狀態序列和觀察序列的聯合分佈。
- 貝葉斯網路,概率圖模型中的有向圖網路,對聯合分佈建模,由各自區域性條件概率分佈相乘。
- 馬爾科夫隨機場,概率圖模型中無向圖網路,同樣對聯合分佈建模,分解為極大團上勢函式的乘積。
常見判別式模型
- 條件隨機場,在觀測序列上對目標序列進行建模。
- 線性迴歸,在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)
跟我交流,向我提問:
歡迎關注: