back to index

ML Lecture 4: Classification


link |
00:01.000
好,我們要來上課囉。
link |
00:07.000
剩下的時間,我們要進入新的主題,我們要來講分類這件事情。
link |
00:15.000
好,在分類這件事情呢,我們要找的是一個function,它的input是一個object x,
link |
00:23.000
它的output是這個object屬於哪一個class,屬於underclass的哪一個。
link |
00:29.000
那這樣子的task有很多application其實信手拈來就有一大堆,比如說在金融上,
link |
00:35.000
他們可以用classification的model來決定說要不要貸款給某一個人。
link |
00:41.000
你就找一個function,它的input是某一個人的income,saving,他的工作,他的年紀,
link |
00:48.000
還有他過去的financial record,他過去有沒有欠債等等。
link |
00:53.000
那output就是要借錢給他還是不借錢給他,這是一個binary classification的product,
link |
00:59.000
你就accept或是refuse。
link |
01:01.000
那或者是拿來做醫療的診斷,比如說input就是某一個人的症狀,
link |
01:05.000
還有他的年紀,性別,過去的就醫的歷史等等。
link |
01:10.000
那output就是他生的是哪一種病,就自動來做醫療的診斷,
link |
01:16.000
或者是做手寫的數字,手寫的文字的辨識,比如說你就手寫一個字給機器看,
link |
01:25.000
機器看到就上圖,這個是金這樣子,鄉民都叫我大金,就是金這樣子。
link |
01:32.000
然後output就是這個字,這個image,它是屬於哪一個case。
link |
01:39.000
那如果你是做中文的手寫辨識的話,那中文有至少8000個character,
link |
01:46.000
那它就是一個8000個class的classification。
link |
01:49.000
你的model要從這8000個class裡面選一個class當作output。
link |
01:53.000
或者是做人臉辨識,就是input一個人臉,然後告訴他說這個人臉是誰的。
link |
01:59.000
好,那我們要用的是什麼樣的example application呢?
link |
02:03.000
其實這個也是寶可夢的例子啊。
link |
02:05.000
你可能以為說我只有前面那個predict CP值的例子,其實我還有很多其他的例子。
link |
02:13.000
好,我又做了一些有關寶可夢的研究,我這個研究是這樣子的,
link |
02:18.000
我們知道說寶可夢有不同的屬性,有幾種呢?
link |
02:22.000
其實有18種屬性,包括就是水,就是火啊,水啊,電啊,草啊,還有冰啊,等等。
link |
02:30.000
總共有18種屬性,到第6代為止總共有18種屬性。
link |
02:34.000
我們現在要做的是一個分類的問題。
link |
02:36.000
這個分類的問題就是要找一個function,這個function的input就是某一隻寶可夢,
link |
02:42.000
然後它output就是要告訴你說這一隻寶可夢它是屬於哪一種type的。
link |
02:47.000
比如說input給它一隻皮卡丘,它output就是雷。
link |
02:50.000
input給它一個那個傑尼龜,它output就是水。
link |
02:55.000
那input給它一個妙蛙草,它的output就是草。
link |
02:59.000
所以是一個classification的問題。
link |
03:02.000
那要怎麼樣做這個問題呢?
link |
03:04.000
第一個你的問題就是怎麼把一個寶可夢當作function的input。
link |
03:09.000
你要把一個東西當作function的input,它得數值化。
link |
03:12.000
你要用數字來表示一隻寶可夢,你才能把它放到一個function裡面。
link |
03:18.000
那我們要怎麼把一隻寶可夢用數字來表示呢?
link |
03:21.000
一隻寶可夢其實它有很多的特性,這些特性是可以數值化的。
link |
03:29.000
比如說它整體的強度,我先說一下這個其實不是pokemon go的那個東西,
link |
03:35.000
這個是pokemon的那個電玩。
link |
03:38.000
你聽不懂我講這個就算了,就當作沒聽到這句話。
link |
03:42.000
好,那一個寶可夢它其實可以用一組數字來描述它的特性。
link |
03:49.000
這組數字代表什麼呢?
link |
03:51.000
比如說這個寶可夢它的total的strength,
link |
03:55.000
就是它有多強,你可以用一個數字來表示它。
link |
03:58.000
它的生命值,你可以用一個數字來表示它。
link |
04:01.000
它的攻擊力,你可以用一個數字來表示它。
link |
04:04.000
它的防禦力,你可以用一個數字來表示它。
link |
04:07.000
它的特殊攻擊力,就是它用特殊攻擊的時候,
link |
04:11.000
這我不知道怎麼解釋,反正就是另外一個特殊攻擊的攻擊力。
link |
04:15.000
然後特殊攻擊的防禦力,還有它的速度,
link |
04:19.000
速度的時候可以決定說兩隻寶可夢相遇的時候,誰可以先攻擊。
link |
04:26.000
比如說皮卡丘,它的整體的強的程度是320,
link |
04:31.000
它的HP是35,它的攻擊力是55,防禦力是40,
link |
04:35.000
特殊攻擊力是50,然後它的特殊防禦力是50,
link |
04:40.000
它的速度是90。
link |
04:42.000
所以一隻皮卡丘,我們就可以用一個vector來描述它。
link |
04:46.000
這個vector裡面有1,2,3,4,5,6,7,總共有7個數字。
link |
04:50.000
所以一隻寶可夢,它就是一個7個數字所組成的一個vector,
link |
04:56.000
所以一隻皮卡丘可以用這7個數字來描述它。
link |
04:59.000
我們現在要問的問題就是,
link |
05:01.000
我們能不能夠把7個數字輸進一個function,
link |
05:04.000
這個function就告訴我們說,它的output是哪一種種類的寶可夢。
link |
05:10.000
那你可能會問這樣一個問題,
link |
05:12.000
這件事情的重要性到底在哪裡?
link |
05:15.000
這件事情是非常重要的,
link |
05:17.000
因為當兩隻寶可夢相遇在決鬥的時候,
link |
05:20.000
它們中間是有屬性相剋的關係的。
link |
05:22.000
這個是18x18的屬性相剋表,
link |
05:25.000
因為你知道說總共有18隻寶可夢,
link |
05:29.000
總共有18種態的,所以是18x18的屬性相剋表。
link |
05:33.000
比如說今天這個格鬥系遇到,
link |
05:36.000
左邊這個是攻擊方,上面這個是防禦方,
link |
05:40.000
所以格鬥系遇到一般的時候,它的攻擊就乘2,
link |
05:43.000
你看得懂這個圖了,所以這個是很重要的。
link |
05:47.000
那你可能會問說,
link |
05:49.000
可是寶可夢的屬性不是寶可夢圖鑑上面都有了嗎?
link |
05:53.000
預測寶可夢的屬性有什麼意義呢?
link |
05:55.000
這件事情是有很大的意義的,
link |
05:57.000
因為你有可能在決鬥中遇到說,
link |
05:59.000
對方出的是圖鑑上沒有的,你沒有見過的寶可夢。
link |
06:03.000
如果你現在有這個預測的model的話,
link |
06:05.000
你就可以預測說,它出的寶可夢是哪一種屬性的,
link |
06:08.000
你就可以用正確的屬性來對應它。
link |
06:11.000
所以這個是有非常廣泛的應用的。
link |
06:15.000
而且我發現說寶可夢圖鑑其實是隱象辨識的功能,
link |
06:18.000
它隱象辨識的功能很強,
link |
06:20.000
你照一張圖它就可以告訴你說它是哪一種寶可夢。
link |
06:23.000
我們應該要把這個預測的model加到寶可夢的圖鑑裡面,
link |
06:26.000
它就可以幫我們預測新的寶可夢。
link |
06:29.000
那怎麼完成這個任務?
link |
06:36.000
首先我們要先收集data,
link |
06:39.000
我們就說我把寶可夢編號400以下的當作training data,
link |
06:45.000
編號400以上的就當作testing data,
link |
06:47.000
就假設說,因為你知道寶可夢其實是越來越多的,
link |
06:50.000
我記得我小時候只有150隻,
link |
06:52.000
那後來發現越來越多寶可夢,
link |
06:54.000
現在好像已經有800隻了,
link |
06:56.000
所以寶可夢是不斷增加的,
link |
06:58.000
所以編號在比較前面的是比較早發現的那些寶可夢,
link |
07:01.000
所以要模擬說我們已經發現那些寶可夢的情況下,
link |
07:04.000
如果看到新的寶可夢的時候,
link |
07:06.000
就預測說它是屬於哪一種屬性。
link |
07:09.000
所以你要收集data,
link |
07:11.000
比如說我們的data就是一些pair,
link |
07:14.000
告訴我們說function的input output是什麼,
link |
07:16.000
比如說input皮卡丘叫output電,
link |
07:18.000
input傑尼龜叫output水,
link |
07:20.000
input妙蛙草叫output草。
link |
07:23.000
那怎麼解這個classification的問題?
link |
07:25.000
有人會這麼想,
link |
07:27.000
假設有人沒有學過classification,
link |
07:29.000
但學過regression,
link |
07:30.000
他就說classification就當作regression的問題來硬解,
link |
07:34.000
怎麼硬解呢?
link |
07:36.000
我們用binary的classification來當作定義,
link |
07:39.000
假設我們現在只要output,
link |
07:41.000
input的x屬於class1或者class2,
link |
07:44.000
那就把它當作一個regression的問題,
link |
07:47.000
class1就代表說它的target,
link |
07:51.000
也就是y hat是1,
link |
07:53.000
class2就代表說它的target是-1,
link |
07:57.000
你就這樣,就當作regression的problem,
link |
07:59.000
然後硬train下去,
link |
08:01.000
然後train完這個model以後,
link |
08:03.000
在testing的時候,
link |
08:04.000
因為regression的output不會正好是0或是1,
link |
08:07.000
它是一個number,它是一個數值,
link |
08:11.000
如果這個數值比較接近1的話,
link |
08:13.000
就說是class1,
link |
08:15.000
如果數值比較接近-1的話,
link |
08:17.000
就說它是class2,
link |
08:19.000
所以你可以想成說現在就是以0為分界,
link |
08:22.000
如果你的regression model output是大於0的話,
link |
08:25.000
就比較接近1,
link |
08:26.000
所以你的model就會說是class1,
link |
08:28.000
如果小於0的話就比較接近-1,
link |
08:30.000
所以你的model會說是class2,
link |
08:33.000
如果你這麼做的話,
link |
08:35.000
會遇到什麼樣的問題呢?
link |
08:37.000
會遇到什麼樣的問題呢?
link |
08:39.000
你會遇到這樣的問題,
link |
08:41.000
假設說我們現在的model是一個,
link |
08:44.000
我們現在的model的input和output的關係,
link |
08:47.000
y等於b加w1x1加w2x2,
link |
08:50.000
input是兩個feature,
link |
08:52.000
也就是x1跟x2,
link |
08:56.000
那我們現在有兩個class,
link |
08:58.000
藍色的是class1,
link |
09:00.000
紅色的是class2,
link |
09:02.000
那如果你用regression來想的話,
link |
09:04.000
藍色的那些object,
link |
09:07.000
藍色的那些東西,
link |
09:09.000
input到這個regression的model,
link |
09:11.000
我們都希望它越接近1越好,
link |
09:13.000
紅色的這些東西,
link |
09:15.000
input到regression的model,
link |
09:17.000
我們都希望它越接近-1越好,
link |
09:19.000
這件事可能是做得到,
link |
09:21.000
如果你把這些data,
link |
09:23.000
真的丟下去認,
link |
09:25.000
然後拿出這個bw1和w2的話,
link |
09:28.000
那你會發現說呢,
link |
09:30.000
b加w1x1加w2x2,
link |
09:33.000
這邊寫錯了,
link |
09:35.000
就是這個式子,
link |
09:37.000
等於0的第七線,
link |
09:39.000
是綠色這一條,
link |
09:41.000
也就是class1和class2的分界點,
link |
09:44.000
是在綠色的這一條線上,
link |
09:47.000
這看起來,
link |
09:49.000
聽起來蠻好的,
link |
09:51.000
但是你可能會遇到這樣的問題,
link |
09:53.000
假設你今天class1的分布,
link |
09:55.000
不是這樣子,
link |
09:57.000
假設你class1的分布,
link |
09:59.000
是這樣子,
link |
10:01.000
你就麻煩了,
link |
10:03.000
因為如果你用綠色的這一條線,
link |
10:05.000
所代表的model的話,
link |
10:07.000
注意一下,
link |
10:09.000
這個是二維的,
link |
10:11.000
綠色這條線只是代表說,
link |
10:13.000
model的值是0,
link |
10:15.000
y的值是0,
link |
10:17.000
regression的output是0,
link |
10:19.000
左上角這邊,
link |
10:21.000
代表regression的output是小於0的,
link |
10:23.000
右下角這邊,
link |
10:25.000
代表regression的output是大於0,
link |
10:27.000
綠色這條線會有什麼問題呢?
link |
10:29.000
綠色這條線的問題是,
link |
10:31.000
左下角小於0,
link |
10:33.000
左上角小於0,
link |
10:35.000
右下角大於0,
link |
10:37.000
越偏右下,
link |
10:39.000
它的值就越大,
link |
10:41.000
所以如果今天是,
link |
10:43.000
考慮右下角這些點的話,
link |
10:45.000
他用這個綠色的分布,
link |
10:47.000
他做regression的時候,
link |
10:51.000
他的output可能會是遠大於1的,
link |
10:53.000
但是如果你用regression的話,
link |
10:55.000
你會希望藍色的點,
link |
10:57.000
都越接近1越好,
link |
10:59.000
有時候太大居然還不好,
link |
11:01.000
太大不行,
link |
11:03.000
然後越接近1越好,
link |
11:05.000
太小不行,
link |
11:07.000
那太大也不行,
link |
11:09.000
所以變成說,
link |
11:11.000
這些遠大於1的點,
link |
11:13.000
他其實是對regression來說,
link |
11:15.000
他是error,他是錯的,
link |
11:17.000
這些點是不好的,
link |
11:19.000
所以你今天如果拿,
link |
11:21.000
這樣子兩群藍色的點,
link |
11:23.000
跟這群紅色的點,
link |
11:25.000
去做regression的時候,
link |
11:27.000
你得到的線不會是綠色這一條,
link |
11:29.000
雖然綠色這一條你用直覺看,
link |
11:31.000
眼睛一看就會知道說,
link |
11:33.000
他是一個比較好的founder,
link |
11:35.000
但是如果你用regression認下去的話,
link |
11:37.000
不會是綠色這一條,
link |
11:39.000
他會是紫色這一條,
link |
11:41.000
因為他會覺得說,
link |
11:43.000
往右偏一點,
link |
11:45.000
這樣的好處就是,
link |
11:47.000
這邊這些藍色的點,
link |
11:49.000
他的直就沒有那麼大,
link |
11:51.000
他的直就會壓小,
link |
11:53.000
就讓他們比較接近1,
link |
11:55.000
結果這樣子的function,
link |
11:57.000
反而對regression來說,
link |
11:59.000
是一個比較好的function,
link |
12:01.000
也就是說,
link |
12:03.000
regression那個定義,
link |
12:05.000
function好壞的方式,
link |
12:07.000
對classification來說,
link |
12:09.000
是不適用的,
link |
12:11.000
所以這個problem,
link |
12:13.000
對regression來說,
link |
12:15.000
紫色的是一個好的function,
link |
12:17.000
但是顯然對classification來說,
link |
12:19.000
綠色的才是一個好的function,
link |
12:21.000
但是如果你當作regression的problem來做,
link |
12:23.000
套用跟regression,
link |
12:25.000
一樣的做法的時候,
link |
12:27.000
你得到的結果會是不好,
link |
12:29.000
因為regression對model好壞的定義,
link |
12:31.000
是不適合用在這個地方,
link |
12:33.000
所以這個,
link |
12:35.000
如果你用regression的話,
link |
12:37.000
你的regression model,
link |
12:39.000
他會懲罰那些太正確的,
link |
12:41.000
他的output值太大的那些點,
link |
12:43.000
這樣你反而得到的結果是不好,
link |
12:45.000
那還有另外一個問題,
link |
12:47.000
其實像這種把classification
link |
12:49.000
硬當成regression來做,
link |
12:51.000
我還看過是有人真的,
link |
12:53.000
有人會真的這麼做的,
link |
12:55.000
就勸你不要這麼做這樣子,
link |
12:57.000
那你這個,
link |
12:59.000
比如說,
link |
13:01.000
如果你今天有multiple class的話,
link |
13:03.000
那你可能說,
link |
13:05.000
我把class1當作target是1,
link |
13:07.000
class2當作target是2,
link |
13:09.000
class3當作target是3,
link |
13:11.000
這樣做會是有問題的,
link |
13:13.000
因為當你這樣做的時候,
link |
13:15.000
你就假設說,
link |
13:17.000
class3和class2是比較近,
link |
13:19.000
他們有某種關係,
link |
13:21.000
class2跟class1是比較近的,
link |
13:23.000
他們有某種關係,
link |
13:25.000
但是如果實際上這種關係不存在的話,
link |
13:27.000
class1,class2,class3,
link |
13:29.000
他們中間並沒有某種特殊的relation,
link |
13:31.000
並沒有誰應該跟誰比較有關係的話,
link |
13:33.000
你這樣子把他當regression的問題來處理,
link |
13:35.000
你就沒有辦法得到一個好的結果。
link |
13:37.000
好,那我們今天應該要怎麼做呢?
link |
13:39.000
理想上的做法是這個樣子,
link |
13:41.000
找一個function,
link |
13:43.000
這個function裡面呢,
link |
13:45.000
反正我們,
link |
13:47.000
就是在做regression的時候,
link |
13:49.000
它output是real number,
link |
13:51.000
對不對,
link |
13:53.000
但是在classification的時候,
link |
13:55.000
它output是discrete,
link |
13:57.000
它是某一個class,
link |
13:59.000
它是discrete,
link |
14:01.000
那我們想辦法讓model做到這件事情,
link |
14:03.000
你大概可以有不同的想法,
link |
14:05.000
那一個可能的想法是,
link |
14:07.000
假如是二元分類的問題,
link |
14:09.000
是binary classification的話,
link |
14:11.000
我就說,
link |
14:13.000
我們要找的function f裡面,
link |
14:15.000
內建另外一個function g,
link |
14:17.000
希望它是自動,
link |
14:19.000
當然我們g也是要根據training data被找出來的。
link |
14:21.000
如果x代進g的值大於0的話,
link |
14:23.000
那就說是class1,
link |
14:25.000
否則呢,
link |
14:27.000
就說是class2。
link |
14:29.000
那在training的時候,
link |
14:31.000
我們的loss應該,
link |
14:33.000
怎麼定義才好呢?
link |
14:35.000
我們的loss應該定義成,
link |
14:37.000
我們可以把loss定義成呢,
link |
14:39.000
如果我選了某一個function f,
link |
14:41.000
它在我們training data上面,
link |
14:43.000
predict錯誤的次數,
link |
14:45.000
我們當然希望說,
link |
14:47.000
我們如果找出來的function,
link |
14:49.000
它在這個data上,
link |
14:51.000
錯誤次數越小,
link |
14:53.000
代表它的loss越小。
link |
14:55.000
代表它的loss越小。
link |
14:57.000
代表它的loss越小。
link |
14:59.000
你可以把這個式子寫成這樣,
link |
15:01.000
summation over all training examples,
link |
15:03.000
delta f of xn,
link |
15:05.000
不等於
link |
15:07.000
y n hat,
link |
15:09.000
就是如果f of xn的output,
link |
15:11.000
跟正確答案y n hat,
link |
15:13.000
不一樣的話,
link |
15:15.000
這個delta就是1,否則就是0。
link |
15:17.000
如果你把它全部上起來的話,
link |
15:19.000
就是你用這個function f,
link |
15:21.000
在training data上面,
link |
15:23.000
它會分類錯誤的次數,
link |
15:25.000
那你當然希望這個值,
link |
15:27.000
越小越好。
link |
15:29.000
但是,如果叫你解這個function,
link |
15:31.000
你現在八成不會,
link |
15:33.000
因為我們學過的是gradient descent,
link |
15:35.000
你可能會用gradient descent解,
link |
15:37.000
但是這個沒辦法尾分啊,
link |
15:39.000
這個就沒辦法尾分了,
link |
15:41.000
這個也沒辦法尾分,通通不能尾分,
link |
15:43.000
不知道怎麼做。
link |
15:45.000
其實這個是有方法,
link |
15:47.000
比如說acceptron就是一個方法,
link |
15:49.000
sbn就是一個方法,
link |
15:51.000
但我們今天先不講這個方法,
link |
15:53.000
我們先來講另外一個
link |
15:55.000
solution,
link |
15:57.000
然後這個solution,
link |
15:59.000
我們先用機率的觀點來看待它,
link |
16:01.000
然後之後我們會說,
link |
16:03.000
這樣的solution也是跟
link |
16:05.000
machine learning的三個step
link |
16:07.000
其實是一樣的。
link |
16:09.000
我們先這樣看,
link |
16:11.000
有兩個盒子,
link |
16:13.000
我們來回憶一下
link |
16:15.000
國中的時候會問的機率問題,
link |
16:17.000
有兩個盒子,盒子一裡面
link |
16:19.000
有藍球跟綠球,盒子二裡面也有藍球跟綠球,
link |
16:21.000
假設我不告訴你
link |
16:23.000
我說我從哪一個盒子裡面
link |
16:25.000
挑一個球出來,但是我告訴你說
link |
16:27.000
我從這兩個盒子裡面,某一個盒子
link |
16:29.000
裡面隨機
link |
16:31.000
抽取一個球出來,它是藍色的。
link |
16:33.000
那這兩個
link |
16:35.000
藍色的球,它
link |
16:37.000
從盒子1和從盒子2
link |
16:39.000
抽出來的機率分別是多少?
link |
16:41.000
我相信這個小學生就可以回答了。
link |
16:43.000
假如說,
link |
16:45.000
你告訴我說
link |
16:47.000
你從盒子1裡面抽一個球的
link |
16:49.000
機率是三分之二,
link |
16:51.000
你從盒子2裡面抽一個球的機率是三分之一,
link |
16:53.000
再告訴我說,在盒子1裡面
link |
16:55.000
藍球佔五分之四,
link |
16:57.000
綠球佔五分之一,
link |
16:59.000
盒子2裡面,藍球佔五分之二,
link |
17:01.000
綠球佔五分之三,
link |
17:03.000
那你就可以輕易計算說,
link |
17:05.000
如果我今天得到一個藍球,
link |
17:07.000
它從盒子1裡面
link |
17:09.000
抽出來的機率,
link |
17:11.000
這個機率就是
link |
17:13.000
這個國小應該就有教過了。
link |
17:15.000
至少
link |
17:17.000
國中有教過啊,對不對?
link |
17:19.000
大家應該都會。
link |
17:21.000
Given一個藍球,
link |
17:23.000
它從B1裡面sample出來的機率
link |
17:25.000
就是這個樣子。
link |
17:27.000
這沒什麼好解釋的,我相信大家都瞄懂。
link |
17:29.000
好,那這個
link |
17:31.000
跟分類有什麼關係呢?
link |
17:33.000
如果我們把盒子
link |
17:35.000
換成分類的話,
link |
17:37.000
把盒子1跟盒子2
link |
17:39.000
換成類別1
link |
17:41.000
跟類別2。
link |
17:43.000
換成類別1跟類別2。
link |
17:45.000
這個時候呢,
link |
17:47.000
給我一個X,
link |
17:49.000
就是我們要分類的對象。
link |
17:51.000
比如說,今天我們的例子
link |
17:53.000
就是分類一隻寶可夢,
link |
17:55.000
給我一隻寶可夢,
link |
17:57.000
它從某一個class裡面sample出來的機率
link |
17:59.000
是多少呢?
link |
18:01.000
那我們需要知道
link |
18:03.000
哪些值?
link |
18:05.000
我們需要知道class1,
link |
18:07.000
我從class1裡面
link |
18:09.000
抽一個X出來的機率。
link |
18:11.000
我們要知道從class2裡面
link |
18:13.000
抽一個X出來的機率。
link |
18:15.000
我們要知道說
link |
18:17.000
從X1裡面抽一個X出來
link |
18:19.000
從X1裡面
link |
18:21.000
抽出我們現在在考慮的
link |
18:23.000
這個X的機率。
link |
18:25.000
我們要知道從X2裡面
link |
18:27.000
抽出我們現在在考慮的這個X的機率。
link |
18:29.000
抽出我們現在在考慮的這個X的機率。
link |
18:31.000
如果有這些,
link |
18:33.000
剛給我們一個X的時候,
link |
18:35.000
有了這四個數值,我們就可以計算
link |
18:37.000
這個X是屬於
link |
18:39.000
class1的機率。
link |
18:41.000
怎麼算呢?
link |
18:43.000
怎麼算class1的機率?
link |
18:45.000
就是class1本身的機率
link |
18:47.000
乘上class1
link |
18:49.000
sample一個
link |
18:51.000
object出來是X的機率。
link |
18:53.000
再除掉
link |
18:55.000
class1本身的機率
link |
18:57.000
乘上class1 sample出來一個object
link |
18:59.000
是X的機率。
link |
19:01.000
加上class2本身的機率
link |
19:03.000
乘上從class2裡面
link |
19:05.000
sample出一個object出來
link |
19:07.000
是X的機率。
link |
19:09.000
所以我們現在的問題就是
link |
19:11.000
如果我們知道這個機率的話
link |
19:13.000
問題就解決了。
link |
19:15.000
因為給我一個寶可夢X
link |
19:17.000
我就可以看說
link |
19:19.000
它從哪一個class裡面來的機率最大。
link |
19:21.000
機率最大的那個class就是正確答案。
link |
19:23.000
但現在的問題是
link |
19:25.000
我們如果要算這個值
link |
19:27.000
那我們就要算
link |
19:29.000
這四個值。
link |
19:31.000
假設我們是考慮一個二元分類的問題的話
link |
19:33.000
我們就需要算這四個值。
link |
19:35.000
那這四個值怎麼來呢?
link |
19:37.000
我們就希望從我們的
link |
19:39.000
training data去把這些值
link |
19:41.000
估測出來。
link |
19:43.000
那這一整套
link |
19:45.000
想法呢
link |
19:47.000
叫做generative model。
link |
19:49.000
為什麼它叫一個generative model呢?
link |
19:51.000
因為有這個model的話
link |
19:53.000
你可以拿它來
link |
19:55.000
generate一個X
link |
19:57.000
什麼意思呢?
link |
19:59.000
你可以計算
link |
20:01.000
某一個X出現的機率。
link |
20:03.000
如果你可以計算
link |
20:05.000
每一個X出現的機率
link |
20:07.000
每一個X的distribution
link |
20:09.000
你就可以用這個distribution
link |
20:11.000
來產生X。
link |
20:13.000
你就可以用這個distribution來sample X出來。
link |
20:15.000
這個機率是什麼呢?
link |
20:17.000
這個機率很簡單,它就是
link |
20:19.000
你從C1裡面
link |
20:21.000
挑一個X出來的機率
link |
20:23.000
乘上C1挑出X的機率。
link |
20:25.000
加上你從class2裡面挑一個X的機率
link |
20:27.000
乘上class2產生X的機率。
link |
20:29.000
你有這些機率
link |
20:31.000
你就可以算這個。
link |
20:33.000
你就可以算
link |
20:35.000
每一個X出現的機率
link |
20:37.000
你就可以自己產生X。
link |
20:39.000
所以這個東西呢
link |
20:41.000
叫做generative model。
link |
20:43.000
好,那我們先來看一下
link |
20:45.000
P of C1
link |
20:47.000
跟P of C2
link |
20:49.000
我們先來算一下
link |
20:51.000
P of C1跟P of C2
link |
20:53.000
它出現的機率。
link |
20:55.000
這個機率呢
link |
20:57.000
叫做priority。
link |
20:59.000
它們是比較好算的。
link |
21:01.000
假設我們今天考慮的
link |
21:03.000
class分別是
link |
21:05.000
水系的跟一般系的。
link |
21:07.000
class1就是指水系的神奇寶貝。
link |
21:09.000
class2就是一般系的神奇寶貝。
link |
21:11.000
另外16種寶可夢
link |
21:13.000
我們就無視它。
link |
21:15.000
我們只先考慮一個二元分類的問題。
link |
21:17.000
那我們現在呢
link |
21:19.000
把編號ID
link |
21:21.000
在圖鑑編號裡面小於400的
link |
21:23.000
水系的和一般系的
link |
21:25.000
就當作是training data。
link |
21:27.000
剩下的當作是testing data。
link |
21:29.000
如果你想要做得更嚴謹一點的話
link |
21:31.000
你可以把training data裡面切成validation的data出來。
link |
21:33.000
在training data裡面呢
link |
21:35.000
總共有79支水系的
link |
21:37.000
總共有61支一般系的。
link |
21:39.000
你可能會問說
link |
21:41.000
為什麼選水系跟一般系的當作二元分類的問題。
link |
21:43.000
因為我其實統計了一下
link |
21:45.000
18種寶可夢的數目
link |
21:47.000
18種種類的數目
link |
21:49.000
水系跟一般系是最多的啦。
link |
21:51.000
所以我們就先選水系跟一般系。
link |
21:53.000
不過我試一下
link |
21:55.000
如果你要把18種都分類正確
link |
21:57.000
好像是做不太出來的。
link |
21:59.000
所以我們就只先考慮
link |
22:01.000
分兩個class就好了。
link |
22:03.000
link |
22:05.000
link |
22:07.000
如果我們現在知道說training data裡面
link |
22:09.000
79支水系
link |
22:11.000
61支一般系
link |
22:13.000
那從
link |
22:15.000
這個第一類裡面
link |
22:17.000
從class 1裡面
link |
22:19.000
sample出一支寶可夢的機率是多少呢?
link |
22:21.000
是不是就是
link |
22:23.000
79除以79加61
link |
22:25.000
那算出來是0.56
link |
22:27.000
那從class 2裡面sample出
link |
22:29.000
一支寶可夢的機率
link |
22:31.000
就是61除以79加61
link |
22:33.000
就是0.44
link |
22:35.000
這個是比較容易
link |
22:37.000
簡單可以理解的啦。
link |
22:39.000
好那再來我們的
link |
22:41.000
問題是這樣子
link |
22:43.000
怎麼計算說
link |
22:45.000
如果給我某一個class
link |
22:47.000
某一支寶可夢
link |
22:49.000
是從這個class
link |
22:51.000
sample出來的機率
link |
22:53.000
比如說如果給你一個海龜
link |
22:55.000
我也不知道這個海龜應該叫什麼
link |
22:57.000
給一個海龜
link |
22:59.000
它是從
link |
23:01.000
水系的神奇寶貝裡面
link |
23:03.000
挑一支神奇寶貝出來
link |
23:05.000
它是海龜的
link |
23:07.000
這個機率到底
link |
23:09.000
應該有多大呢?
link |
23:11.000
那我們現在的training data
link |
23:13.000
是長這個樣子
link |
23:15.000
水系的神奇寶貝有79支
link |
23:17.000
所以有傑尼龜啊
link |
23:19.000
赫達鴨還有文香蝌蚪
link |
23:21.000
之類的
link |
23:23.000
我小時候在卡通有看到
link |
23:25.000
這個是編號後面的
link |
23:27.000
我小時候卡通是沒有看到的
link |
23:29.000
所以我不知道它叫什麼名字
link |
23:31.000
它也不在這79支裡面
link |
23:33.000
那我們到底要怎麼算說
link |
23:35.000
從水系的神奇寶貝裡面
link |
23:37.000
挑一支挑出來
link |
23:39.000
是海龜的機率呢?
link |
23:41.000
你可能會想說
link |
23:43.000
這79支神奇寶貝又沒海龜
link |
23:45.000
所以挑一支出來是海龜的機率
link |
23:47.000
根本就是零啊
link |
23:49.000
可是這海龜是水系的
link |
23:51.000
所以你就知道它是水系的
link |
23:55.000
它就是水系的
link |
23:57.000
所以你說
link |
23:59.000
它從水系裡面挑出來的機率是零
link |
24:01.000
這樣也不對啊
link |
24:03.000
所以怎麼辦
link |
24:05.000
首先就是每一支寶可夢
link |
24:07.000
我們剛才講過
link |
24:09.000
它都用一個向量來描述
link |
24:11.000
這個向量裡面的值
link |
24:13.000
就是它的各種的特徵值
link |
24:15.000
所以這個vector呢
link |
24:17.000
我們又稱之為一個feature
link |
24:19.000
所以每一個寶可夢呢
link |
24:21.000
都是用一堆feature呢
link |
24:23.000
來描述它
link |
24:25.000
然後呢我們就真的把那些水系的
link |
24:27.000
神奇寶貝
link |
24:29.000
他們的水系的寶可夢
link |
24:31.000
他們的防禦力和特殊防禦力
link |
24:33.000
劃出來
link |
24:35.000
每一個寶可夢其實有七個不同的數值
link |
24:37.000
不過七個沒辦法劃啊
link |
24:39.000
所以我們就先劃這個防禦力
link |
24:41.000
跟特殊防禦力就好
link |
24:43.000
值得強調的是
link |
24:45.000
這邊是真正的β
link |
24:47.000
如果你要載完整的神奇
link |
24:49.000
完整的寶可夢的β
link |
24:51.000
我在影片最後有附個連結
link |
24:53.000
你是可以載到
link |
24:55.000
完整的β
link |
24:57.000
link |
24:59.000
那我們就把
link |
25:01.000
79支寶可夢
link |
25:03.000
它的這個
link |
25:05.000
防禦力跟特殊防禦力
link |
25:07.000
都劃在這個圖
link |
25:09.000
二維的平面上
link |
25:11.000
那所以這邊這二維平面上
link |
25:13.000
每一個點呢就代表了某一支寶可夢
link |
25:15.000
比如說這個
link |
25:17.000
這個點是可達伊拉
link |
25:19.000
它的防禦力是48特殊防禦力是50
link |
25:21.000
這個點是傑尼龜
link |
25:23.000
它的防禦力是65特殊防禦力是64
link |
25:25.000
可是現在的問題就是
link |
25:27.000
如果給我們一個
link |
25:29.000
新的點
link |
25:31.000
這個點是代表一支
link |
25:33.000
沒有在我們的training data裡面的寶可夢
link |
25:35.000
是我們沒有看過的
link |
25:37.000
寶可夢
link |
25:39.000
比如說這個海龜
link |
25:41.000
它的防禦力是103特殊防禦力是
link |
25:43.000
45它的位置大概在
link |
25:45.000
這個地方
link |
25:47.000
它從水系裡面
link |
25:49.000
挑一支神奇寶貝挑到這個海龜的機率
link |
25:51.000
到底
link |
25:53.000
應該是多少
link |
25:55.000
那你不能說它是零
link |
25:57.000
在training data裡面從來沒有出現
link |
25:59.000
這個海龜所以它的機率就是零
link |
26:01.000
這樣顯然是不對的
link |
26:03.000
你要想個辦法估測說
link |
26:05.000
從這些我們已經有的神奇寶貝裡面
link |
26:07.000
估測說如果從水系的
link |
26:09.000
神奇寶貝裡面挑一支出來
link |
26:11.000
它是這個海龜的機率
link |
26:13.000
到底有多少
link |
26:15.000
好那
link |
26:17.000
怎麼辦呢
link |
26:19.000
你可以想像說
link |
26:21.000
這79支神奇寶貝
link |
26:23.000
其實只是冰山的
link |
26:25.000
一角
link |
26:27.000
就是水系的神奇寶貝
link |
26:29.000
是從一個機率的分佈裡面
link |
26:31.000
水系神奇寶貝它的防禦力
link |
26:33.000
跟特殊防禦力是從一個
link |
26:35.000
Gaussian distribution裡面
link |
26:37.000
sample出來
link |
26:39.000
我們sample了79個點以後
link |
26:41.000
得到的分佈長
link |
26:43.000
這個樣子
link |
26:45.000
但是從那個Gaussian distribution裡面
link |
26:47.000
sample出這個點的機率
link |
26:49.000
並不是零
link |
26:51.000
我們假設說這79個點
link |
26:53.000
是一個從一個Gaussian distribution裡面
link |
26:55.000
sample出來
link |
26:57.000
現在我們要做的事情就是
link |
26:59.000
如果找這
link |
27:01.000
給我這79個點
link |
27:03.000
我們怎麼找到那一個
link |
27:05.000
Gaussian distribution
link |
27:07.000
好那
link |
27:09.000
Gaussian distribution
link |
27:11.000
我這邊還做了幾個投影片要說Gaussian distribution
link |
27:13.000
但我覺得這應該
link |
27:15.000
不用講吧
link |
27:17.000
假設你不知道Gaussian distribution是什麼的話
link |
27:19.000
你就想成它是一個function
link |
27:21.000
這個function的input
link |
27:23.000
就是一個vector x
link |
27:25.000
在這邊代表某一支寶可夢的數字
link |
27:27.000
它的output就是
link |
27:29.000
這一支寶可夢
link |
27:31.000
link |
27:33.000
這一個distribution裡面
link |
27:35.000
從這個distribution裡面
link |
27:37.000
被sample出來的機率
link |
27:39.000
其實嚴格說起來
link |
27:41.000
這個東西並不是機率
link |
27:43.000
它是probability的density
link |
27:45.000
它跟機率是成正比的
link |
27:47.000
但它並不exactly就是機率
link |
27:49.000
但是這邊為了不要
link |
27:51.000
讓大家太混亂
link |
27:53.000
所以我們就假設說它是一個機率
link |
27:55.000
好那這個機率的分佈呢
link |
27:57.000
它是由兩個東西決定
link |
27:59.000
一個東西呢
link |
28:01.000
叫做mean
link |
28:03.000
另外一個東西呢
link |
28:05.000
叫做variance
link |
28:07.000
寫做sigma它是一個matrix
link |
28:09.000
mean是一個vector
link |
28:11.000
sigma是一個matrix
link |
28:13.000
所以如果你把mu跟sigma
link |
28:15.000
代入這個看起來
link |
28:17.000
有點複雜的function
link |
28:19.000
那它就會有
link |
28:21.000
不同的形狀
link |
28:23.000
就同樣的x
link |
28:25.000
如果有不同的mu跟不同的sigma
link |
28:27.000
那你代進同樣的x
link |
28:29.000
它的output的機率分佈呢
link |
28:31.000
是不一樣的
link |
28:33.000
下面呢就舉幾個例子
link |
28:35.000
同樣的sigma
link |
28:37.000
不同的mu代表說
link |
28:39.000
它們機率分佈最高點的地方
link |
28:41.000
是不一樣的
link |
28:43.000
或者是同樣的mu不同的sigma
link |
28:45.000
代表說機率分佈最高點是一樣的
link |
28:47.000
但是它們這個分佈的
link |
28:49.000
這個散的程度啊
link |
28:51.000
是不一樣的
link |
28:53.000
好那接下來的問題
link |
28:55.000
就是
link |
28:57.000
給我們這
link |
28:59.000
我們假設有一個Gaussian存在
link |
29:01.000
從這個Gaussian裡面
link |
29:03.000
sample79次以後
link |
29:05.000
sample出這79個點
link |
29:07.000
link |
29:09.000
到底這個Gaussian
link |
29:11.000
長什麼樣子呢
link |
29:13.000
到底這個Gaussian長什麼樣子呢
link |
29:15.000
如果我們可以
link |
29:17.000
找到這個Gaussian的話
link |
29:19.000
假設我們可以根據這79個點
link |
29:21.000
估測出這個Gaussian的mu
link |
29:23.000
它的mean應該是在這個位置
link |
29:25.000
是75
link |
29:27.000
71.3
link |
29:29.000
它的sigma應該是
link |
29:31.000
這樣的分佈
link |
29:33.000
它的這個x跟y
link |
29:35.000
跟xy是有一些
link |
29:37.000
有一些correlation的
link |
29:39.000
但是沒有x平方跟y平方
link |
29:41.000
這邊這麼大所以它大概是長這個樣子
link |
29:43.000
那給我們一個
link |
29:45.000
新的點x
link |
29:47.000
它是我們過去從來沒有
link |
29:49.000
看過的點它不在這個sampling裡面
link |
29:51.000
它不在這79個sampling裡面
link |
29:53.000
但是如果我們知道
link |
29:55.000
mu跟x的話
link |
29:57.000
我們就可以把Gaussian的
link |
29:59.000
distribution的function寫出來
link |
30:01.000
知道mu跟x我們就可以把這個function寫出來
link |
30:03.000
而這個function是dependent on mu跟x
link |
30:05.000
所以我把它寫成f
link |
30:07.000
下面要mu跟sigma of x
link |
30:09.000
而你把這個x代進去
link |
30:11.000
經過一串複雜的運算以後
link |
30:13.000
那你就可以算出呢
link |
30:15.000
某一個x
link |
30:17.000
從這個Gaussian裡面
link |
30:19.000
從這個mean是mu
link |
30:21.000
它的covariance matrix是sigma的Gaussian裡面
link |
30:23.000
sample出來的機率
link |
30:25.000
那你可以
link |
30:27.000
如果你對這個function沒什麼概念的話
link |
30:29.000
就可以想像說
link |
30:31.000
如果x越接近這個中心點
link |
30:33.000
越接近mu這個地方
link |
30:35.000
它當然是sample出來的機率是比較大的
link |
30:37.000
那像x在這麼遠的地方
link |
30:39.000
sample出來的機率呢
link |
30:41.000
就是比較小的
link |
30:43.000
好那再來問題就是
link |
30:45.000
怎麼找這個mu跟怎麼找
link |
30:47.000
這個sigma
link |
30:49.000
這邊用的這個概念呢
link |
30:51.000
就是maximum的likelihood
link |
30:53.000
link |
30:55.000
你可以想像說這79個點
link |
30:57.000
其實可以從任何一個
link |
30:59.000
Gaussian裡面被sample出來
link |
31:01.000
對不對任何一個Gaussian
link |
31:03.000
都有可能sample出這79個點
link |
31:05.000
不管你是
link |
31:07.000
mu在這個位置
link |
31:09.000
然後它的covariance matrix長這個樣子
link |
31:11.000
還是
link |
31:13.000
mu在這個位置
link |
31:15.000
它的covariance長這個樣子
link |
31:17.000
它都有可能sample出
link |
31:19.000
這79個點對不對
link |
31:21.000
因為你從Gaussian裡面
link |
31:23.000
sample出一個point
link |
31:25.000
它可以是整個空間上的任何一個點
link |
31:27.000
只是有些地方機率很低
link |
31:29.000
有些地方機率很高
link |
31:31.000
但沒有一個地方機率是exactly等於0的
link |
31:33.000
所以雖然說
link |
31:35.000
右上角這個Gaussian
link |
31:37.000
右上角這個Gaussian
link |
31:39.000
它sample出左下角這個點的機率很低
link |
31:41.000
但是
link |
31:43.000
並不代表說這個機率呢
link |
31:45.000
是0
link |
31:47.000
但是雖然說
link |
31:49.000
每一個Gaussian都有可能
link |
31:51.000
sample出這79個點
link |
31:53.000
但是它們sample出這
link |
31:55.000
79個點的可能性
link |
31:57.000
是不一樣
link |
31:59.000
它們sample出這79個點的likelihood
link |
32:01.000
是不一樣
link |
32:03.000
顯然說如果你的Gaussian是這個的話
link |
32:05.000
它sample出這79個點的likelihood
link |
32:07.000
比較高
link |
32:09.000
如果你的Gaussian是這個的話
link |
32:11.000
它sample出這79個點的Gaussian
link |
32:13.000
機率是比較低的
link |
32:15.000
所以說呢
link |
32:17.000
如果今天給我們
link |
32:19.000
某一個Gaussian的μ跟σ
link |
32:21.000
某一個Gaussian的μ跟σ
link |
32:23.000
我們就可以算這個Gaussian的likelihood
link |
32:25.000
我們就可以算這個Gaussian的likelihood
link |
32:27.000
也就是說
link |
32:29.000
給我一個Gaussian的μ跟σ
link |
32:31.000
我們就可以算這個Gaussian
link |
32:33.000
sample出這79個點的機率
link |
32:35.000
sample出這79個點的機率
link |
32:37.000
那這個likelihood呢
link |
32:39.000
這個可能性呢
link |
32:41.000
我們可以把它寫成這樣
link |
32:43.000
這邊呢
link |
32:45.000
我們也用了L
link |
32:47.000
因為我想不到更好的notation
link |
32:49.000
可能會跟loss function有點混淆
link |
32:51.000
但是likelihood我覺得用別的notation
link |
32:53.000
又很怪
link |
32:55.000
還是用L
link |
32:57.000
那這個L它的input就是Gaussian的μ
link |
32:59.000
跟σ
link |
33:01.000
做的事就把這個μ跟σ
link |
33:03.000
做的事就把這個μ跟σ
link |
33:05.000
帶到這個likelihood的function裡面
link |
33:07.000
那它會告訴我們說
link |
33:09.000
這個μ跟σ
link |
33:11.000
sample出這79個點的機率呢
link |
33:13.000
到底有多大
link |
33:15.000
它的可能性到底有多大
link |
33:17.000
這個東西怎麼算
link |
33:19.000
你就算說
link |
33:21.000
因為所有的79個點
link |
33:23.000
是獨立被sample出來
link |
33:25.000
是獨立被sample出來
link |
33:27.000
所以今天這個Gaussian
link |
33:29.000
sample出這79個點的機率
link |
33:31.000
就是這個Gaussian
link |
33:33.000
sample出第一個點的機率
link |
33:35.000
乘上sample出第二個點的機率
link |
33:37.000
乘上sample出第三個點的機率
link |
33:39.000
一直到sample出第79個點的機率
link |
33:41.000
一直到sample出第79個點的機率
link |
33:43.000
link |
33:45.000
所以我們有79支水系的神奇寶貝
link |
33:47.000
我們知道說
link |
33:49.000
它是從某一個Gaussian被sample出來
link |
33:51.000
我們接下來要做的事情
link |
33:53.000
就是找到
link |
33:55.000
那個Gaussian
link |
33:57.000
找一個Gaussian
link |
33:59.000
找一個Gaussian
link |
34:01.000
那個Gaussian它sample出這79個點的機率
link |
34:03.000
是最大的
link |
34:05.000
或它sample出這79個點的likelihood
link |
34:07.000
是最大的
link |
34:09.000
那這一個Gaussian
link |
34:11.000
我們就當作是
link |
34:13.000
sample出這79個點的Gaussian
link |
34:15.000
那這個
link |
34:17.000
likelihood最大的Gaussian
link |
34:19.000
我們寫作mu star
link |
34:21.000
跟sigma star
link |
34:23.000
所以我們現在要做的事情是這樣
link |
34:25.000
likelihood的function寫作這樣子
link |
34:27.000
那這個每一個f如果你想知道的話
link |
34:29.000
它很複雜就寫成這個樣子
link |
34:31.000
你就把這個x帶進去
link |
34:33.000
然後就算出它
link |
34:35.000
然後呢
link |
34:37.000
我們要找各種不同的
link |
34:39.000
窮取所有的mu
link |
34:41.000
窮取所有的sigma
link |
34:43.000
看哪一個可以讓上面這個likelihood的式子最大
link |
34:45.000
它就是
link |
34:47.000
我們要找的那個mu star
link |
34:49.000
跟sigma star
link |
34:51.000
它就是我們認為最有可能產生這79個點的
link |
34:53.000
mu star跟sigma star
link |
34:55.000
我們用當初這79個點
link |
34:57.000
就從這個mu star跟這個sigma starsample出來
link |
34:59.000
這個東西
link |
35:01.000
怎麼做呢
link |
35:03.000
其實是這樣子
link |
35:05.000
如果你爽的話你就用微分解一下
link |
35:07.000
找那個極值的地方
link |
35:09.000
描解
link |
35:11.000
你也可以背個公式解
link |
35:13.000
描解
link |
35:15.000
哪一個mu star可以讓這個最大呢
link |
35:17.000
結果是很直覺的
link |
35:19.000
就是平均值可以讓它最大
link |
35:21.000
所以你就把
link |
35:23.000
79個x平均起來
link |
35:25.000
79個x
link |
35:27.000
它們都是vector啊
link |
35:29.000
加起來除79
link |
35:31.000
就得到mu star
link |
35:33.000
平均就是mu star
link |
35:35.000
如果你不爽的話
link |
35:37.000
你就把這個式子取個微分
link |
35:39.000
對mu取個微分
link |
35:41.000
找它微分是0的點
link |
35:43.000
解出來就是mu star
link |
35:45.000
sigma star是什麼呢
link |
35:47.000
你先把mu star算出來
link |
35:49.000
先把mu star算出來
link |
35:51.000
然後呢對所有的xn
link |
35:53.000
你都算xn-mu star
link |
35:55.000
xn-mu star
link |
35:57.000
xn-mu star的transpose
link |
35:59.000
也就是算說
link |
36:01.000
這個xn
link |
36:03.000
的這個這個這個
link |
36:05.000
假設xn的mean是mu star的話
link |
36:07.000
它的covariance算出來呢
link |
36:09.000
就是sigma star
link |
36:11.000
如果不爽的話就
link |
36:13.000
把這些值對sigma做微分
link |
36:15.000
對sigma做微分
link |
36:17.000
解它這個
link |
36:19.000
微分是0的點
link |
36:21.000
好那
link |
36:23.000
有了這些以後
link |
36:25.000
有了這些以後
link |
36:27.000
我們真的去算一下
link |
36:29.000
這個是真正的結果
link |
36:31.000
79隻水系的神奇寶貝
link |
36:33.000
79隻水系的寶可夢
link |
36:35.000
算出來的mu
link |
36:37.000
是這樣子
link |
36:39.000
算出來的sigma
link |
36:41.000
是這樣子
link |
36:43.000
也就是說呢
link |
36:45.000
假設這個79隻水系的神奇寶貝
link |
36:47.000
是從個高權sample出來的話
link |
36:49.000
那最有可能sample出這79個點的高權
link |
36:51.000
它的mean是mu1
link |
36:53.000
它的covariance
link |
36:55.000
是sigma1
link |
36:57.000
那如果你看class 2的話
link |
36:59.000
那class 2
link |
37:01.000
是一般系的神奇寶貝
link |
37:03.000
有幾隻呢
link |
37:05.000
有61隻
link |
37:07.000
那我們一樣算它的mean跟算它的variance
link |
37:09.000
那這61隻
link |
37:11.000
一般系的神奇寶貝
link |
37:13.000
最有可能sample它們的高權
link |
37:15.000
它的mean是長這樣
link |
37:17.000
它的variance是長這樣
link |
37:19.000
有了這些以後
link |
37:21.000
就結束了
link |
37:23.000
要做分類的問題了
link |
37:25.000
怎麼做呢
link |
37:27.000
我們說要做分類的問題
link |
37:29.000
我們只要算得出p of class 1
link |
37:31.000
given x
link |
37:33.000
就給我一個x
link |
37:35.000
它是從c1來的機率
link |
37:37.000
那這整項可以寫成這樣子
link |
37:39.000
如果最後我算出來這一項
link |
37:41.000
大於0.5的話
link |
37:43.000
那x就屬於class 1
link |
37:45.000
link |
37:47.000
p of c1
link |
37:49.000
很容易算就這麼回事
link |
37:51.000
p of
link |
37:53.000
x given c1怎麼算呢
link |
37:55.000
我們已經找出
link |
37:57.000
這一個我們已經假設說
link |
37:59.000
這個東西它就是一個高權distribution
link |
38:01.000
這個高權distribution的
link |
38:03.000
mean跟variance
link |
38:05.000
分別就是mu1跟sigma1
link |
38:07.000
這我們剛才已經算出來過了
link |
38:09.000
因為我們剛才已經
link |
38:11.000
根據class 1的
link |
38:13.000
所有的那79隻神奇寶可夢
link |
38:15.000
分布
link |
38:17.000
知道說它們是從一個
link |
38:19.000
mean是mu1
link |
38:21.000
covariance是sigma1的distribution裡面
link |
38:23.000
sample出來的
link |
38:25.000
那如果是這一項呢
link |
38:27.000
p of x given c2
link |
38:29.000
那我們也知道說
link |
38:31.000
它的這個高權distribution
link |
38:33.000
它是從一個mean是mu2
link |
38:35.000
covariance是sigma2的distribution裡面
link |
38:37.000
sample出來
link |
38:39.000
有了這些以後
link |
38:41.000
問題就解決了
link |
38:43.000
那結果怎麼樣呢
link |
38:45.000
我是真的有做的
link |
38:47.000
藍色的點呢
link |
38:49.000
橫軸跟縱軸
link |
38:51.000
分別就是
link |
38:53.000
防禦力跟特殊防禦力
link |
38:55.000
藍色的點呢
link |
38:57.000
是水系的神奇寶可夢的分布
link |
38:59.000
紅色的點呢
link |
39:01.000
是一般系的神奇寶可夢的分布
link |
39:03.000
看到這個結果有點緊張
link |
39:05.000
我覺得好像分不出來
link |
39:07.000
我用人眼看就知道
link |
39:09.000
好像不太ok
link |
39:11.000
那我們就真的計算一下
link |
39:13.000
在這個平面上
link |
39:15.000
在這個二維平面上
link |
39:17.000
每一個點
link |
39:19.000
我都當作一個x
link |
39:21.000
進去我都可以算一個
link |
39:23.000
它是這個c1的機率
link |
39:25.000
這個圖上的每一個點
link |
39:27.000
我都可以算
link |
39:29.000
它是c1的機率
link |
39:31.000
我把這個機率呢
link |
39:33.000
用這個顏色來表示
link |
39:35.000
紅色就代表說呢
link |
39:37.000
在這個區域呢
link |
39:39.000
是class1就是水系神奇寶可夢的機率
link |
39:41.000
是比較大
link |
39:43.000
在這個地方呢
link |
39:45.000
水系神奇寶可夢的機率是比較小
link |
39:47.000
那這很合理嘛
link |
39:49.000
因為水系神奇寶可夢的分布還是在這邊比較多
link |
39:51.000
還是這邊比較多
link |
39:53.000
所以這個地方機率是比較大
link |
39:55.000
好那我們現在
link |
39:57.000
因為我們處理的是分類的問題
link |
39:59.000
我們不是要算這個機率
link |
40:01.000
我們是要output說是哪一類
link |
40:03.000
所以我們說機率大於0.5
link |
40:05.000
就是類別1
link |
40:07.000
也就是紅色這個區間就是類別1
link |
40:09.000
機率小於0.5
link |
40:11.000
就是藍色這個區間
link |
40:13.000
他們就是類別2
link |
40:15.000
就不是類別1
link |
40:17.000
你會發現說
link |
40:19.000
如果你看藍色的點的話
link |
40:21.000
是比較多的藍色的點是在這個紅色的區間
link |
40:23.000
那紅色的點是比較多在這個
link |
40:25.000
藍色的區間
link |
40:27.000
但也有一些到紅色的區間
link |
40:29.000
有點難搞
link |
40:31.000
因為他們中間沒有一個明確的boundary
link |
40:33.000
然後呢
link |
40:35.000
把它apply到testing set上
link |
40:37.000
現在呢
link |
40:39.000
他們的class1和class2的寶可夢
link |
40:41.000
把他們的class1和class2的寶可夢
link |
40:43.000
也掛在這個二維平面上
link |
40:45.000
那boundary呢是一樣
link |
40:47.000
這個boundary是一樣
link |
40:49.000
你會發現說
link |
40:51.000
分的不甚太好
link |
40:53.000
正確率是47%
link |
40:55.000
那我就有點擔心
link |
40:57.000
我看我
link |
40:59.000
這會不會是
link |
41:01.000
有可能是分不出來的
link |
41:03.000
但是我想說我們現在只看了二維的空間
link |
41:05.000
對不對
link |
41:07.000
我最近學習厲害的地方就是
link |
41:09.000
因為我們這樣繼續處理這個問題
link |
41:11.000
所以高維的空間也可以處理的
link |
41:13.000
不是只處理二維的空間而已
link |
41:15.000
所以我們看一下高維的空間
link |
41:17.000
事實上每一隻神奇寶
link |
41:19.000
每一隻寶可夢呢
link |
41:21.000
它是分佈在一個七維的空間裡面
link |
41:23.000
如果只有二維的空間分不出來
link |
41:25.000
可是搞不好七維分的出來啊
link |
41:27.000
就是這個紅色跟藍色
link |
41:29.000
搞不好在高維空間上看到是
link |
41:31.000
一個是這樣一個是這樣
link |
41:33.000
而且是現在從上面往下看
link |
41:35.000
它在七維的空間上是分開的
link |
41:37.000
所以每一個寶可夢呢
link |
41:39.000
它都是用七個數字來表示
link |
41:41.000
所以每一個寶可夢都是存在
link |
41:43.000
七維空間中的一個點
link |
41:45.000
我們一樣可以算
link |
41:47.000
class1和class2在七維空間中
link |
41:49.000
的那些點的
link |
41:51.000
sample出七維空間中那些點的
link |
41:53.000
μ1跟μ2
link |
41:55.000
所以μ1跟μ2都是七維
link |
41:57.000
σ1和σ2
link |
41:59.000
都是
link |
42:01.000
7乘以7的matrix
link |
42:03.000
然後我就做一發
link |
42:05.000
正確率50%
link |
42:07.000
很糟這樣子
link |
42:09.000
大概也是差不多這個樣子
link |
42:11.000
然後就so sad
link |
42:13.000
我們下周再來看看要怎麼改進它
link |
42:15.000
謝謝
link |
42:17.000
link |
42:31.000
各位同學大家好
link |
42:33.000
我們就開始上課吧
link |
42:35.000
上次我們講到哪裡呢
link |
42:37.000
我們講到說
link |
42:39.000
如果我們想要
link |
42:41.000
做寶可夢的
link |
42:43.000
這個這個
link |
42:45.000
屬性的分類的話
link |
42:47.000
我們可以假設一個
link |
42:49.000
機率模型
link |
42:51.000
假設一個機率模型
link |
42:53.000
我們把這個機率模型
link |
42:55.000
裡面猜成
link |
42:57.000
有quire的probability
link |
42:59.000
跟每一個class自己的
link |
43:01.000
distribution
link |
43:03.000
每一個class自己的機率呢
link |
43:05.000
就用Gaussian來
link |
43:07.000
假設它
link |
43:09.000
經過一番運算我們算出每一個class的
link |
43:11.000
quire跟每一個class的
link |
43:13.000
Gaussian distribution
link |
43:15.000
以後呢
link |
43:17.000
做一下
link |
43:19.000
做一下
link |
43:21.000
講到這邊
link |
43:23.000
做一下以後就發現呢
link |
43:25.000
結果壞掉了
link |
43:27.000
就算是我用了全部寶可夢的
link |
43:29.000
7個feature
link |
43:31.000
還是壞掉
link |
43:33.000
那怎麼辦呢
link |
43:39.000
結果壞掉了
link |
43:41.000
那其實呢
link |
43:43.000
當你用
link |
43:45.000
這樣子的probability
link |
43:47.000
model的時候
link |
43:49.000
像我在上一堂課裡面
link |
43:51.000
用的那一種模型
link |
43:53.000
是比較少見
link |
43:55.000
其實你不常看到
link |
43:57.000
給每一個Gaussian
link |
43:59.000
都有自己的mean
link |
44:01.000
跟自己的variance
link |
44:03.000
給每一個Gaussian都有自己的mean
link |
44:05.000
跟自己的variance
link |
44:07.000
有一個μ1
link |
44:09.000
有一個σ1
link |
44:11.000
有一個μ2
link |
44:13.000
比較常見的做法是
link |
44:15.000
不同的class可以share
link |
44:17.000
同一個covariance
link |
44:19.000
的matrix
link |
44:21.000
就首先你想想看covariance
link |
44:23.000
matrix它其實是跟你
link |
44:25.000
input的feature size
link |
44:27.000
是乘這個
link |
44:29.000
平方乘正比的
link |
44:31.000
所以covariance matrix
link |
44:33.000
當你的feature size很大的時候
link |
44:35.000
它的增長呢其實可以是
link |
44:37.000
非常快
link |
44:39.000
所以在這個情況下呢
link |
44:41.000
如果你把兩個不同的Gaussian都給它
link |
44:43.000
不同的covariance matrix
link |
44:45.000
那你的model參數可會太多
link |
44:47.000
model參數多
link |
44:49.000
它就variance就大
link |
44:51.000
也就是容易overfitting
link |
44:53.000
所以呢如果我們要有效
link |
44:55.000
減少參數的話
link |
44:57.000
我們可以給這兩個class
link |
44:59.000
就是屬於水系的神奇寶貝
link |
45:01.000
和屬於一般系的神奇寶貝
link |
45:03.000
他們的這個
link |
45:05.000
描述他們這兩個class
link |
45:07.000
的這些feature分佈的Gaussian
link |
45:09.000
故意給他們
link |
45:11.000
同樣的covariance matrix
link |
45:13.000
強迫他們共用
link |
45:15.000
同一組covariance matrix
link |
45:17.000
這樣子呢你就只需要
link |
45:19.000
比較少的parameter
link |
45:21.000
就可以來model
link |
45:23.000
這一個模型了
link |
45:25.000
這是什麼意思呢
link |
45:27.000
也就是說現在
link |
45:29.000
我們有79支
link |
45:31.000
水系的寶可夢
link |
45:33.000
我們假設
link |
45:35.000
它是從一個μ1
link |
45:37.000
這個covariance matrix
link |
45:39.000
是σ的Gaussian
link |
45:41.000
所generate出來
link |
45:43.000
那另外
link |
45:45.000
有這個這邊是多少支呢
link |
45:47.000
這邊應該是61支
link |
45:49.000
編號從
link |
45:51.000
我們這邊給它的編號
link |
45:53.000
從80到140
link |
45:55.000
另外61支是屬於一般系的寶可夢
link |
45:57.000
我們假設
link |
45:59.000
這些寶可夢他們的屬性
link |
46:01.000
的這個分佈呢
link |
46:03.000
是從另外一個Gaussian所generate出來
link |
46:05.000
另外一個Gaussian
link |
46:07.000
它的mean是μ2
link |
46:09.000
但是它的covariance matrix
link |
46:11.000
跟generate前一個
link |
46:13.000
generate class 1
link |
46:15.000
跟generate水屬性的寶可夢
link |
46:17.000
他們用的covariance matrix
link |
46:19.000
是同一個
link |
46:21.000
這兩個class他們share同一個
link |
46:23.000
covariance matrix
link |
46:25.000
如果這樣子的話
link |
46:27.000
你怎麼計算likelihood呢
link |
46:29.000
如果你現在要計算
link |
46:31.000
某一組μ1
link |
46:33.000
μ2和σ
link |
46:35.000
generate這總共兩個class合起來
link |
46:37.000
140比
link |
46:39.000
β的可能性的話
link |
46:41.000
你就
link |
46:43.000
像下面這樣計算
link |
46:45.000
這個
link |
46:47.000
這個計算方法就是
link |
46:49.000
計算如果你今天用μ1
link |
46:51.000
跟σ1產生
link |
46:53.000
x1的機率
link |
46:55.000
乘上用μ1跟σ1產生
link |
46:57.000
x2的機率
link |
46:59.000
到用μ1跟
link |
47:01.000
σ1
link |
47:03.000
這個不是σ1
link |
47:05.000
這個是只有σ1而已
link |
47:07.000
因為這兩個class是共用同一個covariance matrix
link |
47:09.000
現在呢
link |
47:11.000
用μ1跟σ1產生
link |
47:13.000
x1
link |
47:15.000
到用μ1跟σ1產生
link |
47:17.000
x79
link |
47:19.000
如果是第一個class的
link |
47:21.000
x呢
link |
47:23.000
用這個方法來產生
link |
47:25.000
第二個class的x呢
link |
47:27.000
你用μ2跟σ來產生
link |
47:29.000
x80
link |
47:31.000
用μ2跟σ來產生x81
link |
47:33.000
到用μ2和σ產生
link |
47:35.000
x140
link |
47:37.000
那這個式子裡面呢
link |
47:39.000
μ1μ2
link |
47:41.000
你要怎麼算μ1μ2呢
link |
47:43.000
你要怎麼找一個μ1μ2跟σ
link |
47:45.000
讓這個likelihood的function最大的
link |
47:47.000
那μ1μ2的算法
link |
47:49.000
跟我們之前沒有把
link |
47:51.000
class1和class2的covariance
link |
47:53.000
tie在一起的時候
link |
47:55.000
那個算式呢
link |
47:57.000
是一模一樣的
link |
47:59.000
你就只要把class1裡面的x
link |
48:01.000
平均起來就變μ1
link |
48:03.000
class2裡面的x平均起來就變μ2
link |
48:05.000
唯一不一樣的呢
link |
48:07.000
link |
48:09.000
我們要把它
link |
48:11.000
按接受
link |
48:13.000
link |
48:15.000
link |
48:17.000
那唯一不一樣的呢
link |
48:19.000
link |
48:21.000
σ
link |
48:23.000
link |
48:25.000
唯一不一樣的是σ
link |
48:27.000
因為我們現在σ
link |
48:29.000
要同時考慮這兩個class
link |
48:31.000
所以它當然是不一樣
link |
48:33.000
那這個σ的式子應該長什麼樣子呢
link |
48:35.000
這個σ的式子呢
link |
48:37.000
這個結果非常的直觀
link |
48:39.000
那你可以
link |
48:41.000
如果你想要看它的對照的話
link |
48:43.000
我這邊引用的就是
link |
48:45.000
B-Sharp這個角色數
link |
48:47.000
以後如果需要引用的話
link |
48:49.000
我會盡量引用B-Sharp
link |
48:51.000
為什麼呢
link |
48:53.000
因為它在網路上有available的版本
link |
48:55.000
link |
48:57.000
那個
link |
48:59.000
這個σ應該長什麼樣子呢
link |
49:01.000
這結果非常的直觀
link |
49:03.000
你就把原來
link |
49:05.000
我們根據這些data
link |
49:07.000
所算出來的covariance matrix
link |
49:09.000
link |
49:11.000
根據這些data
link |
49:13.000
所算出來的covariance matrix σ2
link |
49:15.000
weighted by
link |
49:17.000
element的數目
link |
49:19.000
你這個class1有79個
link |
49:21.000
所以你就把σ1乘以79
link |
49:23.000
class2有
link |
49:25.000
61個
link |
49:27.000
你就把σ2乘以61
link |
49:29.000
然後再取平均
link |
49:31.000
原來這兩個高選
link |
49:33.000
各自算的covariance matrix
link |
49:35.000
就會得到
link |
49:37.000
如果你要求他們用
link |
49:39.000
共同的高選的時候
link |
49:41.000
所得到的covariance matrix
link |
49:43.000
link |
49:45.000
假設我們仍然是用
link |
49:47.000
兩個feature
link |
49:49.000
用defense跟
link |
49:51.000
special defense的話
link |
49:53.000
後來我發現我這兩個
link |
49:55.000
這個example選的不是很好
link |
49:57.000
因為如果你看defense跟special defense
link |
49:59.000
你沒有辦法把它水系跟
link |
50:01.000
這個一般系的水系反而分開
link |
50:03.000
後來我研究了一下我覺得
link |
50:05.000
好像用這個
link |
50:07.000
一般攻擊力和一般防禦力合起來的
link |
50:09.000
就好像還可以分的滿開的
link |
50:11.000
這樣子
link |
50:13.000
你怎麼會知道這件事呢
link |
50:15.000
我又不是大目博士
link |
50:17.000
link |
50:19.000
如果我們今天用
link |
50:21.000
我們今天共用covariance matrix
link |
50:23.000
的話會發生什麼事呢
link |
50:25.000
在沒有共用之前class1和class2的
link |
50:27.000
boundary是這一條
link |
50:29.000
是個曲線
link |
50:31.000
如果我們今天共用同樣的covariance matrix
link |
50:33.000
的話
link |
50:35.000
你會發現說他們的boundary
link |
50:37.000
變成是
link |
50:39.000
一個直線
link |
50:41.000
假設你把這兩個不同的class
link |
50:43.000
強迫他們的covariance matrix
link |
50:45.000
必須要共用同一個的話
link |
50:47.000
那你今天在分類的時候
link |
50:49.000
你的boundary就會變成
link |
50:51.000
是一條直線
link |
50:53.000
所以像這樣子的model
link |
50:55.000
我們也稱之他為linear
link |
50:57.000
的model
link |
50:59.000
高全不是linear的
link |
51:01.000
但是他的分兩個class的
link |
51:03.000
那個boundary是linear
link |
51:05.000
所以這樣的model我們也稱他為
link |
51:07.000
linear的model
link |
51:09.000
但是如果你今天
link |
51:11.000
兩個class你用不同的covariance
link |
51:13.000
matrix的話他們就不是linear
link |
51:15.000
的model
link |
51:17.000
如果我們考慮所有的feature會怎麼樣呢
link |
51:19.000
如果我們考慮所有的feature
link |
51:21.000
的話原來我們只得到
link |
51:23.000
54%的正確率
link |
51:25.000
但是神奇的是當我們共用covariance
link |
51:27.000
matrix的時候就得到73%的正確率
link |
51:29.000
顯然是有分對東西的
link |
51:31.000
那你說
link |
51:33.000
為什麼會做到這樣子呢
link |
51:35.000
其實這就很難分析了
link |
51:37.000
這是在高維空間中發生的事情
link |
51:39.000
是在七維空間中發生的事情
link |
51:41.000
是在七維空間中發生的事情
link |
51:43.000
我們很難知道說這個boundary
link |
51:45.000
是怎麼切的
link |
51:47.000
但是這個就是machine learning
link |
51:49.000
fantasy的地方
link |
51:51.000
就是我們沒有辦法
link |
51:53.000
人沒有辦法知道怎麼做
link |
51:55.000
但是machine可以幫我們做出來
link |
51:57.000
如果你今天feature很少二維
link |
51:59.000
feature人一看就知道怎麼做
link |
52:01.000
那其實你根本就用不上machine learning
link |
52:03.000
對不對
link |
52:05.000
73%的正確率
link |
52:07.000
link |
52:09.000
link |
52:11.000
我們來回顧一下
link |
52:13.000
我們講的這個
link |
52:15.000
機率的模型
link |
52:17.000
那我們講說machine learning
link |
52:19.000
就是三個step
link |
52:21.000
這個機率模型呢
link |
52:23.000
它其實也是三個step
link |
52:25.000
首先你有一個model
link |
52:27.000
這個model就是你的function set
link |
52:29.000
這個function set裡面的
link |
52:31.000
function都長什麼樣子呢
link |
52:33.000
這個function set裡面的function
link |
52:35.000
都長下面這個樣子
link |
52:37.000
input一個x
link |
52:39.000
我們有
link |
52:41.000
這個class1的
link |
52:43.000
prior probability class2的prior probability
link |
52:45.000
class1產生x的
link |
52:47.000
probability distribution
link |
52:49.000
class2產生x的probability distribution
link |
52:51.000
這些prior probability
link |
52:53.000
和這些
link |
52:55.000
probability distribution
link |
52:57.000
就是model的
link |
52:59.000
參數ok
link |
53:01.000
不同的probability distribution
link |
53:03.000
你就得到
link |
53:05.000
不同的function
link |
53:07.000
那你把這些不同的probability distribution
link |
53:09.000
那你把這些不同的probability distribution
link |
53:11.000
就是高選你選不同的mean
link |
53:13.000
跟不同的covariance metric
link |
53:15.000
你就得到不同的probability distribution
link |
53:17.000
你把這些probability distribution集合起來
link |
53:19.000
就是一個model
link |
53:21.000
就是一個function set
link |
53:23.000
那怎麼決定是哪一個class呢
link |
53:25.000
如果p of c1 given x
link |
53:27.000
這個posterior probability
link |
53:29.000
0.5的話就output class1
link |
53:31.000
反之就output class2
link |
53:33.000
這個是function的樣子
link |
53:35.000
接下來我們要
link |
53:37.000
找evaluate
link |
53:39.000
function set裡面
link |
53:41.000
每一個function的好壞
link |
53:43.000
那怎麼evaluate呢
link |
53:45.000
在這個機率的模型裡面
link |
53:47.000
假設我們今天使用高選的話
link |
53:49.000
那我們evaluate
link |
53:51.000
我們要evaluate的對象其實就是
link |
53:53.000
高選裡面的參數
link |
53:55.000
也就是mean跟covariance metric
link |
53:57.000
那今天呢
link |
53:59.000
我們就是說如果一個mean
link |
54:01.000
跟一個covariance metric
link |
54:03.000
你用這些參數
link |
54:05.000
來定義你的probability distribution
link |
54:07.000
而它可以
link |
54:09.000
它的這個產生
link |
54:11.000
我們的training data的likelihood
link |
54:13.000
就是
link |
54:15.000
這組參數的好壞
link |
54:17.000
所以我們要做的事情就是
link |
54:19.000
找一個probability distribution
link |
54:21.000
它可以最大化呢
link |
54:23.000
產生這些data的
link |
54:25.000
likelihood
link |
54:27.000
這個是定義function的好壞
link |
54:29.000
定義function的好壞
link |
54:31.000
定義一組參數的好壞
link |
54:33.000
那最後怎麼找出一組最好的參數呢
link |
54:35.000
就看看前面的投影片
link |
54:37.000
它的結果呢
link |
54:39.000
是很trivial
link |
54:41.000
那有人就會問說
link |
54:43.000
為什麼要用高選
link |
54:45.000
你為什麼不選別的
link |
54:47.000
簡單的答案就是
link |
54:49.000
如果我選了別的機率模型
link |
54:51.000
你也會問我同樣的問題
link |
54:53.000
其實你
link |
54:55.000
永遠可以選一個你自己喜歡的
link |
54:57.000
這個probability distribution
link |
54:59.000
ok
link |
55:01.000
這個是你自己決定的
link |
55:03.000
這個就不是
link |
55:05.000
不是人工智慧
link |
55:07.000
是你憑人的智慧去決定說
link |
55:09.000
你要選擇哪一個機率模型
link |
55:11.000
是比較適合的
link |
55:13.000
那你選擇比較簡單的機率模型
link |
55:15.000
參數比較少的
link |
55:17.000
那你的bias就大variance就小
link |
55:19.000
你選擇複雜的
link |
55:21.000
那你就可能需要用depth來決定
link |
55:23.000
找怎麼樣的機率模型
link |
55:25.000
是比較好的
link |
55:27.000
那我們
link |
55:29.000
有一種常見的假設是這樣
link |
55:31.000
假設我們的這個x
link |
55:33.000
我們知道x它是由
link |
55:35.000
一組feature來描述它
link |
55:37.000
像剛才在寶可夢的例子裡面
link |
55:39.000
x可以有7個數字
link |
55:41.000
7個參數
link |
55:43.000
那我們假設呢
link |
55:45.000
每一個dimension
link |
55:47.000
它的
link |
55:49.000
它產生的機率
link |
55:51.000
它從機率模型產生出來的機率
link |
55:53.000
是independent
link |
55:55.000
所以這個x產生的機率
link |
55:57.000
可以拆解成
link |
55:59.000
x1產生的機率
link |
56:01.000
乘上x2產生的機率
link |
56:03.000
乘上xk產生的機率
link |
56:05.000
一直到乘上xk
link |
56:07.000
如果我們假設
link |
56:09.000
這些機率分佈他們是independent的話
link |
56:11.000
每個dimension機率分佈是independent的話
link |
56:13.000
我們可以做
link |
56:15.000
這樣子的假設
link |
56:17.000
好那
link |
56:19.000
今天你可以說
link |
56:21.000
每一個機率
link |
56:23.000
就是x1產生的機率
link |
56:25.000
x2產生的機率
link |
56:27.000
xk產生的機率
link |
56:29.000
它們分別都是一維的Gaussian
link |
56:31.000
一維的Gaussian大家知道意思嗎
link |
56:33.000
如果你這樣假設的話
link |
56:35.000
等於是說
link |
56:37.000
我們之前討論的都是multivariable的Gaussian
link |
56:39.000
都是多維度的Gaussian
link |
56:41.000
如果你假設說
link |
56:43.000
每一個dimension
link |
56:45.000
在model它們都是一維的Gaussian的話
link |
56:47.000
意思就是說
link |
56:49.000
原來那個高維度的Gaussian
link |
56:51.000
它的covariance metric
link |
56:53.000
變成是diagonal的
link |
56:55.000
在不是對角線的地方
link |
56:57.000
值都是0只有對角線的地方有值
link |
56:59.000
這樣你就可以更
link |
57:01.000
減少你需要用的參數量
link |
57:03.000
你就可以得到一個更簡單的模型
link |
57:05.000
那我有試一下這個
link |
57:07.000
試一下這樣結果是壞掉的
link |
57:09.000
可以看這個模型太簡單了
link |
57:11.000
model這個不同的
link |
57:13.000
feature間的covariance
link |
57:15.000
我看也是必要的
link |
57:17.000
比如說戰鬥力跟防禦力其實是有正相關
link |
57:19.000
model它們之間的covariance
link |
57:21.000
看來是必要的
link |
57:23.000
那你也不一定要用Gaussian
link |
57:25.000
有很多時候你憑直覺就知道
link |
57:27.000
不該用Gaussian
link |
57:29.000
比如說今天假設你有
link |
57:31.000
某個feature它是binary的
link |
57:33.000
有某個feature它代表的是
link |
57:35.000
是或不是
link |
57:37.000
或者它的output就是
link |
57:39.000
0跟1這樣
link |
57:41.000
比如說有一隻寶可夢
link |
57:43.000
它是神獸還是不是神獸
link |
57:45.000
之類的
link |
57:47.000
這個就是binary的feature
link |
57:49.000
如果是binary的feature的話
link |
57:51.000
你說它是用Gaussian
link |
57:53.000
機率產生的
link |
57:55.000
你說它是用Gaussian distribution產生的
link |
57:57.000
就太自欺欺人了
link |
57:59.000
不太可能是用Gaussian所產生的
link |
58:01.000
這時候你就會假設別人的distribution
link |
58:03.000
比如說假設你的feature是binary的
link |
58:05.000
它output要嘛就是0要嘛就是1
link |
58:07.000
這時候你可能就會選擇
link |
58:09.000
它是一個binary的distribution
link |
58:11.000
而不是一個Gaussian的distribution
link |
58:15.000
如果我們今天呢
link |
58:17.000
假設所有的feature
link |
58:19.000
它都是
link |
58:21.000
independent產生的
link |
58:23.000
我們不model
link |
58:25.000
feature和feature之間covariance的關係
link |
58:27.000
那這種
link |
58:29.000
我們用這種方法做分類的話
link |
58:31.000
我們叫做用naive based
link |
58:33.000
的classifier
link |
58:35.000
它前面有一個naive
link |
58:37.000
因為它真的很naive
link |
58:39.000
它真的很簡單
link |
58:41.000
你可能會常常聽到有人說
link |
58:43.000
naive based classifier很強
link |
58:45.000
其實它強不強就dependent
link |
58:47.000
你的假設是否
link |
58:49.000
是精準的
link |
58:51.000
如果你今天不同的
link |
58:53.000
你假設不同的dimension
link |
58:55.000
他們之間是independent這件事情是很
link |
58:57.000
切合實際的
link |
58:59.000
naive based classifier它確實就可以
link |
59:01.000
提供給你很好的performance
link |
59:03.000
但如果這個假設其實是很破不成立的話
link |
59:05.000
那其實naive based classifier
link |
59:07.000
它的bias就太大了
link |
59:09.000
它就不是一個好的classifier
link |
59:11.000
好接下來呢
link |
59:13.000
我們要做的分析是
link |
59:15.000
我們要分析這一項posterior probability
link |
59:17.000
把它們做一些
link |
59:19.000
整理以後
link |
59:21.000
我們會發現一個有趣的現象
link |
59:23.000
好我們這一項呢
link |
59:25.000
大家應該都沒有什麼問題
link |
59:27.000
我們把它們上下同層
link |
59:29.000
分子
link |
59:31.000
上下同處分子
link |
59:33.000
都同處p of x given c1
link |
59:35.000
乘上p of c1
link |
59:37.000
所以分子的地方就變1
link |
59:39.000
分母的地方就變成1加
link |
59:41.000
p of x given c2
link |
59:43.000
乘上p of c2
link |
59:45.000
除以p of x given c1
link |
59:47.000
那我們假設
link |
59:49.000
這一項
link |
59:51.000
這一項
link |
59:53.000
link |
59:55.000
log以後取natural log以後
link |
59:57.000
它等於z
link |
59:59.000
我們假設這一項取natural log以後它等於z
link |
01:00:01.000
那我們就可以把
link |
01:00:03.000
這個posterior probability
link |
01:00:05.000
更進一步寫成
link |
01:00:07.000
1除以1加exponential的負z次方
link |
01:00:09.000
這個
link |
01:00:11.000
這個z呢是這一項
link |
01:00:13.000
ok那你把這一項放進去
link |
01:00:15.000
乘負號
link |
01:00:17.000
就是上下顛倒再取exponential
link |
01:00:19.000
把exponential跟natural log
link |
01:00:21.000
抵消你就得到這一項
link |
01:00:23.000
然後你就得到posterior probability
link |
01:00:25.000
好相信這個大家應該沒有什麼問題
link |
01:00:27.000
這個function
link |
01:00:29.000
它的input是z
link |
01:00:31.000
它這個function叫做
link |
01:00:33.000
sigmoid function
link |
01:00:35.000
如果你把它這個
link |
01:00:37.000
output對z的關係做圖的話
link |
01:00:39.000
你會發現是這個樣子
link |
01:00:41.000
也就是z呢
link |
01:00:43.000
趨近無窮大的時候
link |
01:00:45.000
它的output趨近於1
link |
01:00:47.000
z呢趨近負窮大的時候
link |
01:00:49.000
它的output趨近於0
link |
01:00:51.000
好那接下來我們要做的事情是
link |
01:00:53.000
我們要把
link |
01:00:55.000
這個z呢算一下
link |
01:00:57.000
它到底應該
link |
01:00:59.000
長什麼樣子
link |
01:01:01.000
我們來算一下這個z呢
link |
01:01:03.000
它應該長什麼樣子
link |
01:01:05.000
接下來這邊呢是數學比較多的
link |
01:01:07.000
如果你覺得這個無聊的話呢
link |
01:01:09.000
你就睡一下等一下聽一下結論就好
link |
01:01:11.000
好那這個
link |
01:01:13.000
z應該長什麼樣子呢
link |
01:01:15.000
我們已經知道說posterior probability
link |
01:01:17.000
它是一個z的sigmoid function
link |
01:01:19.000
z長這個樣子
link |
01:01:21.000
z長什麼樣子
link |
01:01:23.000
我們把這個相乘的部分
link |
01:01:25.000
變成neutral log
link |
01:01:27.000
所以就變成相加
link |
01:01:29.000
那p of c1除p of c2
link |
01:01:31.000
是什麼呢
link |
01:01:33.000
這個我們都知道說
link |
01:01:35.000
這邊n1呢代表class1
link |
01:01:37.000
它在training data裡面出現的數目
link |
01:01:39.000
n2代表class2
link |
01:01:41.000
它在training data裡面出現的
link |
01:01:43.000
次數
link |
01:01:45.000
所以p of c1就是n1除以n1加n2
link |
01:01:47.000
p of c2就是n2除以n1加n2
link |
01:01:49.000
分母立方消掉所以得到
link |
01:01:51.000
n1除以n2
link |
01:01:53.000
好那p of x1
link |
01:01:55.000
跟c1是什麼呢
link |
01:01:57.000
我們說它是一個
link |
01:01:59.000
probability distribution
link |
01:02:01.000
這個Gaussian的probability distribution
link |
01:02:03.000
p of x1跟c2它是
link |
01:02:05.000
另一個Gaussian的probability distribution
link |
01:02:07.000
如果我們
link |
01:02:09.000
把它相除
link |
01:02:11.000
我們把這兩個Gaussian
link |
01:02:13.000
probability相除再取neutral log
link |
01:02:15.000
會得到什麼式子呢
link |
01:02:17.000
就得到這樣子
link |
01:02:19.000
這個放在上面
link |
01:02:21.000
這個放在下面
link |
01:02:23.000
這一項跟distribution
link |
01:02:25.000
是沒關係的
link |
01:02:27.000
把它消掉
link |
01:02:29.000
然後這一項呢
link |
01:02:31.000
把它提出來
link |
01:02:33.000
相乘變相加
link |
01:02:35.000
這一項把它提出來
link |
01:02:37.000
然後這個exponential的部分呢
link |
01:02:39.000
相除
link |
01:02:41.000
等於exponential裡面相減
link |
01:02:43.000
這個也沒什麼特別的
link |
01:02:45.000
把它們分開
link |
01:02:47.000
相乘變相加
link |
01:02:49.000
得到這樣子
link |
01:02:51.000
link |
01:02:53.000
那接下來呢
link |
01:02:55.000
接下來你就
link |
01:02:57.000
做一些運算
link |
01:02:59.000
把它展開
link |
01:03:01.000
我想要知道說x-mu1
link |
01:03:03.000
transpose乘上
link |
01:03:05.000
sigma1的inverse再乘上x-mu1
link |
01:03:07.000
它應該長什麼樣子
link |
01:03:09.000
把它展開
link |
01:03:11.000
好所以
link |
01:03:13.000
這個乘這個乘這個
link |
01:03:15.000
就得到它
link |
01:03:17.000
這個乘這個乘這個就得到它
link |
01:03:19.000
這個乘這個乘這個就得到它
link |
01:03:21.000
這個乘這個乘這個就得到它
link |
01:03:23.000
好那中間這兩項呢
link |
01:03:25.000
是可以合併的
link |
01:03:27.000
它們其實是一樣的
link |
01:03:29.000
所以就得到這樣子的式子
link |
01:03:31.000
所以
link |
01:03:33.000
這一項展開就變成這樣
link |
01:03:35.000
那這一項展開呢
link |
01:03:37.000
這一項展開呢
link |
01:03:39.000
因為這個跟這個
link |
01:03:41.000
只差了一個
link |
01:03:43.000
你是把1換成2嘛
link |
01:03:45.000
下面這個式子的1都換成2
link |
01:03:47.000
就行了
link |
01:03:49.000
好所以呢
link |
01:03:51.000
這個z這一項呢
link |
01:03:53.000
它寫成這樣
link |
01:03:55.000
前面呢是
link |
01:03:57.000
這個跟sigma1
link |
01:03:59.000
和sigma2有關
link |
01:04:01.000
前面呢是sigma1和sigma2的
link |
01:04:03.000
determinant相除
link |
01:04:05.000
後面呢
link |
01:04:07.000
把-1
link |
01:04:09.000
乘進去
link |
01:04:11.000
把-1乘這一項
link |
01:04:13.000
你得到這一項
link |
01:04:15.000
把-1乘進去
link |
01:04:17.000
把-1乘這一項
link |
01:04:19.000
你得到這一項
link |
01:04:21.000
然後最後呢
link |
01:04:23.000
再加上這個機率
link |
01:04:25.000
你就知道z呢
link |
01:04:27.000
是多少了
link |
01:04:29.000
那如果你剛才沒有聽得很懂沒有關係
link |
01:04:31.000
那其實沒有特別重要
link |
01:04:33.000
反正就是經過一番運算以後
link |
01:04:35.000
我們知道z長得很複雜
link |
01:04:37.000
長這個樣子
link |
01:04:39.000
但是我們剛才有說過呢
link |
01:04:41.000
一般我們會假設covariance matrix
link |
01:04:43.000
是共用的
link |
01:04:45.000
所以sigma1等於sigma2
link |
01:04:47.000
等於sigma2
link |
01:04:49.000
在這個情況下呢
link |
01:04:51.000
我們就可以簡化上面這個式子
link |
01:04:53.000
我們就可以簡化成
link |
01:04:55.000
這個sigma2的determinant
link |
01:04:57.000
所以sigma1的determinant
link |
01:04:59.000
如果sigma1等於sigma2的話
link |
01:05:01.000
它就可以消掉
link |
01:05:03.000
這邊有一項
link |
01:05:05.000
負1x2t sigma1 inverse x
link |
01:05:07.000
這邊有一項
link |
01:05:09.000
負1t sigma2 inverse x
link |
01:05:11.000
那這個sigma1
link |
01:05:13.000
和sigma2如果是一樣的話呢
link |
01:05:15.000
它們也可以消掉
link |
01:05:17.000
所以我們之後得到的結果呢
link |
01:05:19.000
就只剩下123455項
link |
01:05:21.000
就只剩下123455項
link |
01:05:23.000
然後呢
link |
01:05:25.000
你會發現說
link |
01:05:27.000
只有這一項
link |
01:05:29.000
跟這一項是跟x有關的
link |
01:05:31.000
是跟x有關的
link |
01:05:33.000
這三項是跟x無關的
link |
01:05:35.000
這兩項
link |
01:05:37.000
全部都有乘上x
link |
01:05:39.000
所以先把這兩項呢
link |
01:05:41.000
集合起來
link |
01:05:43.000
把它的x提出來
link |
01:05:45.000
所以這兩項
link |
01:05:47.000
集合起來
link |
01:05:49.000
就變成了
link |
01:05:51.000
因為sigma1等於sigma2
link |
01:05:53.000
那x呢
link |
01:05:55.000
都有乘上x
link |
01:05:57.000
所以sigma跟x可以提出來
link |
01:05:59.000
變成sigma inverse x
link |
01:06:01.000
這邊有μ1的transpose
link |
01:06:03.000
這邊有μ2的transpose
link |
01:06:05.000
然後這一項跟這一項合起來
link |
01:06:07.000
就變成μ1減μ2的transpose
link |
01:06:09.000
乘sigma inverse乘上x
link |
01:06:11.000
剩下這三項呢就原封不動
link |
01:06:13.000
把它排在後面
link |
01:06:15.000
接下來呢我們假設說
link |
01:06:17.000
這個東西
link |
01:06:19.000
μ1減μ2的transpose
link |
01:06:23.000
乘sigma的inverse
link |
01:06:25.000
它合起來就是一個vector
link |
01:06:27.000
就假設你把μ1算出來
link |
01:06:29.000
把μ2算出來
link |
01:06:31.000
把sigma算出來
link |
01:06:33.000
把sigma做inverse
link |
01:06:35.000
把μ1減μ2乘上x
link |
01:06:37.000
那你就得到一個vector
link |
01:06:39.000
把那個vector呢
link |
01:06:41.000
叫做w的transpose
link |
01:06:43.000
後面這一項
link |
01:06:45.000
你可能覺得看起來很可怕
link |
01:06:47.000
但它其實很簡單
link |
01:06:49.000
因為我們從這邊開始看
link |
01:06:51.000
這是一個
link |
01:06:53.000
這是一個vector
link |
01:06:55.000
這是一個matrix
link |
01:06:57.000
這是一個vector
link |
01:06:59.000
把它們三個乘起來以後
link |
01:07:01.000
了解了它其實不是什麼複雜的東西
link |
01:07:03.000
它就是個數字
link |
01:07:05.000
你把這一項
link |
01:07:07.000
乘這一項乘這一項
link |
01:07:09.000
你把這個vector的transpose
link |
01:07:11.000
乘上一個matrix的
link |
01:07:13.000
這個inverse再乘上一個vector
link |
01:07:15.000
它也是一個scalar
link |
01:07:17.000
那這個log n1除以n2
link |
01:07:19.000
它也是scalar
link |
01:07:21.000
所以你只是把這三個數字加起來而已
link |
01:07:23.000
它們就是個數字
link |
01:07:25.000
所以我們就拿b呢來代表這個
link |
01:07:27.000
看起來很複雜的數字
link |
01:07:29.000
mew1 mew2跟sigma
link |
01:07:31.000
那這一項其實就是個vector
link |
01:07:33.000
這一項其實
link |
01:07:35.000
就是一個scalar
link |
01:07:37.000
它就是一個數字而已
link |
01:07:39.000
所以呢
link |
01:07:41.000
我們知道說
link |
01:07:43.000
我們可以把posterior probability
link |
01:07:45.000
這項機率呢寫成sigma of z
link |
01:07:47.000
z呢又可以寫成這樣子
link |
01:07:49.000
所以我們其實可以
link |
01:07:51.000
把這個posterior probability呢
link |
01:07:53.000
就簡單寫成
link |
01:07:55.000
sigma of
link |
01:07:57.000
這個w跟x
link |
01:07:59.000
的inner product再加上
link |
01:08:01.000
一個這個
link |
01:08:03.000
常數b
link |
01:08:05.000
我們可以把z呢寫成
link |
01:08:07.000
w跟x的inner product
link |
01:08:09.000
再加上一個常數b
link |
01:08:11.000
所以我們可以
link |
01:08:13.000
其實posterior probability它根本就
link |
01:08:15.000
沒有這麼複雜
link |
01:08:17.000
它寫起來呢就是這個樣子
link |
01:08:19.000
所以從這個式子你就可以
link |
01:08:21.000
看出來說
link |
01:08:23.000
為什麼我們今天把
link |
01:08:25.000
sigma1跟sigma2
link |
01:08:27.000
共用的時候假設sigma1
link |
01:08:29.000
必須等於sigma2的時候
link |
01:08:31.000
你的boundary你的class1和class2
link |
01:08:33.000
的boundary會是linear
link |
01:08:35.000
你從這個式子呢
link |
01:08:37.000
就可以很明顯的看出這件事情
link |
01:08:39.000
那在
link |
01:08:41.000
generative model裡面
link |
01:08:43.000
我們做的事情是
link |
01:08:45.000
我們用
link |
01:08:47.000
某些方法去找出
link |
01:08:49.000
上面這個式子裡面的
link |
01:08:51.000
n1 n2 mew1 mew2跟sigma
link |
01:08:53.000
找出這些以後你就算出w
link |
01:08:55.000
就算出b
link |
01:08:57.000
你把它代進這個式子
link |
01:08:59.000
你就可以算幾率
link |
01:09:01.000
但是
link |
01:09:03.000
如果你看到這個式子的話
link |
01:09:05.000
你可能就可以有一個直覺的想法
link |
01:09:07.000
為什麼要這麼麻煩呢
link |
01:09:09.000
假設我們最終的目標
link |
01:09:11.000
都是要找一個vector w
link |
01:09:13.000
都是要找一個constant b
link |
01:09:15.000
我們何必先去
link |
01:09:17.000
搞個幾率
link |
01:09:19.000
算出一些mew啊
link |
01:09:21.000
然後再把它
link |
01:09:23.000
搞起來再得到w跟b
link |
01:09:25.000
這不是捨近求遠嗎
link |
01:09:27.000
你做一件你根本就不需要做的事
link |
01:09:29.000
因為你最後你只需要做w跟b嘛
link |
01:09:31.000
所以我們能不能夠
link |
01:09:33.000
直接把w跟b找出來
link |
01:09:35.000
這個呢
link |
01:09:37.000
就是我們下一份投影片要講的東西
link |
01:09:39.000
這個就是老實說