iT邦幫忙

2021 iThome 鐵人賽

DAY 13
0
AI & Data

30天搞懂機器學習是否搞錯了什麼系列 第 13

【Day 13】邏輯迴歸(Logistic Regression)(下)

Discriminative v.s. Generative

  • Logistic Regression的方法稱之為 判別(Discriminative) 的方法。
  • 用Gaussian來描述事後機率(Posterior probability)這件事稱之為 生成(Generative) 的方法。

實際上這兩個方法的模型是一樣的,只要是在做機率模型的時候把共變異數矩陣(Covariance matrix)設成一樣的,它們的模型就會是一樣的。
Discriminative可以透過梯度下降法直接把 https://chart.googleapis.com/chart?cht=tx&chl=w%2C%20b 的值找出來,而Generative就需要先找出 https://chart.googleapis.com/chart?cht=tx&chl=%5Cmu%5E1%2C%20%5Cmu%5E2%2C%20%5CSigma%5E%7B-1%7D ,再帶入公式把 https://chart.googleapis.com/chart?cht=tx&chl=w%2C%20b 找出來。

要注意的是,雖然我們是使用同一個模型,但因為這兩種方法的假設不同,所以最後找出來的 https://chart.googleapis.com/chart?cht=tx&chl=w%2C%20b 也會不同。在Logistic Regression裡面我們沒有做任何假設,直接去找 https://chart.googleapis.com/chart?cht=tx&chl=w%2C%20b,而在Generative model裡面,我們對機率分佈(Probability distribution)是有假設的,可能假設是Gaussian、Bernoulli或是假設是不是Naive Bayes等等,根據這些假設去找 https://chart.googleapis.com/chart?cht=tx&chl=w%2C%20b,那這兩個方法找出來的 https://chart.googleapis.com/chart?cht=tx&chl=w%2C%20b 不會是同一組。

從實驗結果可以看出,Discriminative model會比Generative model好,但是為什麼會這樣?

假設你有一筆訓練資料,有兩個class,每一筆資料會有兩個feature,總共有13筆資料。

如果給一筆測試資料如下圖,我們直覺會把它分類為 class 1,但Naive Bayes會把它分類成哪個類別呢?

https://chart.googleapis.com/chart?cht=tx&chl=P(C_1)%20%3D%20%5Cfrac%201%20%7B13%7D%2C%20P(C_2)%20%3D%20%5Cfrac%20%7B12%7D%7B13%7D
https://chart.googleapis.com/chart?cht=tx&chl=P(x_1%20%3D%201%7CC_1)%20%3D%201%2C%20P(x_2%20%3D%201%7CC_1)%20%3D%201
https://chart.googleapis.com/chart?cht=tx&chl=P(x_1%20%3D%201%7CC_2)%20%3D%20%5Cfrac%201%203%2C%20P(x_2%20%3D%201%7CC_2)%20%3D%20%5Cfrac%201%203

對Naive Bayes來說,它不考慮不同維度的相關性,也就是認定這兩個維度是獨立產生的。我們在 class 2 裡面沒有看到像是測試資料這樣的資料是因為取樣的不夠多,如果取樣過多就有可能可以看到都是 1 的資料。
因此,Generative model跟Discriminative model的差別就在於,Generative model有做某些假設,假設你的資料來自於一個機率模型。

但Discriminative model不是在所有情況下都可以贏過Generative model,下面列出了幾點Generative model有優勢的時候。

  • 如果訓練資料很少,可以比較在同一個問題下,給予Discriminative model和Generative model不同量的訓練資料,會發現Discriminative model會受資料量影響很大,因為它沒有做任何假設,只要資料越來越多,它的error就會越來越小,而如果是Generative model,它受資料的影響比較小,因為它有自己的假設,所以在資料少的時候,Generative model有時候可以贏過Discriminative model。
  • 如果你的資料是noisy的,標記(Label)有問題的,那當有一些假設的時候反而可以把資料裡面有問題的部分忽略掉。
  • 在Discriminative model中,我們是直接假設一個事後機率,然後去找事後機率裡面的參數,但是在做Generative model的時候,我們把整個公式拆成Prior probability跟Class-dependent probability這兩項的話,有時候會有幫助,因為它們可以是來自不同來源。以語音辨識為例,它的Prior probability是某一句話被說出來的機率,而你要估測某一句話被說出來的機率就只要去網路上爬很多的文字就可以計算,並不需要聲音的資料。

多類別分類(Multi-class Classification)

下圖是3個class的計算過程,從圖中可以看出Softmax的輸出就是拿來當作 https://chart.googleapis.com/chart?cht=tx&chl=z 的事後機率。

邏輯迴歸的限制

假設今天的資料如下圖所示,我們就沒有辦法做分類。

這是因為邏輯迴歸的兩個class之間的boundary是一條直線。

特徵轉換(Feature Transformation)

我們可以將原本定的不好的feature換成一個比較好的feature space,讓邏輯迴歸變得可以處理,但是我們很難找出一個好的transformation。

因此我們可以讓機器自己產生好的transformation,我們只要把很多個邏輯迴歸接起來就可以了。

結論就是,如果我們只有一個邏輯迴歸,我們沒有辦法分類這個範例,但如果我們把三個邏輯迴歸接在一起,就可以分類了。那如果我們把每一個邏輯迴歸都叫做一個神經元(Neuron),把這些邏輯迴歸串起來所形成的網路(Network),就是所謂的類神經網路(Neural Network),也就是在做深度學習(Deep Learning)


參考資料

李宏毅老師 - ML Lecture 5


上一篇
【Day 12】邏輯迴歸(Logistic Regression)(上)
下一篇
【Day 14】深度學習(Deep Learning)
系列文
30天搞懂機器學習是否搞錯了什麼30

尚未有邦友留言

立即登入留言