機器學習中的貝氏定理:生成模型 (Generative Model) 與判別模型 (Discriminative Model)

%e8%a1%a8%e6%a0%bc123

GAN (Generative Adversarial Networks) 是這幾年來很紅的議題,在 GAN 的兩階段訓練架構下,我們可以很好的逼近生成資料的機率分配,也就是訓練出一個很好的生成模型 (generative model)。這種手法特殊的地方在於,他透過兩層的神經網路(明確一點,是multi-layer perceptron),一層訓練生成模型 (generative model),一層訓練判別模型 (discriminative model),讓這兩層在訓練的過程中進行對抗,使得訓練過程中能夠同時更新生成模型與判別模型中的參數。

 

講了一大段像天書一般的話,其實要了解當紅的GAN,我們必須先了解生成模型與判別模型的差異,以及他們在訓練上的結果有何不同。所以,這篇文章就用兩個常見的演算法跟大家解釋生成模型與判別模型的差別是什麼,生成模型選擇的是naive Bayes,判別模型選擇的是logistic regression。為什麼選這兩個呢?因為這是Andrew Ng 的paper中選的,有興趣的話可以看看這篇有點難懂的paper

 

在這篇文章,我們主要針對「二元分類」(binary classification),假設我們要透過特徵向量 \mathbf{x},來預測二元的目標變數 y。在 Andrew Ng 的論文中,為了簡化證明,假設特徵向量全部都用one-hot encoding編碼,也就是假設個體的特徵來自 d維的input space \mathcal{X} =(X_1,\cdots,X_d)= \{0,1\}^d,而目標變數則屬於 \mathcal{Y} = \{T,F\},因此,對於特定的個體 i,他的資料則會落於 data space \mathcal{D} = \mathcal{X}\times \mathcal{Y}

 

貝氏精神決定建模邏輯

 

在監督式學習中,目標常常逼近的是整個資料的機率分配,而生成模型與判別模型的差別,其實是在於他們想要逼近不同的機率分配,而其中的箇中奧妙其實是來自貝氏定理。在貝氏統計中,有三個重要的機率分配:

  • 先驗分配 (prior distribution):目標變數的機率分配 p(Y):\mathcal{Y}\rightarrow [0,1]
  • 聯合分配 (joint distribution):特徵向量與目標變數的機率分配 p(\mathbf{X},Y):\mathcal{D}\rightarrow [0,1]
  • 後驗分配 (posterior distribution):目標變數在給定特徵向量時的條件機率 p(Y|\mathbf{X}):\mathcal{Y}\rightarrow [0,1]

(註:在這裡我懶的解釋 likelihood 跟 joint distribution的不同,所以暫時都用聯合分配來解釋。)

 

判別模型主要的精神是想要學習「判斷目標變數的準則」,因此判別模型是透過觀察大量資料估計後驗分配  p(Y|\mathbf{X})的機器學習方法。生成模型主要的精神是想要學習「生成資料的機制」,因此生成模型主要是透過觀察大量資料估計聯合分配 p(\mathbf{X},Y),再透過貝氏定理:

p(Y|\mathbf{X}) = \frac{p(\mathbf{X},Y)}{p(\mathbf{X})}=\frac{p(Y)p(\mathbf{X}|Y)}{p(\mathbf{X})}\propto p(Y)p(\mathbf{X}|Y)

得出判斷準則,由於一般蒐集到的訓練資料(training data) 都是  (\mathbf{X},Y) 成對出現,因此我們能得到的其實是 p(\mathbf{X}|Y),而不是 p(\mathbf{X})

 

在這裡不得不碎碎念一下,很多人會有個錯誤觀念:統計在預測科學中派不上用場,這其實是大錯特錯的,就連deep learning的paper裡面都一大堆MCMC (Markov Chain Monte Carlo),推薦系統目前很紅的 factorization machine是用很驚人的貝氏統計模型建立的。提出VC理論的Vladimir Vapnik 是個統計學家,elastic net的發明人Hastie是Stanford統計教授,Andrew Ng的指導教授 Michael Jordon是統計系主任。拜託大家不要覺得統計就是一些沒有人用的檢定或數學 XD

 

生成模型:單純貝氏分類器 (Naive Bayes Classifier)

 

單純貝氏分類器的概念很簡單:假設特徵向量的每一個維度彼此間都是獨立的,則資料的聯合分配就會是:p(\mathbf{X},Y) = p(Y) \times p(X_1,\cdots,X_d|Y) = p(Y) \times \prod_{i=1}^d p(X_i|Y)。因此,一個單純貝氏分類器 h_{gen}:\mathcal{X}\rightarrow\mathcal{Y} 他的決策方式就是:計算對數概度比(log likelihood ratio)

l_{gen}(\mathbf{X}) = \log\frac{p(Y=T|\mathbf{X})}{p(Y=F|\mathbf{X})}=\frac{p(Y=T) \times \prod_{i=1}^d p(X_i|Y=T)}{p(Y=F) \times \prod_{i=1}^d p(X_i|Y=F)}

如果對數概度比>0,就代表p(Y=T|\mathbf{X})>p(Y=F|\mathbf{X}),所以將具有特徵向量\mathbf{X}的個體分類為 Y=T。其實,這就跟很古早時就被提出來的,假設檢定中的概度比檢定(likelihood ratio test) 一模一樣!(可以理解為什麼我說機器學習裡其實到處都是統計的影子了吧!)

 

從上面的推導可以看到,其實單純貝氏分類器在學的是後驗分配,而學習後驗分配時最重要的是找出聯合分配 p(Y) \times \prod_{i=1}^d p(X_i|Y),因此我們說單純貝式分類器是一個生成模型。

 

判別模型:邏輯式迴歸 (Logistic Regression)

 

判別模型中,最耳熟能詳的應該就是邏輯式迴歸了,基本上邏輯式迴歸是廣義線性模型 (Generalized Linear Model)的一種,他假設 Y\mathbf{X} 之間的關係是:

p(Y=T|\mathbf{X}) = \frac{\exp(\mathbf{X}^T\boldsymbol\beta)}{1+\exp(\mathbf{X}^T\boldsymbol\beta)}

也就是以 sigmoid function作為廣義線性模型中的連結函數 (link function),上面很明顯可以看出來邏輯式迴歸是直接針對後驗分配進行建模,因此邏輯式迴歸是一個判別模型。而邏輯式迴歸h_{dis}:\mathcal{X}\rightarrow\mathcal{Y}的決策方法是:如果l_{dis}(\mathbf{X}) = \sum_{i=1} ^d \beta_i X_i + \theta為正,則認為 Y=T,其中$latex \theta$是一個門檻值。理論上,我們可以說單純貝氏分類器跟邏輯式回歸是一組 generative-discriminative  pair,所以兩者時常會被拿來一起討論。

 

生成模型與判別模型的比較

 

首先,機器學習領域有個非常有名的理論:如果是在真實的母體資料上,判別模型的 0-1 error會小於生成模型的 0-1 error,所以很自然的我們會誤以為判別模型是比較好的模型!其實不管是small data 還是 big data,我們都不會拿到母體的資料,因此另一個很重要的是誤差隨著樣本大小增加的「收斂速度」(convergence rate),Andrew Ng的論文就是在證明:單純貝氏分類器誤差隨著樣本大小增加而降低的速度,快過邏輯式迴歸誤差隨著樣本大小增加而降低的速度,因此在許多情況儘管在真實母體中單純貝氏分類器的0-1 error會比較大,但在蒐集到的資料上使用生成模型(單純貝氏分類器)的效果會好過判別模型(邏輯式迴歸)。

 

最後我想要給個重要的提醒,很多人以為大數據時代,母體的概念不重要,這是大錯特錯的!界定出正確的母體,理解樣本與母體的不同,才能夠選擇最好的演算法解決問題。

 

有關 David’s Perspective 的最新文章,都會發布在大鼻的 Facebook 粉絲專頁,如果你喜歡大鼻的文章,還請您不吝嗇地按讚或留言給我喔!

大鼻觀點:https://www.facebook.com/davidperspective/

About David Huang

目前在台灣大學就讀統計碩士學位學程。我的研究領域是特徵表達與降維分析、序列決策模型、以及財務時間序列,我喜歡用商業的觀點切入大數據與資料科學!

2 Comments

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *