【李宏毅机器学习笔记】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
-------------------------------------------------------------------------------------------------------
SVM有两个特色,分别是Hinge Loss和Kernel Method。两者加起来就是SVM。
之前说过,机器学习大体分三步。上图以二分类为例。
第二步原本的loss function是:如果预测结果 正确,则等于0。如果预测结果错误,则等于1 。把这些结果累加起来就是loss function 。但是这样的做法,loss function是不可微的。所以需要换用来近似刚才的做法。
y\hat有+1和-1两种结果。
这个loss function定义为:预测的结果 f(x) 和真正的结果y\hat 同号的话,则f(x)越趋于无穷的方向的话,loss 越低。
接下来看看采用不同函数来做loss function的表现如何
如果用Square loss,则
此时,在大于0的方向,f(x)越大,越大,loss也越大。不符合刚才说的越大,loss越小。
所以不能用Square loss作为loss function 。
这里要说的是Sigmoid + Square loss(上图的蓝线):
如果用Sigmoid + Square loss,则
此时,
符合刚才说的越大,loss越接近0;越小,loss越接近1 。
Sigmoid + Square loss先作为候选对象。
这里要说的是Sigmoid + cross entropy(上图的绿线):
此时,
Sigmoid + cross entropy符合刚才说的越大,loss越接近0;但是随着越小,loss越大,并不是理想情况的接近1 。
这会不会有问题呢?
并不会,反而更有好处。这里将Sigmoid + cross entropy和上面说的候选对象Sigmoid + Square loss作对比。
看上图的蓝线和绿线,
所以,现在以Sigmoid + cross entropy作为目前最佳的候选对象。
如果用Hinge Loss,则
此时,
这样可以看到,Hinge Loss和Sigmoid + cross entropy很像,那它们有什么区别呢?
这个区别看起来好像Sigmoid + cross entropy会更准确,但实做的时候,准确度的差距并不大。而且Hinge Loss比较不受离群点(outlier)带来的影响,等下讲kernel会更明显看出这一点。
把Linear SVM按照之前说的三个步骤做。如上图。
可以看到, Linear SVM 和 逻辑回归(logistics regression) 的一个区别:
接下来看这个loss function怎么做gradient descent:
为了简便,这里省略掉后面的正则项。过程如上图。
上图是Loss Function的另一个形式,其实只是用一个代替原来的。
最小化Loss Function就是间接使最小化。在这个前提下, 才会等于 。
因为一直最小化下去,为了满足这两个不等式,所以会等于这两个值比较大的值,此时这两个不等式会起到和max()一样的作用。
把整理为(1 代表margin) 。如果不等式左边没办法大于右边,那可以通过加大使右边变小,来使不等式成立。
是一个slack variable,它是可以使margin的标准变宽的变量,所以要求一定要大于等于0,这一点刚好和刚才max()的变换呼应了。
可以看成是所有training data 乘上一个的总和。即 w 是所有training data的线性组合。
可以从这个角度去理解:上文说过,参数更新的式子是类似这样。把很多维的参数更新式子合起来,就变成。可以看到每次 w 的变化量和就是所有training data的线性组合。
在刚才的参数更新式子中, (前文有说过这个偏微分有和 0 两种结果)。
由于(Hinge Loss)大部分情况为0,所以最后只有少数的能起作用,这样就减小了离群点(outlier)对模型的影响。(这里就是上文说过Hinge Loss比较不受离群点的影响的原因)
做完刚才变换后,现在要最小化Loss Function,就是要找一组 能使loss值最小化。
其中,Loss Function的可以使用Kernel Trick来计算。这样就不需要知道转换到高维的 的vector长什么样,也可以直接算出值。
接下来具体看下Kernel Trick。
使用Kernel Trick的话,就可以不用做feature transformation和inner product,直接算出的值。
所以以后计算直接套这个公式就好,不用做feature transformation然后再做inner product 。
如果 和 是无穷多维,那么此时没办法算它们的inner product 。
所以需要用Radial Basis Function Kernel, 。
x和z越像(距离近), 的值越大。x和z越不像(距离远), 的值越接近0。
最后把关于 x 的项串成一个vector,把关于 z 的项串成另一个vector。这两个vector相乘就是的值。
使用Sigmoid Kernel后,(tanh函数的图像和sigmoid函数是一样的)。
使用Sigmoid Kernel可以看成一个一层的hidden layer。
上图是一些音频段,每一段音频讯号长短不一样,所以很难把它转换成vector。所以现在可以直接用Kernel Function。更详细的东西可以见上图所示的论文。