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