【李宏毅机器学习笔记】 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

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第1张图片

SVM有两个特色,分别是Hinge Loss和Kernel Method。两者加起来就是SVM。 

Hinge Loss

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第2张图片

之前说过,机器学习大体分三步。上图以二分类为例。

第二步原本的loss function是:如果预测结果 g(x^n) 正确,则等于0。如果预测结果错误,则等于1 。把这些结果累加起来就是loss function  。但是这样的做法,loss function是不可微的。所以需要换用来近似刚才的做法。

下面是几种的图像。

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第3张图片

  • 绿线代表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

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第4张图片

这里要说的是Square loss(上图的红线):

如果用Square loss,则

  • 时,希望预测结果
  • 时,希望预测结果
  • 时,可以整理成
  • 时,可以整理成

此时,在大于0的方向,f(x)越大,越大,loss也越大。不符合刚才说的越大,loss越小。

所以不能用Square loss作为loss function 。 

Sigmoid + Square loss

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第5张图片

这里要说的是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

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第6张图片

 这里要说的是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

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第7张图片

这里要说的是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

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第8张图片

把Linear SVM按照之前说的三个步骤做。如上图。

可以看到, Linear SVM 和 逻辑回归(logistics regression) 的一个区别:

  • Loss function 用 cross entropy 的就是逻辑回归(logistics regression)
  • Linear SVM用 Hinge Loss 的Linear SVM。

接下来看这个loss function怎么做gradient descent:

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第9张图片

为了简便,这里省略掉后面的正则项。过程如上图。

Linear SVM – another formulation

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第10张图片

 上图是Loss Function的另一个形式,其实只是用一个代替原来的

最小化Loss Function就是间接使最小化。在这个前提下, 才会等于  。

因为一直最小化下去,为了满足这两个不等式,所以会等于这两个值比较大的值,此时这两个不等式会起到和max()一样的作用。

整理为(1 代表margin) 。如果不等式左边没办法大于右边,那可以通过加大使右边变小,来使不等式成立。

是一个slack variable,它是可以使margin的标准变宽的变量,所以要求一定要大于等于0,这一点刚好和刚才max()的变换呼应了。

Kernel Method

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第11张图片

Dual Representation 

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第12张图片

可以看成是所有training data 乘上一个的总和。即 w 是所有training data的线性组合。

可以从这个角度去理解:上文说过,参数更新的式子是类似这样。把很多维的参数更新式子合起来,就变成。可以看到每次 w 的变化量和就是所有training data的线性组合。

在刚才的参数更新式子中, (前文有说过这个偏微分有和 0 两种结果)。

  • 如果结果为0,则代表此时的不会被加到 w 里面去(即之中的为0)。
  • 如果结果为,则代表此时的会加到 w 里面去(即之中的不为0),这些  不为0的 会对模型的参数 w 起很大的影响,所以也叫support vectors

由于(Hinge Loss)大部分情况为0,所以最后只有少数的能起作用,这样就减小了离群点(outlier)对模型的影响。(这里就是上文说过Hinge Loss比较不受离群点的影响的原因)

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第13张图片

  1. 将 w 的式子再做一次变形 , 
  2. 则变形为
  3. 定义一个函数K(Kernel Function)来代表,这时

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第14张图片

做完刚才变换后,现在要最小化Loss Function,就是要找一组 能使loss值最小化。

其中,Loss Function的可以使用Kernel Trick来计算。这样就不需要知道转换到高维的  的vector长什么样,也可以直接算出值。

接下来具体看下Kernel Trick。

Kernel Trick

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第15张图片

  •  之前说过,如果数据在低维不可分离的话,可以映射到高维的space上。上图的就是在将 x 映射映射到高维上。这一步就是做feature transformation
  • 然后就会等于。这一步就是做inner product

使用Kernel Trick的话,就可以不用做feature transformation和inner product,直接算出的值。

我们将上图的过程做整理,会得出

所以以后计算直接套这个公式就好,不用做feature transformation然后再做inner product 。

Radial Basis Function Kernel

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第16张图片

如果 是无穷多维,那么此时没办法算它们的inner product 。

所以需要用Radial Basis Function Kernel, 。

x和z越像(距离近), 的值越大。x和z越不像(距离远), 的值越接近0。

最后把关于 x 的项串成一个vector,把关于 z 的项串成另一个vector。这两个vector相乘就是的值。

 Sigmoid Kernel

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第17张图片

使用Sigmoid Kernel后,(tanh函数的图像和sigmoid函数是一样的)。

使用Sigmoid Kernel可以看成一个一层的hidden layer。

  • 每个data point 可以看做是神经元的weight
  • 神经元的数量和support vector的数量相等

 

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第18张图片

  • 既然有Kernel trick,那就可以设计一个kernel function来代替掉  。
  • 当 x 是类似句子这样的structured object,比较难transform到高维,即很难做。这时就能Kernel Function来求解的结果
  • 可以看成是在评估 x 和 z 的相似性(similarity)。
  • 可以使用Mercer’s theory来判断所使用的Kernel Function有没有用。

上图是一些音频段,每一段音频讯号长短不一样,所以很难把它转换成vector。所以现在可以直接用Kernel Function。更详细的东西可以见上图所示的论文。

SVM related methods

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)_第19张图片

  • 之前在做Regression的时候,是希望model的output和target越近越好。而Support Vector Regression (SVR),只要output和target距离近到一定程度,loss就为0,不会再继续更新参数了。(文章前面有说过这个)
  • 其它两种想深入了解可以看《机器学习导论》作者:Ethem Alpaydin。所处章节如上图所示。

你可能感兴趣的:(机器学习)