专栏首页魏晓蕾的专栏【机器学习 吴恩达】CS229课程笔记notes3翻译-Part V支持向量机

【机器学习 吴恩达】CS229课程笔记notes3翻译-Part V支持向量机

CS229 课程笔记

吴恩达

Part V 支持向量机

这部分展现了支持向量机(SVM)学习算法。SVM是最好的监督学习算法之一。为了讲述SVM,我们需要首先谈论边界和用大的间隔分离数据。接下来,我们将谈论最优边界分类器和拉格朗日对偶问题。我们也将谈论核,可以使我们高效地将SVM应用到非常高维度(比如无限维)的特征空间。最后,我们将用SMO算法结束这个问题,SMO算法给出了SVM的高效实现。

1 边界

我们开始讲述SVM,首先谈论边界。这一部分将给出边界的定义和我们预测的置信度,对此我们将在第3节进行形式化。

考虑logistic回归,概率p(y=1|x;θ)用hθ(x)=g(θTx)建模。对于输入x,当且仅当hθ(x)>=0.5,我们预测为1,等价地,当且仅当θTx>=0时,我们预测为1。考虑训练正例(y=1),θTx越大,hθ(x)=p(y=1|x;w,b)越大,标签为1的置信度也越高。因此,我们认为我们对于θTx>>0时y=1的预测是非常可信的。相似地,我们认为logistic回归做了一个非常可信的预测,如果θTx<<0,那么y=0。给定一个训练集,如果我们能够找到θ,使得当y(i)=1时,θTx(i)>>0,当y(i)=0时,θTx(i)<<0,我们似乎找到了一个对训练数据的很好的拟合。这将反映出一个对于所有训练样本非常可信的(正确的)分类集。这似乎是一个很好达到的目标,我们将很快使用函数边界的概念将该想法形式化。

对于一个不同类型的概念,考虑下图,×代表正的训练样本,o代表负的训练样本,决策边界(由等式θTx=0给出的线,叫做分离超平面)和标签为A、B、C的三点。

点A离决策边界非常远,如果我们要求对于A点的y值作出预测,我们应该十分确信A点的y=1。相对地,点C非常靠近决策边界,而在我们预测y=1的决策边界的一边,似乎决策边界一个很小的改变会导致我们预测y=0。因此,我们对于A点比C点的预测更加确信。点B位于两个点之间,我们看到,如果一个点远离分离超平面,我们将明显地更加确信我们的预测。如果给定一个训练集,我们能够找到一个决策边界,可以我们做出所有正确的可信的(意味着远离决策边界)预测,这将是很好的。我们后面将会使用几何边界的符号将它形式化。

2 符号

为了更容易地讨论SVM,我们首先需要引入一个新的关于分类的概念。我们将考虑一种线性分类,对于特征x和标签y的二值分类问题。从现在开始,我们将使用y∈{-1, 1}代替{0, 1}来代表类别标签。除了用向量θ参数化我们的线性分类,我们将使用参数w,b,将我们的分类问题写为

hw,b(x)=g(wTx+b)

这里,如果z≥0,则g(z)=1,否则g(z)=-1。“w,b”符号将截距项b与其他参数明确地区分开。(我们也扔掉我们之前作出的让x0=1为输入特征向量的一维的约定。)因此,b代替了之前θ0的角色,w代替了[θ1...θn]T的角色。

注意到,根据我们上面定义的g函数,我们的分类器的将直接预测结果为1或-1(对比感知算法),而不需要经过估计y为1的概率的中间步骤(logistic回归是这样的)。

3 函数边界和几何边界

让我们形式化函数边界和几何边界的概念。给定训练样本(x(i), y(i)),我们定义参数为(w,b)的函数边界如下:

γ(i)=y(i)(wTx+b)

注意到,如果y(i)=1,为了使函数边界变大(例如,为了使我们的预测是可信的和正确的),那么我们需要wTx+b是一个大的正数。相反地,如果y(i)=-1,为了使函数边界变大,我们需要wTx+b是一个大的负数。此外,如果y(i)(wTx+b)>0,那么我们在该样本上的预测是正确的。因此,一个大的函数边界代表一个可信的正确的预测。

然而,对于上面给定的g的线性分类(取值为{-1, 1}),存在一个函数边界的属性,使得它不是一个非常好的对于置信度的测量。给定我们对于g的选择,我们注意到,如果我们用2w代替w,用2b代替b,由于g(wTx+b)=g(2wTx+2b),这将根本不会改变hw,b(x),例如g。因此,用(2w, 2b)代替(w,b)将导致用因子2乘以我们的函数边界。因此,通过缩放w和b,我们似乎可以使函数边界任意增大而没有改变函数意义。直观地,可能因而强加某种正规化条件,比如||w||2=1是有意义的。我们可以用(w/||w||2, b/||w||2)来代替(w, b),取而代之考虑函数边界(w/||w||2, b/||w||2)。我们后面将会返回来考虑这个问题。

给定训练集S={(x(i), y(i); i=1,...,m)},我们也定义关于训练集S的参数为(w,b)的函数边界,作为个别训练样本的最小的函数边界,写为γ,因而公式可写为

γ=min γ(i) i=1,...,m

接下来,我们讨论几何边界。考虑下图:

我们关于(w,b)的决策边界如上图所示,即向量w。注意到w与分离超平面正交。A点表示某个训练样本的输入x(i),标签y(i)=1。它到决策边界的距离,γ(i),由线段AB给定。

我们怎么得到γ(i)的值?w/||w||是一个与w同方向的单位长度向量。A代表x(i),因而我们由x(i)-γ(i)·w/||w||得到点B。但这点在决策边界上,决策边界上的点x满足等式wTx+b=0。因此,

解得

上述公式为图中A点的正训练样本,位于决策边界的正训练样本一侧。通常地,我们定义(w,b)关于训练样本(x(i),y(i))的几何边界如下:

注意到如果||w||=1,那么函数边界等于几何边界——因此这给了我们一种方式把这两种边界联系在一起。几何边界对于参数的缩放是不变的,如果我们用2w代替w,用2b代替b,那么几何边界不会改变。这后面会派上用场。特别地,因为这对于参数的缩放不变,当我们试图用合适的w和b拟合训练数据,我们可以强加一个任意的缩放条件到w上,而没有很大改变;例如,我们可以要求||w||=1,或者|w1|=5,或者|w1+b|+|w2}=2,这些都可以仅仅通过缩放w和b来满足。

最后,给定训练集S={(x(i), y(i); i=1,...,m},我们也定义(w,b)关于S的几何边界是在单一训练样本上最小的几何边界:

γ = min γ(i) i=1,...,m

4 最优边界分类器

给定一个训练集,从前面的讨论中,我们似乎希望找到一个能够最大化几何边界的决策边界,由于这能够反映训练集上一个非常可信的预测集和一个好的对训练数据的拟合。特别地,这将引出一个分类器,用几何边界分离正训练样本和负训练样本。

从现在开始,我们将假定我们给出一个线性可分的训练集,可以使用某个分离超平面分离正样本和负样本。我们怎么找到可以获得最大几何边界的分离超平面呢?我们可以提出下面的优化问题:

maxγ,w,b γ

s.t. y(i)(wTx(i)+b)≥γ, i=1,...,m

||w||=1.

例如,我们想要最大化γ,条件是每个训练样本都有函数边界,至少为γ。此外,||w||=1约束确保函数边界等于几何边界,因此我们保证所有的几何边界至少都为γ。因此,解决该问题将带来训练集上拥有最大可能的几何边界的(w,b)。

如果我们能够解决上面的最优化问题,我们将这样做。但是”||w||=1”约束是一个非凸约束,这个问题不以我们可以插入标准优化软件的任何格式来解决。因此,我们试图转换该问题为一个更容易解决的问题。考虑如下:

这里,我们将最大化γ/||w||,条件是函数边界至少为γ。由于几何边界和函数边界通过γ=γ/||w||相关联,这将给出我们想要的答案。此外,我们已经摆脱了我们不喜欢的约束||w||=1。缺点是我们现在有一个非凸的目标函数,我们却没有任何现成的软件可以解决这种形式的优化问题。

让我们继续。回忆我们早期的讨论,我们可以将w和b任意缩放而不改变任何东西。这是我们现在最重要的想法。我们引进缩放约束,在训练集上w,b的函数边界必须为1:

γ=1.

由于w和b乘以某个常量导致函数边界也乘以这个常量,这实际上是一个缩放约束,可以通过缩放w和b来满足。在上面的问题中,最大化γ/||w||=1/||w||与最小化||w||2相同,我们现在有下面的优化问题:

我们转换该问题到一个可以被有效解决的形式。上面是一个优化问题,目标函数是一个凸二次函数,仅有一个线性约束。它的解法给出了我们最优边界分类器。该优化问题可以使用二次编程(quadratic programming, QP)代码解出。

我们可以让该问题在这里解出,我们可以谈谈拉格朗日对偶问题。这将导出我们的优化问题的对偶形式,这将扮演一个关键角色允许我们使用核获得最优边界分类器在非常高维的空间高效地工作。对偶形式也允许我们推导出一种高效的算法解决上面的优化问题,这种方法比通常的QP软件做的更好。

5 拉格朗日对偶

我们暂时将SVM和最大边界分类器放在一边,谈论解决受限的优化问题。

考虑下面形式的问题:

minw f(w)

s.t. hi(w)=0 i=1,...,l

你也许会回忆到拉格朗日乘数法怎么用来解决该问题。(如果你之前没有看到该方法不要担心。)在该方法中,我们定义拉格朗日问题为

这里,βi叫做拉格朗日乘数。我们置L的偏导数为0:

并解出w和β。

在这一部分,我们将此问题归纳为约束最优化问题,在该问题中,我们既有不等式约束也有等式约束。由于时间限制,我们不能在课堂上做拉格朗日对偶问题的证明,但我们将给出主要的想法和结果,然后我们将其应用到我们的最优边界分类器的优化问题中。

考虑下面问题,我们叫做原始优化问题:

minw f(w)

s.t. gi(w)≤0, i=1,...,k

hi(w)=0, i=1,...,l

为了解决该问题,我们定义一般形式的拉格朗日问题

这里,αi和βi是拉格朗日乘数。考虑等式

这里,”P”下标代表“primal”(原始的)。给出一些w的值。如果w违反任何原始约束(例如,如果对于某个i,或者gi(w)>0,或者hi(w)≠0),那么你应该能够验证下式

相反地,如果约束中一些特殊的w值被满足,那么θP(w)=f(w)。因此,

因此,对于所有的满足原始约束的w值,θP取与我们问题中目标函数相同的值,如果约束被违反,将取正无穷。因此,如果我们考虑最小化问题

我们看到这与我们的原始问题是相同的问题,并拥有相同的解法。之后的使用,我们也定义了目标函数的最优值为p*=minwθP(w),我们称该值为原始问题的值。

现在,我们来看看一个稍微不同的问题。我们定义

这里,”D”下标代表“dual”(对偶)。我们也注意到,尽管在θP的定义中是关于α,β最优的(最大的),对偶问题却是关于w最小的。

我们现在可以形成对偶优化问题:

这与我们上面的原始问题是相同的,除了”max”和”min”的顺序交换了。我们也定义对偶问题目标函数的最优值为d*=maxα,β:αi≥0θD(w)。

原始问题和对偶问题怎样相关?可以表示如下。

(你应该相信你自己,一个函数的”max min”总是小于等于”min max”。)然而,在确定的条件下,我们将有d*=p*,

这样我们便可以通过解对偶问题来代替解原始问题。让我们看看这些条件是什么。

假定f和gi是凸函数,hi是仿射函数。假定约束gi是(严格)可行的;这意味着存在某个w,对于所有的i,gi(w)<0。

在我们上面的假设下,一定存在w*,α*,β*,其中w*是原始问题的解,α*,β*是对偶问题的解,并且p*=d*=L(w*,α*,β*)。此外,w*,α*和β*满足Karush-Kuhn-Tucker(KKT)条件,如下:

此外,如果某个w*,α*,β*满足KKT条件,它也是原始问题和对偶问题解。

我们现在讨论等式(5),叫做KKT对偶互补条件。特别地,它意味着,如果αi*>0,那么gi(w*)=0.(例如,”gi(w)≤0”约束是可行的,意味着它满足等式而不是不等式。)稍后,这将是显示SVM仅有很少数量的支持向量的关键;KKT对偶互补条件也满足收敛性,当我们谈论SMO算法。

6 最优边界分类器

前面,我们提出下面的(原始)优化问题,以找出最优边界分类器:

我们可以写出约束条件如下:

gi(w)=-y(i)(wTx(i)+b)+1≤0

我们为每个训练样本有一个这样的约束条件。我们从KKT对偶互补条件注意到,对于拥有函数边界等于1的训练样本,我们有αi>0(例如,相当于约束条件为等式,gi(w)=0)。考虑下图,最大边界分离超平面如图中实线所示。

拥有最小边界的点最靠近决策边界,图中有三点(一点是负样本点,两点是正样本点)在平行于决策边界的点划线上。因此,仅有三个αi——对应着三个训练样本——将是我们的优化问题的非零最优解。这三个点叫做支持向量。支持向量的数量比训练集样本数少。

让我们继续。我们研究问题的对偶形式,我们试图写关于输入特征空间中的点之间的内积的算法<x(i), x(j)>(可以认为是(x(i))Tx(j))。当我们应用核方法时我们的内积算法是关键。

当为我们的优化问题构建拉格朗日算法时,我们得到:

上式中的拉格朗日乘数仅有αi,但没有βi,由于优化问题仅有不等式约束。

下面我们来得到该问题的对偶形式。我们需要先最小化L(w,b,α),对于固定的α,参数是w和b,为了得到θD,我们将设L关于w和b的导数为0。我们有:

这意味着

至于关于b的导数,我们得到

如果我们采用公式(9)中w的定义,并将其代入拉格朗日公式(公式8),简单地,我们得到

但是对于公式(10),最后一项必须为0,因此我们得到

我们通过最小化参数为w和b的L得到上面的公式,我们把该公式和约束条件αi≥0,约束条件(10)放在一起,我们得到下面的对偶优化问题:

你应该也能够验证p*=d*,KKT条件(公式3-7)在我们的优化问题中得到了满足。因此,我们可以解该对偶问题,来代替解原始问题。特别地,在上面的对偶问题中,我们有一个最大化问题,参数为αi。我们后面将讨论我们用来解决对偶问题的特殊算法,但如果我们真正能够解决该问题(例如,找到α来最大化满足约束的W(α)),那么我们可以使用公式(9)找到最优的w,作为α的函数。已经找到了w*,通过考虑原始问题,直接找到截距项b的最优值为

(自己检查这是正确的)

继续之前,我们仔细看看公式(9),该公式给出了w的最优值(关于α的最优值的w)。假定我们将我们模型的参数拟合到训练集,我们希望在新的点输入x做出预测。我们然后计算wTx+b,并预测当且仅当该式大于0时y=1。但是使用公式(9),该式也可以被写为:

因此,如果已经找到αi,为了做预测,我们必须计算数量,仅仅依赖于x和训练集中点的内积。此外,我们之前看到,αi都将为0,除了支持向量。因此,公式(13)中的和中的许多项将是0,我们仅需要找到x和支持向量之间的内积(通常只有很少的数量)并作出预测。

通过检查优化问题中的对偶形式,我们得到重大的对问题结构的观察,也能够写出全部算法,仅关于输入特征向量的内积。在下一节,我们将利用该特性,并将核方法应用到我们的分类问题。这样的算法,支持向量机,将能够在非常高维的空间中高效地学习。

7 核方法

回到我们对线性回归的讨论中,我们有一个问题,输入x是房屋的居住面积,我们考虑使用特征x,x2和x3来进行回归,获得一个立方体函数。为了区分这两个变量集合,我们叫最初的输入值为问题的输入属性(在本例中,x为居住面积)。当映射到某个新的经过学习算法的特征的集合中时,我们叫那些新的量为输入特征。(不幸的是,不同的作者使用不同的术语描述这两个概念,在我们这些笔记中,我们试图使用一致的术语。)我们也将用Φ表示特征映射,从属性映射到特征。例如,在我们的例子中,我们有

除了通过使用最初的输入属性x来应用SVM,我们可以学习使用某些特征Φ(x)。这样做,我们仅仅需要复习我们之前的算法,用Φ(x)来替代x。

由于算法可以被整体写为内积<x,z>,这意味着我们要用<Φ(x),Φ(z)>来代替所有这些内积。特别地,给定特征映射Φ,我们定义相应的核为

K(x,z) = Φ(x)TΦ(z)

那么,在我们之前的算法中存在<x,z>的地方,我们仅仅将其替换成K(x,z),我们的算法现在使用特征Φ来学习。

现在,给定Φ,我们通过找出Φ(x)和Φ(z)并取内积,可以容易地计算K(x,z)。但是更有趣的是,通常K(x,z)可能更容易计算,尽管Φ(x)自身可能计算起来更困难(因为它是非常高维的向量)。以这样的设置,通过在我们的算法中使用一个有效的方式计算K(x,z),我们可以得到SVM来在给定Φ的高维特征空间中学习,而没有明显地找到或表示向量Φ(x)。

让我们看一个例子。假设x,z∈Rn,考虑

K(x,z) = (xTz)2

我们也可以写为

因此,我们看见K(x,z)=Φ(x)TΦ(z),特征映射Φ如下给定(这里n=3)

注意到,尽管计算高维的Φ(x)需要O(n2)的时间,找到K(x,z)仅仅需要O(n)的时间——输入属性的线性维度。

对于相关的核,我们考虑

这相当于特征映射(n=3)

参数c控制xi和xixj项之间的相对权重。

更广泛的,核K(x,z)=(xTz+c)d对应于一个到(n+dd)特征空间的特征映射,相应的所有xi1xi2...xik形式的单项取决于d级。然而,尽管工作在这样的O(nd)维的空间,计算K(x,z)仍然花费仅仅O(n)的时间,因此,我们不再需要在这样非常高维的特征空间中明确的表示特征向量。

现在,让我们从一个稍微不同的视角来观察核。直观上,如果Φ(x)和Φ(z)的值很接近,我们认为K(x,z)=Φ(x)TΦ(z)很大。相反的,如果Φ(x)和Φ(z)的值相差很大——也就是说几乎互相正交——那么K(x,z)=Φ(x)TΦ(z)将会很小。因此,我们认为K(x,z)可以作为Φ(x)和Φ(z)或者x和z相似性的度量。

假定对于一些学习算法,你已经提出了某个函数K(x,z),是一个对于x和z相似性的合理的度量。例如,假定你选择了

这是一个合理的对于x和z的相似性的度量,当x和z接近时K(x,z)接近于1,当x和z远离时K(x,z)接近于0。我们可以使用这个K的定义作为SVM中的核吗?在这个特别的例子中,答案是肯定的。(这个核叫做高斯核,对应于一个无限维的特征映射Φ。)但更广泛的,给定某个函数K,我们怎样区分它是否是一个有效的核,例如,我们怎样区分是否存在某个特征映射Φ,对于所有的x,z都有K(x,z)=Φ(x)TΦ(z)呢?

假定K实际上是一个有效的核,对应于特征映射Φ。现在,考虑某个m个点的有限集合(不需要是训练集){x(1),...x(m)},定义一个m×m的方阵K,其(i,j)项由Kij=K(x(i),x(j))给出。该矩阵叫做核矩阵。注意,我们使用K既代表核函数K(x,z)和核矩阵K。

现在,如果K是一个有效的核,,那么Kij=K(x(i),x(j))=Φ(x(i))TΦ(x(j))=Φ(x(j))TΦ(x(i))=K(x(j),x(i))=Kji,因此K必须是对称的。此外,Φk(x)代表向量Φ(x)的第k维,我们发现对于任意向量z,我们有

上面的第二步到最后一步使用相同的策略,如你在Q1问题集1中所见的那样。由于z是任意的,这显示了K是半正定的(K≥0)。

因此,我们展示了,如果K是一个有效的核(例如,如果它对应于某个特征映射Φ),那么相应的核矩阵K∈Rm×m是半正定对称矩阵。通常,这不仅仅是必要条件,而且是充分条件,得到K是一个有效的核(也叫做Mercer核)。下面的理论即是Mercer理论。

Mercer理论:给定K为Rn×Rn->R的映射,K是一个有效的(Mercer)核的充分必要条件是,对于任意的{x(1),…,x(m)}(m<∞),对应的核矩阵是半正定对称矩阵。

给定函数K,除了试图找到一个对应的特征映射Φ,该理论还给出了另一种方式测试它是否是一个有效的核。你也将有机会在问题集2中更多地考虑这些想法。

在课堂上,我们也简要地谈论核的许多其他的例子。例如,考虑数字识别问题,给定一幅(16×16像素)的手写数字的图像,我们必须找出它是什么数字。或者使用一个简单的多项式核K(x,z)=(xTz)d,或者高斯核,SVM在这个问题上能够获得特别好的性能。这是特别惊讶的,由于输入属性x是一个256维的向量,代表图像像素的亮度值,这些值系统没有先验知识,或者甚至没有哪个像素靠近其他像素的知识。我们文章中将简要谈论的另一个例子是,如果我们试图分类的对象x是字符串(也就是说,x是一个氨基酸链,串在一起形成一个蛋白质),对于绝大多数学习算法,我们似乎很难构建一个合理的小的特征集合,特别是如果不同的字符串有不同的长度。然而,考虑让Φ(x)成为一个特征向量,计数x中每个长度为k的子串的出现次数。如果我们考虑英文字母的字符串,那么会有26k个这样的字符串。因此,Φ(x)是一个26k维的向量;甚至对于k的中等值,要计算长度为k的子串的出现次数,对我们来说也或许太长。(例如,264≈460000。)然而,使用(动态编程的)字符串匹配算法,高效地计算K(x,z)=Φ(x)TΦ(z)是可能的,我们现在可以隐式地工作于26k维的特征空间,但不会明确地计算这个空间中的特征向量。

核在支持向量机中的应用是很清晰的,我们不会在这上面停留太多。记住,无论核的概念的应用要比SVM更广。特别地,如果你有一些学习算法写作输入属性向量之间的內积<x,z>,那么用K(x,z)替换它,K是核函数,你可以让你的算法高效地工作在关于K的高维特征空间中。例如,这个核的做法可以应用于感知器,来派生出一个核的感知器算法。我们后面将看到的许多算法也将适合于这种方法,我们称这种方法为“核方法”。

8 正则化和非线性可分

到目前为止,SVM的推导都假定数据是线性可分的。而通过Φ将数据映射到高维的特征空间增加了数据被线性分离的可能性。在一些情形中,我们不能清晰地找到一个分离超平面,因为容易受到离群点的影响。例如,下面左图展示了一个最优边界分类器,当单个离群点加入到左上区域时(右图),引起决策边界的偏移,导致分类器有一个更小的边界。

为了使该算法工作于非线性可分离数据集,并对于离群点敏感度较小,我们重新描述我们的优化问题如下(使用正则化):

这样,样本现在允许有小于1的函数边界,如果一个样本的函数边界是1-ξi,我们将目标函数增长为Cξi。该参数C控制着两个目标函数之间的相对权重,使得||w||2更大,并确保绝大多数样本的函数边界大于等于1。

像前面一样,我们可以形式化拉格朗日函数如下:

这里,αi和ri是我们的拉格朗日乘子(αi≥0,ri≥0)。我们不再详细推导该过程,但是将对于w和对于b的导数设为0,解出后将其代回,简单地,我们得到下面该问题的对偶形式:

像前面一样,w可以被表示成α的形式,以解决对偶问题,我们可以继续使用公式(13)来做出预测。增加l1的正则化,对偶问题仅有的改变是,最初的约束0≤αi变成了0≤αi≤C。b*的计算也必须被修改(公式11不再有效);见下一章Platt的论文评论。

而且,KKT对偶互补条件(这在下一章测试SMO算法的收敛性时将会很有用)是:

现在,我们要给出一个算法来实际解决对偶问题,这将是下一部分内容。

9 SMO算法

SMO(sequential minimal optimization)有序最小优化算法,由JohnPlatt提出,该算法给出了一种高效的方式来解决SVM的推导的对偶问题。为了引出SMO算法,我们首先来介绍坐标上升算法。

9.1 坐标上升算法

我们试图解决非约束优化问题

这里,我们认为W是参数α的某个函数,忽略任何该问题和SVM之间的关系。我们已经看到了两种优化算法,梯度上升算法和牛顿算法。我们这里考虑的算法叫做坐标上升算法。

因此,在该算法的最内层循环中,我们将保持除αi之外的所有变量固定,并对于参数αi重新优化W。在这种方法中,内层循环按照顺序α1,α2,…αm,α1α2…重新优化了变量(更复杂的版本可能会选择其他顺序,例如,我们可以选择更新下一个变量,依据我们期望得到更大的W(α)。)

函数W以内层循环中的形式“arg max”可以被高效地执行,坐标上升算法可以是一个相当高效的算法。坐标上升算法如下图的执行过程:

图中的椭圆是我们想要优化的一个二次函数的轮廓。坐标上升算法的初始点为(2,-2),图中描点的路径是到达全局最大的路径。在每一步,坐标上升算法平行地沿着一个轴运动,一次仅有一个变量被优化。

9.2 SMO算法

我们停止对于SVM的讨论,开始扩展SMO算法的推导。一些细节将留作作业,对于其他的,你可以参考课堂上发放的论文摘抄。

下面是我们想要解决的对偶优化问题:

αi的集合满足约束(18-19)。现在假定我们想要保持α2,…, αm固定,坐标上升一步,关于α1重新优化目标。我们可以做出任何改进吗?答案是否定的,因为约束(19)确保

或者,通过两边同时乘以y(1),我们有

(其中y(1)∈{-1,1},因此(y(1))2=1。)因此,α1由其他αi决定,如果我们保持α2,…, αm固定,我们不能改变α1而没有违反优化问题中的约束(19)。

因此,如果我们想要更新某个αi,为了满足约束,我们必须同时更新至少两个。这叫做SMO算法,工作如下:

为了测试该算法的收敛性,我们检查KKT条件(公式14-16)在某个tol范围内是否满足。这里,tol是收敛容忍参数,设置为大约0.01到0.001(详细见论文和伪代码)。

SMO是一个高效的算法的关键原因是,更新αi,αj可以被高效地计算。现在让我们简单地扩展主要的想法来推导高效的更新。

我们当前有一些αi的设置满足约束(18-19),假设我们决定保持α3,…, αm固定,想要重新优化W(α1,α2,…, αm),关于α1和α2(受约束限制)。从公式(19),我们需要

由于右侧是固定的,我们可以将其表示为ζ:

我们因此画出关于α1和α2的约束如下:

从约束(18),我们知道α1和α2必须存在于[0,C]×[0,C]的方形区域内。直线为α1y(1)+α2y(2)=ζ。从这些约束中,我们知道L≤α2≤H;否则,(α1, α2)不能同时满足方形区域和直线约束。在这个例子中,L=0。但是像α1y(1)+α2y(2)=ζ直线那样,不必总是这种情况,通常,存在α2的某个下界L和某个上界H,确保α1和α2存在于方形区域[0,C]×[0,C]。

使用公式(20),我们也可以将α1写作α2的函数:

因此,目标W(α)可以写作

将α3,…, αm看作约束,你应该能够验证这仅仅是某个关于α2的二次函数。它可以被表示成aα22+bα2+c的形式,对于合适的a,b,c。如果我们忽略方形约束(18)(或者相同地,L≤α2≤H),那么我们可以容易地最大化二次函数,通过将它的导数设为0并解出。用α2new,unclipped代表α2的结果值。你应该能够确信自己是否想要最大化W关于α2,但却受限于方形约束,我们找到结果值是最优的,仅仅通过取α2new,unclipped,并将其放置在[L,H]间隔内,来得到

最后,找到了α2new,我们可以使用公式(20)来返回,并找出α2new的最优值。

有一些更详细的也比较容易的问题留给你自己看,在Platt的论文中:一个是对于下一个更新的αi, αj的启发方法的选择,另一个是当SMO算法运行时怎样更新b的问题。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Flink】Flink简介及Standalone、Yarn和Kubernetes模式的部署

    Flink 起源于 Stratosphere 项目,Stratosphere 是在 2010~2014 年由 3 所地处柏林的大学和欧洲的一些其他的大学共同进行...

    魏晓蕾
  • 【机器学习】CS229课程笔记notes1翻译-Part I线性回归

          让我们开始谈论一些监督学习的例子。假定我们有一个数据集,给出俄勒冈州波特兰地区47套房屋的居住面积和价格:

    魏晓蕾
  • 【Flink】Flink 中的 ProcessFunction API 和 状态一致性保证

    我们之前学习的 转换算子是无法访问事件的时间戳信息和水位线信息的。而这在一些应用场景下,极为重要。例如 MapFunction 这样的 map 转换算子就无法访...

    魏晓蕾
  • 长文阅读 | 饶毅教授:脑、物理、化学、生物、心理认知的交叉研究

    “学科交叉的魅力”名师系列讲座由北京大学前沿交叉学科研究院策划和主办。它的缘起是学院之前每年都要举办的“交叉学科研究生论坛活动”,今年由于疫情而改为线上讲座的形...

    脑机接口社区
  • HTML基础复习(一)

    HTML:超文本标记语言(HyperText Markup Language),不是一种编程语言,是标记语言 HTML元素: <p>段落</p> HTML标签:...

    用户1667431
  • rest和restful

    开发了那么久,对接接口已经很老练了,但是对于rest和restful概念真的没有听过,而且也没有用过get、post之外的方法。

    wade
  • HTML 简介

    HTML 简介 超文本标记语言  (Hypertext Markup Language, HTML)  是一个可以用来结构化你的Web内容并给予其含义和目标的...

    静默虚空
  • 测试思想-测试流程 软件测试版本管理

    说明:很早之前写过一篇文章“软件测试版本管理与版本发布”,之前作者也按文章中所述执行过,但是随着工作经历的增加,对代码管理认识的加深,发现还是有不足的地方,特...

    授客
  • Epoll详解及源码分析

    对于水平触发模式(LT):在1处,如果你不做任何操作,内核依旧会不断的通知进程文件描述符准备就绪。

    bear_fish
  • 从linux源码看epoll

    在linux的高性能网络编程中,绕不开的就是epoll。和select、poll等系统调用相比,epoll在需要监视大量文件描述符并且其中只有少数活跃的时候,表...

    无毁的湖光-Al

扫码关注云+社区

领取腾讯云代金券