數據挖掘面試題之:生成模型 VS 判別模型
作者:Milter一名機器學習愛好者、NLP從業者、終生學習者,歡迎志同道合的朋友多多交流
著作權歸作者所有。AI開發者獲授權轉載,禁止二次轉載。
註:封面圖片來自網路
前言
生成模型和判別模型是機器學習中兩類基本的模型,在機器學習面試中,經常會被問到。能否清晰簡明地說明二者的不同,直接影響到面試官對求職者基礎知識掌握程度的判斷。本文試圖給出一個回答,希望大家多多指正。
最近,milter在進行演算法工程師的面試,發現面試官特別鍾愛生成模型和判別模型相關的問題,為了能夠和面試官談笑風生,milter精心整理了面試官可能問到的相關問題。
什麼是生成模型和判別模型?
從本質上講,生成模型和判別模型是解決分類問題的兩類基本思路。首先,您得先了解,分類問題,就是給定一個數據x,要判斷它對應的標籤y(這麼naive的東西都要解釋下,求面試官此時內心的陰影面積,嘎嘎)。生成模型就是要學習x和y的聯合概率分布P(x,y),然後根據貝葉斯公式來求得條件概率P(y|x),預測條件概率最大的y。貝葉斯公式這麼簡單的知識相信您也了解,我就不啰嗦了。判別模型就是直接學習條件概率分布P(y|x)。
這樣政治正確的回答是必須要先說出來的,這都說不出來,面試肯定沒戲了。但面試官可不是吃素的,為了判斷你不是背的答案,他會繼續提出下面的問題。
帥哥,舉個栗子唄?
有一句名言說的好,沒有什麼問題是一個妹子例子解決不了的,如果有,那就兩個!那我們就來舉兩個例子!
例子1
假設你從來沒有見過大象和貓,連聽都沒有聽過,這時,給你看了一張大象的照片和一張貓的照片。如下所示:
然後牽來我家的大象(面試官:你家開動物園的嗎?),讓你判斷這是大象還是貓。你咋辦?
你開始回想剛剛看過的照片,大概記起來,大象和貓比起來,有個長鼻子,而眼前這個傢伙也有個長鼻子,所以,你興奮地說:「這是大象!」恭喜你答對了!
你也有可能這樣做,你努力回想剛才的兩張照片,然後用筆把它們畫在了紙上,拿著紙和我家的大象做比較,你發現,眼前的動物更像是大象。於是,你驚喜地宣布:「這玩意是大象!」恭喜你又答對了!
在這個問題中,第一個解決問題的思路就是判別模型,因為你只記住了大象和貓之間的不同之處。第二個解決問題的思路就是生成模型,因為你實際上學習了什麼是大象,什麼是貓。
例子2
來來來,看一下這四個形式為(x,y)的樣本。(1,0), (1,0), (2,0), (2, 1)。假設,我們想從這四個樣本中,學習到如何通過x判斷y的模型。用生成模型,我們要學習P(x,y)。如下所示:
我們學習到了四個概率值,它們的和是1,這就是P(x,y)。
我們也可以用判別模型,我們要學習P(y|x),如下所示:
我們同樣學習到了四個概率值,但是,這次,是每一行的兩個概率值的和為1了。讓我們具體來看一下,如何使用這兩個模型做判斷。
假設 x=1。
對於生成模型, 我們會比較:
P(x=1,y=0) = 1/2
P(x=1,y=1) = 0
我們發現P(x=1,y=0)的概率要比P(x=1,y=1)的概率大,所以,我們判斷:x=1時,y=0。
對於判別模型,我們會比較:
P(y=0|x=1) = 1
P(y=1|x=1) = 0
同樣,P(y=0|x=1)要比P(y=1|x=1)大,所以,我們判斷:x=1時,y=0。
我們看到,雖然最後預測的結果一樣,但是得出結果的邏輯卻是完全不同的。兩個栗子說完,你心裡感到很痛快,面試官臉上也露出了讚賞的微笑,但是,他突然問了一個問題。
生成模型為啥叫生成模型?
這個問題著實讓你沒想到,不過,聰明的你略加思考,應該就可以想到。生成模型之所以叫生成模型,是因為,它背後的思想是,x是特徵,y是標籤,什麼樣的標籤就會生成什麼樣的特徵。好比說,標籤是大象,那麼可能生成的特徵就有大耳朵,長鼻子等等。
當我們來根據x來判斷y時,我們實際上是在比較,什麼樣的y標籤更可能生成特徵x,我們預測的結果就是更可能生成x特徵的y標籤。
面試官顯然已經基本滿意了,這時,只見他輕輕說了句:
常見的生成模型和判別模型有哪些呢?
這個,自然是難不住你了。
生成模型
HMM
樸素貝葉斯
判別模型
邏輯回歸
SVM
CRF
最近鄰
一般的神經網路
經過這四個問題,應該說,可以過關了(手動笑臉)。
無總結,不進步
本文,我們簡單分析了生成模型和判別模型的區別和聯繫,解釋過程中,盡量避免了各種數學公式。相信有了現在的知識基礎,再去看那些數學公式,你不會再覺得頭大了。
下面,給大家留一道思考題,歡迎留言回答:
數據量小時,你會選擇哪類模型,為什麼?
參考資料:
https://medium.com/@mlengineer/generative-and-discriminative-models-af5637a66a3
https://stackoverflow.com/questions/879432/what-is-the-difference-between-a-generative-and-a-discriminative-algorithm
https://www.quora.com/What-are-the-differences-between-generative-and-discriminative-machine-learning
https://www.quora.com/Why-are-HMMs-considered-a-generative-model
https://www.cnblogs.com/fanyabo/p/4067295.html
推薦崗位1:攜程-大數據分析師(可內推)
內推方式:識別上圖二維碼投遞簡歷,簡歷直接抵達部門負責人郵箱,名額有限,先投先得!
推薦崗位2:騰訊-強化學習方向實習生(可內推)
內推方式:識別上圖二維碼投遞簡歷,簡歷直接抵達部門負責人郵箱,名額有限,先投先得!


※圖文直播邀您互動
※使用以 Tensorflow 為後端的 Keras 構建生成對抗網路的代碼示例
TAG:AI研習社 |