back to index
Structured Learning 3: Structured SVM

link |
我們今天要講這個Structure Support Vector Machine。
link |
那我知道上一次上課結束前,還有一部分的投影片沒有講。
link |
那一部分呢,我們就併到Structure Support Vector Machine來講。
link |
那我不知道有多少人知道什麼是Support Vector Machine啦。
link |
那我是假設你其實不知道什麼是Support Vector Machine。
link |
你會知道什麼是Structure Support Vector Machine,
link |
但你還是不知道什麼是Support Vector Machine。
link |
你知道什麼是Structure Support Vector Machine,
link |
那你再反過頭來去了解什麼是Support Vector Machine,其實是比較容易的。
link |
我突然發現說就是作業二的Deadline正好是期中考中,
link |
那我也不要讓大家太累,所以我們作業二的Deadline就延後一週。
link |
所以如果是作業二的Deadline延後一週的話,那作業二就變成11月20號交。
link |
那作業三公佈的日期和Deadline不變,
link |
也就是作業三公佈的日期仍然是11月20日,也就是...
link |
我問一下就是,本來作業二是要下週交嗎?
link |
好,所以作業三公佈的日期仍然是11月13日。
link |
所以就是說作業二和作業三會有一週的重疊,
link |
也就是說我們是從作業三借了一週來做作業二的意思就是了。
link |
好,那我們今天就是要繼續講Structure Learning。
link |
那很快複習一下,Structure Learning要解決什麼問題呢?
link |
我們要解決的問題是說,我們現在要找一個Function。
link |
它的Input和Output都是有Structure的Object。
link |
比如說它是個Sequence,是個List,是個Tree,是個Bounding的Box,等等。
link |
那遇到這種問題呢,我們要怎麼來處理?
link |
那這些問題呢,其實有一個Unified Framework。
link |
這個Unified Framework只有兩步。
link |
第一步就是,我們現在要找一個Function叫做F.
link |
這個F呢,它的Input是一個X跟一個Y,
link |
它的Output是一個Real Number。
link |
那這個XY的Pair呢,它們有多Compatible,
link |
它們有多合理,它們放在一起有多適合。
link |
那有了這個F以後,不管你用什麼方法,
link |
比如說從TrainingData裡面找到F以後,你要做的事情就是,
link |
今天假如有人給你一個X,你就去窮聚所有的Y,
link |
那每一個Y呢,你都跟X一起帶進F裡面去試試看。
link |
也就是說,看哪一個Y跟現在Input的X搭配起來最適當。
link |
最適當的那個Y呢,就是你現在系統的Output,我們寫做Y Delta。
link |
那雖然說這個Framework只有兩步看起來很簡單,
link |
但是你要使用這個Framework呢,你必須要能夠回答以下三個問題。
link |
第一個問題就是,F of XY呢,長什麼樣子?
link |
第二個問題就是,可能的Y呢,其實可能有很多,Y的Space可能很大。
link |
所以你呢,當你被給定一個X,你要窮聚所有的Y,
link |
去看說哪一個Y可以讓F of XY最大,可能是一件很困難的事。
link |
所以你要能夠使用這個Unified的Framework呢,必須要假設,
link |
你帳號有什麼方法可以解這一個ARG Max的問題,
link |
可以解這一個Optimization的問題。
link |
然後第三步呢,就是現在給你一些TrainingData,
link |
你怎麼找出這一個Function F。
link |
那上次呢,我們有舉了很多的例子,那今天底下呢,
link |
我們都用這個Object Detection當作例子。
link |
Object Detection就是說呢,給你一個Image,
link |
然後你要Detect說呢,你要用一個框框呢,
link |
把你要的Object呢,把它框出來。
link |
那事實上在這個Image呢,在這個影像處理的領域呢,
link |
還有很多類似的Task,其實還比這個找一個框框呢,更複雜。
link |
比如說呢,我們可以要求機器不只是找一個框框,
link |
而是用不規則的形狀呢,把你要找的Object框出來。
link |
比如說現在假設目標不是找兩公尺,而是找一匹馬的話呢,
link |
你要想辦法把這個馬的輪廓呢,框出來。
link |
這個呢,又是比找一個框框更複雜的問題。
link |
或者是呢,我們不只是要Detect出Object,
link |
我們還要知道說,假設我們現在DetectObject是人,
link |
他的身體在哪裡,他的手在幹嘛,他的手在幹嘛。
link |
那但是其實呢,這些問題呢,你都可以套用我們等一下講的解法呢,
link |
只是在今天這一堂課裡面,我們舉的例子呢,
link |
那你可能會問說,為什麼偏偏要挑這個當作例子呢?
link |
其實這個是這樣啦,我本來最開始的時候,
link |
我是想要用一些比較正常的例子,比如說Machine Translation之類的。
link |
可是後來呢,我也是看有某一個人,我忘記是誰了,
link |
他講這個Structure Learning的時候呢,
link |
他是用Object Detection當作例子。
link |
那我覺得用Object Detection當作例子,
link |
在Visualization上面非常的清楚。
link |
所以我就想說,我要用Object Detection當作例子。
link |
但他的例子是Detect一個羊,那我不知道為什麼他要Detect一個羊,
link |
所以我就Detect兩公尺是這樣子。
link |
所以你要注意一下,雖然我們等一下的例子都是這個,
link |
甚至不只是Image Processing的問題,
link |
其他你可以想到的Structure Learning的問題,
link |
可能都可以套用我們等一下講的結構呢,
link |
如果我們對這個F of X Y做一些假設,
link |
那會讓我們之後的任務變得比較容易一點。
link |
那麼現在是假設F of X Y它是Linear的,
link |
也就是說現在如果我的X是一張Image,
link |
我的Y是一個Bounding的Box,
link |
一個Weight的Vector W,
link |
這個Feature Vector,Find of X Y的這個相乘。
link |
那這個W呢,是到時候在Problem 3裡面,
link |
我們要用Training Data去把它學出來的。
link |
而這個Feature Vector Find呢,它是人定的。
link |
Given一個Image和一個Bounding Box,
link |
這個Find of X Y呢,應該長什麼樣子。
link |
當然這邊有一個Open Question,
link |
就是你可能知道說,F of X Y如果是Linear的話,
link |
它其實很Weak,一個Linear的Function,
link |
那你必須要仰賴一個複雜的Total Feature的方式,
link |
而不是有太多人的Knowledge介入在裡面。
link |
所以一個Open Question就是,
link |
我們能不能讓F of X Y是不是Linear?
link |
因為如果F of X Y不是Linear的話,
link |
我們在多數時候,都是假設F of X Y呢,是Linear。
link |
我們要解一個ARG Max的Problem,
link |
這個步驟呢,我們叫做Inference。
link |
然後看哪一個Y可以讓你的Evaluation Function,
link |
就是W跟F of X Y的Inner Quadrat最大。
link |
那這邊如果說以Object Detection為例的話呢,
link |
首先呢,窮取所有可能的Bounding Box,
link |
然後對每一個Bounding Box跟這個Image呢,
link |
W跟F of X Y的Inner Quadrat呢,
link |
然後呢,你看看哪一個X Y的Pair,
link |
比如說呢,今天呢,這一個X Y的Pair,
link |
X是這張Image,Y是這個Box的時候,
link |
這個窮取聽起來感覺是一個很花時間的東西,
link |
但事實上呢,我們可能可以有比較Efficient的方法呢,
link |
就是I think you should be more explicit here, Step 2。
link |
這邊有一個Miracle的Step,
link |
那比如說在Object Detection的文線上,
link |
剛才那個ArgMax的Problem,
link |
比如說有Branch and Bound的Algorithm,
link |
或者是這個Selective Search的Algorithm。
link |
那如果是Sequence Labeling的Problem,
link |
Veteran Algorithm,
link |
可以幫助我們大家做Inference,
link |
因為這些Algorithm其實是Depend on你的Task,
link |
如果你的Feature定義Find of X Y不一樣,
link |
因為這個東西太Task Dependent了,
link |
雖然說我沒有告訴你說Problem 2怎麼解決,
link |
但這一套Framework還是有用的,
link |
因為你今天本來給你一個Structured Learning的Problem,
link |
如果你不知道這一套Framework,
link |
就是解這個Inference的Problem,
link |
如果你不知道Inference的Problem怎麼解的話,
link |
只是它有時候找到的不一定是Exact的Solution。
link |
所以這邊有一個Open的Question,
link |
而這個Question還沒有太多討論的就是,
link |
我們其實並沒有辦法找到一個Exact的Solution,
link |
也就是那個ArgMax的Problem,
link |
我們只能夠有Approximate的Solution,
link |
沒有辦法找到一個Exact的Solution的話,
link |
你就要假設Problem 2我們是已經解決了。
link |
好,那再來我們就進入Problem Tree。
link |
我有一堆Training Data,
link |
X1,Y1,Head,X2,Y2,Head,到X大N,Y大N,Head。
link |
我們之後要用的Evaluation Function,
link |
這個F of X,Y應該具備什麼性質呢?
link |
帶進這個FX1 of Y得到的值還要大。
link |
同理,如果說是X2,Y2,Head,
link |
應該要比其他所有可能的FX2,Y得到的值還要大。
link |
你對所有的Training Data,
link |
我們其實就是打算要Focus在第三個問題。
link |
我們已經知道怎麼抽Find of X,Y。
link |
我們已經解了ARG,Max,Farben。
link |
假設在前面那兩個問題都已經Solved的情況下,
link |
我們先從一個Separable Case開始。
link |
Separable Case其實是不太Realistic,
link |
所以我們要進到Non-Separable Case。
link |
我們會修改我們的Objective Function,
link |
把Arrow加進我們的Objective Function,
link |
然後當然要做一下Regularization。
link |
我們就會產生Structured SVM。
link |
然後我會講一下Structured SVM要怎麼解它。
link |
叫做Hacking Plane的Algorithm。
link |
我們會用Structured SVM,
link |
來做Modal Class的Classification和Binary的Classification。
link |
Modal Class的Classification和Binary的Classification,
link |
只是Structured SVM的特例。
link |
是Structured SVM的一個特例。
link |
下一步Beyond Structured SVM的東西,
link |
所以我們就先從Separable Case開始。
link |
所謂Separable Case的意思是說呢,
link |
那所謂的Separable的意思就是說,
link |
我們找得到一個Weight Vector,
link |
這個Weight Vector它的作用是說,
link |
都做Inner Product的話呢,
link |
我們能夠讓這個正確的這個Point,
link |
比跟它同樣形狀的藍色的Point呢,
link |
在做Inner Product的話呢,
link |
會比W hat跟Phi of x1跟任意y
link |
所形成的Feature Vector加Delta還大。
link |
W hat跟Phi of x2 y2
link |
W hat乘上Phi of x2 y
link |
3號我們能夠找到一個Feature Definition,
link |
那如果我們今天能夠找到這樣的Feature Function的話呢,
link |
來找到我們要的這個parameter,
link |
也就是那個Weight Vector大定義。
link |
叫做Structure Perceptron。
link |
那如果你知道什麼是Perceptron的話呢,
link |
你就不難理解為什麼它叫Structure Perceptron,
link |
因為它跟那個Perceptron的Algorithm呢,
link |
Perceptron的Algorithm稍微改一下,
link |
就變成Structure Perceptron的Algorithm。
link |
在這個Structure Perceptron的Algorithm裡面呢,
link |
它的input是一組training data,
link |
它的output就是我們現在要找出來的Weight Vector w,
link |
這個Weight Vector w可以做到的事情就是,
link |
它是一個可以讓我們的Data Point Separable的Weight Vector。
link |
這邊要按照順序或者是Random都行嘛,
link |
我們就取一個training的example,
link |
然後呢,我們去找一個yn tilde,
link |
可以讓w乘上final xn y的值最大,
link |
是這個argmax這個problem的output,
link |
假設這個yn tilde跟正確的答案y hat,
link |
那我們就update我們的weight vector w,
link |
是把weight vector w,
link |
加上正確的y hat所形成的feature vector,
link |
可以讓這個inner product值最大的y tilde,
link |
所形成的feature vector,
link |
跟正確的y hat所形成的vector靠近一點,
link |
那就不斷地跑這個iteration,
link |
從你的training data裡面呢,
link |
從你的training data裡面的sample一個pair出來。
link |
當你看完了所有的example以後,
link |
也就是說對所有的example來說,
link |
argmax得到的結果都是y hat的話,
link |
我們真的能夠輕易地找到一個vector,
link |
我們就可以找到我們要的那個wave vector。
link |
那這個r除以delta的平方是什麼呢?
link |
我們在separable case,
link |
就會得到不同的feature vector phi。
link |
那這些feature vector phi之間距離的
link |
就可以結束剛才那個algorithm。
link |
我們都,就算剛才藍色點有非常非常多,
link |
也不會影響我們需要update的次數。
link |
argmax找出來的是y hat的話,
link |
如果找出來的y tilde不等於y hat的話呢,
link |
這個我們把這個w update的這個history,
link |
它從w0、w1一直到wk、wk加1。
link |
加上某一個正確的y hat所形成的feature,
link |
再減掉某一個錯誤的y tilde所形成的feature。
link |
本來我們update的時候的rule呢,
link |
是一個separable的case。
link |
跟y hat所形成的feature vector,
link |
它跟其他所有的y所形成的feature vector,
link |
它是可以讓我們data是separable的。
link |
那我對這個w hat做normalize,
link |
它一樣還是可以separable啊,
link |
如果我們去計算w hat跟w k的夾角,
link |
我們今天如果算cosine這個low k的話呢,
link |
我們算cosine low k的話呢,
link |
所以這個cosine low k的它的值呢,
link |
我們會發現說這個cosine low k的值呢,
link |
它是w hat跟w k的inner product,
link |
我們先來看看w hat跟w k的inner product的值呢,
link |
不管你今天找到這個y delta是誰,
link |
它都一定比這個y hat的inner product呢,
link |
這個是根據這個separable的definition來的。
link |
它大於等於w hat跟w k-1的inner product,
link |
w hat乘上w hat跟w2的inner product,
link |
大於等於w hat跟w1的inner product,
link |
而w hat乘上w1的inner product,
link |
w hat跟w2的inner product,
link |
這個w hat跟w k的inner product呢,
link |
w hat跟w k的inner product增加,
link |
並不保證w hat跟w k越來越接近,
link |
因為它可能只是w k它不斷地增長而已。
link |
inner product也是會增加。
link |
所以inner product增加,
link |
我們要考慮一下w k的長度是怎麼樣。
link |
而這兩個vector的inner product又增加的話,
link |
一樣把w k的definition,
link |
它的這個跟w k減1的relation,
link |
加上兩倍的A和B的inner product。
link |
減掉y tilde所形成的feature,
link |
今天為什麼在這邊會產生update的情形?
link |
所以我們的Weight才會被update?
link |
所以WK-1跟yθ所形成的feature的inner product,
link |
一定會大於跟正確的feature所形成的inner product還要大。
link |
但我們現在假設兩個feature之間的距離,
link |
於是我們就可以得到一個WK的長度的upper bound。
link |
因為我們知道說W1的長度的平方小於等於W0,
link |
所以W1長度的平方一定小於等於r平方。
link |
W2長度的平方又小於等於W1長度的平方加r平方。
link |
一個是說,inner product大於等於K倍的delta,
link |
WK的長度的平方小於等於K倍的r平方。
link |
它的inner product不斷地增加,
link |
但是WK的長度呢,並沒有增加得很快。
link |
這個cos呢,它會大於等於√K乘以Δ除以r。
link |
這個cos啊,它是可能會逐漸增加的。
link |
因為這個東西其實是它的一個lower bound。
link |
這個東西其實是它的一個lower bound。
link |
或隨著這個weight不斷地被update,
link |
它的這個upper bound是e啊,
link |
它的這個lower bound是這一條線。
link |
但這個,要learning這件事情,
link |
那從這個K的upper bound,
link |
從這個update次數的upper bound,
link |
跟這個錯誤的data中間的gap越大,
link |
為了要讓我的training快一點,
link |
但是這樣並不會真的讓你的learning變快。
link |
是這邊任兩個圈圈之間的距離的upbound。
link |
沒有辦法讓你的training變快。
link |
剛才那個separable case,
link |
可以讓你的正確和錯的data separable。
link |
我們要考慮non-separable的case。
link |
那這個non-separable case呢,
link |
那這邊non-separable的case,
link |
雖然說假設今天我們沒有任何一個vector,
link |
比如說假設我有一個weight vector是W',
link |
它可以說我把這個正確答案排在第二名。
link |
那我有另外一個weight vector是W',
link |
所以雖然說這兩個weight vector,
link |
它們都沒有辦法讓正確答案的分數高過其他錯誤的。
link |
左邊這個W'顯然是好過右邊這個W'.
link |
所以在non-separable case的情況下,
link |
我們還是可以定義一些evaluation measure,
link |
就是定義一個cost function,
link |
我們定義一個cost value c,
link |
這個cost value c就是要來evaluate一個W,
link |
一個weight vector W它有多不好。
link |
我們就知道說這個W是我們手上最好的W。
link |
所以它可能不是separable W,
link |
那我們要怎麼定義這個cost c呢?
link |
DN比Data cost我寫成CN,
link |
那DN比Data的這個cost CN呢,
link |
可以讓這個W跟這個final inner product,
link |
這個正確的這個Y hat所形成的值。
link |
這個cost function的定義呢,
link |
好,那你首先第一個要討論的問題就是,
link |
如果它的值比這個Y hat值要大的話,
link |
沒錯,大部分的同學都覺得它不可能是負的。
link |
因為如果你今天你的Y hat這個紅色框框,
link |
其他所有不是正確的Y和和減掉正確的。
link |
因為我們不是在這個Problem2假設說,
link |
所以呢,就順著我們那個Problem2的Constraint,
link |
要怎麼找一個W去Minimize這個Cost的C呢?
link |
其實我們可以用,就用Gradient Descent就好了。
link |
這個有辦法做Gradient Descent嗎?
link |
我們可以找到一個W去Minimize這個Function C嗎?
link |
那我們要怎麼做這個Gradient Descent呢?
link |
我們要怎麼做Gradient Descent呢?
link |
我們要怎麼求這個Cn對W的這個Gradient呢?
link |
因為我們已經看過那個Max Out Network對不對?
link |
Max Out Network裡面也是有一個Max的Function啊,
link |
那你還不是照,你還不是可以去違分它。
link |
裡面有一個Max的Function,
link |
我們還是可以算它對W的Gradient的。
link |
所以當你今天W的Weight不同的時候,
link |
你這邊選出來的這個Max呢,是不一樣的。
link |
今天假如這是一個W所形成的Space,
link |
當W的值呢,落在這個範圍裡面的時候,
link |
你把它帶進這個Function裡面,
link |
帶進這個Function,得出來的值是Y''。
link |
它的Function其實你是可以非常輕易地算出來的。
link |
這個Value C它的Function呢,
link |
W跟Y' Feature的Inner Product,
link |
減掉W跟Yhead的Inner Product而已。
link |
那它就只是W跟Y''的Inner Product,
link |
減掉W跟Yhead的Inner Product。
link |
W跟Y''的Inner Product,
link |
減掉W跟Yhead的Inner Product。
link |
它都只是一個很簡單的Function,
link |
每一個Region的C對這個W的Gradient,
link |
在這個Region就是Y''的Feature,
link |
右邊這個Region就是Y''的Feature,
link |
那你就可以用Gradient Descent,
link |
來Optimize你的Function,
link |
來找出一個讓Cost的Value最小。
link |
假設呢,我就執行T4的Update,
link |
假設我做Stochastic Gradient Descent,
link |
假設我做Stochastic Gradient Descent,
link |
都Random Pick一個Xn,Yn Head,
link |
那Given Xn,Yn Head,
link |
要知道我落在哪一個Region裡面呢,
link |
要知道我落在哪一個Region裡面呢,
link |
它只是Value啊,ARG它才是會Return Y回來。
link |
是在Y Delta N的Region裡面。
link |
所以呢,我們現在要算Gradient就簡單了。
link |
就是Y Delta所形成的Feature,
link |
然後呢,我們要Update呢,也很簡單。
link |
乘上Y Delta的Feature,減掉Y Head的Feature。
link |
我把Learning Rate設1,
link |
它是不是就是Structure Percentile呢?
link |
對不對,Structure Percentile的時候,
link |
在這邊我們用Weight and Descent的時候呢,
link |
Learning Rate而已。Learning Rate設1的話,
link |
其實做的事情就跟剛才的Structure Percentile呢,
link |
我們剛才的Cost Function。
link |
那在Structure Learning的
link |
你的Output有非常非常多的可能。
link |
舉例來說,假設正確的是紅色這個框框,
link |
是跟這個正確的框框分數很接近的話呢,
link |
那所以今天呢,如果有一個waiter,
link |
他不只知道說要把正確的框框擺在第一位,
link |
那如果你今天的waiter能夠做到說,
link |
如果你今天的waiter可以做到說,
link |
因為假如你今天的testing跟training
link |
那我要怎麼把這件事情考慮到我們的cost function裡面呢?
link |
定義成一個delta的function,
link |
這個delta就是一個function,
link |
是把這個delta呢,定成像這樣子。
link |
那這是一個很合理的delta的定法。
link |
大過一個error function
link |
我們的cost function裡面。
link |
那他跟正確答案之間的margin呢,
link |
那我們是用這個cost function呢,
link |
recognition,就是每一個vector
link |
找w跟這個feature vector
link |
inner product最大的值就好了。
link |
再加上這個inner product最大的值。
link |
又給自己添了一個麻煩,就是我們增加了一個
link |
怎麼用gradient descent去
link |
我們要讓inefata加上delta的
link |
這個式子找出來的y,叫做y delta
link |
這個是delta,這樣你可以看得出來
link |
那如果是bar的話,我就會用紫色啦。
link |
所以你還是可以看得出來他們顏色是不一樣。
link |
用y delta的feature,減掉
link |
這個y hat的feature當作歸點。
link |
現在只是把y bar的feature
link |
減掉y hat的feature當作歸點。
link |
好,那其實剛才那個cost function呢
link |
這個觀點是說,剛才那個cost function
link |
error的upper bound。
link |
minimize剛才那個cost function
link |
的時候,有考慮margin的cost function
link |
minimize training data上的error的
link |
upper bound。你minimize upper bound
link |
你minimize upper bound並不代表說
link |
inference function就是這樣。
link |
可以讓這個inner product值最大的那個y
link |
y hat它們的difference的
link |
y tilde跟y hat它們之間的
link |
讓y tilde跟y hat它們之間的difference
link |
這等於是minimize我們的error。
link |
還是可以用gradient descent
link |
去minimize它。但是這個delta呢,
link |
不可為分的function都還要更複雜。
link |
而且你可以想像它很有可能是階梯狀的。
link |
一下w的時候,這個delta的值很有可能
link |
recognition output稍微有點改變的時候呢,
link |
c'這個function呢,你其實很難去
link |
的那個function,我們剛才可以拿來
link |
做gradient的那個cos的function c,
link |
找一個w minimize它,這件事不知道
link |
真的minimize c',可是可能
link |
它的upper bound,只是先說結論
link |
它是它的一個upper bound。
link |
這個summation,但我們不要管那個summation
link |
是這個delta的upper bound
link |
upper bound,所以我們接下來就是要說
link |
這個證明很簡單啦,這個很trivial
link |
的feature的inner product
link |
這個inner product最大的y
link |
這個inner product最大的y
link |
他的inner product一定都會輸給
link |
當然也有可能y delta本來就是y hat
link |
但是假如y delta不等於y hat的話呢
link |
所以這個delta會小於等於delta
link |
y delta的feature的inner product
link |
加上inner product最大的
link |
delta加上inner product最大的那個y
link |
的delta加上inner product
link |
最大的嘛,誰都輸給他,y delta
link |
小於等於Cn,也不只這個solution
link |
negative variable的rescaling
link |
y hat的inner product
link |
這個式子,沒加上1就不滿足這個式子了
link |
那當初為什麼會提這個function呢
link |
那其實他提這個function的理由
link |
對不對,因為delta是你隨便亂定的
link |
搞不好他們根本不在同一個scale裡面
link |
那這樣不就變成其中有一項都沒有什麼用了嗎
link |
接下來呢,我們就是再加上regularization
link |
那加上regularization其實很簡單的
link |
我們知道說training data
link |
所以我們原來的cluster function呢
link |
也就是說呢,我們在原來的cluster function
link |
cluster function裡面
link |
他的目標呢,是要讓incorrect的
link |
會比較robust,可以對抗mismatch
link |
是y bar的vector減掉y hat的vector
link |
regularization的term
link |
那regularization的term呢
link |
我們在update weight的時候呢
link |
看到的那個weight decay呢
link |
然後每一個training example呢
link |
這個feature跟w的inner product
link |
那首先我們做一個很無聊的transform
link |
的inner product等於max這一項
link |
跟y hat的inner product
link |
你這邊如果設cn就可以讓這個式子滿足
link |
objective function
link |
要去minimize c這個想法的話
link |
如果沒有minimize c的這個條件的話
link |
如果不知道的話我們可以等下下課再討論
link |
又讓w跟y hat的inner product
link |
減掉w跟y的inner product
link |
我們稱之為slack variable
link |
為什麼我們稱之為slack variable
link |
然後滿足下面這一個constraint
link |
所以這個constraint呢是很多很多
link |
在做object detection的時候
link |
但其中有一個equation是比較無聊的
link |
因為如果你把這邊的y用y hat替換掉
link |
都是w乘上y hat的feature
link |
而delta y hat跟y hat呢
link |
所以我們可以把上面這個equation呢
link |
再加上另外一個constraint呢
link |
我們可以列出一個constraint
link |
這個difference這個delta當做margin
link |
我們把這個margin都減掉一個excel
link |
我們今天是要讓margin變小不是變大
link |
所以我們叫它這個select a variable
link |
就失去我們加上這個margin的意義了
link |
都會讓這個equation被滿足的話
link |
所以我們就得到以下的equation
link |
假設我今天有兩筆training data
link |
減掉slack variable excel1
link |
也都要有一個這樣子的equation
link |
所以這個equation也非常非常多
link |
我希望說我的這個excel的submation
link |
就excel1加excel2應該是最小的
link |
同時加上regularization的term
link |
就跟我們剛才從cost function
link |
跟每一個example都有的excel
link |
那在minimize這個function的同時
link |
我們要滿足下面這個constraint
link |
對所有的training的example
link |
它們都是一個quadratic programming的花紋
link |
你可以直接拿SDN package裡面的solver
link |
來解這個quadratic programming的花紋
link |
現成的quadratic programming的solver
link |
depends on your problem是什麼
link |
這個可能會弄壞所有現在available的solver
link |
在constraint這麼多的情況下
link |
我們要解這一個quadratic programming的problem
link |
我們先不無視這個constraint很多這件事情
link |
那假設我們先不要管這個constraint的部分
link |
我們只看我們要minimize的這個部分
link |
那training data只有一筆
link |
那在沒有constraint的情況下
link |
要minimize這個function太容易了
link |
所以如果你要畫出epsilon和w的值的話
link |
如果你是given epsilon的話
link |
所以以given epsilon的話
link |
這邊的constraint是做什麼事情呢
link |
都是在這個epsilon跟w的這個平面上呢
link |
比如說這邊有一個這個constraint
link |
只有在這個小小範圍之內的epsilon和w
link |
叫做cutting plane的algorithm
link |
那cutting plane的algorithm呢
link |
那它其實是一個比較general的名詞
link |
structure SEM的cutting plane的algorithm
link |
OK我有一個parameter的space
link |
所形成的這個parameter的space
link |
這個parameter space上面的顏色呢
link |
代表這個cost function c的value
link |
在沒有任何constraint的情況下呢
link |
那根據這些constraint的結果
link |
因為這邊的constraint非常非常的多
link |
雖然說有一大堆的constraint
link |
對我們找出來的solution是沒有影響的
link |
其實只要這兩條紅色的constraint
link |
我們只要有這兩條紅色的constraint
link |
只有這兩條紅色的constraint
link |
這個圖上這麼多的constraint了
link |
比如說像這一條綠色的constraint
link |
都在這個圖上製造了一個constraint
link |
我們稱之為這個working set
link |
我們稱之為這個working set
link |
我們就只需要考慮這個working set
link |
我們只需要考慮這個working set
link |
而如果這個working set不大的話
link |
那這個quadratic programming的problem
link |
怎麼來找出這個working set
link |
是用一個iteration的方法來找的
link |
每一次我們會找出一個element呢
link |
都initialize它的working set
link |
那你這邊initialize也可以說就是
link |
initialize的working set呢
link |
去解這個quadratic programming的problem
link |
好本來解這個quadratic programming的problem的時候呢
link |
給定了一組working set的話
link |
我們只要考慮那個working set
link |
我們只考慮working set的Y就好
link |
於是呢我們解這個quadratic programming的problem呢
link |
好那假設我們根據這個working set
link |
那working set不一樣以後呢
link |
我們再重新去解一次這個quadratic programming的problem
link |
然後又可以再解這個quadratic programming的problem
link |
這個file copyplate algorithm呢
link |
n這個example的working set
link |
那沒有任何constraint的情況下呢
link |
我們在解這個quadratic programming的problem的時候
link |
看看有沒有哪些constraint呢
link |
就是說這邊有這麼多這麼多constraint
link |
你其實是沒有滿足那些constraint
link |
你是沒有辦法滿足這些constraint
link |
那雖然沒有滿足的constraint
link |
哪一個是most violated的呢
link |
所有沒有被滿足的constraint裡面
link |
那我們就把這個constraint y'
link |
加到我們的working set裡面
link |
那根據我們現在working set
link |
Quality Programming的problem以後
link |
加到我們的working set裡面
link |
再解一次Quality Programming的problem
link |
因為我們現在有兩個constraint嘛
link |
這個constraint說要在左上可以
link |
這個constraint說在右上才可以
link |
所以我們就把他再加到working set裡面
link |
必須優先被加入working set的constraint呢
link |
那我們來看一下一個constraint是什麼
link |
這個w乘上y hat的feature
link |
減掉w乘上y hat的feature
link |
當一個constraint被violated的時候是說
link |
我把現在的solution w'跟epsilon'
link |
也就是w'跟y hat的feature
link |
減掉w'跟y hat的feature
link |
violated這個constraint呢
link |
而w'跟y hat的inner product
link |
delta加上w'跟y的inner product
link |
所以讓delta加上inner product的值呢
link |
讓delta加上inner product的值
link |
violation最嚴重的那一個constraint
link |
所以整個Carting plan的algorithm呢
link |
整個Carting plan的algorithm
link |
x1 y1 hat到x' y' hat
link |
對每一個training的data呢
link |
你可以用自己的human knowledge
link |
去給它一些initialization
link |
就給它空的這個initialization就好
link |
首先根據我們現在手上有的working set
link |
我們先根據我們現在working set裡面的成員
link |
去解一個quadratic programming的problem
link |
找most violated constraint的時候呢
link |
那我們要解的這個quadratic programming的problem呢
link |
我們的constraint只需要考慮那些
link |
在working set裡面的constraint就好了
link |
那解完這個quadratic programming的problem以後呢
link |
我們要對每一個example xn跟ynhead
link |
去找這個most violated constraint
link |
most violated constraint
link |
那個最難搞的那個constraint呢
link |
就是Δ加上w跟y的inner product
link |
可以讓Δ加上inner product值最大
link |
那它呢就是最難搞的那個constraint
link |
那如果working set一開始是空的話
link |
那經過第一個intervention以後呢
link |
然後我們因為對每一個training data
link |
去再解一次quadratic programming的problem
link |
然後再重新解一次quadratic programming的problem
link |
放到這個working set的時候
link |
我們就用這個object detection的例子呢
link |
那我們假設我們現在有兩個training的data
link |
x1 y1 hat跟x2 y2 hat
link |
那我們一開始的working set呢
link |
我們要根據我們現在手上現有的working set呢
link |
去解一個quadratic programming的problem
link |
但是因為我現在的working set
link |
所以我們現在沒有任何的constraint
link |
好那在沒有任何constraint的前提之下
link |
其實還要有f01 f02大於0這個constraint
link |
這個constraint一直都要存在
link |
如果沒有這個constraint的話
link |
就這個constraint一直都是存在的
link |
除了f01 f02大於0這個constraint以外
link |
沒有其他constraint的前提之下
link |
我在做第一次quadratic programming以後
link |
去找most violated的constraint
link |
就是delta加inner product最嚴重的那一個
link |
它的delta加上inner product值
link |
它的delta加inner product值
link |
delta加上inner product的值
link |
因為w正好是第一個iteration
link |
所以後面這個inner product這一項
link |
然後加到我們的working set裡面
link |
進去我們的working set裡面
link |
加到我們的working set裡面
link |
一樣也去找most violated constraint
link |
最most violated是右邊這個長方形的話
link |
那我們現在有A1、A2這兩個working set
link |
我們有A1、A2這兩個working set裡面
link |
quadratic programming的problem的時候
link |
我們對A1、A2就各有一個constraint
link |
這個working set裡面的這個框框
link |
要大於等於左下角這個working set的delta
link |
working set裡面唯一這個element的delta
link |
所以A2也形成一個constraint
link |
所以這兩個working set各有一個成員
link |
那這是一個只有兩個constraint的
link |
quadratic programming的problem
link |
讓這個objective function minimize的W
link |
再去找most violated constraint
link |
加上所有框框的inner product
link |
加上所有框框的inner product
link |
最violate的constraint
link |
那我們就把最violate的constraint
link |
把它放到我們的working set裡面
link |
算most violated constraint的這個equation
link |
不是在第一次iteration的時候
link |
就已經被從working space給移除了嗎
link |
就是它不是已經是most violated constraint
link |
對 它是most violated constraint
link |
我們在找most violated的時候
link |
我們是去解這一個optimization的problem
link |
所以我們現在的projective programming的problem
link |
這個A1的working set裡面的兩個成員
link |
我們就是解一個有四個constraint的
link |
projective programming的problem
link |
你如果去看那個structured SDN
link |
如果你在算這個working set的時候
link |
most violated constraint
link |
要most它的那個violation
link |
這個parameter跟哪些東西有關呢
link |
你要加到那個working set裡面
link |
這個是depend on你的task
link |
如果你是用structured SVM的話
link |
如果你去看這個原始的structured SVM的paper的話
link |
它的iteration的次數也是有upper bound
link |
就跟剛才我們講的那個structured perceptron
link |
它的iteration的次數有upper bound一樣
link |
來做motor class的classification
link |
和binary的classification
link |
我要用structured SVM來做binary classification的時候
link |
所以今天我們這個學習的順序是非常奇怪
link |
就是你先學structured SVM以後
link |
你再學motor class的SVM
link |
那如果你要用structured SVM來做binary
link |
如果你要structured linear的想法
link |
第一個是evaluation的problem
link |
然後我們有大K個weight的vector
link |
因為我們現在是在做classification的problem
link |
它是我們現在要去classify的那個對象
link |
X的這個vector的representation
link |
我們不是說如果要用structured SVM的話
link |
W的final XY的inner product嗎
link |
所以我們就可以用structured SVM呢
link |
F of XY等於WY跟X的inner product
link |
看誰的WY跟X的inner product最大
link |
所以你也用不上cutting plane algorithm啦
link |
N bit training data
link |
所以我的constraint沒有很多
link |
whitehead跟Y的difference
link |
那whitehead跟Y的difference
link |
你可以做這個Cost Sensitive Learning
link |
misrecognize成另外一種class
link |
recognize成另外一個class
link |
比較不要容易被misrecognize
link |
那這個是motor class的SDN
link |
binary其實就是motor class的K
link |
我們本來的constraint是寫成WY hat
link |
減掉WY跟X的inner product
link |
我這個class1 recognize成
link |
如果這筆data屬於class1的話
link |
就是用structured SVM的概念
link |
beyond這個structured SVM
link |
那你知道structured SVM
link |
只linear就做不出什麼厲害的東西
link |
所以你要讓structured SVM
link |
第一個把structured SVM用在
link |
後來Cambridge也做了類似的事情
link |
我們對machine learning的概念
link |
neural network的output
link |
跟baseline就有不錯的improvement
link |
所以後來就publish這個paper
link |
跟structured SDN一起認
link |
你是用那個portrait programming的方法
link |
portrait programming裡面去
link |
可是如果你今天的training方法
link |
你是用這個gradient descent的話
link |
其實你可以把這個weight vector
link |
一起去做gradient descent
link |
在fit quality回去給這個DNN
link |
跟structured SDN一起認
link |
然後整個structure就加structure
link |
用跟這個structured SDN
link |
就做gradient descent
link |
一路從這邊一直被publicate回去
link |
inputY是一個form sequence
link |
這個我們是有publish一個paper的