實際上這兩個方法的模型是一樣的,只要是在做機率模型的時候把共變異數矩陣(Covariance matrix)設成一樣的,它們的模型就會是一樣的。
Discriminative可以透過梯度下降法直接把 的值找出來,而Generative就需要先找出 ,再帶入公式把 找出來。
要注意的是,雖然我們是使用同一個模型,但因為這兩種方法的假設不同,所以最後找出來的 也會不同。在Logistic Regression裡面我們沒有做任何假設,直接去找 ,而在Generative model裡面,我們對機率分佈(Probability distribution)是有假設的,可能假設是Gaussian、Bernoulli或是假設是不是Naive Bayes等等,根據這些假設去找 ,那這兩個方法找出來的 不會是同一組。
從實驗結果可以看出,Discriminative model會比Generative model好,但是為什麼會這樣?
假設你有一筆訓練資料,有兩個class,每一筆資料會有兩個feature,總共有13筆資料。
如果給一筆測試資料如下圖,我們直覺會把它分類為 class 1,但Naive Bayes會把它分類成哪個類別呢?
對Naive Bayes來說,它不考慮不同維度的相關性,也就是認定這兩個維度是獨立產生的。我們在 class 2 裡面沒有看到像是測試資料這樣的資料是因為取樣的不夠多,如果取樣過多就有可能可以看到都是 1 的資料。
因此,Generative model跟Discriminative model的差別就在於,Generative model有做某些假設,假設你的資料來自於一個機率模型。
但Discriminative model不是在所有情況下都可以贏過Generative model,下面列出了幾點Generative model有優勢的時候。
下圖是3個class的計算過程,從圖中可以看出Softmax的輸出就是拿來當作 的事後機率。
假設今天的資料如下圖所示,我們就沒有辦法做分類。
這是因為邏輯迴歸的兩個class之間的boundary是一條直線。
我們可以將原本定的不好的feature換成一個比較好的feature space,讓邏輯迴歸變得可以處理,但是我們很難找出一個好的transformation。
因此我們可以讓機器自己產生好的transformation,我們只要把很多個邏輯迴歸接起來就可以了。
結論就是,如果我們只有一個邏輯迴歸,我們沒有辦法分類這個範例,但如果我們把三個邏輯迴歸接在一起,就可以分類了。那如果我們把每一個邏輯迴歸都叫做一個神經元(Neuron),把這些邏輯迴歸串起來所形成的網路(Network),就是所謂的類神經網路(Neural Network),也就是在做深度學習(Deep Learning)。