Skip to content

Commit 51ccdd3

Browse files
committed
add chapter 07
1 parent 0a4cdf8 commit 51ccdd3

File tree

4 files changed

+84
-8
lines changed

4 files changed

+84
-8
lines changed

ReadMe.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"- [第4集] [牛顿法、一般线性模型](chapter04.ipynb)\n",
2929
"- [第5集] [生成学习算法、高斯判别分析、朴素贝叶斯算法](chapter05.ipynb)\n",
3030
"- [第6集] [事件模型、函数间隔与几何间隔](chapter06.ipynb)\n",
31-
"- [第7集] [最优间隔分类器、支持向量机](chapter07.ipynb)\n",
31+
"- [第7集] [最优间隔分类器、拉格朗日对偶、支持向量机](chapter07.ipynb)\n",
3232
"- [第8集] 顺序最小优化算法\n",
3333
"- [第9集] 经验风险最小化\n",
3434
"- [第10集] 特征选择\n",

ReadMe.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
- [第4集] [牛顿法、一般线性模型](chapter04.ipynb)
2323
- [第5集] [生成学习算法、高斯判别分析、朴素贝叶斯算法](chapter05.ipynb)
2424
- [第6集] [事件模型、函数间隔与几何间隔](chapter06.ipynb)
25-
- [第7集] [最优间隔分类器、支持向量机](chapter07.ipynb)
25+
- [第7集] [最优间隔分类器、拉格朗日对偶、支持向量机](chapter07.ipynb)
2626
- [第8集] 顺序最小优化算法
2727
- [第9集] 经验风险最小化
2828
- [第10集] 特征选择

chapter07.ipynb

+82-6
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"cell_type": "markdown",
55
"metadata": {},
66
"source": [
7-
"# 第七讲:最优间隔分类器、支持向量机\n",
7+
"# 第七讲:最优间隔分类器、拉格朗日对偶、支持向量机\n",
88
"\n",
99
"简单的回顾上一讲的内容:\n",
1010
"\n",
@@ -56,23 +56,23 @@
5656
"\n",
5757
"这样,我们就把原来棘手的问题变为了可以用软件高效解决的问题。上式是一个带有线性约束的凸二次型问题,解该式即可得到**最优间隔分类器(optimal margin classifier)**。这一类优化问题可以直接使用一些现成的商用二次优化程序(QP: quadratic programming)解决。\n",
5858
"\n",
59-
"到这里,问题基本解决,我们暂停一下支持向量机的讲解,先了解一下拉格朗日对偶。它引出我们优化问题的对偶形式,通过使用核方法,将保证在我们将最优间隔分类器问题推广到极高维度空间时算法的高效求解。对偶形式也将帮助我们推导出一个用以解决上面优化问题的高效算法,其求解速度比常见的QP软件快很多。\n",
59+
"到这里,问题基本解决,我们暂停一下支持向量机的讲解,先了解一下拉格朗日对偶。它将引出我们优化问题的对偶形式,通过使用核方法,将保证在我们将最优间隔分类器问题推广到极高维度空间时算法的高效求解。对偶形式也将帮助我们推导出一个用以解决上面优化问题的高效算法,其求解速度比常见的QP软件快很多。\n",
6060
"\n",
6161
"## 5. 拉格朗日对偶(Lagrange duality)\n",
6262
"\n",
6363
"我们先放一放支持向量机和最大间隔分类器,来聊一聊带有约束条件的优化问题。考虑下面的问题:\n",
6464
"\n",
6565
"$$\\begin{align}\\displaystyle\\operatorname*{min}_{w}&\\quad f(w)\\\\\\mathrm{s.t.}&\\quad h_i(w)=0,\\quad i=1,\\cdots,l\\end{align}$$\n",
6666
"\n",
67-
"回忆在高等数学中学到的[拉格朗日乘数法(Lagrange multiplier)](https://en.wikipedia.org/wiki/Lagrange_multiplier),我们定义**拉格朗日算子(Lagrangian)**:\n",
67+
"回忆在高等数学中学到的拉格朗日乘数法([中文](https://zh.wikipedia.org/zh/%E6%8B%89%E6%A0%BC%E6%9C%97%E6%97%A5%E4%B9%98%E6%95%B0),[英文](https://en.wikipedia.org/wiki/Lagrange_multiplier),我们定义**拉格朗日算子(Lagrangian)**:\n",
6868
"\n",
6969
"$$\\mathcal{L}(w,\\beta)=f(w)+\\sum_{i=1}^l\\beta_ih_i(w)$$\n",
7070
"\n",
7171
"此处的系数$\\beta$称作**拉格朗日乘数(Lagrange multiplier)**,然后将$\\mathcal{L}$的偏导数置为零:\n",
7272
"\n",
7373
"$$\\begin{align}\\frac{\\partial\\mathcal{L}}{\\partial w_i}&=0\\\\\\frac{\\partial\\mathcal{L}}{\\partial\\beta_i}&=0\\end{align}$$\n",
7474
"\n",
75-
"最后解出$w,\\beta$即可。直接参考[拉格朗日乘数法的例题](https://en.wikipedia.org/wiki/Lagrange_multiplier#Examples)更加直观。\n",
75+
"最后解出$w,\\beta$即可。直接参考拉格朗日乘数法的例题([中文](https://zh.wikipedia.org/wiki/%E6%8B%89%E6%A0%BC%E6%9C%97%E6%97%A5%E4%B9%98%E6%95%B0#.E4.BE.8B.E5.AD.90),[英文](https://en.wikipedia.org/wiki/Lagrange_multiplier#Examples)更加直观。\n",
7676
"\n",
7777
"在这一节我们会一般化这种带有约束条件的优化问题,也就是不限于等式约束条件,后面会加入不等式约束条件。因为篇幅限制,我们不会在这里直接推导拉格朗日对偶理论(感兴趣可以参考R.T. Rockarfeller (1970), Convex Analysis, Princeton University Press.),仅在这里给出主要思路和结果,进而在应用在最优间隔分类器优化问题中。\n",
7878
"\n",
@@ -90,7 +90,7 @@
9090
"\n",
9191
"其中下标$\\mathcal{P}$代表\"primal\"。对于一些$w$,如果$w$违反了任何原始约束条件(如$g_i(w)\\gt 0$或$h_i(w)\\neq 0$),则可以证明:\n",
9292
"\n",
93-
"$$\\begin{align}\\theta_{\\mathcal{P}}(w)&=\\operatorname*{max}_{\\alpha,\\beta:\\alpha_i\\geq 0}f(w)+\\sum_{i=1}^k\\alpha_ig_i(w)+\\sum_{i=1}^l\\beta_ih_i(w)\\\\&=\\infty\\end{align}$$\n",
93+
"$$\\begin{align}\\theta_{\\mathcal{P}}(w)&=\\operatorname*{max}_{\\alpha,\\beta:\\alpha_i\\geq 0}f(w)+\\sum_{i=1}^k\\alpha_ig_i(w)+\\sum_{i=1}^l\\beta_ih_i(w)\\tag{1}\\\\&=\\infty\\tag{2}\\end{align}$$\n",
9494
"\n",
9595
"(如果某个$g_i(w)\\gt 0$,则拉格朗日算子中该项相应的拉格朗日乘数$\\alpha_i$只需取无穷大就可以使整个式子最大化;类似的,如果某个$h_i(w)\\neq 0$,则拉格朗日算子中该项相应的拉格朗日乘数$\\beta_i$只需取无穷大也可以使整个式子最大化。)\n",
9696
"\n",
@@ -120,7 +120,83 @@
120120
"\n",
121121
"原始问题与对偶问题的关系可以用下面的式子简单表示:\n",
122122
"\n",
123-
"$$d^*=\\operatorname*{max}_{\\alpha,\\beta:\\alpha_i\\geq 0}\\operatorname*{min}_{w}\\mathcal{L}(w,\\alpha,\\beta)\\leq p^*=\\operatorname*{min}_{w}\\operatorname*{max}_{\\alpha,\\beta:\\alpha_i\\geq 0}\\mathcal{L}(w,\\alpha,\\beta)$$"
123+
"$$d^*=\\operatorname*{max}_{\\alpha,\\beta:\\alpha_i\\geq 0}\\operatorname*{min}_{w}\\mathcal{L}(w,\\alpha,\\beta)\\leq p^*=\\operatorname*{min}_{w}\\operatorname*{max}_{\\alpha,\\beta:\\alpha_i\\geq 0}\\mathcal{L}(w,\\alpha,\\beta)$$\n",
124+
"\n",
125+
"(一个普遍事实:“min max”某函数总是大于等于“max min”某函数,比如$\\displaystyle\\operatorname*{max}_{y\\in\\{0,1\\}}\\underbrace{\\left(\\displaystyle\\operatorname*{min}_{x\\in\\{0,1\\}}1\\{x=y\\}\\right)}_{0}\\leq\\displaystyle\\operatorname*{min}_{x\\in\\{0,1\\}}\\underbrace{\\left(\\displaystyle\\operatorname*{max}_{y\\in\\{0,1\\}}1\\{x=y\\}\\right)}_{1}$)在某些特定情况下,能够得到:\n",
126+
"\n",
127+
"$$d^*=p^*$$\n",
128+
"\n",
129+
"也就是说,我们可以通过解对偶优化问题来得到原始优化问题的最优值(这么做的原因是,对偶问题通常更加简单,而且与原始问题相比,对偶问题具有更多有用的性质,稍后我们会在最优间隔分类器即支持向量机问题中见到),接下来看在什么情况下此式成立。\n",
130+
"\n",
131+
"假设$f$和$g_i$是凸函数(对于$f$的海森矩阵有,当且仅当海森矩阵半正定时,$f$是凸函数。举个例子:$f(w)=w^Tw$是凸的,类似的,所有线性(和仿射)函数也是凸的。另外,即使$f$不可微,它也可以是凸的,不过现在我们不需要这种更一般化的关于凸性的定义),$h_i$是仿射函数([中文](https://zh.wikipedia.org/wiki/%E4%BB%BF%E5%B0%84%E5%8F%98%E6%8D%A2),[英文](https://en.wikipedia.org/wiki/Affine_transformation))(仿射函数/变换是指存在$a_i,b_i$使得$h_i(w)=a_i^Tw+b_i$,而“仿射变换”是指线性变换后加上截距项$b_i$使整体平移,即线性变换是固定原点的,而仿射变换是可以平移的)。进一步假设$g_i$是严格可用的,即对于所有$i$存在$w$能够使$g_i(w)\\lt 0$。\n",
132+
"\n",
133+
"在上述假设条件下,附加条件$w^*,\\alpha^*,\\beta^*$一定存在($w^*$是原始问题的解,$\\alpha^*,\\beta^*$是对偶问题的解),再附加条件$p^*=d^*=\\mathcal{L}(w^*,\\alpha^*,\\beta^*)$,再附加条件$w^*,\\alpha^*,\\beta^*$满足**KKT条件(Karush-Kuhn-Tucker conditions)**:\n",
134+
"\n",
135+
"$$\\begin{align}\\frac{\\partial}{\\partial w_i}\\mathcal{L}(w^*,\\alpha^*,\\beta^*)&=0,\\quad i=1,\\cdots,n\\tag{3}\\\\\\frac{\\partial}{\\partial \\beta_i}\\mathcal{L}(w^*,\\alpha^*,\\beta^*)&=0,\\quad i=1,\\cdots,l\\tag{4}\\\\\\alpha_i^*g_i(w^*)&=0,\\quad i=1,\\cdots,k\\tag{5}\\\\g_i(w^*)&\\leq0,\\quad i=1,\\cdots,k\\tag{6}\\\\\\alpha_i^*&\\geq0,\\quad i=1,\\cdots,k\\tag{7}\\end{align}$$\n",
136+
"\n",
137+
"如果存在满足KKT条件的$w^*,\\alpha^*,\\beta^*$,则原始问题与对偶问题一定有解。$(5)$式又称为**KKT对偶互补条件(KKT dual complementarity condition)**,这个条件表明如果$a_i^*\\gt0$则$g_i(w^*)=0$(即约束条件$g_i(w^*)\\leq0$“激活”,成为一个**活动约束(active constraint)**并处于取等号的状态)。在后面的课程中,我们将通过这个条件知道支持向量机只有一小部分“支持向量”。当讲到序列最小优化算法(SMO)时,KKT对偶互补条件也会给我们一个验证其收敛特征的方法。\n",
138+
"\n",
139+
"## 6. 最优间隔分类器(续)\n",
140+
"\n",
141+
"在上一节,我们引入了原始优化问题,用以求解最优间隔分类器:\n",
142+
"\n",
143+
"$$\\begin{align}\\displaystyle\\operatorname*{min}_{w,b}&\\quad\\frac{1}{2}\\lVert w\\rVert^2\\\\\\mathrm{s.t.}&\\quad y^{(i)}\\left(w^Tx^{(i)}+b\\right)\\geq 1,\\quad i=1,\\cdots,m\\end{align}$$\n",
144+
"\n",
145+
"我们可以将约束条件写为:\n",
146+
"\n",
147+
"$$g_i(w,b)=-y^{(i)}\\left(w^Tx^{(i)}+b\\right)+1\\leq0$$\n",
148+
"\n",
149+
"对于每个训练样本都有这样一个约束条件。从对偶互补约束条件可知,当$\\alpha_i\\gt0\\implies g_i(w,b)=0$(此时是一个活动约束)$\\iff$样本$(x^{(i)},y^{(i)})$的函数间隔为$1$。也就是说,如果该约束是一个活动约束,那么它实际上是将一个不等式条件变为等式条件,这意味着第$i$个训练样本的函数间隔一定等于$1$。考虑下图,实线表示具有最大间隔的分类超平面:\n",
150+
"\n",
151+
"<img src=\"./resource/chapter07_image01.png\" width=\"400\" alt=\"\" align=center />\n",
152+
"\n",
153+
"图中最靠近判定边界(即$w^Tx+b=0$)的点就是具有最小间隔的点,在上图中共有三个这样的点(一负两正),在平行于判别边界的虚线上。于是,一共有三个$\\alpha_i$在我们解优化问题的过程中不为零(也就是虚线上的三个点,只有这三个点的拉格朗日乘数不为零,也只有这三个样本的函数间隔等于$1$,其余样本的函数间隔都严格大于$1$。再多说一点,有时会有$g_i,\\alpha_i$都等于零的情况,但通常$g_i=0$时$\\alpha_i$是非零的,所以那些函数间隔为$1$的样本就是那些$\\alpha_i$不等于零的样本),这三个样本也称为这个问题的**支持向量(support vectors)**。支持向量的数量通常都比训练集样本总量少很多。\n",
154+
"\n",
155+
"随着我们对对偶问题的深入理解,其中的关键思想就是尝试将算法用输入特征空间中点的向量内积$\\left\\langle x^{(i)},x^{(j)}\\right\\rangle$的形式表达出来(可以看做$\\left(x^{(i)}\\right)^Tx^{(j)}$)。实际上当我们使用核方法时,这种表达法将成为算法的关键。\n",
156+
"\n",
157+
"为优化问题构造拉格朗日算子:\n",
158+
"\n",
159+
"$$\\mathcal{L}(w,b,\\alpha)=\\frac{1}{2}\\lVert w\\rVert^2-\\sum_{i=1}^m\\alpha_i\\left[y^{(i)}\\left(w^Tx^{(i)}+b\\right)-1\\right]\\tag{8}$$\n",
160+
"\n",
161+
"式中只有拉格朗日乘数$\\alpha_1$而没有$\\beta_i$,因为此问题中只含有不等式约束条件。\n",
162+
"\n",
163+
"我们需要找出此问题的对偶形式。要得到对偶问题的$\\theta_{\\mathcal{D}}$,首先需要最小化关于$w,b$(将$\\alpha$作为常量)的函数$\\mathcal{L}(w,b,\\alpha)$,也就是对$\\mathcal{L}$分别求关于$w,b$的偏导,并将偏导数置为零:\n",
164+
"\n",
165+
"$$\\nabla_w\\mathcal{L}(w,b,\\alpha)=w-\\sum_{i=1}^m\\alpha_iy^{(i)}x^{(i)}=0$$\n",
166+
"\n",
167+
"于是得到$w$:\n",
168+
"\n",
169+
"$$w=\\sum_{i=1}^m\\alpha_iy^{(i)}x^{(i)}\\tag{9}$$\n",
170+
"\n",
171+
"可以看出$w$实际上是由$\\alpha_i$设置权重后输入特征值向量的线性组合。继续对$b$求偏导:\n",
172+
"\n",
173+
"$$\\frac{\\partial}{\\partial b}\\mathcal{L}(w,b,\\alpha)=\\sum_{i=1}^m\\alpha_iy^{(i)}=0\\tag{10}$$\n",
174+
"\n",
175+
"现在将$(9)$式代入$(8)$式并化简,有:\n",
176+
"\n",
177+
"$$\\mathcal{L}(w,b,\\alpha)=\\sum_{i=1}^m\\alpha_i-\\frac{1}{2}\\sum_{i,j=1}^m\\alpha_i\\alpha_jy^{(i)}y^{(j)}\\left(x^{(i)}\\right)^Tx^{(j)}-b\\sum_{i=1}^m\\alpha_iy^{(i)}$$\n",
178+
"\n",
179+
"根据$(10)$式,最后一项应为$0$,于是得到:\n",
180+
"\n",
181+
"$$\\mathcal{L}(w,b,\\alpha)=\\sum_{i=1}^m\\alpha_i-\\frac{1}{2}\\sum_{i,j=1}^m\\alpha_i\\alpha_jy^{(i)}y^{(j)}\\left(x^{(i)}\\right)^Tx^{(j)}$$\n",
182+
"\n",
183+
"这个式子是我们通过求函数$\\mathcal{L}$关于$w,b$的函数最小值得到的,再加上约束条件$\\alpha_i\\geq0$(始终存在的约束)和$(10)$式,最终得到下面的对偶优化问题(此时将$\\mathcal{L}$看做关于$\\alpha$的函数):\n",
184+
"\n",
185+
"$$\\begin{align}\\displaystyle\\operatorname*{max}_{\\alpha}&\\quad W(\\alpha)=\\sum_{i=1}^m\\alpha_i-\\frac{1}{2}\\sum_{i,j=1}^m\\alpha_i\\alpha_jy^{(i)}y^{(j)}\\left\\langle x^{(i)},x^{(j)}\\right\\rangle\\\\\\mathrm{s.t.}&\\quad \\alpha\\geq 0,\\quad i=1,\\cdots,m\\\\&\\quad\\sum_{i=1}^m\\alpha_iy^{(i)}=0\\end{align}$$\n",
186+
"\n",
187+
"(在这里简单的解释一下第二个约束条件,即拉格朗日算子对$b$求偏导的结果。如果$\\displaystyle\\sum_{i=1}^m\\alpha_iy^{(i)}\\neq0$,则$\\theta_{\\mathcal{D}}(\\alpha)=-\\infty$。换句话说拉格朗日算子是参数$b$的线性函数。所以如果我们的目标是$\\displaystyle\\operatorname*{max}_{\\alpha\\geq0}\\theta_{\\mathcal{D}}(\\alpha)$,那么就应该选择使得$\\displaystyle\\sum_{i=1}^m\\alpha_iy^{(i)}=0$的$\\alpha$,因为当$\\displaystyle\\sum_{i=1}^m\\alpha_iy^{(i)}=0$时$\\theta_{\\mathcal{D}}(\\alpha)=W(\\alpha)$。)\n",
188+
"\n",
189+
"易证$p^*=d^*$及KKT条件((3)-(7)式)在此优化问题中成立。那么我们就可以通过计算对偶问题来得到原始问题的解。上面的对偶问题是一个求关于$\\alpha_i$的函数的最大值的问题。我们稍后再讨论对偶问题的特定解法,先假设我们能够解出最优值(即找到在约束条件下使$W(\\alpha)$最大化的$\\alpha$的取值),那么就可以使用$(9)$式找到最优值$w$($w$是一个关于$\\alpha$的函数)。考虑原始问题,有了$w^*$则可以直接求出截距项$b$,因为此时超平面的法向量已经确定,我们只需要在满足该法向量的超平面中“固定”适当的截距,使得超平面到正负样本的距离相等即可(即找到图中两虚线之间的实现)。我们将$a,w$带入原始问题求中解$b$:\n",
190+
"\n",
191+
"$$b^*=\\frac{\\displaystyle\\operatorname*{max}_{i:y^{(i)}=-1}w^{*T}x^{(i)}+\\displaystyle\\operatorname*{min}_{i:y^{(i)}=1}w^{*T}x^{(i)}}{2}\\tag{11}$$\n",
192+
"\n",
193+
"再继续之前,我们先仔细观察一下$(9)$式,也就是最优值$w$关于最优值$\\alpha$的函数。假设我们已经通过拟合训练集得到模型的参数,现在想要预测一个新的输入点$x$,那么我们会计算$w^Tx+b$,当且仅当这个值大于$1$时,模型才会给出结论$y=1$。但是通过$(9)$式,这个值也可以表示为:\n",
194+
"\n",
195+
"$$\\begin{align}w^Tx+b&=\\left(\\sum_{i=1}^m\\alpha_iy^{(i)}x^{(i)}\\right)^Tx+b\\tag{12}\\\\&=\\sum_{i=1}^m\\alpha_iy^{(i)}\\left\\langle x^{(i)},x\\right\\rangle+b\\tag{13}\\end{align}$$\n",
196+
"\n",
197+
"如果我们已经求出$\\alpha_i$,为了做出预测,则只需要按照上式求出$x$与训练集中样本的内积。而且在前面的求解中,我们知道,除了支持向量以为,其余训练样本对应的$\\alpha_i$都是零,因此上面的求和中很多项都是零。所以我们只需要求出$x$与支持向量的内积,然后再按照$(13)$式计算并作出预测即可。\n",
198+
"\n",
199+
"为了计算对偶优化问题,我们深入了解了问题的结构,于是仅依靠支持向量的内积就表示出整个算法。在下一节中,我们将继续分析这个特性,进而能够将核方法应用在分类问题。而作为结果得到的**支持向量机(support vector machines)**将会是一个能够在极高维度空间中高效学习的算法。"
124200
]
125201
}
126202
],

resource/chapter07_image01.png

42 KB
Loading

0 commit comments

Comments
 (0)