李宏毅svm_【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)...
【李宏毅機(jī)器學(xué)習(xí)筆記】1、回歸問(wèn)題(Regression)
【李宏毅機(jī)器學(xué)習(xí)筆記】2、error產(chǎn)生自哪里?
【李宏毅機(jī)器學(xué)習(xí)筆記】3、gradient descent
【李宏毅機(jī)器學(xué)習(xí)筆記】4、Classification
【李宏毅機(jī)器學(xué)習(xí)筆記】5、Logistic Regression
【李宏毅機(jī)器學(xué)習(xí)筆記】6、簡(jiǎn)短介紹Deep Learning
【李宏毅機(jī)器學(xué)習(xí)筆記】7、反向傳播(Backpropagation)
【李宏毅機(jī)器學(xué)習(xí)筆記】8、Tips for Training DNN
【李宏毅機(jī)器學(xué)習(xí)筆記】9、Convolutional Neural Network(CNN)
【李宏毅機(jī)器學(xué)習(xí)筆記】10、Why deep?(待填坑)
【李宏毅機(jī)器學(xué)習(xí)筆記】11、 Semi-supervised
【李宏毅機(jī)器學(xué)習(xí)筆記】 12、Unsupervised Learning - Linear Methods
【李宏毅機(jī)器學(xué)習(xí)筆記】 13、Unsupervised Learning - Word Embedding(待填坑)
【李宏毅機(jī)器學(xué)習(xí)筆記】 14、Unsupervised Learning - Neighbor Embedding(待填坑)
【李宏毅機(jī)器學(xué)習(xí)筆記】 15、Unsupervised Learning - Auto-encoder(待填坑)
【李宏毅機(jī)器學(xué)習(xí)筆記】 16、Unsupervised Learning - Deep Generative Model(待填坑)
【李宏毅機(jī)器學(xué)習(xí)筆記】 17、遷移學(xué)習(xí)(Transfer Learning)
【李宏毅機(jī)器學(xué)習(xí)筆記】 18、支持向量機(jī)(Support Vector Machine,SVM)
【李宏毅機(jī)器學(xué)習(xí)筆記】 19、Structured Learning - Introduction(待填坑)
【李宏毅機(jī)器學(xué)習(xí)筆記】 20、Structured Learning - Linear Model(待填坑)
【李宏毅機(jī)器學(xué)習(xí)筆記】 21、Structured Learning - Structured SVM(待填坑)
【李宏毅機(jī)器學(xué)習(xí)筆記】 22、Structured Learning - Sequence Labeling(待填坑)
【李宏毅機(jī)器學(xué)習(xí)筆記】 23、循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)
【李宏毅機(jī)器學(xué)習(xí)筆記】 24、集成學(xué)習(xí)(Ensemble)
------------------------------------------------------------------------------------------------------
【李宏毅深度強(qiáng)化學(xué)習(xí)】視頻地址:https://www.bilibili.com/video/av10590361?p=31
課件地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML16.html
-------------------------------------------------------------------------------------------------------
Outline
SVM有兩個(gè)特色,分別是Hinge Loss和Kernel Method。兩者加起來(lái)就是SVM。
Hinge Loss
之前說(shuō)過(guò),機(jī)器學(xué)習(xí)大體分三步。上圖以二分類(lèi)為例。
第二步原本的loss function是:如果預(yù)測(cè)結(jié)果
?正確,則等于0。如果預(yù)測(cè)結(jié)果錯(cuò)誤,則等于1 。把這些結(jié)果累加起來(lái)就是loss function??。但是這樣的做法,loss function是不可微的。所以需要換用來(lái)近似剛才的做法。
下面是幾種的圖像。
綠線代表Sigmoid + cross entropy
藍(lán)線代表Sigmoid + Square loss
紅線代表Square loss
y\hat有+1和-1兩種結(jié)果。
這個(gè)loss function定義為:預(yù)測(cè)的結(jié)果 f(x) 和真正的結(jié)果y\hat 同號(hào)的話,則f(x)越趨于無(wú)窮的方向的話,loss 越低。
接下來(lái)看看采用不同函數(shù)來(lái)做loss function的表現(xiàn)如何
Square loss
這里要說(shuō)的是Square loss(上圖的紅線):
如果用Square loss,則
當(dāng)
時(shí),希望預(yù)測(cè)結(jié)果
當(dāng)
時(shí),希望預(yù)測(cè)結(jié)果
當(dāng)
時(shí),可以整理成
當(dāng)
時(shí),可以整理成
此時(shí),在大于0的方向,f(x)越大,越大,loss也越大。不符合剛才說(shuō)的越大,loss越小。
所以不能用Square loss作為loss function 。
Sigmoid + Square loss
這里要說(shuō)的是Sigmoid + Square loss(上圖的藍(lán)線):
如果用Sigmoid + Square loss,則
當(dāng)
時(shí),希望預(yù)測(cè)結(jié)果
當(dāng)
時(shí),希望預(yù)測(cè)結(jié)果
當(dāng)
時(shí),可以整理成
當(dāng)
時(shí),可以整理成
此時(shí),
在大于0的方向,隨著f(x)越大,越大,loss也越小。
在小于0的方向,隨著f(x)越往負(fù)無(wú)窮的方向走,越接近1,loss越接近1。
符合剛才說(shuō)的越大,loss越接近0;越小,loss越接近1 。
Sigmoid + Square loss先作為候選對(duì)象。
Sigmoid + cross entropy
這里要說(shuō)的是Sigmoid + cross entropy(上圖的綠線):
此時(shí),
在大于0的方向,隨著f(x)越大,越大,loss越接近0。
在小于0的方向,隨著f(x)越往負(fù)無(wú)窮的方向走,越大,loss也越大。
Sigmoid + cross entropy符合剛才說(shuō)的越大,loss越接近0;但是隨著越小,loss越大,并不是理想情況的接近1?。
這會(huì)不會(huì)有問(wèn)題呢?
并不會(huì),反而更有好處。這里將Sigmoid + cross entropy和上面說(shuō)的候選對(duì)象Sigmoid + Square loss作對(duì)比。
看上圖的藍(lán)線和綠線,
可以看到在負(fù)數(shù)的方向,Sigmoid + cross entropy的梯度更大。所以在loss很大的時(shí)候,使用Sigmoid + cross entropy的話,能更快地更新參數(shù)。
而用Sigmoid + Square loss的話,梯度太小,導(dǎo)致更新參數(shù)的時(shí)候速度太慢。甚至于可能會(huì)完全不更新參數(shù)。
所以,現(xiàn)在以Sigmoid + cross entropy作為目前最佳的候選對(duì)象。
Hinge Loss
這里要說(shuō)的是Hinge Loss(上圖的紫線):
如果用Hinge Loss,則
當(dāng)
時(shí),可以整理成?。 如果loss為0的話,則說(shuō)明
,此時(shí)可以推出
當(dāng)
時(shí),可以整理成。 如果loss為0的話,則說(shuō)明
,此時(shí)可以推出
此時(shí),
在大于0的方向,當(dāng)大于1,loss一直為0。
在小于0的方向,隨著f(x)越往負(fù)無(wú)窮的方向走,越大,loss也越大。
這樣可以看到,Hinge Loss和Sigmoid + cross entropy很像,那它們有什么區(qū)別呢?
對(duì)于Hinge Loss來(lái)說(shuō),只要大于1,那Hinge Loss就覺(jué)得已經(jīng)很好了,沒(méi)必要再做更新。
對(duì)于Sigmoid + cross entropy來(lái)說(shuō),即便大于1,但loss仍然沒(méi)到0,還要再做更新。
這個(gè)區(qū)別看起來(lái)好像Sigmoid + cross entropy會(huì)更準(zhǔn)確,但實(shí)做的時(shí)候,準(zhǔn)確度的差距并不大。而且Hinge Loss比較不受離群點(diǎn)(outlier)帶來(lái)的影響,等下講kernel會(huì)更明顯看出這一點(diǎn)。
Linear SVM
把Linear SVM按照之前說(shuō)的三個(gè)步驟做。如上圖。
可以看到,?Linear SVM 和?邏輯回歸(logistics regression) 的一個(gè)區(qū)別:
Loss function 用?cross entropy 的就是邏輯回歸(logistics regression)
Linear SVM用?Hinge Loss 的Linear SVM。
接下來(lái)看這個(gè)loss function怎么做gradient descent:
為了簡(jiǎn)便,這里省略掉后面的正則項(xiàng)。過(guò)程如上圖。
Linear SVM – another formulation
上圖是Loss Function的另一個(gè)形式,其實(shí)只是用一個(gè)
代替原來(lái)的。
最小化Loss Function就是間接使
最小化。在這個(gè)前提下,?才會(huì)等于??。
因?yàn)?/p>
一直最小化下去,為了滿(mǎn)足這兩個(gè)不等式,所以
會(huì)等于這兩個(gè)值比較大的值,此時(shí)這兩個(gè)不等式會(huì)起到和max()一樣的作用。
把
整理為(1 代表margin)?。如果不等式左邊沒(méi)辦法大于右邊,那可以通過(guò)加大
使右邊變小,來(lái)使不等式成立。
是一個(gè)slack variable,它是可以使margin的標(biāo)準(zhǔn)變寬的變量,所以
要求一定要大于等于0,這一點(diǎn)剛好和剛才max()的變換呼應(yīng)了。
Kernel Method
Dual Representation
可以看成是所有training data?
乘上一個(gè)的總和。即 w 是所有training data的線性組合。
可以從這個(gè)角度去理解:上文說(shuō)過(guò),參數(shù)更新的式子是類(lèi)似這樣。把很多維的參數(shù)更新式子合起來(lái),就變成。可以看到每次 w 的變化量和就是所有training data的線性組合。
在剛才的參數(shù)更新式子中,?(前文有說(shuō)過(guò)這個(gè)偏微分有和 0 兩種結(jié)果)。
如果結(jié)果為0,則代表此時(shí)的不會(huì)被加到 w 里面去(即之中的為0)。
如果結(jié)果為,則代表此時(shí)的會(huì)加到 w 里面去(即之中的不為0),這些??不為0的?會(huì)對(duì)模型的參數(shù) w 起很大的影響,所以也叫support vectors。
由于(Hinge Loss)大部分情況為0,所以最后只有少數(shù)的能起作用,這樣就減小了離群點(diǎn)(outlier)對(duì)模型的影響。(這里就是上文說(shuō)過(guò)Hinge Loss比較不受離群點(diǎn)的影響的原因)
將 w 的式子再做一次變形 ,
則變形為
定義一個(gè)函數(shù)K(Kernel Function)來(lái)代表
,這時(shí)
做完剛才變換后,現(xiàn)在要最小化Loss Function,就是要找一組?能使loss值最小化。
其中,Loss Function的可以使用Kernel Trick來(lái)計(jì)算。這樣就不需要知道轉(zhuǎn)換到高維的??的vector長(zhǎng)什么樣,也可以直接算出值。
接下來(lái)具體看下Kernel Trick。
Kernel Trick
之前說(shuō)過(guò),如果數(shù)據(jù)在低維不可分離的話,可以映射到高維的space上。上圖的就是在將 x 映射映射到高維上。這一步就是做feature transformation 。
然后就會(huì)等于。這一步就是做inner product。
使用Kernel Trick的話,就可以不用做feature transformation和inner product,直接算出的值。
我們將上圖的過(guò)程做整理,會(huì)得出。
所以以后計(jì)算直接套這個(gè)公式就好,不用做feature transformation然后再做inner product 。
Radial Basis Function Kernel
如果 和
是無(wú)窮多維,那么此時(shí)沒(méi)辦法算它們的inner product 。
所以需要用Radial Basis Function Kernel,?。
x和z越像(距離近),
?的值越大。x和z越不像(距離遠(yuǎn)),
?的值越接近0。
最后把關(guān)于 x 的項(xiàng)串成一個(gè)vector,把關(guān)于 z 的項(xiàng)串成另一個(gè)vector。這兩個(gè)vector相乘就是
的值。
Sigmoid Kernel
使用Sigmoid Kernel后,(tanh函數(shù)的圖像和sigmoid函數(shù)是一樣的)。
使用Sigmoid Kernel可以看成一個(gè)一層的hidden layer。
每個(gè)data point
可以看做是神經(jīng)元的weight
神經(jīng)元的數(shù)量和support vector的數(shù)量相等
既然有Kernel trick,那就可以設(shè)計(jì)一個(gè)kernel function來(lái)代替掉? 。
當(dāng) x 是類(lèi)似句子這樣的structured object,比較難transform到高維,即很難做
。這時(shí)就能Kernel Function來(lái)求解
的結(jié)果
可以看成是在評(píng)估 x 和 z 的相似性(similarity)。
可以使用Mercer’s theory來(lái)判斷所使用的Kernel Function有沒(méi)有用。
上圖是一些音頻段,每一段音頻訊號(hào)長(zhǎng)短不一樣,所以很難把它轉(zhuǎn)換成vector。所以現(xiàn)在可以直接用Kernel Function。更詳細(xì)的東西可以見(jiàn)上圖所示的論文。
SVM related methods
之前在做Regression的時(shí)候,是希望model的output和target越近越好。而Support Vector Regression (SVR),只要output和target距離近到一定程度,loss就為0,不會(huì)再繼續(xù)更新參數(shù)了。(文章前面有說(shuō)過(guò)這個(gè))
其它兩種想深入了解可以看《機(jī)器學(xué)習(xí)導(dǎo)論》作者:Ethem?Alpaydin。所處章節(jié)如上圖所示。
總結(jié)
以上是生活随笔為你收集整理的李宏毅svm_【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 拯救者Y7000安装ubuntu时出现的
- 下一篇: Element el-icon 图标组件