標籤:

Generative Learning Algorithms VS discriminative Learning Algorithms

在邏輯回歸和線性回歸中我們討論的都是學習演算法對 p(y|x;	heta) 進行建模,即參數 	heta 不固定的情況下,在給定x之後關於y的條件分布。例如在邏輯回歸中,我們希望對類別的條件分布進行建模 p(y|x;	heta)=(h_{	heta}(x))^{y}(1-h_{	heta}(x))^{1-y}

這些都是discriminative learning algorithm的範疇,中文翻譯為判別學習演算法。我們舉一個簡單的分類問題的例子,我們希望能夠基於一個動物的某些特徵(例如體重)來區分這個動物是大象(y=1)還是猴子(y=0)。給定一個訓練集合,邏輯回歸或者感知機演算法會直接找一條直線作為決定邊界將樣本集合中的猴子和大象分開。然後為了判斷一個新的動物是猴子還是大象,要看這個動物落在了邊界的哪一邊,給出相應的判斷。例如模型為體重超過100公斤就是大象,而低於100公斤就是猴子。

我們可以給出一種不同的方法generative learning algorithm, 翻譯為生成學習演算法

  1. 首先查看大象類的動物,我們可以建一個模型來建模大象長得像什麼,例如大象類動物的體重分布
  2. 然後查看猴子類的動物,建模猴子長得像什麼,例如猴子類動物的體重分布
  3. 最後為了判斷一個動物屬於大象還是猴子,我們查看如果是大象,體重是x的可能性和如果是猴子,體重是x的可能性,選擇可能性較大的分類

因此判別學習演算法是直接學習 p(y|x) ,在面臨新的數據 x ,就直接給出想要的結果。而生成學習演算法如下所示,先得到類先驗知識 p(y) 和後驗概率 p(x|y) ,然後根據貝葉斯公式進行計算:

p(y|x)=frac{p(x,y)}{p(x)}=frac{p(x|y)p(y)}{p(x)}

我們需要選擇選擇y使得 p(y|x) 最大化,即:

argmax_{y}p(y|x)=argmax_{y}frac{p(x|y)p(y)}{p(x)}=argmax_{y}p(x|y)p(y)


生成學習演算法的一個直觀理解是,對於樣本中的數據 {x^{(i)},y^{(i)}} 是這樣生成的:

  1. 首先通過類先驗知識 p(y) 來確定類別,生成 y^{(i)}
  2. 然後根據後驗概率 p(x|y) 來確定樣本 x^{(i)}

推薦閱讀:

Hands-On ML,CH2:房價預測
pytorch中如何處理RNN輸入變長序列padding
深度學習與故障診斷的另一次嘗試
強化學習——策略梯度與Actor-Critic演算法
【谷歌機器學習課程公開了!】Google AI 教育項目今起免費開放,完美支持中文

TAG:機器學習 |