SVM小白教程(2):拉格朗日对偶

在上一篇文章中,我们推导出了 SVM 的目标函数:

\[
\underset{(\mathbf{w},b)}{\operatorname{min}} ||\mathbf{w}|| \\ \operatorname{s.t.} \ y_i(\mathbf{w}^T\mathbf{x_i}+b) \ge \delta, \ \ i=1,...,m
\]

由于求解过程中,限制条件中的 \(\delta\) 对结果不产生影响,所以简单起见我们把 \(\delta\) 替换成 1。另外,为了之后求解的方便,我们会把原函数中的 \(||\mathbf{w}||\) 换成 \(\frac{1}{2}||\mathbf{w}||^2\),优化前者跟优化后者,最终的结果是一致的。这样,我们就得到 SVM 最常见的目标函数:

\[
\begin{align}
&\underset{(\mathbf{w},b)}{\operatorname{min}} \frac{1}{2}\mathbf{w}^2 \tag{1} \\ \operatorname{s.t.} \ y_i (\mathbf{w}^T & \mathbf{x_i}+b) \ge 1, \ i=1,...,m \notag
\end{align}
\]

现在,我们要开始着手来解这个函数。

拉格朗日乘子法

对于(1)式中的问题,如果限制条件是等号的话,我们是可以直接用拉格朗日乘子法求解的。而为了应对不等号的情况,研究人员提出了 KKT 条件下的拉格朗日乘子法。所谓 KKT 条件,我们可以简单地把它当作拉格朗日乘子法的进阶版,只要原优化问题满足几个特定的条件,就可以仿照拉格朗日乘子法来求解问题。(关于 KKT 条件的具体内容,博主没有仔细研究过)。

而 SVM 原问题,刚好满足这些条件。因此可以直接套用拉格朗日乘子法的流程,首先列出拉格朗日函数:

\[
L(\mathbf w, b, \mathbf \alpha)=\frac{1}{2}||\mathbf w||^2-\sum_{i=1}^n\alpha_i(y_i(\mathbf w^T \mathbf x_i + b)-1) \s.t. \alpha_i \ge 0 \tag{2}
\]

(注意,在 KKT 条件下,需要满足 \(\alpha_i \ge 0\))

然后,令 \(\frac{\partial L}{\partial \mathbf w}=0\),\(\frac{\partial L}{\partial b}=0\),可以得到方程组:

\[
\frac{\partial L}{\partial \mathbf w}=\mathbf w-\sum_{i=1}^n\alpha_i y_i \mathbf x_i=0 \tag{3}
\]

\[
\frac{\partial L}{\partial b}=\sum_{i=1}^n \alpha_i y_i=0 \tag{4}
\]

在约束条件是等式的情况中,我们还会根据 \(\frac{\partial L}{\partial \mathbf \alpha}=0\) 得到另外几组方程,然后可以解出 \(\mathbf w\) 和 \(b\)。

不过,由于现在约束条件是不等式,所以 \(\frac{\partial L}{\partial \mathbf \alpha}\) 得到的是一堆不等式:

\[
y_i (\mathbf w \mathbf x_i+b)-1 \ge 0 \ \ i=1,2,\dots,N
\]

这样是没法直接解出 \(\mathbf w\) 和 \(b\) 的。

为了让方程组的形式更加简单,我们可以联立 (2)(3)(4) 把 \(\mathbf w\) 和 \(b\) 消掉(后文有详细的推导过程):

\[
L(\mathbf w,b, \mathbf \alpha)=\sum_{i=1}^n \alpha_i - \frac{1}{2}\sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j \mathbf x_j^T \mathbf x_i \tag{5}
\]

到这一步,熟悉优化的同学应该发现,我们已经把原问题转化为拉格朗日对偶问题。换句话说,我们接下来要优化的问题就变为:

\[
\underset{\alpha}{\operatorname{max}} \sum_{i=1}^n \alpha_i - \frac{1}{2}\sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j \mathbf x_j^T \mathbf x_i \tag{6} \s.t. \ a_i \ge 0, i=1,\dots,m \\sum_{i=1}^m\alpha_i y_i=0
\]

拉格朗日对偶问题

博主刚开始接触拉格朗日对偶的时候,一直搞不懂为什么一个最小化的问题可以转换为一个最大化问题。直到看了这篇博文后,才对它有了形象的理解。所以,下面我就根据这篇博文,谈谈我对拉格朗日对偶的理解。

对偶问题

先看一个简单的线性规划问题:

\[
\underset{x,y}{\operatorname{min}} x+3y \s.t. \ x+y \ge 2 \x,y \ge 0
\]

要求 \(x+3y\) 的最小值,可以通过变换目标函数来获得:

\[
x+y+2y \ge 2 + 2 \times 0 = 2
\]

所以 \(x+3y\) 的最小值是 2。

如果将问题泛化:

\[
\underset{x,y}{\operatorname{min}} px+qy \tag{7} \s.t. \ x+y \ge 2 \x,y \ge 0
\]

同样地,通过这种拼凑的方法,我们可以将问题变换为:

\[
\begin{align}
a(x+y) &\ge 2a \notag \bx &\ge 0 \notag\cy &\ge 0 \notag\a(x+y)+bx+cy&=(a+b)x+(a+c)y \ge 2a \tag{8}
\end{align}
\]

其中,\(a,b,c > 0\)。

(8)式对 \(\forall a,b,c > 0\) 均成立。不管 \(a+b\)、\(a+c\) 的值是多少,\((a+b)x+(a+c)y\) 的最小值都是 \(2a\)。因此,我们可以加上约束:\(a+b=p\)、\(a+c=q\),这样就得到 \(px+qy\) 的最小值为 \(2a\)。需要注意的是,\(2a\) 是 \(px+qy\) 的下界,即这个最小值对 \(\forall a\) 都要成立,所以,需要在约束条件内求出 \(a\) 的最大值,才能得出 \(px+qy\) 的最小值。

这样一来,问题就转换为:

\[
\begin{eqnarray}
\underset{a,b,c} {\operatorname {max}}\ {2a} \tag{9} \s.t. \ p=a+b \notag\q = a+c \notag\\
a,b,c \ge 0 \notag
\end{eqnarray}
\]

(9)式就是(7)式的对偶形式。

对偶对称有异曲同工之妙。所谓对偶,就是把原来的最小化问题(7)转变为最大化问题(9)。这种转化对最终结果没有影响,但却使问题更加简单(问题(9)中的限制条件都是等号,而不等号只是针对单个变量 \(a,b,c\),因此可以直接套用拉格朗日乘子法)。

另外,对偶分强对偶弱对偶两种。借用上面的例子,强对偶指的是 \(px+qy\) 的最小值就等于 \(2a\) 的最大值,而弱对偶则说明,\(px+qy\) 的最小值大于 \(2a\) 的最大值。SVM 属于强对偶问题。

线性规划问题的对偶问题

现在,我们把问题再上升到一般的线性规划问题:

\[
\begin{eqnarray}
\underset{x \in \mathbb{R}^n} {\operatorname{min}} c^Tx \tag{10} \s.t. \ Ax=b \notag \Gx \le h \notag
\end{eqnarray}
\]

用同样的方法进行转换:

\[
\begin{align}
-u^TAx & =-b^Tu \notag \-v^TGx & \ge -h^Tv \notag \(-u^TA-v^TG)x & \ge -b^Tu-h^Tu \notag
\end{align}
\]

这样,可以得到该线性问题的对偶形式:

\[
\underset{u \in \mathbb{R}^m,v \in \mathbb{R}^r} {\operatorname{max}} -b^Tu-h^Tu \tag{11} \s.t. \ c= -A^Tu-G^Tv \v > \ 0
\]

这种「拼凑」的转换方法可以用拉格朗日函数作为通用的方法解决。定义原函数如下:

\[
f(x)=c^Tx
\]

引入拉格朗日函数:

\[
L(x,u,v)=f(x)+u^T(Ax-b)+v^T(Gx-h)
\]

其中,\(v>0\)。

由于 \(Ax-b = 0\),\(Gx-h \le 0\),所以必有 \(f(x) \ge L(x,u,v)\),换句话说,\(\underset{x}{\operatorname{min}}{f(x)} \ge \underset{x}{\operatorname{min}}{L(x,u,v)}\)。因此,求 \(f(x)\) 的最小值就转换为求 \(L(x,u,v)\) 的最小值。

\[
\begin{align}
L(x,u,v)&=(c^T+u^TA+v^TG)x-u^Tb-v^Th \notag
\end{align}
\]

\(\underset{x}{\operatorname{min}}{L(x,u,v)}\) 在 \(x\) 没有任何限制的前提下,是不存在最小值。因此,我们要加上约束条件:\(c^T+u^TA+v^TG=0\),这样,\(\underset{x}{\operatorname{min}}{L(x,u,v)}=-u^Tb-v^Th\)。如此一来,我们又把原问题转换到(11)中的对偶问题上了。

二次规划问题的对偶问题

由于 SVM 的目标函数是一个二次规划问题(带有平方项),因此我们最后再来看一个二次规划的优化问题。

假设有如下二次规划问题:

\[
\begin{equation}
\underset{x}{\operatorname{min}}\ {\frac{1}{2}x^TQx+c^Tx} \notag \s.t. \ Ax=b \notag \x \ge 0
\end{equation}
\]

其中,\(Q>0\)(保证有最小值)。

按照线性规划问题的思路,构造拉格朗日函数(注意,构造出来的 \(L(x,u,v)\) 必须小于等于原函数 \(\frac{1}{2}x^TQx+c^Tx\)):

\[
\begin{equation}
L(x,u,v)=\frac{1}{2}x^TQx+c^Tx-u^Tx+v^T(Ax-b) \notag \=\frac{1}{2}x^TQx+(c+v^TA-u)^Tx+v^Tb \notag
\end{equation}
\]

由于二次函数 \(ax^2+bx+c\) 的最小值在 \(x=-\frac{b}{2a}\) 处取得,因此可以求得函数 \(L\) 的最小值:

\[
\begin{equation}
\underset{x}{\operatorname{min}} L(x,u,v)=-\frac{1}{2}(c-u+A^Tv)^TQ^{-1}(c-u+A^Tv)-b^Tv
\end{equation}
\]

这样一来,我们就求得原问题的拉格朗日对偶问题:

\[
\begin{equation}
\underset{u,v}{\operatorname{max}}-\frac{1}{2}(c-u+A^Tv)^TQ^{-1}(c-u+A^Tv)-b^Tv \notag \s.t. \ u>0
\end{equation}
\]

拉格朗日对偶问题

现在总结一下拉格朗日对偶问题的基本「套路」。

假设原问题为:

\[
\begin{equation}
\underset{x}{\operatorname{min}}f(x) \notag \s.t. \ h_i(x) \le 0, i=1,\dots,m \notag \l_i(x)=0, j=1,\dots,r \notag
\end{equation}
\]

则拉格朗日原始问题为:

\[
L(x,u,v)=f(x)+\sum_{i=1}^m {u_i h_i(x)}+\sum_{j=1}^r v_j l_j(x)
\]

其中,\(u_i>0\)。

之后,我们求出 \(\underset{x}{\operatorname{min}}L(x,u,v)=g(u,v)\),将问题转换为对偶问题:

\[
\begin{equation}
\underset{u,v}{\operatorname{max}} \ g(u,v) \notag \s.t. \ u \ge 0 \notag
\end{equation}
\]

教材上通常把拉格朗日原始问题表示为 \(\underset{x}{\operatorname{min}}\underset{u,v}{\operatorname{max}}L(x,u,v)\),而对偶问题表示成 \(\underset{u,v}{\operatorname{max}}\underset{x}{\operatorname{min}}L(x,u,v)\)。它们之间存在如下关系:

\[
\underset{x}{\operatorname{min}}\underset{u,v}{\operatorname{max}}L(x,u,v) \ge \underset{u,v}{\operatorname{max}}\underset{x}{\operatorname{min}}L(x,u,v)
\]

SVM的对偶问题

现在看回 SVM。我们将约束条件表述成 \(y_i (\mathbf{w}^T\mathbf{x_i}+b) -1 \ge 0, \ i=1, \dots ,m\),然后,按照上面的「套路」,表示出拉格朗日原始问题:

\[
\begin{align}
L(\mathbf{w},b,\alpha)= & \frac{1}{2}\mathbf{w}^2-\sum_{i=1}^m{\alpha_i}[y_i(\mathbf{w}^T\mathbf{x_i}+b)-1] \tag{12} \s.t. \ \alpha_i \ge &\ 0, \ i=1, \dots, m \notag
\end{align}
\]

下面要求出 \(L(\mathbf{w},b,\alpha)\) 关于 \(\mathbf{w}\) 和 \(b\) 的最小值,这里可以直接通过偏导求得:

\[
\nabla_\mathbf{w} L=\mathbf{w}-\sum_{i=1}^m \alpha_iy_i \mathbf{x}_i=0 \tag{13}
\]

\[
\frac{\partial L}{\partial b}=-\sum_{i=1}^m\alpha_i y_i=0 \tag{14}
\]

由(13)式解得:

\[
\begin{align}
\mathbf{w}=\sum_{i=1}^m \alpha_i y_i \mathbf{x}_i \tag{15}
\end{align}
\]

(15)式代入(12)式得到:

\[
W(\alpha,b)=\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i \alpha_j y_i y_j \mathbf{x}_i \mathbf{x}_j-b\sum_{i=1}^m \alpha_i y_i \tag{16}
\]

而(14)式已经表明:\(\sum_{i=1}^m\alpha_i y_i=0\),所以(16)式化简为:

\[
W(\alpha)=\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i \alpha_j y_i y_j \mathbf{x}_i \mathbf{x}_j \tag{17}
\]

(17)式就是最终版本的对偶形式了(上文的 (6) 式其实也是这样推出来的)。自此,我们得出 SVM 的拉格朗日对偶问题:

\[
\underset{\alpha}{\operatorname{max}} W(\alpha) \s.t. \ a_i \ge 0, i=1,\dots,m \\sum_{i=1}^m\alpha_i y_i=0
\]

解出 \(\mathbf \alpha\) 后,就可以根据 (15) 式解出 \(\mathbf w\),然后根据超平面的间隔求出 \(b\)。

当然,这个对偶形式的优化问题依然不是那么容易解的,研究人员提出了一种 SMO 算法,可以快速地求解 \(\mathbf \alpha\)。不过算法的具体内容,本文就不继续展开了。

参考

原文地址:https://www.cnblogs.com/jermmyhsu/p/8467855.html

时间: 2024-10-13 07:37:44

SVM小白教程(2):拉格朗日对偶的相关文章

支持向量机(SVM)(二)-- 拉格朗日对偶(Lagrange duality)

简介: 1.在之前我们把要寻找最优的分割超平面的问题转化为带有一系列不等式约束的优化问题.这个最优化问题被称作原问题.我们不会直接解它,而是把它转化为对偶问题进行解决. 2.为了使问题变得易于处理,我们的方法是把目标函数和约束全部融入一个新的函数,为了使问题变得易于处理,我们的方法是把目标函数和约束全部融入一个新的函数,即拉格朗日函数,再通过这个函数来寻找最优点.即拉格朗日函数,再通过这个函数来寻找最优点. 3.约束条件可以分成不等式约束条件和等式约束条件,只有等式约束条件的问题我们在高等数学课

cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程)

链接地址:http://www.cocoachina.com/bbs/read.php?tid=333937 cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程) 此教程仅供参考,C++小白系列,从新建工程到打包apk,大神们可在评论多给留言建议,若有不详或错误请予指点.OK,我们直入主题 本教程开发环境详情如下开发系统:win764位开发工具:cocos引擎v2.3.3,VS2013cocos2dx版本:3.9 步骤一:windows下各类工具安装(ja

教你从头到尾利用DQN自动玩flappy bird(全程命令提示,纯小白教程)

教你从头到尾利用DQN自动玩flappy bird(全程命令提示.纯小白教程) 作者:骁哲.李伟.July说明:本教程主要由骁哲编写,且最后跑的是yenchenlin的github开源demo.如遇问题欢迎加Q群交流:472899334.时间:二零一六年十月十三日. 前言 我们在上一篇教程<基于torch学汪峰写歌词.聊天机器人.图像着色/生成.看图说话.字幕生成>中说到:"让每一个人都能玩一把,无限降低初学朋友的实验门槛",那是否能把难度再次降低呢,比如部分同学不熟悉Li

简易解说拉格朗日对偶(Lagrange duality)

引言:尝试用最简单易懂的描述解释清楚机器学习中会用到的拉格朗日对偶性知识,非科班出身,如有数学专业博友,望多提意见! 1.原始问题 假设是定义在上的连续可微函数(为什么要求连续可微呢,后面再说,这里不用多想),考虑约束最优化问题: 称为约束最优化问题的原始问题. 现在如果不考虑约束条件,原始问题就是: 因为假设其连续可微,利用高中的知识,对求导数,然后令导数为0,就可解出最优解,很easy. 那么,问题来了(呵呵...),偏偏有约束条件,好烦啊,要是能想办法把约束条件去掉就好了,bingo! 拉

简易解说拉格朗日对偶(Lagrange duality)(转载)

引言:尝试用最简单易懂的描述解释清楚机器学习中会用到的拉格朗日对偶性知识,非科班出身,如有数学专业博友,望多提意见! 1.原始问题 假设是定义在上的连续可微函数(为什么要求连续可微呢,后面再说,这里不用多想),考虑约束最优化问题: 称为约束最优化问题的原始问题. 现在如果不考虑约束条件,原始问题就是: 因为假设其连续可微,利用高中的知识,对求导数,然后令导数为0,就可解出最优解,很easy. 那么,问题来了(呵呵...),偏偏有约束条件,好烦啊,要是能想办法把约束条件去掉就好了,bingo! 拉

拉格朗日对偶

1.原始问题 假设是定义在上的连续可微函数(为什么要求连续可微呢,后面再说,这里不用多想),考虑约束最优化问题: 称为约束最优化问题的原始问题. 现在如果不考虑约束条件,原始问题就是: 因为假设其连续可微,利用高中的知识,对求导数,然后令导数为0,就可解出最优解,很easy. 那么,问题来了(呵呵...),偏偏有约束条件,好烦啊,要是能想办法把约束条件去掉就好了,bingo! 拉格朗日函数就是干这个的. 引进广义拉格朗日函数(generalized Lagrange function): 不要怕

cocos游戏开发小白教程网站

<Quick-Cocos2d-x v3.3小白书系列教程> <Quick-Cocos2d-x初学者游戏教程>

联想拯救者u盘重装win7旗舰版系统完全小白教程

心心念念的电脑终于到手了,然而用惯了win7的女汉子对着win10界面真心无感!既然无感那就重装啊!什么?没男票?电脑就是我男票.(手动微笑)想当初前任就是因为重装系统认识的,然而现在,呵呵,宝宝要你何用. 话不多说,进入正题. 一.材料准备.  首先你需要一个U盘,至少4g大小.然后你需要一个软件,网上有很多U盘启动器制作的,在这里推荐u大师.最后你需要下载一个win7旗舰版镜像,系统之家的就成. 二.U盘启动盘制作.(以下教程引用自:http://www.udashi.com/n/20121

拉格朗日对偶简介

拉格朗日乘子(Lagrange Multipliers)又称为待定乘数法(Undetermined Multipliers),通常用来寻找某一函数在一个或多个约束条件下的最值点. 其主要思想是引入一个新的变量λ(即拉格朗日乘子),把约束条件和原函数结合到一起,形成新的函数,这个新的函数的最值点与原函数相同. 本文内容主要来自<Pattern Recognition and Machine Learning>和和Andrew Ng的CS229讲义. 第一个问题 假设我们有一个函数f(x1,x2)