back to index

Structured Learning 3: Structured SVM


link |
00:01.000
好,我們現在來上課啦。
link |
00:04.000
我們今天要講這個Structure Support Vector Machine。
link |
00:09.000
那我知道上一次上課結束前,還有一部分的投影片沒有講。
link |
00:14.000
那一部分呢,我們就併到Structure Support Vector Machine來講。
link |
00:19.000
那我不知道有多少人知道什麼是Support Vector Machine啦。
link |
00:24.000
那我是假設你其實不知道什麼是Support Vector Machine。
link |
00:28.000
那沒有關係啦,你聽完這門課以後呢,
link |
00:30.000
你會知道什麼是Structure Support Vector Machine,
link |
00:33.000
但你還是不知道什麼是Support Vector Machine。
link |
00:37.000
那沒有關係這樣子。
link |
00:39.000
你知道什麼是Structure Support Vector Machine,
link |
00:42.000
那你再反過頭來去了解什麼是Support Vector Machine,其實是比較容易的。
link |
00:48.000
好,那這個是公告。
link |
00:50.000
我突然發現說就是作業二的Deadline正好是期中考中,
link |
00:54.000
那我也不要讓大家太累,所以我們作業二的Deadline就延後一週。
link |
00:59.000
所以如果是作業二的Deadline延後一週的話,那作業二就變成11月20號交。
link |
01:04.000
那作業三公佈的日期和Deadline不變,
link |
01:07.000
也就是作業三公佈的日期仍然是11月20日,也就是...
link |
01:12.000
是不是弄錯啦?
link |
01:15.000
我問一下就是,本來作業二是要下週交嗎?
link |
01:19.000
那下週是...
link |
01:21.000
13
link |
01:22.000
好,所以作業三公佈的日期仍然是11月13日。
link |
01:26.000
所以就是說作業二和作業三會有一週的重疊,
link |
01:29.000
也就是說我們是從作業三借了一週來做作業二的意思就是了。
link |
01:36.000
好,那我們今天就是要繼續講Structure Learning。
link |
01:41.000
那很快複習一下,Structure Learning要解決什麼問題呢?
link |
01:44.000
我們要解決的問題是說,我們現在要找一個Function。
link |
01:48.000
它的Input和Output都是有Structure的Object。
link |
01:53.000
比如說它是個Sequence,是個List,是個Tree,是個Bounding的Box,等等。
link |
01:59.000
那遇到這種問題呢,我們要怎麼來處理?
link |
02:04.000
那這些問題呢,其實有一個Unified Framework。
link |
02:09.000
這個Unified Framework只有兩步。
link |
02:13.000
第一步就是,我們現在要找一個Function叫做F.
link |
02:17.000
這個F呢,它的Input是一個X跟一個Y,
link |
02:22.000
它的Output是一個Real Number。
link |
02:25.000
這個F呢,它的作用是要告訴我們說,
link |
02:28.000
今天給我一個XY的Pair,
link |
02:31.000
那這個XY的Pair呢,它們有多Compatible,
link |
02:35.000
它們有多合理,它們放在一起有多適合。
link |
02:39.000
那有了這個F以後,不管你用什麼方法,
link |
02:43.000
比如說從TrainingData裡面找到F以後,你要做的事情就是,
link |
02:48.000
今天假如有人給你一個X,你就去窮聚所有的Y,
link |
02:53.000
那每一個Y呢,你都跟X一起帶進F裡面去試試看。
link |
02:58.000
也就是說,看哪一個Y跟現在Input的X搭配起來最適當。
link |
03:04.000
最適當的那個Y呢,就是你現在系統的Output,我們寫做Y Delta。
link |
03:10.000
那雖然說這個Framework只有兩步看起來很簡單,
link |
03:14.000
但是你要使用這個Framework呢,你必須要能夠回答以下三個問題。
link |
03:19.000
第一個問題就是,F of XY呢,長什麼樣子?
link |
03:24.000
第二個問題就是,可能的Y呢,其實可能有很多,Y的Space可能很大。
link |
03:31.000
所以你呢,當你被給定一個X,你要窮聚所有的Y,
link |
03:35.000
去看說哪一個Y可以讓F of XY最大,可能是一件很困難的事。
link |
03:40.000
所以你要能夠使用這個Unified的Framework呢,必須要假設,
link |
03:45.000
你帳號有什麼方法可以解這一個ARG Max的問題,
link |
03:50.000
可以解這一個Optimization的問題。
link |
03:53.000
然後第三步呢,就是現在給你一些TrainingData,
link |
03:57.000
你怎麼找出這一個Function F。
link |
04:01.000
那上次呢,我們有舉了很多的例子,那今天底下呢,
link |
04:05.000
我們都用這個Object Detection當作例子。
link |
04:09.000
Object Detection就是說呢,給你一個Image,
link |
04:12.000
然後你要Detect說呢,你要用一個框框呢,
link |
04:16.000
把你要的Object呢,把它框出來。
link |
04:20.000
那事實上在這個Image呢,在這個影像處理的領域呢,
link |
04:24.000
還有很多類似的Task,其實還比這個找一個框框呢,更複雜。
link |
04:30.000
比如說呢,我們可以要求機器不只是找一個框框,
link |
04:35.000
而是用不規則的形狀呢,把你要找的Object框出來。
link |
04:39.000
比如說現在假設目標不是找兩公尺,而是找一匹馬的話呢,
link |
04:43.000
你要想辦法把這個馬的輪廓呢,框出來。
link |
04:47.000
這個呢,又是比找一個框框更複雜的問題。
link |
04:51.000
或者是呢,我們不只是要Detect出Object,
link |
04:56.000
我們還要知道說,假設我們現在DetectObject是人,
link |
04:59.000
我們還要知道說這個人的動作是什麼,
link |
05:02.000
他的身體在哪裡,他的手在幹嘛,他的手在幹嘛。
link |
05:05.000
那這個又是一個更複雜的問題。
link |
05:08.000
那但是其實呢,這些問題呢,你都可以套用我們等一下講的解法呢,
link |
05:14.000
來Solve這些Problems。
link |
05:16.000
只是在今天這一堂課裡面,我們舉的例子呢,
link |
05:19.000
都是用這個兩公尺當作例子就是了。
link |
05:23.000
那你可能會問說,為什麼偏偏要挑這個當作例子呢?
link |
05:27.000
其實這個是這樣啦,我本來最開始的時候,
link |
05:31.000
最開始做這套投影片的時候,
link |
05:33.000
我是想要用一些比較正常的例子,比如說Machine Translation之類的。
link |
05:37.000
可是後來呢,我也是看有某一個人,我忘記是誰了,
link |
05:41.000
他講這個Structure Learning的時候呢,
link |
05:43.000
他是用Object Detection當作例子。
link |
05:45.000
那我覺得用Object Detection當作例子,
link |
05:47.000
在Visualization上面非常的清楚。
link |
05:49.000
所以我就想說,我要用Object Detection當作例子。
link |
05:52.000
但他的例子是Detect一個羊,那我不知道為什麼他要Detect一個羊,
link |
05:55.000
所以我就Detect兩公尺是這樣子。
link |
06:03.000
好,這個只是提醒一下啦。
link |
06:05.000
所以你要注意一下,雖然我們等一下的例子都是這個,
link |
06:08.000
但是它其實可以用在各式各樣的問題,
link |
06:11.000
甚至不只是Image Processing的問題,
link |
06:13.000
其他你可以想到的Structure Learning的問題,
link |
06:16.000
可能都可以套用我們等一下講的結構呢,
link |
06:18.000
等一下講的方法來解決它。
link |
06:21.000
好,那我們上次有講到說,
link |
06:24.000
如果我們對這個F of X Y做一些假設,
link |
06:27.000
那會讓我們之後的任務變得比較容易一點。
link |
06:31.000
那麼現在是假設F of X Y它是Linear的,
link |
06:35.000
也就是說現在如果我的X是一張Image,
link |
06:38.000
我的Y是一個Bounding的Box,
link |
06:42.000
那我的這個F of X Y呢,
link |
06:45.000
我要能夠把它寫成一個Weight,
link |
06:49.000
一個Weight的Vector W,
link |
06:51.000
這個Feature Vector,Find of X Y的這個相乘。
link |
06:55.000
那這個W呢,是到時候在Problem 3裡面,
link |
06:59.000
我們要用Training Data去把它學出來的。
link |
07:02.000
而這個Feature Vector Find呢,它是人定的。
link |
07:06.000
你必須先自己定一套規則說,
link |
07:08.000
Given一個Image和一個Bounding Box,
link |
07:11.000
這個Find of X Y呢,應該長什麼樣子。
link |
07:15.000
當然這邊有一個Open Question,
link |
07:18.000
就是你可能知道說,F of X Y如果是Linear的話,
link |
07:22.000
它其實很Weak,一個Linear的Function,
link |
07:24.000
你做不了什麼太厲害的事情,
link |
07:26.000
那你必須要仰賴一個複雜的Total Feature的方式,
link |
07:30.000
來讓你得到好的結果。
link |
07:32.000
但是這可能不是我們想要的,
link |
07:34.000
我們希望機器能夠做更複雜的事,
link |
07:37.000
而不是有太多人的Knowledge介入在裡面。
link |
07:41.000
所以一個Open Question就是,
link |
07:43.000
我們能不能讓F of X Y是不是Linear?
link |
07:46.000
那其實這方面的研究還很少,
link |
07:48.000
因為你會發現,
link |
07:50.000
因為如果F of X Y不是Linear的話,
link |
07:52.000
等一下我們的討論呢,就都不成立了。
link |
07:55.000
所以今天在這堂課裡面呢,
link |
07:57.000
我們在多數時候,都是假設F of X Y呢,是Linear。
link |
08:02.000
再來第二個問題就是,
link |
08:04.000
我們要解一個ARG Max的Problem,
link |
08:08.000
這個步驟呢,我們叫做Inference。
link |
08:12.000
也就是說呢,今天給你一個X,
link |
08:16.000
你要有辦法去窮取所有的Y,
link |
08:18.000
然後看哪一個Y可以讓你的Evaluation Function,
link |
08:22.000
我們現在假設它是Linear的,
link |
08:24.000
就是W跟F of X Y的Inner Quadrat最大。
link |
08:27.000
那你要有,3號有一個演算法,
link |
08:29.000
可以有效的做這件事情。
link |
08:33.000
那這邊如果說以Object Detection為例的話呢,
link |
08:37.000
我們現在要做的事情就是說,
link |
08:39.000
首先呢,窮取所有可能的Bounding Box,
link |
08:43.000
那這可能非常的多。
link |
08:45.000
然後對每一個Bounding Box跟這個Image呢,
link |
08:48.000
我們都去算一個分數,
link |
08:51.000
我們都用W乘上F of X Y呢,
link |
08:54.000
W跟F of X Y的Inner Quadrat呢,
link |
08:56.000
去算一個分數。
link |
08:58.000
然後呢,你看看哪一個X Y的Pair,
link |
09:02.000
算出來的分數最高。
link |
09:03.000
比如說呢,今天呢,這一個X Y的Pair,
link |
09:09.000
X是這張Image,Y是這個Box的時候,
link |
09:11.000
算出來的分數最高是10.1。
link |
09:13.000
那我們呢,就把這個Box呢,
link |
09:16.000
當作我們的答案Y tilde。
link |
09:19.000
那你可能會想說,
link |
09:20.000
這個窮取聽起來感覺是一個很花時間的東西,
link |
09:24.000
聽起來不太過分。
link |
09:26.000
但事實上呢,我們可能可以有比較Efficient的方法呢,
link |
09:31.000
把窮取這件事情做出來。
link |
09:35.000
了解嗎?
link |
09:36.000
但是這個部分就是你需要自己去想,
link |
09:39.000
應該要怎麼做的,這樣子。
link |
09:41.000
那我猜你現在心情可能是這樣,
link |
09:43.000
就是I think you should be more explicit here, Step 2。
link |
09:48.000
這邊有一個Miracle的Step,
link |
09:51.000
然後接下來我們,
link |
09:52.000
假設這個Problem 2,
link |
09:54.000
我們3號就是很神奇的解決了,
link |
09:56.000
然後接下來的討論呢,就都成立了。
link |
09:59.000
但是要怎麼解決這個問題呢,
link |
10:01.000
就是你要自己去想。
link |
10:06.000
那比如說在Object Detection的文線上,
link |
10:09.000
剛才那個ArgMax的Problem,
link |
10:12.000
就這個Problem 2呢,
link |
10:13.000
你可能有別的方法,
link |
10:14.000
比如說有Branch and Bound的Algorithm,
link |
10:16.000
或者是這個Selective Search的Algorithm。
link |
10:20.000
那如果是Sequence Labeling的Problem,
link |
10:22.000
也就是大家在作業3呢,
link |
10:24.000
要做的事情呢,
link |
10:25.000
有一個很知名的演算法就是,
link |
10:27.000
Veteran Algorithm,
link |
10:29.000
可以幫助我們大家做Inference,
link |
10:31.000
這件事情。
link |
10:32.000
但這些東西呢,
link |
10:33.000
我在上課不打算細講,
link |
10:35.000
為什麼呢?
link |
10:36.000
因為這些Algorithm其實是Depend on你的Task,
link |
10:39.000
如果你有不同的Task的話呢,
link |
10:41.000
你就要想不同的演算法,
link |
10:43.000
甚至如果你的Feature的定義,
link |
10:46.000
這個Find of同一個Task,
link |
10:47.000
如果你的Feature定義Find of X Y不一樣,
link |
10:50.000
你也需要不同的演算法,
link |
10:52.000
因為這個東西太Task Dependent了,
link |
10:54.000
所以我就沒有打算要在這門課呢,
link |
10:57.000
深入的去討論它。
link |
11:00.000
但是你可以想像說,
link |
11:01.000
這一套Framework,
link |
11:02.000
雖然說我沒有告訴你說Problem 2怎麼解決,
link |
11:05.000
但這一套Framework還是有用的,
link |
11:07.000
因為你今天本來給你一個Structured Learning的Problem,
link |
11:11.000
如果你不知道這一套Framework,
link |
11:13.000
你根本不知道從何解起,
link |
11:15.000
現在你至少知道說,
link |
11:17.000
有一個Unified的架構,
link |
11:18.000
那我要想的,
link |
11:20.000
就是解這個Inference的Problem,
link |
11:22.000
你至少有一個思考的方向,
link |
11:24.000
來處理你現在要解決的問題。
link |
11:27.000
如果你不知道Inference的Problem怎麼解的話,
link |
11:31.000
或許你也可以考慮用基因演算法,
link |
11:35.000
基因演算法可以解決很多很多的問題,
link |
11:37.000
只是它有時候找到的不一定是Exact的Solution。
link |
11:42.000
所以這邊有一個Open的Question,
link |
11:45.000
而這個Question還沒有太多討論的就是,
link |
11:48.000
假如在以下的步驟裡面,
link |
11:50.000
我們其實並沒有辦法找到一個Exact的Solution,
link |
11:56.000
也就是那個ArgMax的Problem,
link |
11:58.000
我們只能夠有Approximate的Solution,
link |
12:01.000
沒有辦法找到一個Exact的Solution的話,
link |
12:03.000
到底對我們的結果影響會有多大?
link |
12:07.000
那當然是會有影響,
link |
12:08.000
可是到底影響有多大呢?
link |
12:10.000
這件事情目前為止還沒有太多的討論。
link |
12:14.000
這個是Problem 2,
link |
12:16.000
所以在等一下所有的課程內容裡面,
link |
12:21.000
你就要假設Problem 2我們是已經解決了。
link |
12:26.000
好,那再來我們就進入Problem Tree。
link |
12:29.000
Problem Tree是說,
link |
12:31.000
我們現在的原則是,
link |
12:32.000
我有一堆Training Data,
link |
12:34.000
X1,Y1,Head,X2,Y2,Head,到X大N,Y大N,Head。
link |
12:39.000
那我今天希望找到一個,
link |
12:43.000
我們之後要用的Evaluation Function,
link |
12:46.000
F of X,Y。
link |
12:47.000
這個F of X,Y應該具備什麼性質呢?
link |
12:50.000
它應該要讓說,
link |
12:52.000
如果我今天把X1,Y1,Head,
link |
12:55.000
帶進這個F of X,Y,
link |
12:57.000
我得到的值呢,
link |
12:58.000
必須要比其他所有可能的Y,
link |
13:01.000
帶進這個FX1 of Y得到的值還要大。
link |
13:06.000
同理,如果說是X2,Y2,Head,
link |
13:09.000
應該要比其他所有可能的FX2,Y得到的值還要大。
link |
13:14.000
你對所有的Training Data,
link |
13:16.000
我們都希望能夠做到這件事情。
link |
13:20.000
那在以下課程裡面呢,
link |
13:22.000
我們其實就是打算要Focus在第三個問題。
link |
13:27.000
也就是假設說,
link |
13:28.000
在第一個問題裡面,
link |
13:30.000
我們已經知道怎麼抽Find of X,Y。
link |
13:32.000
在第二個問題,
link |
13:33.000
我們已經解了ARG,Max,Farben。
link |
13:35.000
那現在,
link |
13:36.000
假設在前面那兩個問題都已經Solved的情況下,
link |
13:39.000
那Farben3應該要怎麼處理?
link |
13:42.000
這個就是以下要講的內容。
link |
13:45.000
今天講的內容其實很長。
link |
13:46.000
我們先從一個Separable Case開始。
link |
13:50.000
那個是我們上週沒有講到講完的東西。
link |
13:53.000
Separable Case其實是不太Realistic,
link |
13:56.000
所以我們要進到Non-Separable Case。
link |
13:59.000
然後接下來呢,
link |
14:01.000
我們會修改我們的Objective Function,
link |
14:03.000
把Arrow加進我們的Objective Function,
link |
14:06.000
然後當然要做一下Regularization。
link |
14:08.000
最後呢,
link |
14:09.000
我們就會產生Structured SVM。
link |
14:12.000
然後我會講一下Structured SVM要怎麼解它。
link |
14:15.000
它有一個特別的解法,
link |
14:16.000
叫做Hacking Plane的Algorithm。
link |
14:19.000
接下來呢,
link |
14:20.000
我們會用Structured SVM,
link |
14:24.000
來做Modal Class的Classification和Binary的Classification。
link |
14:31.000
大家會發現說呢,
link |
14:33.000
Modal Class的Classification和Binary的Classification,
link |
14:36.000
只是Structured SVM的特例。
link |
14:38.000
平常所聽到的那個SVM,
link |
14:40.000
是Structured SVM的一個特例。
link |
14:42.000
最後我們來講說,
link |
14:44.000
下一步Beyond Structured SVM的東西,
link |
14:47.000
可能是什麼。
link |
14:49.000
所以我們就先從Separable Case開始。
link |
14:52.000
所謂Separable Case的意思是說呢,
link |
14:55.000
假設我現在有兩筆Data,
link |
14:58.000
我有一筆Data,兩筆Data,
link |
15:01.000
而在這兩筆Data裡面呢,
link |
15:03.000
紅色代表是正確的,
link |
15:05.000
藍色代表是錯誤的,
link |
15:07.000
紅色代表是正確的,
link |
15:09.000
藍色代表是錯誤的。
link |
15:11.000
那所謂的Separable的意思就是說,
link |
15:14.000
我們找得到一個Weight Vector,
link |
15:16.000
這邊寫成W hat,
link |
15:18.000
這個Weight Vector它的作用是說,
link |
15:20.000
如果我們把這些點呢,
link |
15:23.000
這些Feature的Point呢,
link |
15:25.000
都對這個W hat呢,
link |
15:28.000
做Inner Product,
link |
15:30.000
都做Inner Product的話呢,
link |
15:32.000
你會發現說呢,
link |
15:35.000
我們能夠讓這個正確的這個Point,
link |
15:39.000
也就是紅色的這個Point呢,
link |
15:41.000
比跟它同樣形狀的藍色的Point呢,
link |
15:44.000
值都大一個Delta。
link |
15:46.000
那同比呢,
link |
15:48.000
對這個紅色的星星呢,
link |
15:50.000
它也比所有的藍色的星星呢,
link |
15:52.000
值都大一個Delta。
link |
15:54.000
如果寫成數學式的話呢,
link |
15:56.000
就是W hat,
link |
15:58.000
如果跟Phi x1 y1
link |
16:00.000
在做Inner Product的話呢,
link |
16:02.000
會比W hat跟Phi of x1跟任意y
link |
16:05.000
所形成的Feature Vector加Delta還大。
link |
16:08.000
W hat跟Phi of x2 y2
link |
16:10.000
在做Inner Product,
link |
16:12.000
會比呢,
link |
16:13.000
W hat乘上Phi of x2 y
link |
16:15.000
加一個Delta的值還要大。
link |
16:17.000
這個是我們今天假設的case,
link |
16:20.000
我們假設我們今天,
link |
16:22.000
3號我們能夠找到一個Feature Definition,
link |
16:25.000
一個Phi Definition,
link |
16:27.000
它可以讓我們的這些點的分布呢,
link |
16:30.000
呈現這個我們所要的case。
link |
16:32.000
那如果我們今天能夠找到這樣的Feature Function的話呢,
link |
16:36.000
我們就可以用以下這一個演算法呢,
link |
16:39.000
來找到我們要的這個parameter,
link |
16:44.000
也就是那個Weight Vector大定義。
link |
16:46.000
那這個演算法的名字呢,
link |
16:48.000
叫做Structure Perceptron。
link |
16:51.000
那如果你知道什麼是Perceptron的話呢,
link |
16:54.000
你就不難理解為什麼它叫Structure Perceptron,
link |
16:57.000
因為它跟那個Perceptron的Algorithm呢,
link |
16:59.000
其實是這個,
link |
17:01.000
只有一線之隔,
link |
17:03.000
Perceptron的Algorithm稍微改一下,
link |
17:05.000
就變成Structure Perceptron的Algorithm。
link |
17:07.000
在這個Structure Perceptron的Algorithm裡面呢,
link |
17:11.000
它的input是一組training data,
link |
17:14.000
它的output就是我們現在要找出來的Weight Vector w,
link |
17:18.000
這個Weight Vector w可以做到的事情就是,
link |
17:21.000
它是一個可以讓我們的Data Point Separable的Weight Vector。
link |
17:27.000
那在Initialize的時候呢,
link |
17:30.000
我們假設w等於0,
link |
17:32.000
然後呢,
link |
17:33.000
我們呢,
link |
17:34.000
隨便取一個,
link |
17:36.000
這邊要按照順序或者是Random都行嘛,
link |
17:39.000
我們就取一個training的example,
link |
17:42.000
xn跟yn hat,
link |
17:44.000
然後呢,我們去找一個yn tilde,
link |
17:48.000
那這個yn tilde呢,
link |
17:50.000
可以讓w乘上final xn y的值最大,
link |
17:55.000
這個yn tilde呢,
link |
17:56.000
是這個argmax這個problem的output,
link |
17:59.000
當然我剛才已經講過,
link |
18:00.000
這個problem我們已經解決了,
link |
18:02.000
所以我們知道這一步要怎麼做。
link |
18:04.000
那接下來呢,
link |
18:05.000
假設這個yn tilde跟正確的答案y hat,
link |
18:09.000
它的值不一樣的話,
link |
18:11.000
那我們就update我們的weight vector w,
link |
18:15.000
那update的方式呢,
link |
18:17.000
是把weight vector w,
link |
18:19.000
加上正確的y hat所形成的feature vector,
link |
18:23.000
減掉現在呢,
link |
18:25.000
可以讓這個function,
link |
18:27.000
可以讓這個inner product值最大的y tilde,
link |
18:30.000
所形成的feature vector,
link |
18:32.000
也就是你要讓w呢,
link |
18:34.000
跟正確的y hat所形成的vector靠近一點,
link |
18:38.000
跟錯誤的y tilde呢,
link |
18:41.000
這個vector呢,遠離一點。
link |
18:43.000
那就不斷地跑這個iteration,
link |
18:46.000
那就不斷地呢,
link |
18:48.000
從你的training data裡面呢,
link |
18:51.000
從你的training data裡面的sample一個pair出來。
link |
18:54.000
那如果今天,
link |
18:56.000
當你看完了所有的example以後,
link |
18:59.000
w都沒有被update的話,
link |
19:02.000
也就是說對所有的example來說,
link |
19:05.000
argmax得到的結果都是y hat的話,
link |
19:09.000
那其實你就找到了你要的w了。
link |
19:13.000
那這個演算法呢,
link |
19:16.000
很簡單,
link |
19:18.000
但是它一個真正的問題就是,
link |
19:21.000
我們到底要花多久的時間才會收斂,
link |
19:26.000
它到底要花多久的時間才會結束,
link |
19:29.000
因為你可以想像說,
link |
19:31.000
今天可能的y啊,
link |
19:33.000
在這個argmax裡面可能的y呢,
link |
19:35.000
是有非常非常多的。
link |
19:37.000
在有這麼多藍色的點的情況下,
link |
19:41.000
我們真的能夠輕易地找到一個vector,
link |
19:44.000
把紅色的點跟藍色的點分開嗎?
link |
19:48.000
那結論呢,就是可以的。
link |
19:51.000
那以下是一個證明啦,
link |
19:53.000
那如果不想聽的話,沒有關係,
link |
19:55.000
我們就先講結論。
link |
19:57.000
等一下這裡的結論是什麼呢?
link |
19:59.000
我們的結論是這樣子,
link |
20:02.000
在separable case,
link |
20:04.000
我們呢,其實最多只要update
link |
20:07.000
r除以delta的平方次,
link |
20:10.000
我們就可以找到我們要的那個wave vector。
link |
20:15.000
那這個r除以delta的平方是什麼呢?
link |
20:18.000
這個delta呢,是margin,
link |
20:21.000
我們剛才有講過說,
link |
20:23.000
我們在separable case,
link |
20:25.000
這個正確的答案至少比錯誤的答案呢,
link |
20:28.000
大了一個delta,
link |
20:30.000
就是那個delta。
link |
20:32.000
那這個r是什麼呢?
link |
20:34.000
這個r呢,是所有的這個,
link |
20:38.000
如果給定同樣的x的情況下,
link |
20:41.000
我們呢,帶不同的y呢,
link |
20:43.000
就會得到不同的feature vector phi。
link |
20:46.000
那這些feature vector phi之間距離的
link |
20:49.000
最大值呢,就是r。
link |
20:53.000
那你會發現說呢,
link |
20:54.000
我們只要r除以delta的平方,
link |
20:57.000
就可以結束剛才那個algorithm。
link |
21:00.000
而,所以這個那個algorithm
link |
21:02.000
你需要的iteration呢,
link |
21:04.000
跟你這個y的space呢,
link |
21:07.000
是完全沒有關係的。
link |
21:10.000
所以不管剛才的藍色的點有多少,
link |
21:14.000
我們都,就算剛才藍色點有非常非常多,
link |
21:18.000
也不會影響我們需要update的次數。
link |
21:22.000
那以下呢,就是一個很簡短的證明。
link |
21:26.000
那這個證明是這樣子啦。
link |
21:28.000
那這個你知道,
link |
21:30.000
w什麼時候會被update呢?
link |
21:32.000
它每次發現一筆錯誤的時候呢,
link |
21:35.000
就會update。
link |
21:37.000
那有時候它不會被update,
link |
21:38.000
因為如果你找出來的,
link |
21:39.000
argmax找出來的是y hat的話,
link |
21:41.000
就不會被update。
link |
21:43.000
如果找出來的y tilde不等於y hat的話呢,
link |
21:45.000
就會被update。
link |
21:47.000
那我們假設,
link |
21:48.000
這個我們把這個w update的這個history,
link |
21:52.000
它一路的演進時呢,
link |
21:54.000
它寫出來,
link |
21:56.000
它從w0、w1一直到wk、wk加1。
link |
22:00.000
那我們會發現什麼事呢?
link |
22:03.000
首先我們先檢查這個,
link |
22:05.000
wk跟wk-1之間的關係。
link |
22:10.000
我們知道說,
link |
22:11.000
wk跟wk-1之間呢,
link |
22:13.000
一定會有以下這個關係,
link |
22:15.000
就是wk等於wk-1,
link |
22:18.000
加上某一個正確的y hat所形成的feature,
link |
22:23.000
再減掉某一個錯誤的y tilde所形成的feature。
link |
22:28.000
我相信這個,
link |
22:29.000
大家一定沒有問題,
link |
22:30.000
這個就只是一個,
link |
22:32.000
本來我們update的時候的rule呢,
link |
22:34.000
就是這樣子。
link |
22:37.000
好,那這邊只是提醒一下,
link |
22:39.000
我們在考慮的case呢,
link |
22:40.000
是一個separable的case。
link |
22:43.000
也就是說,
link |
22:44.000
存在一個w hat,
link |
22:46.000
它可以使得對所有的n來說呢,
link |
22:51.000
這個w hat呢,
link |
22:53.000
跟y hat所形成的feature vector,
link |
22:56.000
大於等於這個,
link |
22:57.000
它跟其他所有的y所形成的feature vector,
link |
23:00.000
再加上一個delta。
link |
23:02.000
這邊其他所有的y也是不包括,
link |
23:04.000
這y的space呢,
link |
23:05.000
減掉y hat的。
link |
23:07.000
然後呢,
link |
23:08.000
我們今天可以不失一般性的,
link |
23:10.000
假設w hat的長度為0。
link |
23:13.000
為什麼呢?
link |
23:15.000
因為你可以,
link |
23:16.000
啊,
link |
23:17.000
喔,
link |
23:18.000
唯一,
link |
23:19.000
不好意思,
link |
23:20.000
我現在頭很偏上,
link |
23:21.000
這樣子。
link |
23:22.000
好,謝謝,
link |
23:23.000
感謝你,
link |
23:24.000
感謝。
link |
23:25.000
好,
link |
23:26.000
這個w hat呢,
link |
23:27.000
我們不失一般性的,
link |
23:28.000
假設它的長度為1。
link |
23:30.000
為什麼呢?
link |
23:31.000
因為假如說,
link |
23:32.000
我們現在可以找到一個w hat,
link |
23:35.000
它是可以讓我們data是separable的。
link |
23:39.000
那我對這個w hat做normalize,
link |
23:41.000
讓它的長度變成1的話,
link |
23:44.000
它一樣還是可以separable啊,
link |
23:47.000
對不對?
link |
23:48.000
所以我們可以不失一般性的,
link |
23:50.000
假設說呢,
link |
23:51.000
我們的w,
link |
23:52.000
我們有一個w hat,
link |
23:53.000
它的長度呢,
link |
23:54.000
是1的。
link |
23:57.000
好,
link |
23:58.000
大家有問題嗎?
link |
23:59.000
好,
link |
24:00.000
沒有問題的話呢,
link |
24:01.000
我們就正式開始這個證明。
link |
24:04.000
這個證明是這樣子啦,
link |
24:06.000
首先我們來看一件事情,
link |
24:08.000
就是我們來看,
link |
24:09.000
剛才我們的目標w hat,
link |
24:12.000
跟w k之間的關係。
link |
24:15.000
那我們發現,
link |
24:16.000
如果我們去計算w hat跟w k的夾角,
link |
24:21.000
我們會發現說呢,
link |
24:23.000
當k越來越大的時候,
link |
24:25.000
這個夾角呢,
link |
24:27.000
是會越來越小的。
link |
24:29.000
當k越來越大的時候呢,
link |
24:31.000
夾角是會越來越小的。
link |
24:33.000
或者是呢,
link |
24:34.000
換句話說,
link |
24:35.000
我們今天如果算cosine這個low k的話呢,
link |
24:42.000
我們算cosine low k的話呢,
link |
24:44.000
因為這個夾角是越來越小的,
link |
24:46.000
所以這個cosine low k的它的值呢,
link |
24:49.000
是越來越大的。
link |
24:52.000
我們會發現說這個cosine low k的值呢,
link |
24:55.000
是越來越大的。
link |
24:57.000
接下來呢,
link |
24:58.000
我們就要計算一下,
link |
24:59.000
在這個分子的地方呢,
link |
25:01.000
它是w hat跟w k的inner product,
link |
25:06.000
我們先來看看w hat跟w k的inner product的值呢,
link |
25:09.000
應該是多少。
link |
25:13.000
那w k呢,
link |
25:14.000
我們剛才在上面這邊已經看到說,
link |
25:16.000
w k呢,
link |
25:17.000
就寫成這個樣子。
link |
25:19.000
那我們把這個上面這個是,
link |
25:21.000
左右兩邊都乘上w hat,
link |
25:23.000
左右兩邊呢,
link |
25:24.000
都乘上w hat,
link |
25:25.000
然後再把它展開,
link |
25:27.000
把這個w hat呢,
link |
25:28.000
乘進去,
link |
25:29.000
乘進去,
link |
25:30.000
乘進去。
link |
25:32.000
那把這個乘完以後呢,
link |
25:34.000
我們會發現什麼事呢?
link |
25:36.000
我們會發現說呢,
link |
25:38.000
這一項,
link |
25:39.000
這一項啊,
link |
25:41.000
它一定會這個,
link |
25:43.000
大於等於一個delta對不對?
link |
25:45.000
因為這個就是我們的定義嘛,
link |
25:48.000
我們說我們現在的w hat呢,
link |
25:50.000
它是可以讓我們的data呢,
link |
25:52.000
separable。
link |
25:54.000
所以對w hat來說,
link |
25:56.000
不管你今天找到這個y delta是誰,
link |
25:59.000
它都一定比這個y hat的inner product呢,
link |
26:02.000
還小一個delta。
link |
26:04.000
所以今天這個紅色這邊呢,
link |
26:06.000
紅色這兩項呢,
link |
26:07.000
相減的話,
link |
26:08.000
它得到的結果呢,
link |
26:10.000
是大於等於一個delta。
link |
26:13.000
因為呢,
link |
26:15.000
這個是根據這個separable的definition來的。
link |
26:20.000
所以呢,
link |
26:21.000
我們可以說,
link |
26:22.000
w hat乘上w k,
link |
26:24.000
它大於等於w hat跟w k-1的inner product,
link |
26:29.000
加上delta。
link |
26:31.000
那這件事情告訴我們什麼呢?
link |
26:33.000
這件事情告訴我們說,
link |
26:36.000
因為我們一開始的那個w0呢,
link |
26:40.000
一開始的w0等於0,
link |
26:42.000
一開始的w0等於0。
link |
26:44.000
所以呢,
link |
26:46.000
所以你會發現說呢,
link |
26:48.000
因為w hat乘上w1,
link |
26:50.000
大於等於w hat乘上w0,
link |
26:52.000
加上delta,
link |
26:53.000
而w0又等於0,
link |
26:55.000
所以呢,
link |
26:57.000
這告訴我們說這個,
link |
26:59.000
w hat呢,
link |
27:01.000
乘上w1呢,
link |
27:02.000
是大於等於delta。
link |
27:04.000
那同理呢,
link |
27:05.000
w hat乘上w hat跟w2的inner product,
link |
27:08.000
大於等於w hat跟w1的inner product,
link |
27:11.000
加上delta。
link |
27:12.000
而w hat乘上w1的inner product,
link |
27:14.000
又大於等於delta。
link |
27:16.000
它大於等於它加delta,
link |
27:18.000
這一下又大於等於delta。
link |
27:20.000
所以w hat乘上這個w2,
link |
27:24.000
w hat跟w2的inner product,
link |
27:25.000
就大於等於兩倍的delta。
link |
27:27.000
OK,
link |
27:28.000
所以同理呢,
link |
27:29.000
所以你可以這樣子一直算下去,
link |
27:31.000
你就會發現說呢,
link |
27:33.000
這個w hat跟w k的inner product呢,
link |
27:36.000
是大於等於k倍的delta。
link |
27:39.000
所以從分子這邊看來,
link |
27:41.000
分子是不斷地增加的,
link |
27:45.000
分子是不斷地增加,
link |
27:46.000
但是so what,
link |
27:48.000
分子不斷地增加,
link |
27:49.000
並不能夠保證說,
link |
27:51.000
最後它們之間的夾角一定會變小啊。
link |
27:54.000
w hat跟w k的inner product增加,
link |
27:56.000
並不保證w hat跟w k越來越接近,
link |
27:59.000
因為它可能只是w k它不斷地增長而已。
link |
28:04.000
了解我的意思嗎?
link |
28:05.000
今天有兩個vector,
link |
28:07.000
然後其中一個不斷增長,
link |
28:09.000
inner product也是會增加。
link |
28:10.000
所以inner product增加,
link |
28:11.000
並不代表它們越來越接近。
link |
28:13.000
所以呢,
link |
28:14.000
我們應該還要再算一下分母的地方,
link |
28:17.000
我們要考慮一下w k的長度是怎麼樣。
link |
28:21.000
這個w hat的長度,
link |
28:23.000
就是1啊,
link |
28:24.000
我們剛才已經講過了,
link |
28:25.000
我們可以假設,
link |
28:26.000
我們不是一般性的假設它的長度為1,
link |
28:28.000
所以我們只需要考慮w k的長度。
link |
28:31.000
所以今天如果w k的長度,
link |
28:33.000
它並沒有很快地增加,
link |
28:35.000
而這兩個vector的inner product又增加的話,
link |
28:38.000
我們就可以知道說,
link |
28:39.000
w k隨著k增加,
link |
28:41.000
它跟w hat是越來越接近的。
link |
28:44.000
所以接下來呢,
link |
28:47.000
我們就來看一下w k的長度,
link |
28:49.000
一樣把w k的definition,
link |
28:52.000
它的這個跟w k減1的relation,
link |
28:55.000
寫在這邊。
link |
28:56.000
接下來呢,
link |
28:58.000
我們就是算一下它的長度。
link |
29:01.000
好,那我想這個應該不成問題吧。
link |
29:06.000
你可以假設這一項是A,
link |
29:09.000
假設這一項是B,
link |
29:11.000
把A跟B這兩個vector加起來,
link |
29:14.000
取它們的none的平方,
link |
29:17.000
會等於A的none的平方,
link |
29:21.000
加上B的none的平方,
link |
29:23.000
加上兩倍的A和B的inner product。
link |
29:27.000
大家知道我的意思嗎?
link |
29:30.000
如果不知道我的意思沒有完,
link |
29:31.000
你就回去想一下吧。
link |
29:32.000
反正這一項,
link |
29:33.000
展開就變成這一項。
link |
29:35.000
那展開完以後呢,
link |
29:37.000
首先這是個長度,
link |
29:40.000
所以它一定大於0,
link |
29:42.000
沒有問題。
link |
29:44.000
那這一項,
link |
29:46.000
它應該是什麼樣的值呢?
link |
29:50.000
它應該什麼樣的值呢?
link |
29:52.000
這個wk-1,
link |
29:54.000
乘上呢,
link |
29:56.000
這邊有一個括號,
link |
29:58.000
y hat所形成的feature,
link |
30:01.000
減掉y tilde所形成的feature,
link |
30:04.000
它應該是什麼樣的值呢?
link |
30:07.000
那我們來做個名義調查好了。
link |
30:11.000
它可能有三個,
link |
30:12.000
可能一個大於0,
link |
30:13.000
一個等於0,
link |
30:14.000
一個小於0,
link |
30:15.000
或者是其他。
link |
30:17.000
給大家五秒鐘的時間想看看,
link |
30:19.000
它應該是怎麼樣。
link |
30:23.000
你覺得它大於0的同學舉手一下。
link |
30:27.000
有一些同學覺得它大於0,
link |
30:29.000
謝謝,手放下。
link |
30:31.000
你覺得它等於0的同學舉手一下。
link |
30:34.000
沒有人覺得它等於0。
link |
30:36.000
你覺得它小於0的同學舉手一下。
link |
30:40.000
有一些,感覺比較少。
link |
30:43.000
那你覺得是其他,
link |
30:44.000
就我沒有辦法決定它大於0,
link |
30:45.000
還是小於0,
link |
30:46.000
還是等於0的同學舉手一下。
link |
30:48.000
沒有,好。
link |
30:51.000
有什麼特別好笑嗎?
link |
30:54.000
結果是小於0的。
link |
31:00.000
答錯也不用太沮喪,
link |
31:02.000
沒有關係。
link |
31:04.000
為什麼呢?
link |
31:07.000
你想想看,
link |
31:10.000
今天為什麼在這邊會產生update的情形?
link |
31:16.000
是不是因為我們今天找到的W,
link |
31:19.000
我們今天的WK-1犯了一個錯,
link |
31:23.000
所以我們的Weight才會被update?
link |
31:26.000
它犯了什麼錯呢?
link |
31:28.000
它犯的錯是,
link |
31:29.000
它找出來的ARGMax是yΔ,
link |
31:33.000
而不是yhat。
link |
31:35.000
它找出來的ARGMax是錯的。
link |
31:38.000
但是如果你今天把WK-1跟它相乘,
link |
31:42.000
WK-1跟它相乘,
link |
31:45.000
你會發現說,
link |
31:46.000
因為WK-1它就是因為犯錯,
link |
31:48.000
所以它才會在這邊做update。
link |
31:50.000
所以WK-1跟yθ所形成的feature的inner product,
link |
31:54.000
一定會大於跟正確的feature所形成的inner product還要大。
link |
31:58.000
所以這邊才會做update。
link |
32:01.000
所以這邊的值是小於0的。
link |
32:04.000
如果你下次想不透的話,
link |
32:05.000
沒有關係,
link |
32:06.000
我們可以等一下下課討論,
link |
32:08.000
或者是回家再想想。
link |
32:11.000
但我們現在假設兩個feature之間的距離,
link |
32:17.000
它的最大值一定是r。
link |
32:24.000
所以我們就知道說,
link |
32:27.000
因為這個最大值一定是r,
link |
32:30.000
這個是小於0的。
link |
32:32.000
所以WK一定小於等於WK-1,
link |
32:37.000
加上r的平方。
link |
32:40.000
於是我們就可以得到一個WK的長度的upper bound。
link |
32:49.000
怎麼說呢?
link |
32:51.000
因為我們知道說W1的長度的平方小於等於W0,
link |
32:57.000
長度的平方加上r平方,
link |
32:59.000
而W0又等於0。
link |
33:02.000
所以W1長度的平方一定小於等於r平方。
link |
33:06.000
以此類推,
link |
33:08.000
W2長度的平方又小於等於W1長度的平方加r平方。
link |
33:12.000
而W1長度的平方又小於等於r平方。
link |
33:16.000
所以他們最後W2長度的平方...
link |
33:18.000
有什麼問題嗎?
link |
33:21.000
找個平方嗎?
link |
33:23.000
在哪裡?
link |
33:26.000
哎呀!
link |
33:28.000
太棒了!
link |
33:30.000
謝謝!
link |
33:31.000
我會記得你的名字了。
link |
33:35.000
對面有一個平方,謝謝!
link |
33:38.000
沒有錯,沒有錯,對面有一個平方。
link |
33:40.000
所以W2的平方呢,
link |
33:42.000
它是小於等於兩倍的r平方。
link |
33:45.000
那你就這樣一直算下去,
link |
33:47.000
最後得到的結果就是WK的平方
link |
33:50.000
小於等於K倍的r平方。
link |
33:53.000
所以我們現在得到兩個結論。
link |
33:57.000
一個是說,inner product大於等於K倍的delta,
link |
34:02.000
WK的長度的平方小於等於K倍的r平方。
link |
34:08.000
也就是說,它的長度不斷地增加,
link |
34:12.000
它的inner product不斷地增加,
link |
34:15.000
但是WK的長度呢,並沒有增加得很快。
link |
34:19.000
所以如果我們把這兩個東西呢,
link |
34:21.000
把它合起來的話,
link |
34:23.000
把這個東西放到這邊,
link |
34:25.000
這個東西放到這邊,
link |
34:27.000
你會發現這個cos的值啊,
link |
34:29.000
它大於等於KΔ除以√Kr平方。
link |
34:33.000
或者是你把上下的K呢,
link |
34:35.000
都除掉的話呢,
link |
34:37.000
這個cos呢,它會大於等於√K乘以Δ除以r。
link |
34:43.000
所以發現說,隨著K呢,不斷地增加。
link |
34:47.000
隨著K呢,不斷地增加。
link |
34:49.000
這個cos啊,它是可能會逐漸增加的。
link |
34:55.000
我不會說它一定增加,
link |
34:57.000
它可能會逐漸增加。
link |
34:59.000
因為這個東西其實是它的一個lower bound。
link |
35:02.000
這個東西其實是它的一個lower bound。
link |
35:05.000
那你知道這個cos的值啊,
link |
35:07.000
它最大值能夠是e。
link |
35:09.000
所以呢,隨著時間不斷地增加,
link |
35:12.000
或隨著這個weight不斷地被update,
link |
35:15.000
這個甲角呢,這個甲角的cos呢,
link |
35:18.000
它的這個upper bound是e啊,
link |
35:20.000
它的這個lower bound是這一條線。
link |
35:22.000
所以它會在這個中間呢,
link |
35:24.000
可能會有些震盪。
link |
35:26.000
但它最後呢,震盪的幅度會越來越小。
link |
35:28.000
最後呢,就只能夠到e。
link |
35:31.000
OK。
link |
35:33.000
那我們知道說呢,
link |
35:35.000
這一個值呢,一定要小於e。
link |
35:37.000
因為cos的這個值呢,
link |
35:39.000
一定要小於e。
link |
35:41.000
那所以呢,這個K呢,
link |
35:44.000
因為這個√K乘以Δ除以r
link |
35:46.000
一定要小於1。
link |
35:48.000
所以K一定要小於R除以Δ的平方。
link |
35:51.000
所以我們就得到我們的結論。
link |
35:53.000
如果剛才那個東西你沒聽懂的話,
link |
35:56.000
其實就算了。
link |
35:58.000
我只是想要表達,
link |
36:00.000
我唯一想要表達的事情就是,
link |
36:02.000
這個問題沒有你想像的那麼困難。
link |
36:04.000
雖然說,可能的,
link |
36:06.000
就是正確的y hat只有一個,
link |
36:08.000
錯誤的y有好多好多。
link |
36:10.000
但這個,要learning這件事情,
link |
36:12.000
找一個好的weight這件事情,
link |
36:14.000
或許沒有你想的那麼困難。
link |
36:16.000
好。
link |
36:18.000
那從這個K的upper bound,
link |
36:21.000
從這個update次數的upper bound,
link |
36:24.000
大R除以Δ的平方,
link |
36:26.000
我們發現什麼事呢?
link |
36:28.000
我們發現說,
link |
36:30.000
如果這個Δ越大,
link |
36:33.000
那你update的次數呢,
link |
36:36.000
就越少。
link |
36:38.000
這個很合理嘛,
link |
36:40.000
因為今天如果你正確的data,
link |
36:42.000
跟這個錯誤的data中間的gap越大,
link |
36:44.000
那我們可能就可以花越少的次數,
link |
36:46.000
就找到我們要的結果。
link |
36:51.000
那你可能就會有一個突發奇想說,
link |
36:54.000
為了要讓我的training快一點,
link |
36:57.000
我想個方法把Δ增加。
link |
37:00.000
那怎麼把Δ增加呢?
link |
37:03.000
當然你可能會想說,
link |
37:05.000
要找一組好的feature,
link |
37:07.000
可以讓紅色的圈圈跟藍色的圈圈,
link |
37:09.000
分得比較開一點。
link |
37:11.000
但是你很懶惰,
link |
37:13.000
你不想想一個新的feature,
link |
37:15.000
所有的feature乘2,
link |
37:17.000
這個圖就放大兩倍。
link |
37:19.000
那這樣Δ不就直接增加兩倍了嗎?
link |
37:22.000
但是這樣並不會真的讓你的learning變快。
link |
37:25.000
為什麼呢?
link |
37:27.000
因為還有分子的地方。
link |
37:29.000
分子的地方呢,
link |
37:31.000
是兩個圈圈之間,
link |
37:33.000
分子的地方呢,
link |
37:35.000
是這邊任兩個圈圈之間的距離的upbound。
link |
37:39.000
所以當你把這個圖放大兩倍,
link |
37:42.000
以為這個Δ會增加兩倍的時候,
link |
37:45.000
其實這個R呢,
link |
37:47.000
同時也增加了兩倍。
link |
37:49.000
所以在一增一減的情況下呢,
link |
37:51.000
你的training是不會變快的。
link |
37:53.000
所以單純把feature,
link |
37:55.000
單純把這個圖放大,
link |
38:01.000
沒有辦法讓你的training變快。
link |
38:03.000
你要真的挪動這些點之間的位置,
link |
38:06.000
才有辦法讓training變快。
link |
38:08.000
但是剛才那個case,
link |
38:12.000
剛才那個separable case,
link |
38:14.000
可能沒有什麼用。
link |
38:16.000
因為在現真實的問題上,
link |
38:18.000
你可能很難找到那個feature,
link |
38:20.000
可以讓你的正確和錯的data separable。
link |
38:23.000
而且你也不知道要怎麼找到它。
link |
38:26.000
所以接下來呢,
link |
38:28.000
我們要考慮non-separable的case。
link |
38:30.000
那這個non-separable case呢,
link |
38:32.000
我們要怎麼處理?
link |
38:35.000
那這邊non-separable的case,
link |
38:39.000
我們要考慮的是說,
link |
38:41.000
雖然說假設今天我們沒有任何一個vector,
link |
38:45.000
可以讓正確答案和錯誤答案被分開。
link |
38:49.000
但是在這些vector裡面,
link |
38:51.000
我們還是可以區分出好壞,
link |
38:55.000
鑑別出高下的。
link |
38:57.000
比如說假設我有一個weight vector是W',
link |
39:01.000
它可以說我把這個正確答案排在第二名。
link |
39:06.000
那我有另外一個weight vector是W',
link |
39:10.000
它說我把正確答案排在最後一名。
link |
39:15.000
紅色這個框框是正確答案。
link |
39:17.000
所以雖然說這兩個weight vector,
link |
39:19.000
W'跟W',
link |
39:21.000
它們都沒有辦法讓正確答案的分數高過其他錯誤的。
link |
39:28.000
但是我想這個就不用調查了,
link |
39:32.000
大家都會知道說,
link |
39:34.000
左邊這個W'顯然是好過右邊這個W'.
link |
39:38.000
所以在non-separable case的情況下,
link |
39:40.000
我們還是可以定義一些evaluation measure,
link |
39:45.000
來看說今天W是好是壞。
link |
39:48.000
所以接下來我們要做的事情,
link |
39:50.000
就是定義一個cost function,
link |
39:54.000
我們定義一個cost value c,
link |
39:57.000
這個cost value c就是要來evaluate一個W,
link |
40:01.000
一個weight vector W它有多不好。
link |
40:05.000
接下來我們只要能夠找到一個W,
link |
40:08.000
它可以讓cost c的值最小,
link |
40:11.000
我們就知道說這個W是我們手上最好的W。
link |
40:15.000
所以它可能不是separable W,
link |
40:17.000
但是它是我們手上最好的W。
link |
40:19.000
那我們要怎麼定義這個cost c呢?
link |
40:23.000
其實跟我們在做DNN的時候一樣,
link |
40:25.000
你可以有自己的定義的方式。
link |
40:28.000
那我這邊提供一個方式是這樣,
link |
40:30.000
我們呢,假設我這是DN比Data,
link |
40:34.000
DN比Data cost我寫成CN,
link |
40:37.000
那DN比Data的這個cost CN呢,
link |
40:41.000
我把它寫成呢,
link |
40:43.000
把它寫,就假設給我一個W,
link |
40:46.000
這個cost CN的值呢,
link |
40:48.000
是這個全部的Y裡面,
link |
40:51.000
全部的Y裡面最大的,
link |
40:55.000
可以讓這個W跟這個final inner product,
link |
40:58.000
最大的那個Y的值減掉呢,
link |
41:02.000
正確的那個Y,
link |
41:05.000
這個正確的這個Y hat所形成的值。
link |
41:08.000
如果在這個圖上呢,
link |
41:10.000
你就可以很輕易的看出來說,
link |
41:12.000
這個cost function的定義呢,
link |
41:14.000
其實就是第一名的Y減掉,
link |
41:19.000
這第一名的Y它的value,
link |
41:21.000
減掉正確的Y,
link |
41:23.000
紅色這個Y的value。
link |
41:25.000
這件事情呢,其實是很直觀的。
link |
41:29.000
好,然後呢,
link |
41:31.000
對每一筆Data我們都有一個CN,
link |
41:33.000
然後再全部summation起來,
link |
41:35.000
就是我們total的cost。
link |
41:37.000
講到這邊大家有沒有問題?
link |
41:39.000
好,那你首先第一個要討論的問題就是,
link |
41:43.000
這個CN的最小值,
link |
41:46.000
你覺得它應該是多少?
link |
41:49.000
它可以是負的嗎?
link |
41:53.000
當然它一定可以是正的啦,
link |
41:55.000
如果你看這個第一名,
link |
41:57.000
如果它的值比這個Y hat值要大的話,
link |
42:00.000
它當然可以是正的,
link |
42:01.000
而Y hat值是負一萬,
link |
42:02.000
這第一名是一萬,
link |
42:03.000
那相減的這個CN就是兩萬。
link |
42:05.000
但是這個值可以是,
link |
42:08.000
有可能是負的嗎?
link |
42:10.000
你覺得有可能是負的同學舉手一下。
link |
42:13.000
你覺得它不可能是負的同學舉手一下。
link |
42:16.000
好,謝謝,謝謝。
link |
42:18.000
沒錯,大部分的同學都覺得它不可能是負的。
link |
42:21.000
為什麼呢?
link |
42:22.000
因為如果你今天你的Y hat這個紅色框框,
link |
42:26.000
它是排在第一名的話,
link |
42:27.000
那這個時候第一名就變成它自己啦,
link |
42:30.000
自己減自己就是零啦。
link |
42:32.000
所以今天這個CN,
link |
42:34.000
它的最小值一定是零,
link |
42:37.000
也就是它一定是正的。
link |
42:40.000
OK,這是第一個觀察。
link |
42:43.000
那再來呢,你可能會有一個想法說,
link |
42:46.000
為什麼是第一名的減掉正確的呢?
link |
42:49.000
為什麼不是,
link |
42:50.000
比如說前三名的和減掉正確的,
link |
42:53.000
前十名的和減掉正確的,
link |
42:55.000
其他所有不是正確的Y和和減掉正確的。
link |
42:59.000
這聽起來都是合理的做法,
link |
43:01.000
怎麼只考慮第一名呢?
link |
43:03.000
這為什麼呢?
link |
43:05.000
因為我們不是在這個Problem2假設說,
link |
43:08.000
我們知道這個東西怎麼求嗎?
link |
43:11.000
如果你今天是說,
link |
43:13.000
OK,我不是要第一名減掉正確的,
link |
43:16.000
而是要前三名的和減掉正確的,
link |
43:19.000
你等於是給自己找麻煩,
link |
43:21.000
多製造了一個問題。
link |
43:22.000
因為你現在變成要算
link |
43:24.000
第二名跟第三名的Y是多少,
link |
43:26.000
而這件事情你不一定是知道的。
link |
43:28.000
我們在這個Problem2只假設,
link |
43:30.000
我們會找第一名的值是多少。
link |
43:33.000
所以呢,就順著我們那個Problem2的Constraint,
link |
43:37.000
我們在這邊定義Cost的時候呢,
link |
43:39.000
就不要再製造額外的問題了,
link |
43:42.000
我們只用第一名的值減掉Y和。
link |
43:45.000
當然有其他的可能,
link |
43:47.000
我們之後也會看到,
link |
43:48.000
但是其他的可能呢,
link |
43:49.000
你要在比如說前三名
link |
43:51.000
你能夠找得出來的情況下,
link |
43:53.000
你才能夠用,這樣子。
link |
43:55.000
再來你的問題就是,
link |
43:58.000
要怎麼找一個W去Minimize這個Cost的C呢?
link |
44:02.000
其實我們可以用,就用Gradient Descent就好了。
link |
44:05.000
但是你可能會想說,
link |
44:07.000
這個有辦法做Gradient Descent嗎?
link |
44:09.000
我們可以找到一個W去Minimize這個Function C嗎?
link |
44:13.000
這個Cn裡面可是有一個Max哦,
link |
44:16.000
那我們要怎麼做這個Gradient Descent呢?
link |
44:20.000
我們要怎麼做Gradient Descent呢?
link |
44:22.000
我們要怎麼求這個Cn對W的這個Gradient呢?
link |
44:27.000
其實這件事情呢,是有辦法的。
link |
44:31.000
我想這個其實大家也沒有太意外啦,
link |
44:34.000
因為我們已經看過那個Max Out Network對不對?
link |
44:37.000
Max Out Network裡面也是有一個Max的Function啊,
link |
44:40.000
那你還不是照,你還不是可以去違分它。
link |
44:43.000
所以雖然說這邊Cn呢,
link |
44:45.000
裡面有一個Max的Function,
link |
44:47.000
我們還是可以算它對W的Gradient的。
link |
44:51.000
好,怎麼算呢?
link |
44:53.000
怎麼算呢?
link |
44:55.000
我們觀察一下,
link |
44:57.000
為什麼這一個Function呢,
link |
44:59.000
它不是一個這個,
link |
45:02.000
你會覺得它有點困難。
link |
45:05.000
那是因為說這邊有一個Max,
link |
45:08.000
所以當你今天W的Weight不同的時候,
link |
45:13.000
你這個Max的Y啊,是不一樣的。
link |
45:17.000
因為W不同的時候呢,
link |
45:19.000
你這邊選出來的這個Max呢,是不一樣的。
link |
45:22.000
所以呢,你可以想像說,
link |
45:25.000
今天假如這是一個W所形成的Space,
link |
45:29.000
這個W所形成的Space呢,
link |
45:32.000
其實是被這個Max呢,
link |
45:34.000
切割成好幾塊的。
link |
45:39.000
也就是說,比如說你可以想像說,
link |
45:41.000
當W呢,它的值呢,
link |
45:43.000
今天因為這是二維的頂面嘛,
link |
45:45.000
可能就是W有,
link |
45:47.000
就是一個二維的Vector。
link |
45:49.000
當W的值呢,落在這個範圍裡面的時候,
link |
45:52.000
你把它帶進這個Function裡面,
link |
45:55.000
得出來的Y呢,是Y'。
link |
45:57.000
當W的值落在這個範圍裡面的時候呢,
link |
46:00.000
帶進這個Function,得出來的值是Y''。
link |
46:02.000
落在這個範圍裡面的時候呢,
link |
46:04.000
得出來的值是Y'''.
link |
46:07.000
那在每一個Region裡面呢,
link |
46:10.000
它的Function其實你是可以非常輕易地算出來的。
link |
46:14.000
因為如果你知道說,
link |
46:16.000
在這個Region裡面,
link |
46:18.000
這個Max的結果呢,
link |
46:21.000
就是Y'的話,
link |
46:23.000
那其實在這個Region裡面,
link |
46:25.000
這個Value C它的Function呢,
link |
46:28.000
其實就只是簡單的,
link |
46:30.000
W跟Y' Feature的Inner Product,
link |
46:34.000
減掉W跟Yhead的Inner Product而已。
link |
46:37.000
或者是這一部分,
link |
46:39.000
你知道它是Y'',
link |
46:41.000
那它就只是W跟Y''的Inner Product,
link |
46:43.000
減掉W跟Yhead的Inner Product。
link |
46:45.000
或者是這一邊呢,
link |
46:47.000
它只是這個,
link |
46:49.000
W跟Y''的Inner Product,
link |
46:51.000
減掉W跟Yhead的Inner Product。
link |
46:53.000
你可以想像說,
link |
46:55.000
在這邊邊界的地方,
link |
46:57.000
在邊界的這個地方呢,
link |
46:59.000
它是non-smooth的,
link |
47:01.000
是沒有辦法為分的。
link |
47:03.000
但是只要避開邊界的地方,
link |
47:05.000
在這個每一個Region裡面,
link |
47:07.000
在這個每一個Region裡面,
link |
47:09.000
它都只是一個很簡單的Function,
link |
47:11.000
你都是可以為分的。
link |
47:13.000
所以呢,
link |
47:15.000
這個每一個Region的為分呢,
link |
47:17.000
這個每一個Region,
link |
47:19.000
每一個Region的C對這個W的Gradient,
link |
47:21.000
你可以輕易求出來,
link |
47:23.000
在這個Region就是Y''的Feature,
link |
47:25.000
減掉Yhead的Feature,
link |
47:27.000
然後在中間這個Region,
link |
47:29.000
就是Y''的Feature,
link |
47:31.000
減掉Yhead的Feature,
link |
47:33.000
右邊這個Region就是Y''的Feature,
link |
47:35.000
減掉Yhead的Feature。
link |
47:37.000
那既然你會求它的Gradient,
link |
47:39.000
那你就可以用Gradient Descent,
link |
47:41.000
來Optimize你的Function,
link |
47:43.000
來找出一個讓Cost的Value最小。
link |
47:45.000
所以呢,
link |
47:47.000
我們的演算法就是這個樣子。
link |
47:49.000
假設呢,我就執行T4的Update,
link |
47:51.000
假設我做Stochastic Gradient Descent,
link |
47:53.000
假設我做Stochastic Gradient Descent,
link |
47:55.000
所以我每次呢,
link |
47:57.000
都Random Pick一個Xn,Yn Head,
link |
47:59.000
然後來做Trending,
link |
48:01.000
來算它的Gradient。
link |
48:03.000
那Given Xn,Yn Head,
link |
48:05.000
我要怎麼算它的Gradient呢?
link |
48:07.000
那首先呢,我要先知道說,
link |
48:09.000
我落在哪一個Region裡面。
link |
48:11.000
要知道我落在哪一個Region,
link |
48:13.000
要知道我落在哪一個Region裡面呢,
link |
48:15.000
要知道我落在哪一個Region裡面呢,
link |
48:17.000
我發現我寫錯一個地方。
link |
48:19.000
我發現我寫錯一個地方。
link |
48:21.000
我發現我寫錯一個地方。
link |
48:23.000
這個應該是ARG啊,
link |
48:25.000
這個應該是ARG啊,
link |
48:27.000
對不對?
link |
48:29.000
對吧?
link |
48:31.000
好,不過我先發現了。
link |
48:33.000
Yn Head,這個Max的話,
link |
48:35.000
它只是Value啊,ARG它才是會Return Y回來。
link |
48:37.000
它才是會Return Y回來。
link |
48:39.000
好,這邊有個ARG啊,
link |
48:41.000
好,我們先知道說,
link |
48:43.000
我們現在所在的這個W,
link |
48:45.000
我們現在所在的這個W,
link |
48:47.000
Given我們現在所在的W,
link |
48:49.000
我們在哪一個Region裡面?
link |
48:51.000
我們在哪一個Y的Region裡面?
link |
48:53.000
然後我們算出來呢,
link |
48:55.000
是在Y Delta N的Region裡面。
link |
48:57.000
所以呢,我們現在要算Gradient就簡單了。
link |
48:59.000
Gradient呢,
link |
49:01.000
就是Y Delta所形成的Feature,
link |
49:03.000
減掉Y Head呢,
link |
49:05.000
所形成的Feature。
link |
49:07.000
所以呢,Gradient很簡單。
link |
49:09.000
然後呢,我們要Update呢,也很簡單。
link |
49:11.000
就是把W減掉,
link |
49:13.000
這個Eta乘上這個
link |
49:15.000
歸年,
link |
49:17.000
所以就W減掉Eta,
link |
49:19.000
乘上Y Delta的Feature,減掉Y Head的Feature。
link |
49:21.000
那你會發現說,
link |
49:23.000
這個式子有沒有很眼熟呢?
link |
49:25.000
如果我把這個
link |
49:27.000
Learning Rate設1,
link |
49:29.000
我把Learning Rate設1,
link |
49:31.000
它是不是就是Structure Percentile呢?
link |
49:33.000
對不對,Structure Percentile的時候,
link |
49:35.000
我們就是
link |
49:37.000
把這個W呢,
link |
49:39.000
減掉錯誤的Feature,
link |
49:41.000
再加上正確的Feature。
link |
49:43.000
那今天呢,
link |
49:45.000
在這邊我們用Weight and Descent的時候呢,
link |
49:47.000
我們只是需要稍微調一下這個
link |
49:49.000
Learning Rate而已。Learning Rate設1的話,
link |
49:51.000
其實做的事情就跟剛才的Structure Percentile呢,
link |
49:53.000
其實是一樣的。
link |
49:55.000
好,那我們在這邊呢,
link |
49:57.000
先休息一下,那等一下再繼續講。
link |
49:59.000
好,那接下來要做的事情是,
link |
50:23.000
我們要再修改一下
link |
50:25.000
我們剛才的Cost Function。
link |
50:27.000
我們要改什麼呢?
link |
50:29.000
在我們剛才的那個
link |
50:31.000
Cost Function裡面,
link |
50:33.000
對我們來說呢,
link |
50:35.000
所有錯的東西呢,
link |
50:37.000
都是一視同仁的。
link |
50:39.000
它並沒有任何的
link |
50:41.000
差別。
link |
50:43.000
所有錯的東西呢,
link |
50:45.000
我們都是視為,
link |
50:47.000
所有的錯誤我們都是視為一樣。
link |
50:49.000
但事實上呢,並不是如此。
link |
50:51.000
那在Structure Learning的
link |
50:53.000
Case裡面,
link |
50:55.000
你的Output有非常非常多的可能。
link |
50:57.000
那在這些可能裡面,
link |
50:59.000
有一些Output的可能,
link |
51:01.000
其實是跟正確的很接近的。
link |
51:03.000
舉例來說,假設正確的是紅色這個框框,
link |
51:05.000
那如果你的系統的Output
link |
51:07.000
是第二名這個框框,
link |
51:09.000
那其實也是框在梁宏春的臉上。
link |
51:11.000
或許你對這個結果呢,
link |
51:13.000
也是可以接受的,
link |
51:15.000
但是如果框在19樓的臉上,
link |
51:17.000
或者是框在櫻花樹上,
link |
51:19.000
你可能就不能夠接受。
link |
51:21.000
所以不同的錯誤之間呢,
link |
51:23.000
還是有差別的。
link |
51:25.000
我們應該把這種錯誤不同的,
link |
51:27.000
這個錯誤是有不同等級的,
link |
51:29.000
我們應該把這件事情呢,
link |
51:31.000
在Training的時候呢,
link |
51:33.000
考慮進去。
link |
51:35.000
比如說呢,如果框框呢,
link |
51:37.000
放在櫻花樹上,
link |
51:39.000
那這個結果其實是非常差的。
link |
51:41.000
那我會希望他的分數呢,
link |
51:43.000
特別低。
link |
51:45.000
而如果今天的框框呢,
link |
51:47.000
是框在梁宏春的臉上,
link |
51:49.000
只是沒有,
link |
51:51.000
那結果其實是可接受的。
link |
51:53.000
那我希望他的分數呢,
link |
51:55.000
其實沒有辦法壓低就算了,
link |
51:57.000
就算他的分數呢,
link |
51:59.000
是跟這個正確的框框分數很接近的話呢,
link |
52:01.000
也無所謂,
link |
52:03.000
或許也是可以接受的。
link |
52:05.000
OK。
link |
52:07.000
那所以今天呢,如果有一個waiter,
link |
52:09.000
他是,
link |
52:11.000
他只知道把正確的框框呢,
link |
52:13.000
擺在第一位,
link |
52:15.000
其他錯誤的框框對他來說都是一樣的。
link |
52:17.000
或者是有另外一個waiter,
link |
52:19.000
他不只知道說要把正確的框框擺在第一位,
link |
52:21.000
他還知道說,
link |
52:23.000
如果那個框框其實錯得沒有很離譜,
link |
52:25.000
他的分數也應該很高。
link |
52:27.000
那那些這個很離譜的框框,
link |
52:29.000
錯得很離譜的框框呢,
link |
52:31.000
要把他的分數壓得很低。
link |
52:33.000
那顯然右邊這個waiter呢,
link |
52:35.000
你會覺得是比較好的。
link |
52:37.000
那如果你今天的waiter能夠做到說,
link |
52:39.000
如果你今天的waiter可以做到說,
link |
52:41.000
他是,
link |
52:43.000
你可以想像,
link |
52:45.000
他是按照這些框框的好壞來排序的話,
link |
52:47.000
那其實你可以得到一個好處,
link |
52:49.000
就是你的結果其實是比較安全的。
link |
52:51.000
為什麼呢?
link |
52:53.000
因為假如你今天的testing跟training
link |
52:55.000
是有一些差距的話,
link |
52:57.000
你的第一名不是正確的,
link |
52:59.000
那至少可以保證說,
link |
53:01.000
那些分數比較高的,
link |
53:03.000
跟第一名呢,
link |
53:05.000
他們的差距呢,
link |
53:07.000
沒有很大,
link |
53:09.000
他們是非常的相近。
link |
53:11.000
那我要怎麼把這件事情考慮到我們的cost function裡面呢?
link |
53:13.000
那以下呢,
link |
53:15.000
是一個可能的想法。
link |
53:17.000
這個想法是說,
link |
53:19.000
這個是正確的框框,
link |
53:21.000
這邊有兩個錯誤的框框,
link |
53:23.000
而當這個錯誤的框框
link |
53:25.000
跟正確的框框,
link |
53:27.000
他其實很像,
link |
53:29.000
或是我把這個錯誤的框框,
link |
53:31.000
我把這個正確的框框弄錯,
link |
53:33.000
弄錯成這個錯誤的框框,
link |
53:35.000
大家也可以接受的話,
link |
53:37.000
那我們會希望呢,
link |
53:39.000
這一個框框他的分數,
link |
53:41.000
跟正確的框框他的分數呢,
link |
53:43.000
是差距比較小。
link |
53:45.000
反之如果今天有一個框框呢,
link |
53:47.000
他是錯得很離譜的,
link |
53:49.000
那我會希望他的分數呢,
link |
53:51.000
跟這個正確框框的分數呢,
link |
53:53.000
是差距呢,
link |
53:55.000
比較大。
link |
53:57.000
那但是,接下來有另外一個問題就是,
link |
53:59.000
我們要怎麼evaluate說,
link |
54:01.000
這是一個好的框框,
link |
54:03.000
這是一個不好的框框呢?
link |
54:05.000
這件事情呢,其實也是這個,
link |
54:07.000
task dependent的啦,
link |
54:09.000
在不同的task呢,
link |
54:11.000
去定義他。
link |
54:13.000
那我們把這個正確的框框,
link |
54:15.000
正確的一個y hat,
link |
54:17.000
跟某一個y之間的這個差距呢,
link |
54:19.000
定義成一個delta的function,
link |
54:21.000
這個delta就是一個function,
link |
54:23.000
你代入一個y hat,
link |
54:25.000
給一個y,他就會告訴你說,
link |
54:27.000
這個y hat跟y的差距呢,
link |
54:29.000
有多少。
link |
54:31.000
所以這個delta應該是什麼樣子,
link |
54:33.000
這個是要你自己去定的。
link |
54:35.000
然後這邊呢,
link |
54:37.000
我們會在以下討論,
link |
54:39.000
我們都會假設這個delta呢,
link |
54:41.000
他是正值,
link |
54:43.000
他代表一個差距,
link |
54:45.000
他是一個正值,他沒有負的。
link |
54:47.000
那如果今天呢,是自己對自己,
link |
54:49.000
比如說這邊裡面的這兩個y呢,
link |
54:51.000
都是一樣的話,那這個delta呢,
link |
54:53.000
就是0。
link |
54:55.000
那如果在影像上呢,
link |
54:57.000
你會怎麼定這個delta呢?
link |
54:59.000
當然你可以定一些很這個,
link |
55:01.000
嚴格的delta說,OK,
link |
55:03.000
只要這兩個框框有一點點不一樣,
link |
55:05.000
那這個delta就是1萬,
link |
55:07.000
然後說一樣的時候才是0。
link |
55:09.000
你要這樣定也可以,
link |
55:11.000
你可以用任何你想要定的方式來定。
link |
55:13.000
那常見的做法呢,
link |
55:15.000
是把這個delta呢,定成像這樣子。
link |
55:17.000
這邊這個a of y啊,
link |
55:19.000
代表著這個,
link |
55:21.000
呃,y這一個框框,
link |
55:23.000
他的這個面積。
link |
55:25.000
然後我們把delta呢,
link |
55:27.000
定義成1減掉呢,
link |
55:29.000
這個input的這個y hat,
link |
55:31.000
跟y的這個面積的交集,
link |
55:33.000
除掉呢,
link |
55:35.000
y hat跟y的面積的連接。
link |
55:37.000
所以如果今天呢,
link |
55:39.000
他們兩個面積的交集很小,
link |
55:41.000
那這一項很小,
link |
55:43.000
那delta呢,就會接近1。
link |
55:45.000
如果今天他們兩個的,
link |
55:47.000
這個交集很大,
link |
55:49.000
交集很大,
link |
55:51.000
那這樣子delta呢,就會接近0。
link |
55:53.000
那這是一個很合理的delta的定法。
link |
55:59.000
好,那有了delta以後呢,
link |
56:01.000
我們會怎麼修改
link |
56:03.000
這個cost function呢?
link |
56:05.000
這邊呢,這個做法是這樣子。
link |
56:07.000
我們本來的
link |
56:09.000
cost function呢,
link |
56:11.000
是取第一名,
link |
56:13.000
這個分數最高的那一個y,
link |
56:15.000
去減掉
link |
56:17.000
正確的y hat
link |
56:19.000
所得到的分數。
link |
56:21.000
那我們現在呢,
link |
56:23.000
不是取分數最高的那一個y,
link |
56:25.000
我們評斷分數的方法呢,
link |
56:27.000
是用那個y的分數,
link |
56:29.000
再加上他的
link |
56:31.000
delta。
link |
56:33.000
我們會看看哪一個y,
link |
56:35.000
他不只是分數大,
link |
56:37.000
delta也大,
link |
56:39.000
那我們才是覺得他是
link |
56:41.000
真正的第一名。
link |
56:43.000
然後呢,我們會拿
link |
56:45.000
這樣子一個y呢,
link |
56:47.000
來減掉y hat的
link |
56:49.000
分數。
link |
56:51.000
或者是呢,
link |
56:53.000
你可以想看看,
link |
56:55.000
我們的精神就是說,
link |
56:57.000
如果今天呢,
link |
56:59.000
這個y呢,
link |
57:01.000
他的delta值很大,
link |
57:03.000
我就希望呢,
link |
57:05.000
他呢,跟正確的答案呢,
link |
57:07.000
分數的差距拉得
link |
57:09.000
越遠越好。
link |
57:11.000
反之如果今天有一個框框呢,
link |
57:13.000
他跟分數最大的
link |
57:15.000
這個delta呢,
link |
57:17.000
他跟正確的這個框框
link |
57:19.000
其實很像的話呢,
link |
57:21.000
那我就覺得說,他們的分數就算沒有
link |
57:23.000
拉開呢,也沒有
link |
57:25.000
關係。
link |
57:27.000
沒有嗎?
link |
57:29.000
OK,好。
link |
57:31.000
有人有問題嗎?
link |
57:33.000
好,沒有。
link |
57:35.000
好,那這個,
link |
57:37.000
所以呢,
link |
57:39.000
你可以想想看,這個Cn
link |
57:41.000
在什麼狀況下呢,
link |
57:43.000
會得到0。
link |
57:45.000
他得到0的狀況是,
link |
57:47.000
這一項的值
link |
57:49.000
大過於所有的
link |
57:51.000
y的delta,
link |
57:53.000
加上這一項的值。
link |
57:55.000
也就是說,
link |
57:57.000
什麼時候Cn會最小呢?
link |
57:59.000
當你的正確的
link |
58:01.000
y hat所形成的
link |
58:03.000
當你的正確的y hat
link |
58:05.000
所得到的分數,不只是
link |
58:07.000
比其他的y還要
link |
58:09.000
大,而都
link |
58:11.000
大過一個error function
link |
58:13.000
所形成的delta的值
link |
58:15.000
的時候,那你的Cn呢,
link |
58:17.000
會是最小。
link |
58:19.000
好,所以那我們就用這個方式呢,
link |
58:21.000
把delta呢,考慮到
link |
58:23.000
我們的cost function裡面。
link |
58:27.000
那這一個
link |
58:29.000
delta呢,所形成的差距呢,
link |
58:31.000
我們叫做
link |
58:33.000
margin。所以今天如果有一個
link |
58:35.000
y呢,他是一個
link |
58:37.000
很糟的y,那
link |
58:39.000
他呢,跟正確答案之間的margin
link |
58:41.000
就要很大。如果有一個y呢,
link |
58:43.000
是商號可以接受的y,
link |
58:45.000
那他跟正確答案之間的margin呢,
link |
58:47.000
就要比較小。
link |
58:49.000
那我們是用這個cost function呢,
link |
58:51.000
來描述
link |
58:53.000
這一件事情。
link |
58:55.000
那要,欸,有什麼問題嗎?
link |
59:05.000
margin會怎麼定?OK。
link |
59:07.000
比如說,我們今天要
link |
59:09.000
做這個語音辨識,
link |
59:11.000
那一樣是這個
link |
59:13.000
framewise的
link |
59:15.000
recognition,就是每一個vector
link |
59:17.000
你都會得到一個label的話,
link |
59:19.000
那你
link |
59:21.000
可以把你的delta
link |
59:23.000
定義成說在這個sequence
link |
59:25.000
裡面,有百分之多少
link |
59:27.000
的這個
link |
59:29.000
你的系統的output,是跟
link |
59:31.000
正確答案不一樣。那這個你可以
link |
59:33.000
定義他是你的y。但你也可以
link |
59:35.000
說,我今天這兩個sequence
link |
59:37.000
只要有一個答案不一樣,
link |
59:39.000
那這個delta呢,
link |
59:41.000
就是這個1。
link |
59:43.000
只有他們的兩個sequence完全
link |
59:45.000
一樣的時候,你也可以這樣定。
link |
59:47.000
就完全是看你的
link |
59:49.000
就看你高興這樣。
link |
59:51.000
那但是呢,這邊有一個
link |
59:53.000
麻煩的地方是
link |
59:55.000
你有沒有發現說,我們多了
link |
59:57.000
一個問題呢?就我們
link |
59:59.000
本來說我們假設問題2可以
link |
01:00:01.000
告訴我們這個問題的答案。
link |
01:00:03.000
那現在我們不是要
link |
01:00:05.000
找w跟這個feature vector
link |
01:00:07.000
inner product最大的值就好了。
link |
01:00:09.000
我們是要找delta
link |
01:00:11.000
再加上這個inner product最大的值。
link |
01:00:13.000
這其實是另外一個問題啊。
link |
01:00:15.000
所以我們其實
link |
01:00:17.000
當我們加把這個margin考慮進來
link |
01:00:19.000
的時候呢,我們其實
link |
01:00:21.000
又給自己添了一個麻煩,就是我們增加了一個
link |
01:00:23.000
新的問題。所以你在定義
link |
01:00:25.000
這個delta的時候要很小心。
link |
01:00:27.000
有的delta呢,會讓你這個問題
link |
01:00:29.000
變得很難解。有的delta會讓你
link |
01:00:31.000
這個問題是容易解的。
link |
01:00:33.000
這個呢,也是你在定delta
link |
01:00:35.000
的時候呢,需要考慮的一件事情。
link |
01:00:39.000
好,那接下來這個東西啊,
link |
01:00:41.000
我們原來的
link |
01:00:43.000
function是這樣子。
link |
01:00:45.000
那我們現在把它變成這樣子。
link |
01:00:47.000
那這個東西我們要
link |
01:00:49.000
怎麼用gradient descent去
link |
01:00:51.000
optimize它呢?那其實很
link |
01:00:53.000
容易的,跟剛才的這個
link |
01:00:55.000
方法並沒有太大的差異。
link |
01:00:57.000
首先呢,我們本來呢
link |
01:00:59.000
是要找一個
link |
01:01:01.000
這邊少了arg
link |
01:01:03.000
好,沒關係。
link |
01:01:05.000
我們本來要找的y delta
link |
01:01:07.000
是讓這個式子的值呢
link |
01:01:09.000
最大。那我們現在要找的
link |
01:01:11.000
不是讓這個inefata最大就好。
link |
01:01:13.000
我們要讓inefata加上delta的
link |
01:01:15.000
sum最大。
link |
01:01:17.000
那所以這個式子找出來的y
link |
01:01:19.000
跟這個式子找出來的y
link |
01:01:21.000
他們不會是同一個,了解嗎?
link |
01:01:23.000
他們不一定會是同一個。
link |
01:01:25.000
好,所以我們說
link |
01:01:27.000
這個式子找出來的y,叫做y delta
link |
01:01:29.000
這個式子找出來的y
link |
01:01:31.000
叫做y bar,這樣。
link |
01:01:33.000
那我希望你,你坐在下面
link |
01:01:35.000
是可以看得出來這個,這個是bar
link |
01:01:37.000
這個是delta,這樣你可以看得出來
link |
01:01:39.000
這個差別。
link |
01:01:41.000
那如果是bar的話,我就會用紫色啦。
link |
01:01:43.000
所以你還是可以看得出來他們顏色是不一樣。
link |
01:01:45.000
好,那我剛才有講過說
link |
01:01:47.000
你用這個
link |
01:01:49.000
你做這件事情的時候
link |
01:01:51.000
你就會給自己增加一個新的問題了。
link |
01:01:53.000
那你就要想想看說,這個問題
link |
01:01:55.000
是不是你能夠解的。
link |
01:01:57.000
那你可能需要稍微設計一下
link |
01:01:59.000
你的delta,讓這個問題呢
link |
01:02:01.000
是容易解的。
link |
01:02:03.000
好,那所以
link |
01:02:05.000
再來的事情呢,就都一樣了。
link |
01:02:07.000
我們原來是
link |
01:02:09.000
用y delta的feature,減掉
link |
01:02:11.000
這個y hat的feature當作歸點。
link |
01:02:13.000
現在只是把y bar的feature
link |
01:02:15.000
減掉y hat的feature當作歸點。
link |
01:02:17.000
那update呢,就一樣了。
link |
01:02:19.000
我們就是w減掉eta
link |
01:02:21.000
乘上y bar,減掉y hat。
link |
01:02:23.000
然後呢,我們就可以optimize
link |
01:02:25.000
這樣一個式子了。
link |
01:02:27.000
好,那其實剛才那個cost function呢
link |
01:02:29.000
有另外一個觀點
link |
01:02:31.000
可以來解釋它。
link |
01:02:33.000
這個觀點是說,剛才那個cost function
link |
01:02:35.000
其實是
link |
01:02:37.000
你在training data上的
link |
01:02:39.000
error的upper bound。
link |
01:02:41.000
所以當你去
link |
01:02:43.000
minimize剛才那個cost function
link |
01:02:45.000
的時候,有考慮margin的cost function
link |
01:02:47.000
的時候,你是在
link |
01:02:49.000
minimize training data上的error的
link |
01:02:51.000
upper bound。你minimize upper bound
link |
01:02:53.000
並不代表
link |
01:02:55.000
你minimize upper bound並不代表說
link |
01:02:57.000
這個error一定會變小,
link |
01:02:59.000
但它有可能是會跟著變小的。
link |
01:03:01.000
好,
link |
01:03:03.000
這個意思是說
link |
01:03:05.000
假設我們今天的
link |
01:03:07.000
inference function就是這樣。
link |
01:03:09.000
我們是拿y tilde,也就是
link |
01:03:11.000
可以讓這個inner product值最大的那個y
link |
01:03:13.000
當作我們系統的
link |
01:03:15.000
output。那我們希望
link |
01:03:17.000
minimize的對象呢,
link |
01:03:19.000
是一個cost叫做c'
link |
01:03:21.000
c'呢,其實是這個
link |
01:03:23.000
y tilde跟
link |
01:03:25.000
y hat它們的difference的
link |
01:03:27.000
和。那我們希望呢,
link |
01:03:29.000
y tilde跟y hat它們之間的
link |
01:03:31.000
我們能夠找到一個w
link |
01:03:33.000
讓y tilde跟y hat它們之間的difference
link |
01:03:35.000
越小越好。
link |
01:03:37.000
那我們呢,
link |
01:03:39.000
希望去minimize這個c'
link |
01:03:41.000
那minimize這個c'呢,
link |
01:03:43.000
這等於是minimize我們的error。
link |
01:03:45.000
但是呢,你會發現說
link |
01:03:47.000
minimize c'這件事情
link |
01:03:49.000
並沒有那麼容易。
link |
01:03:51.000
因為今天這個delta
link |
01:03:53.000
y可以是任何的object,
link |
01:03:55.000
這個delta可以是任何的
link |
01:03:57.000
function。而當delta
link |
01:03:59.000
可以是任何的function的時候
link |
01:04:01.000
這個
link |
01:04:03.000
你可以想想看說,就算是
link |
01:04:05.000
我們就算是一個
link |
01:04:07.000
function它不是
link |
01:04:09.000
它在某些地方不可為分,我們其實都
link |
01:04:11.000
還是可以用gradient descent
link |
01:04:13.000
去minimize它。但是這個delta呢,
link |
01:04:15.000
可能比我們之前看到那些
link |
01:04:17.000
不可為分的function都還要更複雜。
link |
01:04:19.000
比如說它可能是
link |
01:04:21.000
階梯狀。
link |
01:04:23.000
它可能是階梯狀。
link |
01:04:25.000
如果是階梯狀的話呢,這
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
因為你可能說我改變了
link |
01:04:37.000
我對w的值做一些小小
link |
01:04:39.000
的改變,但是對這個delta呢
link |
01:04:41.000
完全
link |
01:04:43.000
一點影響都沒有。比如說我們今天
link |
01:04:45.000
做的是語音辨識,
link |
01:04:47.000
那我們說錯了一個
link |
01:04:49.000
就是我們這邊呢
link |
01:04:51.000
是這個辨識錯誤的比率。
link |
01:04:53.000
所以我們今天的w的影響
link |
01:04:55.000
要影響到我們能夠讓
link |
01:04:57.000
辨識的output有改變的時候,
link |
01:04:59.000
delta的值才有可能有改變。
link |
01:05:01.000
所以當我們稍微更動
link |
01:05:03.000
一下w的時候,這個delta的值很有可能
link |
01:05:05.000
是完全沒有改變的,它為分可能
link |
01:05:07.000
是零的。所以你會發現說
link |
01:05:09.000
當我調w的時候,
link |
01:05:11.000
大部分的時候為分都是零。
link |
01:05:13.000
只有在某個時候,調到某個
link |
01:05:15.000
臨界點的時候呢,這delta
link |
01:05:17.000
當你可以調w讓你這個
link |
01:05:19.000
recognition output稍微有點改變的時候呢,
link |
01:05:21.000
你才會讓delta的值有改變。
link |
01:05:23.000
所以那個地方呢,歸電
link |
01:05:25.000
又會瞬間有一個無限大的歸點,
link |
01:05:27.000
那邊就變得
link |
01:05:29.000
不知道要怎麼optimize。
link |
01:05:31.000
所以這個delta這樣的
link |
01:05:33.000
c'這個function呢,你其實很難去
link |
01:05:35.000
optimize它。
link |
01:05:37.000
不過還好是我們有這個
link |
01:05:39.000
我們剛才要optimize
link |
01:05:41.000
的那個function,我們剛才可以拿來
link |
01:05:43.000
做gradient的那個cos的function c,
link |
01:05:45.000
而這個cos的function呢,
link |
01:05:47.000
它是這個function
link |
01:05:49.000
的一個upper bound,
link |
01:05:51.000
它是它的upper bound。
link |
01:05:53.000
所以我們可以把這個東西
link |
01:05:55.000
當作是它的一個代理人。
link |
01:05:57.000
就我們不去真的去
link |
01:05:59.000
找一個w minimize它,這件事不知道
link |
01:06:01.000
怎麼做,但是我們
link |
01:06:03.000
找一個w來
link |
01:06:05.000
minimize它,希望藉由
link |
01:06:07.000
minimize它,我們
link |
01:06:09.000
找出來的w呢,可能沒有辦法
link |
01:06:11.000
真的minimize c',可是可能
link |
01:06:13.000
也不要讓c'的值太大就是了。
link |
01:06:17.000
好,有什麼問題嗎?
link |
01:06:19.000
可以再講一次
link |
01:06:21.000
upper bound的關係嗎?
link |
01:06:23.000
其實我們等一下會
link |
01:06:25.000
證明啦,等一下會證明說
link |
01:06:27.000
為什麼這個東西
link |
01:06:29.000
是它的一個upper bound。
link |
01:06:31.000
我們還沒有證明說為什麼它是
link |
01:06:33.000
它的upper bound,只是先說結論
link |
01:06:35.000
它是它的一個upper bound。
link |
01:06:37.000
所以現在下來下一頁
link |
01:06:39.000
就是要證明說
link |
01:06:41.000
為什麼它是
link |
01:06:43.000
它的upper bound呢?
link |
01:06:45.000
我們只要證明說c'
link |
01:06:47.000
這個summation,但我們不要管那個summation
link |
01:06:49.000
我們只要證明說cn
link |
01:06:51.000
是這個delta的upper bound
link |
01:06:53.000
那這一整個c就會是c'的
link |
01:06:55.000
upper bound,所以我們接下來就是要說
link |
01:06:57.000
為什麼這件事情呢
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
這個證明很簡單啦,這個很trivial
link |
01:07:09.000
就一頁而已,證明是怎麼樣呢?
link |
01:07:11.000
這一項啊
link |
01:07:13.000
這一項
link |
01:07:15.000
這一項delta
link |
01:07:17.000
是不是小於等於delta
link |
01:07:19.000
加上w
link |
01:07:21.000
跟y'
link |
01:07:23.000
的feature的inner product
link |
01:07:25.000
減掉w跟y hat的
link |
01:07:27.000
inner product呢?
link |
01:07:29.000
為什麼這一項會小於這一項呢?
link |
01:07:31.000
因為這一項的值呢
link |
01:07:33.000
會是大於零的
link |
01:07:35.000
這一項的值會是大於零的
link |
01:07:37.000
為什麼這一項的值
link |
01:07:39.000
會大於零呢?
link |
01:07:41.000
因為y delta
link |
01:07:43.000
是一個可以讓
link |
01:07:45.000
這個inner product最大的y
link |
01:07:47.000
y delta是一個可以讓
link |
01:07:49.000
這個inner product最大的y
link |
01:07:51.000
所以呢,不管是誰
link |
01:07:53.000
他的inner product一定都會輸給
link |
01:07:55.000
y delta,就算是y hat
link |
01:07:57.000
也輸給y delta
link |
01:07:59.000
當然也有可能y delta本來就是y hat
link |
01:08:01.000
那這一項就是零
link |
01:08:03.000
但是假如y delta不等於y hat的話呢
link |
01:08:05.000
那這一項就是大於零了
link |
01:08:07.000
因為這一項呢
link |
01:08:09.000
是大於零的
link |
01:08:11.000
所以這個delta會小於等於delta
link |
01:08:13.000
加上這個大於零的項
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
跟第二項上
link |
01:08:27.000
然後呢
link |
01:08:29.000
我們說這一項
link |
01:08:31.000
會小於呢
link |
01:08:33.000
這一項
link |
01:08:35.000
我們把前面這個
link |
01:08:37.000
括號這邊,前面再
link |
01:08:39.000
加上一個max
link |
01:08:41.000
我們本來是算
link |
01:08:43.000
y delta的delta,加上
link |
01:08:45.000
y delta的feature的inner product
link |
01:08:47.000
現在變成說
link |
01:08:49.000
我們找一個y
link |
01:08:51.000
他呢,是delta
link |
01:08:53.000
加上inner product最大的
link |
01:08:55.000
那一個y
link |
01:08:57.000
既然這個y是
link |
01:08:59.000
delta加上inner product最大的那個y
link |
01:09:01.000
他一定贏過y delta
link |
01:09:03.000
的delta加上inner product
link |
01:09:05.000
最大的嘛,誰都輸給他,y delta
link |
01:09:07.000
還是輸給他,所以這一項
link |
01:09:09.000
又是他的upper bound
link |
01:09:11.000
而這一項就是這一項
link |
01:09:13.000
就是Cn
link |
01:09:15.000
所以delta是小於等於Cn的
link |
01:09:19.000
那其實你要讓delta
link |
01:09:21.000
小於等於Cn,也不只這個solution
link |
01:09:23.000
你可以有別的solution
link |
01:09:25.000
剛才我們講的是這個
link |
01:09:27.000
那這個呢,我們叫做
link |
01:09:29.000
margin的rescaling
link |
01:09:31.000
那有另外一招叫
link |
01:09:33.000
negative variable的rescaling
link |
01:09:35.000
他是說,我把
link |
01:09:37.000
1加上
link |
01:09:39.000
這個w跟y的
link |
01:09:41.000
inner product,再減掉
link |
01:09:43.000
y hat的inner product
link |
01:09:45.000
前面呢,再乘上delta
link |
01:09:47.000
ok
link |
01:09:49.000
那這個東西呢
link |
01:09:51.000
也滿足這個式子
link |
01:09:53.000
那你可能會有點困惑說
link |
01:09:55.000
為什麼前面要加上1呢
link |
01:09:57.000
因為加上1才可以滿足
link |
01:09:59.000
這個式子,沒加上1就不滿足這個式子了
link |
01:10:01.000
所以前面加上1
link |
01:10:03.000
這個地方看起來是有點怪
link |
01:10:05.000
但是他的這個精神呢
link |
01:10:07.000
你是可以了解,他的精神是說
link |
01:10:09.000
我們今天先算
link |
01:10:11.000
某一個y跟y hat之間的差距
link |
01:10:13.000
但是這個差距呢
link |
01:10:15.000
要再乘上delta
link |
01:10:17.000
也就是說,如果今天這個y呢
link |
01:10:19.000
跟y hat的差距很大的話
link |
01:10:21.000
所以這個y
link |
01:10:23.000
是一個很糟的y
link |
01:10:25.000
他是一個delta很大的y的話
link |
01:10:27.000
那他的差距就會被放大
link |
01:10:29.000
反之如果今天y是一個很好的y的話
link |
01:10:31.000
乘上delta值很小
link |
01:10:33.000
那他的差距就會被縮小
link |
01:10:35.000
這個精神呢
link |
01:10:37.000
也是滿有道理的
link |
01:10:39.000
那當初為什麼會提這個function呢
link |
01:10:41.000
那其實他提這個function的理由
link |
01:10:43.000
其實也是滿有意思的
link |
01:10:45.000
他就說,你想想看我們這邊呢
link |
01:10:47.000
是取delta加上w
link |
01:10:49.000
的inner product這一項
link |
01:10:51.000
那這兩項搞不好根本就不在
link |
01:10:53.000
同一個scale裡面啊
link |
01:10:55.000
對不對,因為delta是你隨便亂定的
link |
01:10:57.000
大家不是認出來的
link |
01:10:59.000
搞不好他們根本不在同一個scale裡面
link |
01:11:01.000
搞不好這一項的值都
link |
01:11:03.000
搞不好這一項的值是0到0.001
link |
01:11:05.000
這一項的值是0到1000萬
link |
01:11:07.000
那這樣不就變成其中有一項都沒有什麼用了嗎
link |
01:11:09.000
所以他就說,那不要用加的
link |
01:11:11.000
我用乘的
link |
01:11:13.000
可能得到的結果會好一點
link |
01:11:19.000
好,那這個呢
link |
01:11:21.000
接下來呢,我們就是再加上regularization
link |
01:11:23.000
那加上regularization其實很簡單的
link |
01:11:25.000
這個大家就可以很快很快的看過去
link |
01:11:29.000
我們知道說training data
link |
01:11:31.000
testing data可能有這個
link |
01:11:33.000
mismatch的problem
link |
01:11:35.000
我們之前也講過說,如果w跟0
link |
01:11:37.000
比較接近的話
link |
01:11:39.000
那我們就可以minimize
link |
01:11:41.000
這個mismatch
link |
01:11:43.000
所造成的影響
link |
01:11:45.000
所以我們原來的cluster function呢
link |
01:11:47.000
是長這個樣子
link |
01:11:49.000
那我們要把w接近0
link |
01:11:51.000
這件事情呢,加進去
link |
01:11:53.000
也就是說呢,我們在原來的cluster function
link |
01:11:55.000
裡面再加上
link |
01:11:57.000
一項,那這一項呢
link |
01:11:59.000
是w弄的平方
link |
01:12:01.000
所以呢,在這個新的
link |
01:12:03.000
cluster function裡面
link |
01:12:05.000
第二項,這個第二項呢
link |
01:12:07.000
就是我們前面這一項
link |
01:12:09.000
他的目標呢,是要讓incorrect的
link |
01:12:11.000
y跟正確的y
link |
01:12:13.000
中間差一個margin
link |
01:12:15.000
而前面這一項呢
link |
01:12:17.000
是regularization
link |
01:12:19.000
他希望我們的w接近0
link |
01:12:21.000
我們認出來的結果呢
link |
01:12:23.000
會比較robust,可以對抗mismatch
link |
01:12:25.000
可能造成的影響
link |
01:12:27.000
那這兩項中間呢
link |
01:12:29.000
我們會乘上一個浪檔
link |
01:12:31.000
來調整這兩項之間的
link |
01:12:33.000
這個差距
link |
01:12:35.000
我們會調一個浪檔
link |
01:12:37.000
好,那這個東西
link |
01:12:39.000
要怎麼做optimization呢
link |
01:12:41.000
那其實也非常的簡單
link |
01:12:43.000
跟剛才講的東西
link |
01:12:45.000
都沒有什麼太大的不同
link |
01:12:47.000
一樣是在每個iteration裡面
link |
01:12:49.000
做一個data
link |
01:12:51.000
然後呢,我們現在呢,找一個
link |
01:12:53.000
可以讓delta加上
link |
01:12:55.000
最大的y稱之為y bar
link |
01:12:57.000
然後呢,我們算一個歸點
link |
01:12:59.000
是y bar的vector減掉y hat的vector
link |
01:13:01.000
但是我們現在
link |
01:13:03.000
因為前面還有加上這一項
link |
01:13:05.000
c前面還有再加上
link |
01:13:07.000
regularization的term
link |
01:13:09.000
那regularization的term呢
link |
01:13:11.000
對parameter w
link |
01:13:13.000
做這個歸點的話呢,得到的結果呢
link |
01:13:15.000
就是加上一個w
link |
01:13:17.000
所以呢
link |
01:13:19.000
我們在update weight的時候呢
link |
01:13:21.000
我們呢
link |
01:13:23.000
要再減掉一個
link |
01:13:25.000
eta乘上w
link |
01:13:27.000
然後呢
link |
01:13:29.000
我們可以把這一項跟這一項整理起來
link |
01:13:31.000
變成1減eta乘上w
link |
01:13:33.000
然後再update這一項
link |
01:13:35.000
這個東西呢
link |
01:13:37.000
就跟我們之前在做DNN的時候呢
link |
01:13:39.000
看到的那個weight decay呢
link |
01:13:41.000
是一樣的
link |
01:13:43.000
講到這邊
link |
01:13:45.000
大家有沒有什麼問題
link |
01:13:49.000
好,如果大家沒有什麼問題的話呢
link |
01:13:51.000
我們接下來就要看看說
link |
01:13:53.000
為什麼
link |
01:13:55.000
我們今天講的這個東西
link |
01:13:57.000
是叫做
link |
01:13:59.000
structure SDN
link |
01:14:01.000
到底SDN在哪裡
link |
01:14:05.000
好,那我們剛才講說
link |
01:14:07.000
最後我們用的這個
link |
01:14:09.000
cost function呢
link |
01:14:11.000
長的這個樣子
link |
01:14:13.000
然後每一個training example呢
link |
01:14:15.000
都有一個Cn
link |
01:14:17.000
Cn呢,我們寫成
link |
01:14:19.000
有這個max這一項
link |
01:14:21.000
再減掉呢
link |
01:14:23.000
y hat
link |
01:14:25.000
這個feature跟w的inner product
link |
01:14:27.000
那我們可以把
link |
01:14:29.000
這個式子呢,稍微再
link |
01:14:31.000
做一個修改
link |
01:14:33.000
我們會得到同樣的意思
link |
01:14:35.000
但是我們只對它做一個
link |
01:14:37.000
transform
link |
01:14:39.000
那首先我們做一個很無聊的transform
link |
01:14:41.000
把右邊這個減w乘上
link |
01:14:43.000
phi的移到左邊
link |
01:14:45.000
Cn加w乘上phi
link |
01:14:47.000
等於max這一項
link |
01:14:49.000
接下來下一步呢
link |
01:14:51.000
或許就比較沒有那麼
link |
01:14:53.000
直觀了
link |
01:14:55.000
我們說
link |
01:14:57.000
我們可以把這一項
link |
01:14:59.000
Cn加
link |
01:15:01.000
這個w跟phi
link |
01:15:03.000
Cn加w跟y hat
link |
01:15:05.000
的inner product等於max這一項
link |
01:15:07.000
改成說
link |
01:15:09.000
link |
01:15:11.000
所有的y
link |
01:15:13.000
對所有的y
link |
01:15:15.000
Cn加w
link |
01:15:17.000
跟y hat的inner product
link |
01:15:19.000
大於等於delta
link |
01:15:21.000
y hatn
link |
01:15:23.000
加上w跟y
link |
01:15:25.000
所形成的inner product
link |
01:15:27.000
對所有的y呢,這一個
link |
01:15:29.000
不等式呢,都是成立的
link |
01:15:31.000
原來是左邊這個式子
link |
01:15:33.000
等於
link |
01:15:35.000
這一項的max
link |
01:15:37.000
現在變成對所有的y
link |
01:15:39.000
左邊這個式子
link |
01:15:41.000
大於等於
link |
01:15:43.000
右邊這個式子
link |
01:15:47.000
它們是一樣的嗎
link |
01:15:49.000
這一項跟這一項
link |
01:15:51.000
這一項
link |
01:15:53.000
跟這個框框裡面的東西
link |
01:15:55.000
它們是
link |
01:15:57.000
一樣的嗎
link |
01:15:59.000
我們給大家想個十秒鐘
link |
01:16:01.000
問一下大家的意見
link |
01:16:07.000
我想十秒鐘到了
link |
01:16:09.000
你覺得它是一樣的
link |
01:16:11.000
同學舉手一下
link |
01:16:13.000
好,謝謝
link |
01:16:15.000
你覺得它是不一樣的同學
link |
01:16:17.000
舉手一下
link |
01:16:19.000
大家都覺得是一樣的而不是不一樣的
link |
01:16:21.000
我想你答一樣
link |
01:16:23.000
其實也沒有錯
link |
01:16:25.000
但是你想想看
link |
01:16:27.000
它等於max
link |
01:16:29.000
跟它
link |
01:16:31.000
大於所有的y
link |
01:16:33.000
這件事情是有可能不一樣的
link |
01:16:35.000
對不對
link |
01:16:37.000
因為
link |
01:16:39.000
假設這一項的max
link |
01:16:41.000
是100萬
link |
01:16:43.000
那這一項
link |
01:16:45.000
就等於100萬
link |
01:16:47.000
那我可以說這一項
link |
01:16:49.000
等於100萬加1
link |
01:16:51.000
那這個式子還是成立啊
link |
01:16:53.000
大家知道我的意思嗎
link |
01:16:55.000
知道我的意思嗎
link |
01:16:57.000
舉手一下
link |
01:16:59.000
大家都知道我的意思
link |
01:17:01.000
所以它們其實是不一樣的
link |
01:17:03.000
所以如果我們只看這兩個式子
link |
01:17:05.000
我可以把cn換成別的子
link |
01:17:07.000
我可以把cn換成cn加1
link |
01:17:09.000
就這個式子還是成立
link |
01:17:11.000
所以它們變成不一樣的
link |
01:17:13.000
但是為什麼我們可以做這樣一個轉換呢
link |
01:17:15.000
因為你看看
link |
01:17:17.000
我們今天要
link |
01:17:19.000
minimize這個式子啊
link |
01:17:21.000
我們要minimize這個式子
link |
01:17:23.000
minimize w的non
link |
01:17:25.000
加上cn
link |
01:17:27.000
所以因為cn是要
link |
01:17:29.000
minimize的
link |
01:17:31.000
所以我們會希望說這一項
link |
01:17:33.000
正好就等於這個max
link |
01:17:35.000
就好了
link |
01:17:37.000
這一項如果你比max大的話
link |
01:17:39.000
這個東西就不是minimum的值了
link |
01:17:41.000
這樣大家了解我的意思嗎
link |
01:17:43.000
如果這一項
link |
01:17:45.000
你這邊如果設cn就可以讓這個式子滿足
link |
01:17:47.000
你這邊放cn加1的話
link |
01:17:49.000
這邊就不是minimum值了
link |
01:17:51.000
但是呢
link |
01:17:53.000
你就只會放這個max
link |
01:17:55.000
而不是會比那個max還要大的值
link |
01:17:57.000
所以因為有這一個
link |
01:17:59.000
objective function
link |
01:18:01.000
所以這一項跟這一項
link |
01:18:03.000
它們才會是equivalent
link |
01:18:05.000
如果沒有這一個
link |
01:18:07.000
要去minimize c這個想法的話
link |
01:18:09.000
如果沒有minimize c的這個條件的話
link |
01:18:11.000
那這一項跟這一項
link |
01:18:13.000
其實是不相等的
link |
01:18:15.000
希望大家知道我的意思
link |
01:18:17.000
如果不知道的話我們可以等下下課再討論
link |
01:18:19.000
接下來就是很無聊的轉換
link |
01:18:21.000
就只是說
link |
01:18:23.000
我把這個挪到這邊
link |
01:18:25.000
然後把c挪到右邊
link |
01:18:27.000
好所以呢
link |
01:18:29.000
我們剛才
link |
01:18:31.000
要minimize的
link |
01:18:33.000
這一個東西
link |
01:18:35.000
其實等價於
link |
01:18:37.000
下面這一個
link |
01:18:39.000
這一個敘述
link |
01:18:41.000
要minimize的對象是一樣的
link |
01:18:43.000
但是我們本來是說
link |
01:18:45.000
cn要等於max的
link |
01:18:47.000
這個式子減掉它
link |
01:18:49.000
但是我們變成說是
link |
01:18:51.000
cn跟w
link |
01:18:53.000
要滿足下面
link |
01:18:55.000
這一個不等式
link |
01:18:57.000
這個w跟cn要在一方面
link |
01:18:59.000
minimize這個c的前提之下
link |
01:19:01.000
同時呢
link |
01:19:03.000
又讓w跟y hat的inner product
link |
01:19:05.000
減掉w跟y的inner product
link |
01:19:07.000
大於等於他們的delta
link |
01:19:09.000
減掉cn
link |
01:19:11.000
同時要讓這個式子成立
link |
01:19:13.000
那在習慣上呢
link |
01:19:15.000
寫到這邊
link |
01:19:17.000
我們就不會把這個東西叫做cn了
link |
01:19:19.000
我們只是把它這個符號
link |
01:19:21.000
換一下換成epsilon
link |
01:19:23.000
而這個epsilon呢
link |
01:19:25.000
我們稱之為slack variable
link |
01:19:27.000
slack是松弛的意思
link |
01:19:29.000
等一下呢
link |
01:19:31.000
我們在講它的精神的時候
link |
01:19:33.000
你可能會比較清楚說
link |
01:19:35.000
為什麼我們稱之為slack variable
link |
01:19:37.000
link |
01:19:39.000
那我們今天呢
link |
01:19:41.000
本來我們會說
link |
01:19:43.000
我們要找一個w
link |
01:19:45.000
去minimize c
link |
01:19:47.000
那因為呢我們只要定好
link |
01:19:49.000
這個w以後
link |
01:19:51.000
定好這個w以後
link |
01:19:53.000
cn呢就直接決定了
link |
01:19:55.000
但是在下面這個equation裡面
link |
01:19:57.000
定好w以後
link |
01:19:59.000
epsilonn或是原來的cn
link |
01:20:01.000
它的值並沒有
link |
01:20:03.000
直接決定
link |
01:20:05.000
所以呢我們需要說
link |
01:20:07.000
把敘述改成說我們是在找
link |
01:20:09.000
w還有
link |
01:20:11.000
epsilon1到epsilonn
link |
01:20:13.000
它可以minimize這個式子
link |
01:20:15.000
然後滿足下面這一個constraint
link |
01:20:17.000
link |
01:20:19.000
好的
link |
01:20:21.000
所以我們的現在我們要解的問題呢
link |
01:20:23.000
變成
link |
01:20:25.000
這樣子的一個問題
link |
01:20:27.000
那這邊呢
link |
01:20:29.000
ok
link |
01:20:31.000
那這邊我們可以稍微再做一下
link |
01:20:33.000
改變
link |
01:20:35.000
如果我們觀察一下這邊
link |
01:20:37.000
我們說對所有的y
link |
01:20:39.000
那因為y有很多很多嘛
link |
01:20:41.000
所以這個constraint呢是很多很多
link |
01:20:43.000
假如y的可能性有
link |
01:20:45.000
ok y是所有可能
link |
01:20:47.000
在做object detection的時候
link |
01:20:49.000
y是所有可能的框框
link |
01:20:51.000
link |
01:20:53.000
假設一萬個的話
link |
01:20:55.000
這邊就有一萬條equation
link |
01:20:57.000
但其中有一個equation是比較無聊的
link |
01:20:59.000
就是當y等於y hat的時候
link |
01:21:01.000
這個equation是比較無聊的
link |
01:21:03.000
為什麼它很無聊呢
link |
01:21:05.000
因為如果你把這邊的y用y hat替換掉
link |
01:21:07.000
你會得到說
link |
01:21:09.000
左邊這兩項都是w乘上
link |
01:21:11.000
y hat的feature
link |
01:21:13.000
都是w乘上y hat的feature
link |
01:21:15.000
所以這兩項相減的時候呢
link |
01:21:17.000
左邊是0
link |
01:21:19.000
而delta y hat跟y hat呢
link |
01:21:21.000
自己跟自己的差別呢也是0
link |
01:21:23.000
所以呢你就會得到說呢
link |
01:21:25.000
當y等於y hat的時候
link |
01:21:27.000
其實我們知道的是
link |
01:21:29.000
εn呢應該要大於等於0
link |
01:21:31.000
這件事情
link |
01:21:33.000
因為這兩項都是0嘛
link |
01:21:35.000
所以左邊得到的是εn呢
link |
01:21:37.000
大於等於0這件事情
link |
01:21:39.000
所以我們可以把上面這個equation呢
link |
01:21:41.000
稍微再重新做一下描述
link |
01:21:43.000
我們把
link |
01:21:45.000
本來是對所有的y
link |
01:21:47.000
都有一個constraint
link |
01:21:49.000
我們現在變成是
link |
01:21:51.000
對所有的y不等於y hat
link |
01:21:53.000
所有不等於y hat的y呢
link |
01:21:55.000
我都有一個constraint
link |
01:21:57.000
再加上另外一個constraint呢
link |
01:21:59.000
是εn呢要大於等於0
link |
01:22:01.000
那如果講到這邊你聽不懂的話呢
link |
01:22:03.000
其實沒關係我們換一個說法
link |
01:22:05.000
我們換一個說法
link |
01:22:07.000
我們從直覺上來看看說
link |
01:22:09.000
為什麼前面這個
link |
01:22:11.000
我們從直覺上來看看說
link |
01:22:13.000
這個式子呢是怎麼來的
link |
01:22:15.000
link |
01:22:17.000
那我們剛才說呢
link |
01:22:19.000
我們希望
link |
01:22:21.000
正確的
link |
01:22:23.000
框框得到的分數
link |
01:22:25.000
跟錯誤的框框得到的分數
link |
01:22:27.000
中間有一個差有一個gap
link |
01:22:29.000
那個gap呢我們稱之為
link |
01:22:31.000
margin
link |
01:22:33.000
那如果今天呢
link |
01:22:35.000
這兩個東西的差越大
link |
01:22:37.000
那這個margin就要越大
link |
01:22:39.000
如果今天呢
link |
01:22:41.000
這兩個東西的差越小
link |
01:22:43.000
它的margin呢
link |
01:22:45.000
就應該越小
link |
01:22:47.000
那我們會直接呢
link |
01:22:49.000
把這個δ
link |
01:22:51.000
這個紅色的框框跟黃色框框的δ
link |
01:22:53.000
當作他們之間該有的差
link |
01:22:55.000
我們把這兩個的δ
link |
01:22:57.000
當作他們之間該有的差
link |
01:22:59.000
所以他們的margin越小
link |
01:23:01.000
他們的margin呢就越大
link |
01:23:03.000
那所以呢
link |
01:23:05.000
我們可以列出一個constraint
link |
01:23:07.000
說我們今天要找到的weight
link |
01:23:09.000
應該滿足以下這個條件
link |
01:23:11.000
以下這個條件是告訴我們說
link |
01:23:13.000
今天呢
link |
01:23:15.000
他減掉它
link |
01:23:17.000
要大於它
link |
01:23:19.000
他減掉它
link |
01:23:21.000
要大於這個margin
link |
01:23:23.000
他減掉它要大於這個margin
link |
01:23:25.000
他減掉它要大於這個margin
link |
01:23:27.000
非常非常多可能的黃色的框框
link |
01:23:29.880
所以這邊的contraint
link |
01:23:31.800
這邊的這個不等式
link |
01:23:33.400
有非常非常多個
link |
01:23:35.280
所有的這個不等於y hat的y
link |
01:23:39.560
在這邊都會有一條不等式
link |
01:23:43.320
但是這邊有一個問題
link |
01:23:44.760
這個問題是說
link |
01:23:46.080
你可能根本就找不到一個W
link |
01:23:49.400
讓下面這些不等式都滿足
link |
01:23:52.560
就是下面這些不等式
link |
01:23:54.520
他們的可以滿足
link |
01:23:57.280
這些下面所有不等式的這個W
link |
01:23:59.680
可能是一個空集合
link |
01:24:01.120
你根本找不到一個W
link |
01:24:02.200
可以讓下面這些不等式都滿足
link |
01:24:04.680
所以怎麼辦呢
link |
01:24:05.800
就是我們不要用
link |
01:24:08.240
這個difference這個delta當做margin
link |
01:24:11.120
我們把margin改的小一點
link |
01:24:13.880
我們把margin改的小一點
link |
01:24:16.120
怎麼把它改的小一點呢
link |
01:24:18.080
我們把這個margin都減掉一個excel
link |
01:24:22.600
減掉一個excel
link |
01:24:23.960
所以他們就變小了
link |
01:24:28.400
當然因為說
link |
01:24:29.400
我們今天是要讓margin變小不是變大
link |
01:24:32.000
所以今天這個excel
link |
01:24:33.360
它當然是大於等於零的
link |
01:24:35.360
所以我們把這邊的margin
link |
01:24:36.720
都減掉excel以後
link |
01:24:38.400
他們之間的這個差距就被放寬了
link |
01:24:41.920
他們之間的差距就變小了
link |
01:24:44.600
也就是說我們要找的這個W的限制
link |
01:24:47.760
就被放寬了
link |
01:24:49.760
因為它是放寬
link |
01:24:51.160
它這個excel的作用
link |
01:24:52.760
是為了要放寬限制
link |
01:24:55.240
所以我們叫它這個select a variable
link |
01:24:59.720
當然我們希望今天放的限制
link |
01:25:02.400
不要太寬
link |
01:25:03.800
如果限制放的太寬
link |
01:25:05.240
就失去我們加上這個margin的意義了
link |
01:25:08.040
你可以想像說
link |
01:25:08.680
如果我今天這個excel是無窮大
link |
01:25:13.200
我今天如果這個excel是無窮大
link |
01:25:15.280
那所有的margin都變成負值
link |
01:25:18.480
所有的margin都變成負值
link |
01:25:20.000
那我隨便找到一個weight
link |
01:25:22.040
都會讓這個equation被滿足的話
link |
01:25:25.040
那這個就不是我要的東西了
link |
01:25:27.640
就不是我要的training的結果
link |
01:25:29.600
所以我們說希望能夠放寬結果
link |
01:25:32.200
但是這個放寬的幅度必須是最小的
link |
01:25:36.240
這個放寬的幅度必須是最小
link |
01:25:38.600
所以我們把每一個margin
link |
01:25:41.200
都減掉了excel
link |
01:25:42.720
但是我們同時又希望
link |
01:25:44.880
今天這個excel的值
link |
01:25:47.000
能夠越小越好
link |
01:25:49.320
所以我們就得到以下的equation
link |
01:25:53.120
假設我今天有兩筆training data
link |
01:25:56.520
一個x1跟他的y1 head
link |
01:25:58.800
還有這個x2跟他的y2 head
link |
01:26:01.800
那對x1來說
link |
01:26:03.800
我們希望正確的減掉錯誤的
link |
01:26:08.000
要大於他們之間的delta
link |
01:26:11.480
減掉slack variable excel1
link |
01:26:14.200
正確的減掉錯誤的
link |
01:26:17.080
要大於他們之間的delta
link |
01:26:18.720
減掉excel1
link |
01:26:20.080
那對所有可能的y
link |
01:26:23.880
除了y1 head以外
link |
01:26:27.080
我們都要有一個這個式子
link |
01:26:28.840
所以這個式子是非常多的
link |
01:26:33.320
然後我們因為這個東西
link |
01:26:35.400
是為了要放寬我們的限制
link |
01:26:37.680
所以這個excel
link |
01:26:39.240
他應該要是大於等於零的
link |
01:26:41.960
那接下來如果我有另外一筆data
link |
01:26:43.920
x2他的答案是y2 head
link |
01:26:47.000
那我會希望
link |
01:26:49.240
這個正確的減掉錯誤的
link |
01:26:53.280
一樣大於delta減掉excel2
link |
01:26:55.760
正確的減錯誤的
link |
01:26:57.040
一樣大於delta減掉excel2
link |
01:26:59.440
而對所有不是y2 head的y
link |
01:27:03.040
也都要有一個這樣子的equation
link |
01:27:05.320
所以這個equation也非常非常多
link |
01:27:08.400
那在滿足這些不等式的前提之下
link |
01:27:12.040
在滿足這些不等式的前提之下
link |
01:27:14.640
我希望說
link |
01:27:17.640
在滿足這些不等式
link |
01:27:18.600
我希望說我的這個excel的submation
link |
01:27:21.800
是最小的
link |
01:27:22.800
就excel1加excel2應該是最小的
link |
01:27:26.080
同時加上regularization的term
link |
01:27:29.160
這個你得到的式子
link |
01:27:31.040
就跟我們剛才從cost function
link |
01:27:33.600
推導出來的式子是一模一樣的
link |
01:27:38.200
那所以我們再複習一下
link |
01:27:39.640
我們現在要做的事情
link |
01:27:41.600
就是我們要找到一個w
link |
01:27:43.720
跟每一個example都有的excel
link |
01:27:46.480
那我希望讓這個function
link |
01:27:48.880
能夠被minimize
link |
01:27:50.760
那在minimize這個function的同時
link |
01:27:53.040
我們要滿足下面這個constraint
link |
01:27:55.520
下面這個constraint是說
link |
01:27:57.080
對所有的training的example
link |
01:27:59.440
還有所有不是正確答案的y
link |
01:28:02.680
我都希望說正確答案的分數
link |
01:28:05.760
減掉其他y的分數
link |
01:28:07.960
大於等於正確答案跟其他y之間的差距
link |
01:28:12.200
再減掉一個excel
link |
01:28:13.800
這個excel大於零
link |
01:28:15.040
但是它是要被minimize的
link |
01:28:18.400
那這個東西跟SDN的關係是什麼呢
link |
01:28:21.240
如果你熟悉SDN的話
link |
01:28:23.400
你會發現說
link |
01:28:24.760
它跟SDN的式子其實是大同小異
link |
01:28:29.120
它們都是一個quadratic programming的花紋
link |
01:28:32.600
所以如果你要解這個花紋
link |
01:28:34.760
你不用太擔心
link |
01:28:35.960
你可以直接拿SDN package裡面的solver
link |
01:28:39.520
來解這個quadratic programming的花紋
link |
01:28:42.760
或者是你可以上網載一個
link |
01:28:44.800
現成的quadratic programming的solver
link |
01:28:48.280
來解這個花紋
link |
01:28:50.160
那現在唯一的問題就是
link |
01:28:52.920
constraint太多了
link |
01:28:54.240
你這沒有辦法做
link |
01:28:55.640
這個y可能有幾千幾萬幾億
link |
01:28:58.160
depends on your problem是什麼
link |
01:29:00.040
這個可能會弄壞所有現在available的solver
link |
01:29:03.400
所以接下來的問題就是
link |
01:29:05.400
在constraint這麼多的情況下
link |
01:29:07.520
我們應該要怎麼辦
link |
01:29:09.520
那我們就休息一下
link |
01:29:10.360
等一下再繼續說 謝謝
link |
01:29:18.720
我們來上課吧
link |
01:29:21.080
好那接下來就是
link |
01:29:23.000
我們要解這一個quadratic programming的problem
link |
01:29:29.280
那怎麼做呢
link |
01:29:30.680
我們先不無視這個constraint很多這件事情
link |
01:29:34.400
我們來看一下我們解的是什麼
link |
01:29:36.240
我們來面對的是一個什麼樣的問題
link |
01:29:39.320
那假設我們先不要管這個constraint的部分
link |
01:29:43.560
我們只看我們要minimize的這個部分
link |
01:29:46.680
minimize的這個部分裡面呢
link |
01:29:48.680
我們有w有epsilon
link |
01:29:51.000
我們假設說w只有一維
link |
01:29:53.480
我們假設w只有一維
link |
01:29:55.400
那training data只有一筆
link |
01:29:57.000
所以epsilon只有一個
link |
01:29:59.200
那在沒有constraint的情況下
link |
01:30:00.640
要minimize這個function太容易了
link |
01:30:03.400
就是epsilon這邊是要大於零的
link |
01:30:05.960
所以我們就是w是零
link |
01:30:07.960
epsilon是零的時候
link |
01:30:09.560
它的值就會被minimize
link |
01:30:11.960
所以如果你要畫出epsilon和w的值的話
link |
01:30:15.560
非常容易
link |
01:30:16.560
如果你是given epsilon的話
link |
01:30:18.560
這個軸是epsilon
link |
01:30:21.760
這個軸是w
link |
01:30:23.160
所以以given epsilon的話
link |
01:30:25.160
那在w等於零的時候
link |
01:30:27.560
值會最小
link |
01:30:28.960
那如果你是given w的話呢
link |
01:30:31.160
因為epsilon越往這邊是越小的
link |
01:30:33.160
所以越往這邊的越小
link |
01:30:34.360
所以看起來就是這樣一個曲面
link |
01:30:36.360
然後在它上面找最小值是很容易的
link |
01:30:39.960
但是不一定困難的地方就是
link |
01:30:41.960
這邊有一些constraint
link |
01:30:43.960
這邊的constraint是做什麼事情呢
link |
01:30:46.360
這邊的每一個constraint呢
link |
01:30:48.560
都是在這個epsilon跟w的這個平面上呢
link |
01:30:52.560
畫一條直線
link |
01:30:53.960
然後告訴你說只有某一邊呢
link |
01:30:57.360
是可以的
link |
01:30:58.560
那每一個constraint呢
link |
01:31:00.160
都做這樣一件事情
link |
01:31:01.960
比如說這邊有一個這個constraint
link |
01:31:04.760
它告訴你說只有在這個方向
link |
01:31:06.760
只有在這一半部是可以的
link |
01:31:09.560
然後就這樣一個constraint
link |
01:31:10.960
告訴你說只有在這半部是可以的
link |
01:31:12.560
這個constraint告訴你說
link |
01:31:13.560
只有在這半部是可以的
link |
01:31:15.360
就合起來這些constraint呢
link |
01:31:17.160
可能會告訴你說
link |
01:31:18.560
只有這一個小小的
link |
01:31:20.760
這個四邊形的這個範圍呢
link |
01:31:23.160
是可以容許的
link |
01:31:24.960
只有在這個小小範圍之內的epsilon和w
link |
01:31:28.160
是符合這些constraint的
link |
01:31:30.760
那在這個情況下呢
link |
01:31:32.160
你就是在這一個小小的範圍之內
link |
01:31:34.960
看怎麼樣呢可以讓c最小
link |
01:31:37.160
這件事可能也不難
link |
01:31:38.360
那真正困難的地方是在於說
link |
01:31:40.560
這邊的線條呢
link |
01:31:42.160
很多很多很多很多
link |
01:31:44.360
在給這麼多線條的情況下
link |
01:31:46.960
那它們的交集在哪裡呢
link |
01:31:49.560
那這個呢可能就很難呢把它找出來
link |
01:31:54.160
但是我們有一個演算法
link |
01:31:56.760
叫做cutting plane的algorithm
link |
01:31:59.360
可以幫助我們呢
link |
01:32:00.960
用比較少的力氣
link |
01:32:02.760
找出我們要的結果
link |
01:32:05.360
那cutting plane的algorithm呢
link |
01:32:06.560
其實可能也用在很多其他的地方
link |
01:32:09.760
那它其實是一個比較general的名詞
link |
01:32:12.360
那這邊呢我們是只用來解這個
link |
01:32:14.560
structure SEM的cutting plane的algorithm
link |
01:32:17.960
好那現在我們的問題是這樣子
link |
01:32:20.360
OK我有一個parameter的space
link |
01:32:24.760
也就是w呢跟epsilon呢
link |
01:32:26.760
所形成的這個parameter的space
link |
01:32:29.560
那它可能是高維的
link |
01:32:30.560
我們這邊呢就用兩維代表
link |
01:32:32.760
這個parameter space上面的顏色呢
link |
01:32:35.560
代表這個cost function c的value
link |
01:32:39.760
在沒有任何constraint的情況下呢
link |
01:32:42.760
希望你看清楚
link |
01:32:44.160
青色的這一點呢是最小值
link |
01:32:47.760
在沒有constraint的情況下
link |
01:32:49.160
青色這一點呢是最小值
link |
01:32:52.560
但是不幸的是呢
link |
01:32:53.960
我們有一大堆的constraint
link |
01:32:58.760
那根據這些constraint的結果
link |
01:33:00.160
告訴我們說在這個空間裡面
link |
01:33:02.360
只有這個鑽石的形狀呢
link |
01:33:04.760
是符合這些constraint
link |
01:33:08.360
那所以我們要在這個鑽石的形狀之內呢
link |
01:33:12.760
找最小值
link |
01:33:14.360
那如果在鑽石形狀之內找最小值呢
link |
01:33:16.960
我們得到的結果就是這一點
link |
01:33:20.360
那現在我們的問題就是
link |
01:33:21.960
怎麼找出這一個鑽石的形狀
link |
01:33:25.360
因為這邊的constraint非常非常的多
link |
01:33:28.360
那但是你其實不用擔心
link |
01:33:29.760
因為大部分的constraint
link |
01:33:30.760
其實他們都在溶
link |
01:33:33.160
他們都是溶原
link |
01:33:34.560
所以看起來有很多人
link |
01:33:35.760
但是其實根本就沒有太多人在做事
link |
01:33:39.960
雖然說有一大堆的constraint
link |
01:33:41.760
但大部分的constraint呢
link |
01:33:43.160
對我們找出來的solution是沒有影響的
link |
01:33:46.560
比如說我們看這邊
link |
01:33:48.760
這兩條紅色的constraint
link |
01:33:51.560
其實只要這兩條紅色的constraint
link |
01:33:54.360
我們只要有這兩條紅色的constraint
link |
01:33:56.760
我就可以決定
link |
01:33:58.560
我們現在要optic
link |
01:34:00.160
我們現在的結果應該是在這一點
link |
01:34:03.160
只要這兩條
link |
01:34:04.160
只要我們就算是我們
link |
01:34:05.760
只有這兩條紅色的constraint
link |
01:34:07.560
我們得到的這個
link |
01:34:08.960
得到的這個solution呢
link |
01:34:10.560
也是在青色的這一點
link |
01:34:12.160
所以根本就不需要
link |
01:34:13.160
這個圖上這麼多的constraint了
link |
01:34:15.160
比如說像這一條綠色的constraint
link |
01:34:17.160
它就是一個溶原
link |
01:34:18.360
要把它拿掉
link |
01:34:19.360
其實對最後我們得出來的結果
link |
01:34:21.560
是完全不會有任何的影響的
link |
01:34:25.160
所以我們就要
link |
01:34:27.160
裁掉一些沒有在做事的人
link |
01:34:29.760
所以我們要做的事情就是
link |
01:34:31.560
本來要窮舉所有的Y
link |
01:34:34.560
每一個Y呢
link |
01:34:35.960
窮舉所有不等於Y hat的Y
link |
01:34:38.360
每一個不等於Y hat的Y
link |
01:34:39.560
都在這個圖上製造了一個constraint
link |
01:34:41.960
但我們現在呢
link |
01:34:42.960
要把那些沒有影響的東西把它拿掉
link |
01:34:45.760
我們只留下有影響的東西
link |
01:34:48.160
而這個有影響的這個set呢
link |
01:34:50.160
我們稱之為這個working set
link |
01:34:52.560
它是真正有在做事
link |
01:34:54.160
我們稱之為這個working set
link |
01:34:56.360
而這個working set呢
link |
01:34:57.560
我們用A來表示它
link |
01:34:59.960
所以如果我們有辦法找出
link |
01:35:01.960
這樣一個working set的話
link |
01:35:03.560
在optimization的時候呢
link |
01:35:05.560
我們就只需要考慮這個working set
link |
01:35:07.960
A裡面的Y
link |
01:35:09.160
我們只需要考慮這個working set
link |
01:35:10.760
裡面的constraint
link |
01:35:11.760
而如果這個working set不大的話
link |
01:35:13.560
那這個quadratic programming的problem
link |
01:35:15.960
就是能夠解的
link |
01:35:17.960
那再來的問題就是
link |
01:35:19.760
怎麼來找出這個working set
link |
01:35:21.960
那我們找的方法呢
link |
01:35:23.760
是用一個iteration的方法來找的
link |
01:35:26.960
每一次我們會找出一個element呢
link |
01:35:29.760
加到這個working set裡面
link |
01:35:32.560
它的精神是這樣
link |
01:35:34.560
一開始我們先initialize
link |
01:35:37.360
對每一個example呢
link |
01:35:39.160
都initialize它的working set
link |
01:35:41.160
那你這邊initialize也可以說就是
link |
01:35:43.360
一開始就是空的
link |
01:35:45.160
好然後呢
link |
01:35:46.560
接下來呢我們根據
link |
01:35:48.560
initialize的working set呢
link |
01:35:50.560
去解這個quadratic programming的problem
link |
01:35:54.560
好本來解這個quadratic programming的problem的時候呢
link |
01:35:57.560
我們要考慮所有可能的Y
link |
01:36:00.160
但是今天假如
link |
01:36:01.560
給定了一組working set的話
link |
01:36:03.560
我們只要考慮那個working set
link |
01:36:05.560
裡面的Y就好了
link |
01:36:06.760
我們只考慮working set的Y就好
link |
01:36:08.960
於是呢我們解這個quadratic programming的problem呢
link |
01:36:12.360
就比較容易了
link |
01:36:13.760
它就是一個可以解的問題了
link |
01:36:16.360
好那假設我們根據這個working set
link |
01:36:18.960
解出一個W以後呢
link |
01:36:21.160
我們再用這個W
link |
01:36:23.560
去update呢
link |
01:36:25.960
重新檢查一下
link |
01:36:27.560
等一下會講怎麼檢查
link |
01:36:28.960
我們用這個W呢
link |
01:36:30.560
去找一些新的成員
link |
01:36:33.760
加到這個working set裡面
link |
01:36:35.560
那working set呢
link |
01:36:36.760
就變得不一樣了
link |
01:36:38.160
那working set不一樣以後呢
link |
01:36:39.960
我們再重新去解一次這個quadratic programming的problem
link |
01:36:43.560
好那我們重新解了以後
link |
01:36:45.360
得到一個不一樣的W
link |
01:36:46.760
有不一樣的W
link |
01:36:47.560
又可以重新再找一些新的成員
link |
01:36:49.560
加到working set裡面去
link |
01:36:51.160
然後又可以再解這個quadratic programming的problem
link |
01:36:53.960
就這樣一直呢
link |
01:36:55.160
不斷的循環不斷的循環
link |
01:36:57.960
好那我們用圖示的方式呢
link |
01:36:59.760
來說明一下呢
link |
01:37:01.360
這個file copyplate algorithm呢
link |
01:37:03.560
是怎麼運作的
link |
01:37:05.760
那首先呢
link |
01:37:06.960
我們假設這個
link |
01:37:08.960
n這個example的working set
link |
01:37:10.760
an在初始的時候呢
link |
01:37:13.160
是空集合
link |
01:37:16.560
那也就是說呢
link |
01:37:17.760
我們現在呢
link |
01:37:18.960
沒有任何constraint
link |
01:37:21.360
那沒有任何constraint的情況下呢
link |
01:37:23.560
我們在解這個quadratic programming的problem的時候
link |
01:37:26.560
得到的結果呢
link |
01:37:27.960
就是藍色的這一個點
link |
01:37:30.360
因為我們現在這個
link |
01:37:31.160
這上面這些constraint呢
link |
01:37:32.360
就無視它
link |
01:37:33.160
當中不存在一樣
link |
01:37:34.560
那找最小值的話呢
link |
01:37:35.960
就是這一個點
link |
01:37:38.960
好那找出這個點之後呢
link |
01:37:40.960
我們要做的事情是
link |
01:37:42.760
看看有沒有哪些constraint呢
link |
01:37:45.560
是沒有被滿足的
link |
01:37:48.360
就是說這邊有這麼多這麼多constraint
link |
01:37:50.560
如果你把點選在這邊
link |
01:37:52.160
那有好多好多constraint呢
link |
01:37:54.160
你其實是沒有滿足那些constraint
link |
01:37:57.160
比如說呢
link |
01:37:58.760
這一條就沒有滿足
link |
01:37:59.960
這一條就沒有滿足
link |
01:38:00.960
這一條就沒有滿足
link |
01:38:01.960
這一條就沒有滿足
link |
01:38:02.960
有好多好多constraint呢
link |
01:38:04.560
如果你的點選在藍色這邊
link |
01:38:06.760
你是沒有辦法滿足這些constraint
link |
01:38:09.960
那雖然沒有滿足的constraint
link |
01:38:11.560
有很多
link |
01:38:12.760
但是我們只挑最難搞的那一個
link |
01:38:15.360
我們只挑沒有滿足的最嚴重的
link |
01:38:18.960
我們只找那個
link |
01:38:20.160
most violated的那一個
link |
01:38:22.560
那你可能會問說
link |
01:38:23.560
哪一個是most violated的呢
link |
01:38:26.160
就我們等一下再講
link |
01:38:27.560
反正就是從
link |
01:38:28.960
所有沒有被滿足的constraint裡面
link |
01:38:31.960
找一個最難搞的人出來
link |
01:38:34.760
那假設我們現在找出來
link |
01:38:35.960
最難搞的是這一個
link |
01:38:39.160
那他可能我們說他最難搞
link |
01:38:40.560
可能所以他離這個藍色的點
link |
01:38:42.160
是最遠的
link |
01:38:43.360
所以他是最難搞
link |
01:38:45.160
因為他跟我們說呢
link |
01:38:46.360
這個正確的答案應該是這邊
link |
01:38:48.160
然後藍色這個點呢
link |
01:38:49.360
離他是非常遠的
link |
01:38:52.560
link |
01:38:55.560
那我們就把這個constraint y'
link |
01:38:58.560
這紅色這條線呢
link |
01:38:59.960
加到我們的working set裡面
link |
01:39:01.960
那本來working set是空的
link |
01:39:03.160
那現在working set呢
link |
01:39:04.360
就有一個成員是y'
link |
01:39:07.960
那根據我們現在working set
link |
01:39:09.560
唯一的成員y'
link |
01:39:10.960
這條紅色的線呢
link |
01:39:12.360
他告訴我們說呢
link |
01:39:13.560
我們現在要找最小值了
link |
01:39:15.160
不能在這邊找
link |
01:39:16.560
他告訴我們說
link |
01:39:17.360
你只能夠在這個這邊找
link |
01:39:19.160
你只能在這塊區域找
link |
01:39:21.360
那這塊區域的最小值是哪裡呢
link |
01:39:23.760
那整個平面上最小值是這邊
link |
01:39:25.960
那這塊區域的最小值是在哪裡
link |
01:39:27.560
可能在這邊吧
link |
01:39:28.960
顏色越淺代表值越小
link |
01:39:30.960
可能在這邊吧
link |
01:39:34.360
link |
01:39:34.960
哦跳過來
link |
01:39:36.160
他可能是在這邊
link |
01:39:38.360
好那所以呢
link |
01:39:39.760
我們就解了這個
link |
01:39:40.760
Quality Programming的problem以後
link |
01:39:43.360
那我們呢
link |
01:39:44.160
得到了新的weight呢
link |
01:39:45.360
在這個位置
link |
01:39:46.760
那接下來我們要看的就是
link |
01:39:48.560
如果我的weight在這個位置
link |
01:39:50.760
還有我的solution在這個位置
link |
01:39:52.960
還有哪些這個constraint呢
link |
01:39:55.960
沒有被滿足
link |
01:39:57.160
那可能還有好幾個
link |
01:39:58.360
比如說呢
link |
01:39:59.560
這一條constraint呢
link |
01:40:01.160
就沒有被滿足
link |
01:40:02.160
這條constraint呢
link |
01:40:02.960
告訴我們說
link |
01:40:04.160
可以接受的範圍是在右上角
link |
01:40:07.160
但這個東西呢是在他的左下
link |
01:40:09.560
所以這個constraint呢
link |
01:40:11.360
沒有被滿足
link |
01:40:12.560
就再把這個constraint呢
link |
01:40:13.960
加到我們的working set裡面
link |
01:40:16.560
再解一次Quality Programming的problem
link |
01:40:19.560
我們就得到一個新的值
link |
01:40:21.360
那這個新的值呢
link |
01:40:23.360
可能是在
link |
01:40:24.360
因為我們現在有兩個constraint嘛
link |
01:40:25.960
這個constraint說要在左上可以
link |
01:40:28.360
這個constraint說在右上才可以
link |
01:40:30.360
結果得到的結果就只有這一個方向
link |
01:40:32.560
這一個範圍呢
link |
01:40:33.760
是可以的
link |
01:40:34.760
那這個範圍之內
link |
01:40:35.960
這個範圍最小值呢
link |
01:40:37.360
可能就是在這個尖尖的地方
link |
01:40:39.360
在尖尖的地方
link |
01:40:41.360
所以我們得到一個新的解呢
link |
01:40:43.360
在這個尖尖的地方
link |
01:40:45.160
那我們再來要繼續檢查說
link |
01:40:46.760
還有哪些constraint呢
link |
01:40:47.760
沒有被滿足
link |
01:40:49.160
比如說這一條線呢
link |
01:40:50.960
沒有被滿足
link |
01:40:52.160
這一條線說要在左邊才可以
link |
01:40:54.360
但這個藍色的新線在他的右邊
link |
01:40:56.760
所以這個constraint呢
link |
01:40:57.960
還沒有被滿足
link |
01:40:59.160
所以我們就把他再加到working set裡面
link |
01:41:01.160
那working set裡面現在有
link |
01:41:02.960
三條線了
link |
01:41:04.560
那我們就根據這三條線呢
link |
01:41:07.760
給我們的結果
link |
01:41:08.960
告訴我們說呢
link |
01:41:10.160
我們能夠找的範圍只有這一塊
link |
01:41:12.360
而這塊範圍內的最小值呢
link |
01:41:14.160
是在這裡
link |
01:41:15.160
是在這邊
link |
01:41:17.360
那於是呢
link |
01:41:18.160
我們就找到我們要的解
link |
01:41:20.360
然後呢
link |
01:41:21.160
就結束整個
link |
01:41:23.560
整個algorithm了
link |
01:41:24.760
那其實呢就是這樣
link |
01:41:26.560
那再來要講的事情就是
link |
01:41:28.760
什麼樣的constraint呢
link |
01:41:29.960
是我們覺得
link |
01:41:31.560
最violated的
link |
01:41:32.960
還是最難搞的
link |
01:41:34.160
必須優先被加入working set的constraint呢
link |
01:41:38.760
那我們來看一下一個constraint是什麼
link |
01:41:40.760
一個constraint是說
link |
01:41:42.560
這個w乘上y hat的feature
link |
01:41:44.960
減掉w乘上y hat的feature
link |
01:41:46.360
要大於等於delta
link |
01:41:47.760
減掉epsilon
link |
01:41:48.760
這是一個constraint
link |
01:41:50.360
當一個constraint被violated的時候是說
link |
01:41:53.560
我現在的solution
link |
01:41:55.560
w'跟epsilon'
link |
01:41:56.960
我把現在的solution w'跟epsilon'
link |
01:41:59.360
帶進這個constraint的時候
link |
01:42:01.360
本來這個是大於等於
link |
01:42:02.960
但是把w'跟epsilon'
link |
01:42:04.360
帶進去的時候呢
link |
01:42:05.560
它變成小於
link |
01:42:06.960
也就是w'跟y hat的feature
link |
01:42:08.760
減掉w'跟y hat的feature
link |
01:42:11.360
是小於這個delta
link |
01:42:12.560
減掉epsilon'
link |
01:42:14.760
那但是
link |
01:42:16.760
violated這個constraint呢
link |
01:42:18.360
可能有很多個
link |
01:42:19.760
可能有一大
link |
01:42:20.760
那我們哪一個是最violated
link |
01:42:23.360
最嚴重的呢
link |
01:42:24.560
所以我們要定義一個
link |
01:42:25.960
這個violated的程度
link |
01:42:28.760
那這個violated的程度呢
link |
01:42:30.760
就是我們用右邊這一項
link |
01:42:32.960
因為本來右邊這一項應該比左邊小嘛
link |
01:42:35.160
它比它大就不對
link |
01:42:36.560
那它大的越多就越不對
link |
01:42:38.960
所以我們把右邊這一項
link |
01:42:40.360
減左邊這一項
link |
01:42:41.360
右邊這一項放到這邊
link |
01:42:42.760
減左邊這一項
link |
01:42:43.760
放到這邊
link |
01:42:45.760
但是在這邊呢
link |
01:42:46.760
你會發現說
link |
01:42:48.760
因為對
link |
01:42:49.760
對所有的y來說
link |
01:42:50.960
這個epsilon'是
link |
01:42:53.160
是一個fixed的值
link |
01:42:54.160
它跟y沒有關係
link |
01:42:55.560
如果不同的constraint
link |
01:42:56.960
每個人degree都不一樣
link |
01:42:58.560
那這個epsilon'不影響我們
link |
01:43:00.960
計算degree這件事
link |
01:43:02.760
而w'跟y hat的inner product
link |
01:43:05.560
也不影響我們計算degree這件事
link |
01:43:07.760
所以我們可以把這兩項
link |
01:43:09.360
拿掉
link |
01:43:10.360
所以最後呢
link |
01:43:11.160
我們就剩下
link |
01:43:12.760
delta加上w'跟y的inner product
link |
01:43:16.760
我們就用這一項呢
link |
01:43:18.360
來計算它的
link |
01:43:20.160
這個violation的程度
link |
01:43:23.160
所以最後呢
link |
01:43:24.360
violation最嚴重的那個y呢
link |
01:43:26.960
就是一個
link |
01:43:28.160
所以讓delta加上inner product的值呢
link |
01:43:31.560
最大的那一個y
link |
01:43:33.960
讓delta加上inner product的值
link |
01:43:35.360
最大的那個y呢
link |
01:43:36.760
就是
link |
01:43:37.760
given你現在的solution
link |
01:43:39.760
violation最嚴重的那一個constraint
link |
01:43:43.760
所以整個Carting plan的algorithm呢
link |
01:43:46.360
我們就來講一下
link |
01:43:46.960
整個Carting plan的algorithm
link |
01:43:48.360
運作起來是長什麼樣子
link |
01:43:50.360
那我們現在有一堆的這個
link |
01:43:52.360
training example
link |
01:43:53.360
x1 y1 hat到x' y' hat
link |
01:43:57.360
然後呢
link |
01:43:58.160
我們現在呢
link |
01:43:59.360
對每一個training的data呢
link |
01:44:01.160
它都有一個working set
link |
01:44:02.360
a1到a'
link |
01:44:04.360
對每一個working set呢
link |
01:44:05.960
我們要給它一個初始值
link |
01:44:07.560
那其實如果你對這個問題
link |
01:44:08.960
你有自己本身的理解的話
link |
01:44:10.560
你可以用自己的human knowledge
link |
01:44:12.360
去給它一些initialization
link |
01:44:14.760
不過如果沒有的話
link |
01:44:15.960
無所謂
link |
01:44:16.560
就給它空的這個initialization就好
link |
01:44:19.760
那接下來呢
link |
01:44:21.360
我們要做的事情是
link |
01:44:23.560
首先根據我們現在手上有的working set
link |
01:44:26.760
我們先根據我們現在working set裡面的成員
link |
01:44:29.560
去解一個quadratic programming的problem
link |
01:44:32.560
找到我們的solution
link |
01:44:35.760
那其實找出來的solution
link |
01:44:37.360
應該是有w也有ε吧
link |
01:44:39.760
不過在下一個步驟
link |
01:44:41.360
找most violated constraint的時候呢
link |
01:44:43.760
ε其實用不上
link |
01:44:44.960
所以我們先讓它只回傳w就好了
link |
01:44:47.760
那我們要解的這個quadratic programming的problem呢
link |
01:44:50.360
長的是這個樣子
link |
01:44:51.760
我們只需要
link |
01:44:52.760
我們的constraint只需要考慮那些
link |
01:44:54.760
在working set裡面的constraint就好了
link |
01:44:58.360
那解完這個quadratic programming的problem以後呢
link |
01:45:01.560
我們得到一個w
link |
01:45:04.360
那接下來呢
link |
01:45:05.960
根據我們現在的w
link |
01:45:08.760
我們要對每一個example xn跟ynhead
link |
01:45:13.160
去找這個most violated constraint
link |
01:45:16.360
那我們剛才講過說
link |
01:45:18.160
most violated constraint
link |
01:45:20.560
那個最難搞的那個constraint呢
link |
01:45:22.560
就是Δ加上w跟y的inner product
link |
01:45:27.760
看哪一個y呢
link |
01:45:29.160
可以讓Δ加上inner product值最大
link |
01:45:32.760
那它呢就是最難搞的那個constraint
link |
01:45:36.160
這個最難搞的constraint呢
link |
01:45:37.760
我們用y bar來表示它
link |
01:45:41.960
然後呢我們把y bar呢
link |
01:45:44.160
加進working set裡面
link |
01:45:46.760
那如果working set一開始是空的話
link |
01:45:49.360
那經過第一個intervention以後呢
link |
01:45:51.760
它就會加進一個新的成員y bar
link |
01:45:55.960
然後有了這些
link |
01:45:57.360
然後我們因為對每一個training data
link |
01:45:59.560
我們都會做一次嘛
link |
01:46:00.760
所以現在呢
link |
01:46:02.160
每一個working set呢
link |
01:46:03.760
都會加上一個成員y bar
link |
01:46:06.560
然後呢
link |
01:46:08.160
然後呢我們會
link |
01:46:10.160
再拿這個新的working set
link |
01:46:11.560
去再解一次quadratic programming的problem
link |
01:46:13.960
得到一個新的w
link |
01:46:15.560
再找出新的y bar
link |
01:46:17.160
再更新我們的working set
link |
01:46:19.160
會再增加新的成員
link |
01:46:21.760
然後再重新解一次quadratic programming的problem
link |
01:46:24.560
那這個循環呢就不斷的繼續下去
link |
01:46:27.360
直到呢
link |
01:46:28.960
我今天呢
link |
01:46:30.560
在這個步驟
link |
01:46:31.960
我找出來的這個y bar呢
link |
01:46:34.360
是我之前就看過
link |
01:46:36.760
我沒有辦法再找出一個新的y bar
link |
01:46:39.560
放到這個working set的時候
link |
01:46:42.160
我就停止這一個iteration
link |
01:46:46.160
那這個呢
link |
01:46:47.360
然後呢我就得到了我們要解的y
link |
01:46:50.560
那假設你這邊你沒有聽得很懂的話呢
link |
01:46:53.760
那沒有關係
link |
01:46:54.560
我們就用這個object detection的例子呢
link |
01:46:57.560
來再講一次
link |
01:46:59.560
那我們假設我們現在有兩個training的data
link |
01:47:02.160
x1 y1 hat跟x2 y2 hat
link |
01:47:05.160
那我們一開始的working set呢
link |
01:47:07.360
有兩個data就有
link |
01:47:08.760
他們各自的working set
link |
01:47:10.160
a1跟a2
link |
01:47:11.360
他們都是空集合
link |
01:47:14.560
好那一開始呢
link |
01:47:15.760
我們要根據我們現在手上現有的working set呢
link |
01:47:19.760
去解一個quadratic programming的problem
link |
01:47:22.760
但是因為我現在的working set
link |
01:47:24.560
a1跟a2都是空的
link |
01:47:26.560
因為他們都是空的
link |
01:47:27.760
所以我們現在沒有任何的constraint
link |
01:47:31.560
沒有任何的constraint
link |
01:47:33.760
好那在沒有任何constraint的前提之下
link |
01:47:36.760
我要找一個w f01 f02
link |
01:47:39.760
去minimize這件事情
link |
01:47:41.560
其實是很容易的
link |
01:47:43.560
其實這邊有一個不精確的地方就是
link |
01:47:45.760
其實還要有f01 f02大於0這個constraint
link |
01:47:49.160
這個constraint一直都要存在
link |
01:47:50.360
如果沒有這個constraint的話
link |
01:47:51.760
我就f01 f02等於負無窮大
link |
01:47:53.960
這邊就minimize了
link |
01:47:55.160
所以這個f01 f02呢
link |
01:47:57.560
必須要這個大於0
link |
01:47:59.560
就這個constraint一直都是存在的
link |
01:48:02.160
好那根據
link |
01:48:03.760
既然在沒有constraint
link |
01:48:04.760
除了f01 f02大於0這個constraint以外
link |
01:48:07.360
沒有其他constraint的前提之下
link |
01:48:09.360
我解出來的w呢就是0
link |
01:48:12.760
所以呢
link |
01:48:14.760
我在做第一次quadratic programming以後
link |
01:48:18.560
我得到的w呢是0
link |
01:48:22.160
好那接下來呢
link |
01:48:23.560
我用我手上的w等於0呢
link |
01:48:26.760
我現在手上這個w呢
link |
01:48:28.560
去找most violated的constraint
link |
01:48:32.560
那對y1來說呢
link |
01:48:34.960
對y1來說呢
link |
01:48:36.760
violated最嚴重的
link |
01:48:38.160
就是delta加inner product最嚴重的那一個
link |
01:48:42.960
那所以呢
link |
01:48:44.160
我們就去計算每一個可能的框框
link |
01:48:48.560
它的delta加上inner product值
link |
01:48:51.560
計算每一個可能的框框
link |
01:48:53.160
它的delta加inner product值
link |
01:48:55.160
那你可能覺得說
link |
01:48:56.560
計算每一個框框這件事情很花時間
link |
01:48:58.760
那你就
link |
01:49:00.560
好好學一下演算法
link |
01:49:01.960
想個好方法讓它解得快一點
link |
01:49:03.960
當然是文獻上都有很多這個好方法
link |
01:49:07.760
讓你可以很快的算出
link |
01:49:10.360
delta加上inner product的值
link |
01:49:12.560
那今天在這個case
link |
01:49:13.560
因為w正好是第一個iteration
link |
01:49:16.360
所以w等於0
link |
01:49:17.760
所以因為w等於0
link |
01:49:19.360
所以後面這個inner product這一項
link |
01:49:21.160
我們就不看
link |
01:49:22.760
所以我們就看說
link |
01:49:23.960
哪一個框框呢
link |
01:49:25.160
它的delta呢最大
link |
01:49:27.960
那你可以想像說
link |
01:49:29.560
可能會有這個tie的情況發生
link |
01:49:32.160
因為只要兩個框框
link |
01:49:33.960
只要那個框框沒有跟正確解答
link |
01:49:36.160
紅色的框框overlap的話
link |
01:49:38.560
它的delta就是1
link |
01:49:40.760
所以這幾個算出來都是1
link |
01:49:42.760
不過沒有關係
link |
01:49:43.560
我們就random pick一個
link |
01:49:45.160
然後加到我們的working set裡面
link |
01:49:47.960
所以我們加了其中一個delta
link |
01:49:50.560
進去我們的working set裡面
link |
01:49:52.360
我們把角落這個框框
link |
01:49:54.360
加到我們的working set裡面
link |
01:49:56.360
那在A2我們也做一樣的事情
link |
01:49:59.760
一樣也去找most violated constraint
link |
01:50:02.560
假設我們找出來
link |
01:50:04.160
最most violated是右邊這個長方形的話
link |
01:50:07.560
我們就把右邊長方形加到A2裡面去
link |
01:50:10.760
那我們現在有A1、A2這兩個working set
link |
01:50:13.760
我們有A1、A2這兩個working set裡面
link |
01:50:15.760
都各有一個成員了
link |
01:50:18.360
那所以呢
link |
01:50:19.360
接下來我們在解這個
link |
01:50:20.760
quadratic programming的problem的時候
link |
01:50:22.960
我們對A1、A2就各有一個constraint
link |
01:50:26.760
A1這個working set裡面
link |
01:50:28.360
有一個左下角的框框
link |
01:50:30.160
所以我們希望正確的框框的值
link |
01:50:33.560
就W乘上正確框框的feature
link |
01:50:35.760
減掉這個W乘上左下角
link |
01:50:38.960
這個working set裡面的這個框框
link |
01:50:40.960
要大於等於左下角這個working set的delta
link |
01:50:43.960
左下角這個element
link |
01:50:45.560
working set裡面唯一這個element的delta
link |
01:50:47.560
減掉x1
link |
01:50:48.960
同理呢
link |
01:50:49.960
A2也有一個成員
link |
01:50:52.160
所以A2也形成一個constraint
link |
01:50:55.960
這個constraint呢
link |
01:50:57.360
就是這個constraint呢
link |
01:50:58.960
是右邊這個長方形的框框
link |
01:51:01.560
是右邊這個長方形的框框
link |
01:51:03.160
是右邊這個長方形的框框
link |
01:51:05.360
所以這兩個working set各有一個成員
link |
01:51:08.960
就各自形成一個constraint
link |
01:51:11.360
那這是一個只有兩個constraint的
link |
01:51:13.960
quadratic programming的problem
link |
01:51:15.960
那一般的solver呢
link |
01:51:17.560
都可以解這個問題
link |
01:51:18.960
解出一個W等於W1
link |
01:51:22.960
它是可以呢
link |
01:51:24.360
讓這個objective function minimize的W
link |
01:51:27.560
假設這個W呢
link |
01:51:28.760
等於W1
link |
01:51:30.160
所以我們現在就更新一下我們的W
link |
01:51:32.360
它變成W1
link |
01:51:34.760
接下來呢
link |
01:51:35.760
我就用這個W1呢
link |
01:51:37.560
再去找most violated constraint
link |
01:51:42.760
也就是說呢
link |
01:51:43.760
我今天有了這個W1
link |
01:51:45.560
那我就去計算說呢
link |
01:51:46.960
對第一個example計算說呢
link |
01:51:49.560
它對所有的
link |
01:51:51.360
就是它對所有框框
link |
01:51:53.160
所有框框的這個delta
link |
01:51:54.960
加上所有框框的inner product
link |
01:51:57.360
所有框框的delta
link |
01:51:58.760
加上所有框框的inner product
link |
01:52:00.760
然後各自會算出一個不一樣的值
link |
01:52:04.360
那假設說呢
link |
01:52:05.760
這個框框放在這裡的時候
link |
01:52:08.360
放在這裡的時候呢
link |
01:52:10.160
它的這個值呢
link |
01:52:11.560
是最大
link |
01:52:13.560
那這個呢
link |
01:52:14.360
就是最violate
link |
01:52:16.160
現在根據這個W1
link |
01:52:18.160
最violate的constraint
link |
01:52:19.560
其實這邊W我應該換成W1
link |
01:52:22.160
感覺這邊W應該換成W1
link |
01:52:23.960
因為現在是根據這個W1來做計算
link |
01:52:27.360
那我們就把最violate的constraint
link |
01:52:30.160
把它放到我們的working set裡面
link |
01:52:32.760
所以是A1呢
link |
01:52:33.560
現在有剛才上一個iteration
link |
01:52:36.160
找出來的成員在左下角
link |
01:52:38.360
還有在這個iteration
link |
01:52:39.560
找出來的成員是這個
link |
01:52:43.160
那我們對A2呢
link |
01:52:44.360
也做一模一樣的事情
link |
01:52:46.160
所以A2呢
link |
01:52:47.160
也就多了一個成員了
link |
01:52:50.160
這邊這個
link |
01:52:51.560
好 那就這個字
link |
01:52:52.760
算most violated constraint的這個equation
link |
01:52:56.160
所以現在呢
link |
01:52:57.560
我們 欸 你有問題嗎
link |
01:53:01.560
link |
01:53:02.360
喔喔喔
link |
01:53:03.760
就是那個最右下角那個
link |
01:53:05.960
就是框框放在底下那個case
link |
01:53:08.760
不是在第一次iteration的時候
link |
01:53:10.560
就已經被從working space給移除了嗎
link |
01:53:15.160
從working space給
link |
01:53:16.960
就是它不是已經是most violated constraint
link |
01:53:19.760
對 它是most violated constraint
link |
01:53:21.360
但是在算的時候啊
link |
01:53:24.360
在算的時候
link |
01:53:25.760
你可能沒有 你還是
link |
01:53:26.960
你不需要把它移除
link |
01:53:28.160
因為你可能會覺得說
link |
01:53:29.560
我們在找most violated的時候
link |
01:53:33.160
OK 我們是一個一個
link |
01:53:35.760
一個一個element去算的
link |
01:53:37.160
但實作上不是這樣
link |
01:53:38.160
我們是去解這一個optimization的problem
link |
01:53:43.560
你可以想像它是一個function
link |
01:53:44.760
然後我代下去
link |
01:53:46.160
然後就有一個y bar跳出來
link |
01:53:48.160
那我現在用這個w代進去的時候
link |
01:53:50.760
它跳出來的y bar呢
link |
01:53:51.960
是這一個這樣子
link |
01:53:54.360
這樣可以了解我的意思嗎
link |
01:54:00.160
還有同學有問題嗎
link |
01:54:05.560
好 所以現在我們那個A1跟A2呢
link |
01:54:08.360
都各有兩個element
link |
01:54:10.160
A1 A2各有兩個element
link |
01:54:12.160
所以我們現在的projective programming的problem
link |
01:54:14.760
我們要解的話呢
link |
01:54:15.960
它就總共有四個constraint
link |
01:54:18.560
那A1的兩個
link |
01:54:22.360
這個A1的working set裡面的兩個成員
link |
01:54:25.160
形成兩個constraint
link |
01:54:26.960
A2的兩個成員
link |
01:54:28.960
形成另外兩個constraint
link |
01:54:31.160
接下來呢
link |
01:54:32.160
我們就是解一個有四個constraint的
link |
01:54:34.160
projective programming的problem
link |
01:54:35.560
那它還是很容易的
link |
01:54:36.960
然後呢
link |
01:54:37.560
我們就這樣一直做下去就對了
link |
01:54:43.560
這個問題問得其實很好
link |
01:54:45.760
首先呢
link |
01:54:51.360
對在原來
link |
01:54:53.160
你如果去看那個structured SDN
link |
01:54:55.360
原始的paper
link |
01:54:57.160
它告訴你說
link |
01:54:58.960
如果你在算這個working set的時候
link |
01:55:01.960
你在working set的時候
link |
01:55:02.960
你加一個限制
link |
01:55:04.360
不要你一找
link |
01:55:05.560
你不要把所有找到的這個
link |
01:55:09.560
most violated constraint
link |
01:55:10.960
都加到working set裡面去
link |
01:55:12.560
要most它的那個violation
link |
01:55:14.160
要超過一個threshold
link |
01:55:15.560
你才加進去的時候
link |
01:55:17.360
這個演算法呢
link |
01:55:18.760
它會收斂
link |
01:55:20.960
那它收斂的這個
link |
01:55:23.760
它的這個iteration的次數
link |
01:55:26.160
是有一個上限
link |
01:55:27.360
而那個上限呢
link |
01:55:28.760
是正比於某些parameter
link |
01:55:32.360
這個parameter跟哪些東西有關呢
link |
01:55:35.160
跟這個你設的時候
link |
01:55:37.760
我剛才不是說
link |
01:55:38.560
你要加到那個working set裡面
link |
01:55:40.960
我會設一個threshold嗎
link |
01:55:42.560
要violation夠嚴重的時候
link |
01:55:44.560
才加進working set裡面
link |
01:55:45.960
當然很直覺的
link |
01:55:46.760
如果設了這個threshold
link |
01:55:48.360
越大
link |
01:55:49.360
那它就越快可以結束
link |
01:55:51.360
這一個algorithm
link |
01:55:53.160
另外一個有關係的就是浪大
link |
01:55:55.560
浪大的值越大
link |
01:55:57.760
那這個algorithm會越慢結束
link |
01:56:01.160
但是總之呢
link |
01:56:02.560
可以證明說
link |
01:56:03.960
今天這個algorithm呢
link |
01:56:05.760
是會結束的
link |
01:56:08.760
那希望回答到你的問題
link |
01:56:12.360
那證明我就沒有打算要講了
link |
01:56:15.360
為什麼是實驗結果
link |
01:56:17.360
不不不不是實驗結果
link |
01:56:18.360
但是它大概是多少速度
link |
01:56:19.960
就要跑多久
link |
01:56:21.760
你知道要跑多久是吧
link |
01:56:24.360
要跑多久
link |
01:56:26.360
這個就很難講
link |
01:56:27.760
這個是depend on你的task
link |
01:56:31.360
然後還有你的這個參數呢
link |
01:56:34.160
設的多少這樣子
link |
01:56:36.960
那在作業上的話
link |
01:56:41.160
在作業上
link |
01:56:41.760
在teaming這個corpus上
link |
01:56:42.960
如果你是用structured SVM的話
link |
01:56:46.560
那其實這個應該是你一個晚上
link |
01:56:49.760
就可以得到結果
link |
01:56:51.960
這樣有很驚人嗎
link |
01:56:53.160
其實沒有很驚人吧
link |
01:56:55.560
就一般的PC這樣子
link |
01:56:57.560
沒有用GPU這樣
link |
01:57:02.960
這個沒有用GPU做
link |
01:57:04.360
沒錯沒錯
link |
01:57:06.760
這個沒有辦法
link |
01:57:07.960
但是我想要表達的是就是說
link |
01:57:09.760
如果你去看這個原始的structured SVM的paper的話
link |
01:57:13.160
這個iteration的數目啊
link |
01:57:15.560
如果你稍微
link |
01:57:16.560
就剛才那個演算法
link |
01:57:17.960
如果你稍微改一下的話
link |
01:57:19.760
它的iteration的次數也是有upper bound
link |
01:57:22.560
就跟剛才我們講的那個structured perceptron
link |
01:57:25.160
它的iteration的次數有upper bound一樣
link |
01:57:27.960
這個iteration的次數呢
link |
01:57:29.760
也有upper bound
link |
01:57:30.960
那也是跟你的這個y的數目呢
link |
01:57:33.760
無關
link |
01:57:34.560
所以它iteration的次數呢
link |
01:57:36.360
其實也不是會
link |
01:57:38.360
無限增長到一個很可怕的值
link |
01:57:40.360
所以其實可以放心的使用這個
link |
01:57:42.960
這個演算法
link |
01:57:48.960
link |
01:57:53.160
那再來就是
link |
01:57:54.560
再來要講的是這樣子啦
link |
01:57:56.360
我們用structured SVM
link |
01:57:58.960
來做motor class的classification
link |
01:58:01.560
和binary的classification
link |
01:58:05.160
那這個就是
link |
01:58:08.960
其實你會發現說
link |
01:58:10.960
我要用structured SVM來做binary classification的時候
link |
01:58:14.560
就是普通的SVM了
link |
01:58:16.560
所以今天我們這個學習的順序是非常奇怪
link |
01:58:18.960
就是你先學structured SVM以後
link |
01:58:20.960
你再學motor class的SVM
link |
01:58:22.760
然後再學binary的SVM
link |
01:58:24.360
跟一般學習的順序是反過來的
link |
01:58:26.760
這樣子
link |
01:58:27.560
先學了健神再學御健術
link |
01:58:29.760
這樣子
link |
01:58:32.960
對對對先學健神再學御健術
link |
01:58:34.760
那如果你要用structured SVM來做binary
link |
01:58:36.560
就好像用健神去打蜜蜂或打草藥
link |
01:58:38.960
那種感覺
link |
01:58:42.560
link |
01:58:44.360
那我們來講一下這個
link |
01:58:45.960
motor class的SVM
link |
01:58:47.960
如果你要structured linear的想法
link |
01:58:49.560
你要怎麼做呢
link |
01:58:50.960
首先有三個problem嘛
link |
01:58:52.560
就一一解決它
link |
01:58:54.160
第一個是evaluation的problem
link |
01:58:56.560
那evaluation的時候我們說
link |
01:58:58.960
有大K個class
link |
01:59:02.160
然後我們有大K個weight的vector
link |
01:59:05.360
分別是W1到W大K
link |
01:59:08.760
然後呢
link |
01:59:09.360
因為我們現在是在做classification的problem
link |
01:59:12.160
所以這個Y的可能性呢
link |
01:59:13.960
是很有限的
link |
01:59:14.760
只有大K的可能
link |
01:59:16.160
我們把Y就用一個數字來代表它吧
link |
01:59:18.160
就是1 2小K到大K
link |
01:59:20.360
我們把Y用數字來代表它
link |
01:59:23.160
那我們的這個大F of XY呢
link |
01:59:25.960
大F of XY呢
link |
01:59:27.560
我們就可以寫成
link |
01:59:29.360
W上標Y乘上X
link |
01:59:32.160
如果你今天這個Y等於K的話
link |
01:59:34.160
就WK
link |
01:59:35.360
就這邊用選一個WK出來
link |
01:59:37.560
跟X做inner product
link |
01:59:38.960
那你就得到了這個F of XY的值
link |
01:59:42.760
好這個X呢
link |
01:59:44.760
我們上面放一個箭頭
link |
01:59:46.160
代表它是一個vector
link |
01:59:47.560
它是我們現在要去classify的那個對象
link |
01:59:49.760
X的這個vector的representation
link |
01:59:52.960
好那你可能會想說
link |
01:59:53.960
我們不是說如果要用structured SVM的話
link |
01:59:56.960
這個F of XY要寫成
link |
01:59:58.360
W的final XY的inner product嗎
link |
02:00:01.760
那這個東西是這個嗎
link |
02:00:04.360
它是這個
link |
02:00:05.560
因為你可以把W做一下轉換
link |
02:00:08.360
你可以說
link |
02:00:09.360
我現在有大K一個W
link |
02:00:12.160
大K一個vector對不對
link |
02:00:13.760
把它排起來
link |
02:00:14.960
W1 W2排到W大K
link |
02:00:18.160
然後呢
link |
02:00:19.160
這個
link |
02:00:20.560
這邊有一個Final XY
link |
02:00:22.960
Final XY是什麼呢
link |
02:00:24.760
它是說
link |
02:00:25.960
如果你的Y啊
link |
02:00:28.360
是第K一個class的話
link |
02:00:30.960
X呢
link |
02:00:31.760
就放在對應到第K一個class的
link |
02:00:34.160
那個way vector的位置
link |
02:00:36.160
這樣大家了解意思嗎
link |
02:00:37.160
如果W等於
link |
02:00:38.160
如果Y等於1的話
link |
02:00:39.560
X就放這邊
link |
02:00:40.560
Y等於2
link |
02:00:41.360
X就放這邊
link |
02:00:42.160
Y等於K
link |
02:00:43.160
X就放這邊
link |
02:00:44.760
那如果呢
link |
02:00:45.760
你把這個東西
link |
02:00:47.560
跟這個東西
link |
02:00:48.960
做inner product的話
link |
02:00:50.960
你就得到這個
link |
02:00:52.360
所以這個式子
link |
02:00:53.360
你可以把它表示成這樣
link |
02:00:54.960
那它呢
link |
02:00:55.760
也是這個形式的
link |
02:00:56.760
所以我們就可以用structured SVM呢
link |
02:00:59.560
來考慮它
link |
02:01:01.960
link |
02:01:02.560
那Inference怎麼做呢
link |
02:01:04.360
F of XY等於WY跟X的inner product
link |
02:01:07.560
Inference之後呢
link |
02:01:08.760
就是
link |
02:01:09.560
窮取所有可能的Y
link |
02:01:11.160
然後看說誰的F of XY最大
link |
02:01:13.360
窮取所有可能的Y
link |
02:01:14.760
看誰的WY跟X的inner product最大
link |
02:01:17.960
那窮取這邊很容易
link |
02:01:19.760
因為K沒幾個嘛
link |
02:01:20.960
就一個一個算就好了
link |
02:01:22.960
所以你就可以得到說呢
link |
02:01:24.760
哪一個Y是Y hat
link |
02:01:27.160
它可以讓這個式子最大
link |
02:01:29.560
好接下來呢
link |
02:01:30.560
我們就做一下training
link |
02:01:33.760
在training的時候呢
link |
02:01:35.360
今天我們的constraint呢
link |
02:01:36.760
是很有限的
link |
02:01:37.760
所以你也用不上cutting plane algorithm啦
link |
02:01:39.960
constraint有幾個呢
link |
02:01:41.760
你可以想想看
link |
02:01:42.560
假設我有N個
link |
02:01:44.160
N bit training data
link |
02:01:45.960
我的constraint的數目
link |
02:01:47.960
就是
link |
02:01:49.160
每一個data都有K
link |
02:01:51.360
因為我們現在有
link |
02:01:52.360
有K個class嘛
link |
02:01:53.960
那所以每一個data
link |
02:01:55.160
有K減一個不正確的Y
link |
02:01:58.360
那總共有N個data
link |
02:02:00.160
所以我constraint的數目呢
link |
02:02:01.360
其實就是
link |
02:02:02.560
我的data的數目N
link |
02:02:04.160
乘以大K減1
link |
02:02:06.160
乘以大K減1
link |
02:02:07.360
所以我的constraint沒有很多
link |
02:02:08.560
直接解就好了
link |
02:02:10.560
然後呢
link |
02:02:11.560
再來呢
link |
02:02:12.960
為什麼是not only
link |
02:02:14.360
誒怎麼了
link |
02:02:15.160
為什麼是not only
link |
02:02:16.760
and not stand by
link |
02:02:18.760
噢哇寫錯了
link |
02:02:20.560
被發現了
link |
02:02:21.560
they are not only
link |
02:02:22.960
應該they are only
link |
02:02:25.160
哈哈哈哈
link |
02:02:26.960
好不好意思
link |
02:02:27.960
寫錯了
link |
02:02:28.960
被你發現了
link |
02:02:30.560
謝謝謝謝
link |
02:02:31.560
這是
link |
02:02:33.560
沒有一個not
link |
02:02:34.560
they are only
link |
02:02:35.360
N乘以K減一個constraint
link |
02:02:36.960
link |
02:02:39.960
然後呢
link |
02:02:40.960
你看這邊呢
link |
02:02:41.960
我們可以把W乘進去
link |
02:02:43.360
W乘進去
link |
02:02:44.360
但是這個很無聊的一個
link |
02:02:46.160
這個算這個
link |
02:02:47.160
這個代化很無聊
link |
02:02:48.960
但等一下我會講說
link |
02:02:50.160
這個代化換成
link |
02:02:51.760
binary的時候就蠻有意思的
link |
02:02:53.960
這個W乘上這個
link |
02:02:55.760
whitehead的feature
link |
02:02:57.360
就是W上標whitehead的
link |
02:03:00.560
那一個vector
link |
02:03:01.960
乘上X的vector
link |
02:03:05.360
這是我們那個
link |
02:03:06.160
F of XY的定義
link |
02:03:08.360
這個東西呢
link |
02:03:09.360
這一項乘以這一項
link |
02:03:11.160
就是W上標Y
link |
02:03:12.760
乘上X的vector
link |
02:03:14.160
就可以把這兩項
link |
02:03:15.360
帶進去這邊
link |
02:03:16.760
帶回去
link |
02:03:17.960
帶回去
link |
02:03:18.760
所以它可以寫成呢
link |
02:03:20.360
把這兩項相減
link |
02:03:21.560
那X可以提出來
link |
02:03:23.160
所以變成W
link |
02:03:24.360
上標whitehead
link |
02:03:25.360
減掉W Y
link |
02:03:26.360
這兩個不同vector相減
link |
02:03:28.160
乘上X的vector
link |
02:03:30.160
那希望這個東西
link |
02:03:31.760
大於等於
link |
02:03:33.160
whitehead跟Y的difference
link |
02:03:34.960
減掉X
link |
02:03:36.160
那whitehead跟Y的difference
link |
02:03:37.960
是什麼呢
link |
02:03:38.960
這個其實就很有意思
link |
02:03:40.760
你可以自己訂
link |
02:03:42.560
你當然可以說
link |
02:03:43.560
只要whitehead跟Y不一樣
link |
02:03:45.560
它們就是
link |
02:03:46.360
就是1
link |
02:03:47.160
一樣就是0
link |
02:03:48.360
那一樣你不用考慮
link |
02:03:49.760
這邊沒有一樣的情況
link |
02:03:50.760
不一樣就是1
link |
02:03:52.760
但是你又可以進一步考慮
link |
02:03:54.760
你可以做這個Cost Sensitive Learning
link |
02:03:57.160
你可以進一步考慮說
link |
02:03:59.160
某種class
link |
02:04:00.360
misrecognize成另外一種class
link |
02:04:02.760
它是比較嚴重的
link |
02:04:04.160
而某種class
link |
02:04:04.960
recognize成另外一個class
link |
02:04:06.360
它其實是比較不嚴重
link |
02:04:08.360
比如說我現在隨便舉一個例子
link |
02:04:09.760
假如我想要做影像辨識
link |
02:04:11.760
Y是比如說
link |
02:04:12.960
狗、貓、公車跟車
link |
02:04:16.560
那你知道狗跟貓比較像嘛
link |
02:04:18.360
公車跟車比較像
link |
02:04:20.160
所以如果我今天呢
link |
02:04:21.760
把我可以定義說這個
link |
02:04:23.760
如果我正確答案是狗
link |
02:04:25.560
但我不小心弄錯成貓的話呢
link |
02:04:27.560
它這個error很小
link |
02:04:29.160
然後如果我今天呢
link |
02:04:30.760
正確答案是狗
link |
02:04:31.760
但我不小心弄成公車的話呢
link |
02:04:33.760
它的cost很大
link |
02:04:35.360
那這個你可以自己隨便定
link |
02:04:37.360
那它在認的時候
link |
02:04:38.560
你就認到的結果呢
link |
02:04:39.960
它就會做到說
link |
02:04:41.760
如果你把這個狗跟公車
link |
02:04:44.160
之間的cost定得很大
link |
02:04:45.760
那你在train的時候呢
link |
02:04:47.160
它就會儘量避免了
link |
02:04:49.360
把狗變成公車
link |
02:04:52.360
那你就可以自由調整這個
link |
02:04:55.160
它的cost
link |
02:04:55.960
可以自由調整說呢
link |
02:04:57.160
你希望哪些class
link |
02:04:58.760
比較不要容易被misrecognize
link |
02:05:01.960
那這個是motor class的SDN
link |
02:05:05.560
那如果binary是怎樣呢
link |
02:05:07.560
binary其實就是motor class的K
link |
02:05:10.360
等於2而已啊
link |
02:05:11.960
本來Y等於1到大K
link |
02:05:13.960
現在Y就是1跟2
link |
02:05:17.160
所以我們本來呢
link |
02:05:18.560
我們本來的constraint是寫成WY hat
link |
02:05:21.360
減掉WY跟X的inner product
link |
02:05:24.160
大於等於delta減epsilon
link |
02:05:26.560
然後呢
link |
02:05:27.360
我們現在因為只有兩個class
link |
02:05:30.560
那你也可以說
link |
02:05:31.960
我這個class1 recognize成
link |
02:05:34.760
就是正確答案是class1
link |
02:05:36.360
我不小心弄錯成class2
link |
02:05:37.760
跟正確答案是class2
link |
02:05:38.960
不然弄錯成class1
link |
02:05:40.160
它的error不一樣
link |
02:05:41.160
你其實也可以這樣測
link |
02:05:42.560
但我們今天就假設說
link |
02:05:43.960
只要弄錯呢
link |
02:05:44.960
這個delta呢
link |
02:05:46.160
就等於1
link |
02:05:48.160
然後接下來呢
link |
02:05:49.360
如果我們今天的K等於2的話
link |
02:05:52.360
如果我們今天K等於2的話
link |
02:05:54.160
你會發現說
link |
02:05:55.560
只有兩種情形
link |
02:05:57.360
因為要嘛今天這筆data呢
link |
02:05:59.560
它是屬於class1
link |
02:06:01.960
如果這筆data屬於class1的話
link |
02:06:04.560
Y hat就是1
link |
02:06:06.160
另外唯一的可能就是2對不對
link |
02:06:08.560
因為現在不正確的Y只有1個
link |
02:06:10.360
跟剛才的情況不一樣
link |
02:06:11.360
剛才不正確的Y而已有
link |
02:06:13.160
成千上萬
link |
02:06:14.160
現在不正確的Y呢
link |
02:06:15.560
只有1個
link |
02:06:16.160
所以正確答案是1
link |
02:06:17.160
它就是2
link |
02:06:18.360
所以如果Y等於1的時候呢
link |
02:06:20.160
它就是W1-W2乘上X
link |
02:06:23.960
要大於等於1-X
link |
02:06:26.560
如果今天Y等於2的話
link |
02:06:28.760
它就要是
link |
02:06:30.360
正確答案是2
link |
02:06:31.560
不正確的Y就是1
link |
02:06:32.760
什麼W2-W1乘上X等於1的話
link |
02:06:35.760
大於等於1-X
link |
02:06:37.560
那這個W1-W2呢
link |
02:06:40.160
我們可以假設W1-W2呢
link |
02:06:42.160
就是W
link |
02:06:44.160
然後W2-W1呢
link |
02:06:47.760
就是-W
link |
02:06:49.960
那你把這個W帶進去-W帶進去
link |
02:06:52.560
你就得到說
link |
02:06:53.960
如果Y是class1
link |
02:06:56.760
它只有1個contraint
link |
02:06:57.960
就是W乘上X
link |
02:06:59.760
要大於等於1-X
link |
02:07:01.960
如果今天Y等於2
link |
02:07:04.160
你只有1個contraint
link |
02:07:05.160
就是-W乘上X
link |
02:07:06.960
大於等於1-X
link |
02:07:08.760
那如果你知道什麼是
link |
02:07:10.160
原來的SVM長什麼樣子的話
link |
02:07:12.160
這個是不是跟原來的SVM
link |
02:07:14.360
一模一樣呢
link |
02:07:17.960
OK,所以我們可以
link |
02:07:19.160
就是用structured SVM的概念
link |
02:07:21.160
來想binary的SVM
link |
02:07:23.360
那它就是這個樣子
link |
02:07:25.360
好,那我們接下來講這個
link |
02:07:28.760
beyond這個structured SVM
link |
02:07:30.960
有什麼樣的想法
link |
02:07:32.560
那你知道structured SVM
link |
02:07:35.360
它有一個很大的問題就是
link |
02:07:37.160
它是linear啦
link |
02:07:38.360
所以你
link |
02:07:39.560
只linear就做不出什麼厲害的東西
link |
02:07:42.560
所以你要讓structured SVM
link |
02:07:45.360
很powerful
link |
02:07:46.160
你這個feature
link |
02:07:47.360
一定要訂得很好
link |
02:07:48.760
不然它就不太厲害
link |
02:07:50.960
可是你要自己人手
link |
02:07:52.560
訂一個很厲害的feature就很難
link |
02:07:54.760
那所以怎麼辦
link |
02:07:55.960
你這個feature
link |
02:07:57.360
你要讓它用DNN來
link |
02:08:01.560
比如說下面這邊是
link |
02:08:03.560
過去我們實驗室在
link |
02:08:05.360
10年的時候做的painter
link |
02:08:07.160
我猜台大女子也是可能是
link |
02:08:10.560
第一個把structured SVM用在
link |
02:08:12.560
語音辨識上的團隊
link |
02:08:13.960
至少在之前都沒有看過
link |
02:08:15.760
後來Cambridge也做了類似的事情
link |
02:08:18.160
那在這兩篇paper裡面
link |
02:08:19.360
有一個共同的地方
link |
02:08:20.560
共同的地方就是一開始
link |
02:08:22.560
一開始因為那個時候好幾年前
link |
02:08:24.560
我們對machine learning的概念
link |
02:08:26.360
都很模糊
link |
02:08:27.760
然後那時候一開始
link |
02:08:29.360
這邊並不是用這個DNN做的
link |
02:08:31.960
就是一般簡單的feature
link |
02:08:33.960
NFCC神手訂的一些feature
link |
02:08:36.560
怎麼做都做不好
link |
02:08:38.560
然後那時候就很困惑
link |
02:08:39.760
怎麼做都做不好
link |
02:08:41.160
然後直到有一天
link |
02:08:42.560
有人發現說這個東西
link |
02:08:43.960
你要用DNN的output
link |
02:08:45.160
那個時候也不是真的很deep
link |
02:08:47.160
就只有一個hidden layer
link |
02:08:48.560
一個hidden layer
link |
02:08:49.760
neural network的output
link |
02:08:50.760
結果才會好
link |
02:08:52.160
然後結果做出來就有不錯的
link |
02:08:54.960
跟baseline就有不錯的improvement
link |
02:08:57.160
所以後來就publish這個paper
link |
02:08:58.960
然後後來我發現說Cambridge
link |
02:09:00.560
他們的做法是一模一樣的
link |
02:09:02.560
就是你一定要先用一個DNN
link |
02:09:04.560
做出來的結果才會work
link |
02:09:07.560
之後就還有再進展
link |
02:09:09.360
怎麼進展呢
link |
02:09:10.960
我們本來是說先認好一個DNN
link |
02:09:13.960
他抽了feature以後
link |
02:09:15.160
再接structured SDN
link |
02:09:16.960
但是你可以把這個DNN
link |
02:09:18.560
跟structured SDN一起認
link |
02:09:21.960
一起認
link |
02:09:23.360
你可能會想說
link |
02:09:25.160
怎麼一起認
link |
02:09:26.560
如果你structured SDN
link |
02:09:27.760
你是用那個portrait programming的方法
link |
02:09:29.960
可能沒辦法一起認
link |
02:09:31.160
因為DNN太複雜
link |
02:09:32.560
你不知道怎麼把它塞到
link |
02:09:33.760
portrait programming裡面去
link |
02:09:35.560
可是如果你今天的training方法
link |
02:09:37.160
你是用這個gradient descent的話
link |
02:09:40.360
其實你可以把這個weight vector
link |
02:09:42.960
跟這個set
link |
02:09:44.160
一起去做gradient descent
link |
02:09:46.160
你可以認了這個W以後
link |
02:09:48.360
把W的arrow的signal
link |
02:09:50.160
在fit quality回去給這個DNN
link |
02:09:52.960
所以你可以把這個DNN
link |
02:09:54.560
抽feature DNN的參數
link |
02:09:56.360
跟structured SDN一起認
link |
02:09:58.960
這有一個今年publish的
link |
02:10:04.360
Microsoft做的paper
link |
02:10:06.560
這是一個reference
link |
02:10:08.360
然後你可以再更進一步
link |
02:10:10.960
這邊是SDN
link |
02:10:12.560
你可能覺得SDN是linear
link |
02:10:14.160
沒有很厲害
link |
02:10:15.760
改成DNN
link |
02:10:17.760
所以前面抽feature是DNN
link |
02:10:19.960
後面也是DNN
link |
02:10:21.760
這個參數也是可以一起認的
link |
02:10:24.960
然後整個structure就加structure
link |
02:10:29.560
其實你今天就變成說
link |
02:10:32.960
我認了一個很大的DNN
link |
02:10:34.360
他的input就是XY
link |
02:10:35.560
output就是一維
link |
02:10:36.960
就是F of XY
link |
02:10:38.160
中間這個抽出什麼東西
link |
02:10:39.560
其實也不重要
link |
02:10:40.560
就是一個很大的DNN
link |
02:10:42.360
-就是只有一個DNN
link |
02:10:44.960
-就是只有一個DNN
link |
02:10:46.960
-就是只有一個DNN
link |
02:10:48.960
-一個很深的DNN
link |
02:10:50.960
-一個很深的DNN
link |
02:10:51.960
-一個很深的DNN
link |
02:10:53.960
然後你就可以說
link |
02:10:55.960
我認這個F的時候
link |
02:10:57.760
用跟這個structured SDN
link |
02:10:59.560
一模一樣的criteria去認他
link |
02:11:01.760
感覺有max可以做
link |
02:11:04.160
就做gradient descent
link |
02:11:05.360
被publicate的時候
link |
02:11:06.160
一路從這邊一直被publicate回去
link |
02:11:08.360
所以就變成說
link |
02:11:09.960
input一段聲音
link |
02:11:11.560
NFC是sequence
link |
02:11:12.760
inputY是一個form sequence
link |
02:11:15.360
然後直接output一個value
link |
02:11:17.360
這個我們是有publish一個paper的
link |
02:11:19.360
這個是廖銘修小老師做的
link |
02:11:21.960
今年12月才會發表在ASI
link |
02:11:28.160
其實就這樣
link |
02:11:29.160
今天要講的就是這個樣子
link |
02:11:31.360
這個是今天的outline
link |
02:11:32.960
我們今天上課就上到這邊
link |
02:11:34.560
謝謝大家
link |
02:11:35.360
謝謝