0
点赞
收藏
分享

微信扫一扫

【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)

我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。

本次笔记补充视频 BV1JE411g7XF​ 的缺失部分。在另一个UP主上传的2017课程BV13x411v7US中可找到。本节内容 65 分钟左右。

本节内容综述

  1. Hinge Loss + Kernel Method = Support Vector Machine
  2. 首先讲 Hinge Loss 。
  3. 介绍 Linear SVM 及其优化方法。
  4. 接下来是 Kernel Method 部分。
  5. 首先我们讨论 Dual Representation 。
  6. 这是为了引出 Kernel Function ,大幅简化投到高维空间后的运算。
  7. 最后提了 SVM related methods 以及 DL 与 SVM 的对比。

文章目录

  • 本节内容综述
  • 小细节
  • Hinge Loss
  • 回顾 Binary Classification
  • Hinge Loss
  • Linear SVM
  • Linear SVM - gradient descent
  • Linear SVM - another formulation
  • Dual Representation
  • Kernel Trick
  • Radial Basis Function Kernel
  • Sigmoid Kernel
  • Directly Design K
  • SVM related methods
  • Deep Learning v.s. SVM

小细节

Hinge Loss

回顾 Binary Classification

【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)_机器学习

如上,因为定义 δ ( g ( x n ) ≠ y ^ n ) \delta(g(x^n)\neq \hat{y}^n) δ(g(xn)​=y^​n)后,不可导,因此更换为 L ( f ( x n ) , y ^ n ) L(f(x^n),\hat{y}^n) L(f(xn),y^​n)。

【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)_SVM_02

如上,如果不使用交叉熵,使用 loss ,其实并不容易。使用 square loss 效果并不好。

【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)_深度学习_03

如上,我们一般使用交叉熵。

Hinge Loss

【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)_SVM_04

而可以发现,Hinge Loss 比较像 交叉熵 。

Linear SVM

【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)_支持向量机_05

如上,我们记为 f ( x ) = w T x f(x)=w^T x f(x)=wTx。我们的损失函数是凸函数,适合梯度下降。

此外,SVM也有 deep 的版本。

Linear SVM - gradient descent

【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)_深度学习_06

如上为其梯度下降推导。

Linear SVM - another formulation

【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)_深度学习_07

如上,我们把 Hinge Loss l l l 记为 ϵ n \epsilon^n ϵn 。在最小化 L L L 时,上下两个红框等价,下面相当于为 y ^ n f ( x ) ≥ 1 \hat{y}^n f(x) \ge 1 y^​nf(x)≥1 做了一个放宽。

这可以用二次规划来求解,做梯度下降也没问题。

Dual Representation

【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)_深度学习_08

如上,最终可能只有小部分数据前面的系数不是 0 ,这些就是支持向量。

接着,我们可以利用核函数。

【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)_深度学习_09

如上,首先将 w w w 变换成矩阵形式。而 X T x X^T x XTx就是 kernel function 。

【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)_人工智能_10

如上,我们只需要知道 kernel function ,就可以达到优化目标。这叫做 Kernel Trick 。

Kernel Trick

【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)_深度学习_11

如上,我们根据 Kernel Trick 推导出的式子直接进行计算,比先做转换(投影到更高维的平面)、再做内积要快。

【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)_机器学习_12

如上,对于高维向量同理。

Radial Basis Function Kernel

【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)_深度学习_13

如果想将 e x p ( − 1 2 ∣ ∣ x − z ∣ ∣ 2 ) exp(-\frac{1}{2} ||x-z||_2) exp(−21​∣∣x−z∣∣2​) 等价为 ϕ ( x ) ⋅ ϕ ( z ) \phi(x) \cdot \phi(z) ϕ(x)⋅ϕ(z) (对 exp 泰勒展开),则 ϕ ( ∗ ) \phi(*) ϕ(∗) 是无限维的。如果直接运算,难以描述。

但是使用 Kernel Trick ,转换为内积,则方便很多。

但是要小心,在无穷多维平面,可能会导致过拟合。

Sigmoid Kernel

【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)_SVM_14

如上,我们使用 Sigmoid Kernel 相当于使用单层神经网络。

Directly Design K

甚至,我们可以跳过设计 ϕ \phi ϕ 与 x x x ,由 Mercer’s theory 直接设计 Kernel Function 。

【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)_支持向量机_15

如上我们可以对声音信号进行处理。

SVM related methods

  • Support Vector Regression
  • Ranking SVM
  • One-class SVM

Deep Learning v.s. SVM

【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)_深度学习_16

如上,其实 SVM 的 Kernel 是 learnable 的,但是可能没法像神经网络那样彻底。引出有人提出 Multiple Kernel Learning 。

举报

相关推荐

0 条评论