CS229 笔记08
CS229 笔记08
Kernel
回顾之前的优化问题
原始问题为:
\[
\min_{w,b} \frac{1}{2}||w||^2\\[1.5em]
{\text{s.t.}}y^{(i)}\left(w^{\rm T}x^{(i)}+b\right)\geq1
\]原始问题的对偶问题为:
\[
\max_{\alpha}\left\{ \sum_{i=1}^m \alpha_i - \frac{1}{2} \sum_{i,j}^m y{(i)} y^{(j)}\alpha_i \alpha_j \left\langle x^{(i)}, x^{(j)} \right\rangle \right\}\\[2em]
\begin{eqnarray*}
{\text{s.t. }}\alpha_i&\geq&0\\[1em]
\sum_{i=0}^my^{(i)}\alpha_i&=&0
\end{eqnarray*}
\]求解出对偶问题得到 \(\alpha_i\) 后,代入以下等式可求出 \(w\) :
\[
w=\sum_{i=1}^m\alpha_iy^{(i)}x^{(i)}
\]模型训练完成之后的预测函数 \(h_{w,b}(x)\) 为:
\[
\begin{eqnarray*}
h_{w,b}(x)&=&g(w^{\rm T}x+b)\\[1em]
&=&g\left(\sum_{i=1}^m\alpha_iy^{(i)}\left\langle x^{(i)},x\right\rangle+b\right)
\end{eqnarray*}
\]Kernel(核函数)
之前讨论的分类问题都是假设训练样本数据是线性可分的,而若样本线性不可分,则需要将样本(向量)从低维空间映射到高维空间,因为在低维空间线性不可分的样本,很有可能在高维空间线性可分。
假设从低维空间到高维空间的映射为 \(\phi: {\Bbb R}^a \to {\Bbb R}^b\) ,其中 \(b>a\) ,那么在之前讨论中所有出现 \(\left\langle x^{(i)},x^{(j)} \right\rangle\) 内积的地方都可以替换成 \(\left\langle \phi\left(x^{(i)}\right),\phi\left(x^{(j)}\right) \right\rangle\) 。
这样替换会有两个问题,第一是如何找到这样的将向量从低维空间转化到高维空间的映射,第二是映射之后的向量的维数很大,甚至是无限维的,这样计算内积的效率很低。
如果可以不把高维的向量算出来,也能知道两个向量在高维空间中的内积(或者等同于内积的量),就方便很多了。而Kernel(核函数)在很多情况下就能达到这样的效果。
这种思想的目标是,找到这样的函数 \(K\) ,使得:
\[
K(x^{(i)},x^{(j)})=\left\langle \phi\left(x^{(i)}\right),\phi\left(x^{(j)}\right) \right\rangle
\]一些常见的核函数
多项式核函数,映射之后的向量维数为组合数 \(C(n+d,d)\) :
\[
K(x,z)=\left(x^{\rm T}z+c\right)^d
\]高斯核函数(径向基函数核,Radial basis function kernel,RBF核),映射后的向量维数是无穷大:
\[
K(x,z)=\exp\left(-\frac{||x-z||^2}{2\sigma^2}\right)
\]构造核函数的原则
对于内积的一个直观但不一定准确的理解是:若两个向量相似度高,即它们指向的方向大致相同,那么它们的内积将会很大;反之若两个向量相似度很小,那么内积会很小。
对于一个新的问题,在其中的两个向量内积的表示,可以用多项式核函数,可以用高斯核函数,也可以另外构造一个函数,至于如何选择,则需要考察一下核函数的合法性。判断一个核函数 \(K\) 是否合法,也就是判断是否存在一个映射 \(\phi\) ,使得 \(K(x,z)=\left\langle\phi(x),\phi(z)\right\rangle\) 。
下面给出一个函数 \(K\) 是一个合法的核函数的充要条件,在此之前需要定义一些记号:
设原始向量为:
\[
x^{(1)},x^{(2)},\cdots,x^{(m)}
\]存在一个函数 \(K\) ,令一个矩阵 \(K \in {\Bbb R}^{m\times m}\) (这里两个概念用了相同的字母表示):
\[
K_{ij}=K(x^{(i)},x^{(j)})
\]那么函数 \(K\) 是一个合法的核函数的充要条件是:矩阵 \(K\) 是一个半正定矩阵。
必要性证明:
已知函数 \(K\) 是一个合法的核函数,那么存在映射 \(\phi\) ,使得 \(K(x,z)=\left\langle\phi(x),\phi(z)\right\rangle\) 。
对于任意的 \(z\in {\Bbb R}^{m}\) :
\[
\begin{eqnarray*}
z^{\rm T}Kz&=&\sum_{i=1}^m\sum_{j=1}^mz_iK_{ij}z_j\\[1em]
&=&\sum_{i=1}^m\sum_{j=1}^mz_iK(x^{(i)},x^{(j)})z_j\\[1em]
&=&\sum_{i=1}^m\sum_{j=1}^mz_i \left\langle\phi(x^{(i)}),\phi(x^{(j)})\right\rangle z_j\\[1em]
&=&\sum_{i=1}^m\sum_{j=1}^mz_i \left(\phi(x^{(i)})\right)^{\rm T}\phi(x^{(j)}) z_j\\[1em]
&=&\sum_{i=1}^m\sum_{j=1}^mz_i \left(\sum_{k=1}^{n}\phi(x^{(i)})_k\phi(x^{(j)})_k\right) z_j\\[1em]
&=&\sum_{k=1}^{n}\sum_{i=1}^m\sum_{j=1}^m z_i \phi(x^{(i)})_k\phi(x^{(j)})_k z_j\\[1em]
&=&\sum_{k=1}^{n}\left(\sum_{i=1}^mz_i \phi(x^{(i)})_k\right)\left(\sum_{j=1}^m z_j\phi(x^{(j)})_k\right)\\[1em]
&=&\sum_{k=1}^{n}\left(\sum_{i=1}^mz_i \phi(x^{(i)})_k\right)^2\\[1em]
&\geq&0
\end{eqnarray*}
\]将核函数应用到SVM问题中
要将核函数应用到SVM问题中,只需要将对偶问题中出现的内积变成核函数值,这样就达到了将原始向量从低维空间映射到高维空间的目的。
Soft Margin
Soft Margin SVM(软间隔SVM)
在很多情况下,训练样本并不一定是线性可分的,即使映射到无限维空间中也是这样。其中的原因可能是因为噪声,也可能是数据本身的性质就是如此。同时,即使数据能够线性可分,我们在大多数情况下也不希望其中的少量噪声影响我们超平面最终的选择,所以有必要提出一种 Soft Margin SVM(软间隔SVM)。
再回忆一下 SVM 的原始问题:
\[
\min_{w,b} \frac{1}{2}||w||^2\\[1.5em]
{\text{s.t.}}y^{(i)}\left(w^{\rm T}x^{(i)}+b\right)\geq1
\]现在将原始问题进行改造:
\[
\min_{w,b,\xi} \frac{1}{2}||w||^2+C\sum_{i=1}^{m}\xi_i\\[1.5em]
{\text{s.t.}}y^{(i)}\left(w^{\rm T}x^{(i)}+b\right)\geq1-\xi_i\\[1.5em]
\xi_i\geq0
\]有之前的讨论可知,当 \(y^{(i)}\left(w^{\rm T}x^{(i)}+b\right)\geq0\) 时,表示分类结果正确。
现在不等式右边变成了 \(1-\xi_i\) ,表示某些 \(\xi_i\) 的取值可以让不等式的右面小于0,即可以容忍某一些样本的分类结果是错误的。
但是这样的容忍并不值得鼓励,所以需要在目标优化函数上面加上相应的惩罚项 \(C\sum_{i=1}^{m}\xi_i\) 。
所以原始的最优化问题就转化成了一个新的最优化问题,这也是一个凸优化问题,这个问题也可以推导出它的对偶问题。
拉格朗日算子为:
\[
{\mathcal L}(w,b,\xi,\alpha,r)=\frac{1}{2}\left\|w\right\|^2+C\sum_{i=1}^{m}\xi_i-\sum_{i=1}^m\alpha_i\left[y^{(i)}\left(w^{\rm T}x^{(i)}+b\right)-1+\xi_i\right]-\sum_{i=1}^mr_i\xi_i
\]对偶问题为:
\[
\max_{w,b,\xi} {\mathcal L}(w,b,\xi,\alpha,r)
\]对 \(w\) 求导:
\[
\begin{eqnarray*}
\frac{\partial}{\partial w}{\mathcal L}(w,b,\xi,\alpha,r)&=&\frac{\partial}{\partial w}\left\{\frac{1}{2}\left\|w\right\|^2+C\sum_{i=1}^{m}\xi_i-\sum_{i=1}^m\alpha_i\left[y^{(i)}\left(w^{\rm T}x^{(i)}+b\right)-1+\xi_i\right]-\sum_{i=1}^mr_i\xi_i\right\}\\[1em]
&=&w-\sum_{i=1}^m\alpha_iy^{(i)}x^{(i)}\xlongequal{set}0\\[1em]
\therefore\,w&=&\sum_{i=1}^m\alpha_iy^{(i)}x^{(i)}
\end{eqnarray*}
\]对 \(b\) 求导:
\[
\begin{eqnarray*}
\frac{\partial}{\partial b}{\mathcal L}(w,b,\xi,\alpha,r)&=&\frac{\partial}{\partial b}\left\{\frac{1}{2}\left\|w\right\|^2+C\sum_{i=1}^{m}\xi_i-\sum_{i=1}^m\alpha_i\left[y^{(i)}\left(w^{\rm T}x^{(i)}+b\right)-1+\xi_i\right]-\sum_{i=1}^mr_i\xi_i\right\}\\[1em]
&=&-\sum_{i=1}^m\alpha_iy^{(i)}\xlongequal{set}0\\[1em]
\therefore\,\sum_{i=1}^m\alpha_iy^{(i)}&=&0
\end{eqnarray*}
\]对 \(\xi_i\) 求导:
\[
\begin{eqnarray*}
\frac{\partial}{\partial \xi_i}{\mathcal L}(w,b,\xi,\alpha,r)&=&\frac{\partial}{\partial \xi_i}\left\{\frac{1}{2}\left\|w\right\|^2+C\sum_{i=1}^{m}\xi_i-\sum_{i=1}^m\alpha_i\left[y^{(i)}\left(w^{\rm T}x^{(i)}+b\right)-1+\xi_i\right]-\sum_{i=1}^mr_i\xi_i\right\}\\[1em]
&=&C-\alpha_i-r_i\xlongequal{set}0\\[1em]
\therefore\,\alpha_i&=&C-r_i\\[1em]
\because\, r_i &\geq& 0\\[1em]
\therefore\, \alpha_i&\leq&C
\end{eqnarray*}
\]最终得到的对偶问题为:
\[
\begin{eqnarray*}
&&\max_{w,b}{\mathcal L}(w,b,\alpha)\\[1em]
&=&\max_{w,b}\left\{\sum_{i=1}^m\alpha_i-\frac{1}{2}\left(\sum_{i,j}^m\alpha_i\alpha_jy^{(i)}y^{(j)}\left\langle x^{(i)},x^{(j)}\right\rangle\right)\right\}\\[1em]
&=&\max_{w,b}W(\alpha)\\[1em]
{\text{s.t. }}&&0\leq\alpha_i\leq C\\[1em]
&&\sum_{i=1}^m\alpha_iy^{(i)}=0\\[1em]
\end{eqnarray*}
\]
SMO Algorithm
Coordinate Ascent Algorithm (坐标上升法)
对于一个优化问题:
\[
\max W(\alpha_1,\alpha_2,\cdots,\alpha_m)
\]选择其中一个参数,固定其它的参数,改变这个参数使得函数取得最优值,即:
\[
\begin{eqnarray*}
&&{\text{Repeat \{ }} \\
&&\,\,\,\,\,\,\,\,{\text{For i=0 to m}}\\
&&\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\alpha_i:=\arg\max_{\hat\alpha_i} W(\alpha_1,\alpha_2,\cdots,\alpha_{i-1},\hat\alpha_{i},\alpha_{i+1},\cdots,\alpha_m)\\
&&{\text{\}}}
\end{eqnarray*}
\]这就是坐标上升法。
Sequential Minimal Optimization ( SMO ) Algorithm
考虑直接使用坐标上升法来解决 SVM 的对偶问题,由于约束 \(\sum_{i=1}^m\alpha_iy^{(i)}=0\) 的存在,若每次只改变一个参数 \(\alpha_i\) 且固定其它参数,那么这个参数也无法改变,因为要满足限制条件。
序列最小优化(SMO)算法可以用来求解以上的对偶最优化问题,它的主要思想是一次性改变数量尽可能少的参数。在这个问题中,可以是一次改变两个参数。
所以使用SMO算法来解决SVM的对偶问题的大致步骤为:利用一些启发式的方法,选择两个参数 \(\alpha_i\) 和 \(\alpha_j\) ,固定其它的参数,改变 \(\alpha_i\) 和 \(\alpha_j\) 使得 \(W\) 最优化,同时要满足其它的约束。重复这个步骤,直到满足收敛条件。
现在的问题就是如何在满足其它约束的前提下,改变 \(\alpha_i\) 和 \(\alpha_j\) 使得 \(W\) 最优化。
我们现在要优化的目标函数是:
\[
W(\alpha_1,\alpha_2,\cdots,\alpha_m)=\sum_{i=1}^m\alpha_i-\frac{1}{2}\left(\sum_{i,j}^m\alpha_i\alpha_jy^{(i)}y^{(j)}\left\langle x^{(i)},x^{(j)}\right\rangle\right)
\]由于其中一个约束条件是: \(\sum_{i=1}^m\alpha_iy^{(i)}=0\) ,对于任选的两个参数 \(\alpha_i\) 和 \(\alpha_j\) ,在其它参数固定的情况下,可以用 \(\alpha_j\) 来表示 \(\alpha_i\) :
\[
\alpha_i=-\frac{1}{y^{(i)}}\left(y^{(j)}\alpha_j+\sum_{k\neq i,k\neq j}^my^{(k)}\alpha_k\right)
\]如此一来函数 \(W\) 就变成了 \(\alpha_j\) 的二次函数(因为其它参数固定了,且 \(\alpha_i\) 被 \(\alpha_j\) 表示了),二次函数一定可以写成 \(W=W(\alpha_j)=A\alpha_j^2+B\alpha_j+C\) 的形式。
总结起来,只需要在以下条件中找到最优值即可:
\[
\alpha_i=-\frac{1}{y^{(i)}}\left(y^{(j)}\alpha_j+\sum_{k\neq i,k\neq j}^my^{(k)}\alpha_k\right)\\[2em]
W=W(\alpha_j)=A\alpha_j^2+B\alpha_j+C \\[1.5em]
0\leq\alpha_i\leq C\\[1.5em]
0\leq\alpha_i\leq C\\[1.5em]
\]在这组约束中可以求出最优的 \(\alpha_j\) ,进而可以求出 \(\alpha_i\) ,更新 \(\alpha_i\) 和 \(\alpha_j\) ,继续按照一定策略寻找下一组可变参数,重复这个步骤,直到满足某个收敛条件。
CS229 笔记08的更多相关文章
- JAVA自学笔记08
JAVA自学笔记08 1.构造方法私有,外界就不能再创建对象 2.说明书的制作过程 1)写一个工具类,在同一文件夹下,测试类需要用到工具类,系统将自动编译工具类:工具类的成员方法一般是静态的,因此在测 ...
- 机器学习实战(Machine Learning in Action)学习笔记————08.使用FPgrowth算法来高效发现频繁项集
机器学习实战(Machine Learning in Action)学习笔记————08.使用FPgrowth算法来高效发现频繁项集 关键字:FPgrowth.频繁项集.条件FP树.非监督学习作者:米 ...
- CS229 笔记07
CS229 笔记07 Optimal Margin Classifier 回顾SVM \[ \begin{eqnarray*} h_{w,b}&=&g(w^{\rm T}x+b)\\[ ...
- CS229 笔记06
CS229 笔记06 朴素贝叶斯 事件模型 事件模型与普通的朴素贝叶斯算法不同的是,在事件模型中,假设文本词典一共有 \(k\) 个词,训练集一共有 \(m\) 封邮件,第 \(i\) 封邮件的词的个 ...
- CS229 笔记05
CS229 笔记05 生成学习方法 判别学习方法的主要思想是假设属于不同target的样本,服从不同的分布. 例如 \(P(x|y=0) \sim {\scr N}(\mu_1,\sigma_1^2) ...
- CS229 笔记04
CS229 笔记04 Logistic Regression Newton's Method 根据之前的讨论,在Logistic Regression中的一些符号有: \[ \begin{eqnarr ...
- CS229 笔记03
CS229 笔记03 局部加权线性回归 Non-Parametric Learning Algorithm (非参数学习方法) Number of parameters grows with the ...
- CS229 笔记02
CS229 笔记02 公式推导 $ {\text {For simplicity, Let }} A, B, C \in {\Bbb {R}}^{n \times n}. $ $ {\bf {\t ...
- C++ GUI Qt4学习笔记08
C++ GUI Qt4学习笔记08 qtc++signal图形引擎文档 本章介绍Qt的二维图形引擎,Qt的二维图形引擎是基于QPainter类的.<span style="colo ...
随机推荐
- unity音量设置(同时设置到多个物体上)——引伸语言设置
在游戏中游戏设置是一个很重要的功能,但是比如语言设置和音量设置分散在很多个物体的组件上,如果每个对应的物体都放到一个链表里,会导致程序雍总难堪,使用事件调用是最好的方式 音量存储类 SoundMana ...
- cocos2dx内存优化
纹理消耗了大量内存 在大部分情况下,是纹理(textures)消耗了游戏程序大量的内存.因此,纹理是我们首要考虑优化的对象 纹理加载 cocos2d里面纹理加载分为两个阶段:从图片文件中创建一个Ima ...
- 互联网寒冬,Python 程序员如何准备面试
虽说年年都在喊互联网寒冬,最难就业季,但是今年确实有点不一样,年前年后一波又一波互联网公司宣布『人员调整,结构优化』, 这是往年没发生过的. 是不是面试机会就少了很多呢?不是的. 搜索招聘网站我们可以 ...
- Linux 第三周 学习笔记和实验
姬梦馨 原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 常用调试参数 r(run) 开始运行程 ...
- c# dataGridView cell添加下拉框
应用场景: dataGridView需要某一个cell变成下拉框样式. 思路详解: dataGridVie添加固定格式的row. 代码: DataGridViewRow row = new DataG ...
- Docker HUB 的重要性
1. 昨天晚上和今天早上 学习了下 mysql 的 主从配置(docker化部署) ,但是发现很多 -e 的参数不清楚. 然后在docker HUB 上面发现了具体的内容. 认识到 工作学习生活中 肯 ...
- Eclipse RCP学习资料
1.拥抱Eclipse RCP http://www.blogjava.net/youxia/category/17374.html 2.RCP工程下面自动生成了如下文件:Application.ja ...
- 【BZOJ1434】[ZJOI2009]染色游戏(博弈论)
[BZOJ1434][ZJOI2009]染色游戏(博弈论) 题面 BZOJ 洛谷 题解 翻硬币的游戏我似乎原来在博客里面提到过,对于这类问题,当前局面的\(SG\)函数就是所有反面朝上的硬币单一存在时 ...
- 【CF912E】Prime Game(meet in the middle)
[CF912E]Prime Game(meet in the middle) 题面 CF 懒得翻译了. 题解 一眼题. \(meet\ in\ the\ middle\)分别爆算所有可行的两组质数,然 ...
- 洛谷 P1412 经营与开发 解题报告
P1412 经营与开发 题目描述 \(4X\)概念体系,是指在\(PC\)战略游戏中一种相当普及和成熟的系统概念,得名自4个同样以"\(EX\)"为开头的英语单词. \(eXplo ...