坐标上升法
首先介绍坐标上升法(Coordinate ascent):
假设要解决下面的没有约束的最优化问题:
对于这类最优化问题,我们可以使用地图下降法或者牛顿迭代法,这里我们使考虑使用坐标上升法:
也就是说,每次循环我们我们固定除当前 αi 之外的所有 αj(j≠i) 。每次循环,W只看作是关于当前 αi 的函数,此时只需直接对 αi 求导优化即可。然后依次进行m循环。
在优化是,我们可以通过调整优化的 α 的顺序提高算法的性能。
下图展示了坐标上升法:
上图中中的椭圆代表我们要优化的二次方程的轮廓,最优值就是中心的黑点,我们的初始值在右下角(2,-2),从图中可以看出,每次都平行于某个坐标轴,因为每次我们只优化一个变量。
SMO
现在重新新回到我们要优化的问题(原问题的对偶问题):
假如我们有满足上述约束的 α 的集合,那么我们能直接使用上面的坐标上升算法吗?
假设我们保持 α2,...αm 固定不变,利用坐标上升通过改变 α1 的值来优化问题,这样可行吗?答案是不行!
因为根据上面的等式约束条件我们可以得到:
由于 y∈{−1,1} ,因此上式可以改写成:
可以看出, α1 的值是和 α2,...αm 相关联的。
因此我们一次最少选取两个变量才能满足约束。然后SMO算法就诞生啦:
可以看到每次选取
αi,αj
时都根据经验选取最好的一对组合。
然后固定除
αi,αj
之外的参数,进行优化。
SMO 之所以高效就是因为在固定其他参数后,仅对两个参数
αi,αj
优化的过程很高效。
现在假设我们有满足约束条件的参数集合
{α1,...αm}
,假设固定
{α3,...αm}
,这样W就是
α1和α2
的函数,且根据等式约束
α1和α2
满足下式:
因为 {α3,...αm} 以固定,为了方便,我们用 ζ 代替等式右面:
显然我们可以改写成: α1=(ζ−α2y2)y1
我们可以用下面的图说明
α1,α2
取值情况,以及它们的关系:
横轴是
α1
纵轴是
α2
,从之前的KKT约束条件我们已经知道
α
的取值范围是[0,C],因此
α1,α2
的值必然在[0,C]X[0,C]的矩形框内。并且在上图中
α1,α2
必然在直线
α1y1+α2y2=ζ
上,因此必然存在
0≤L≤H≤C
使得,
L≤α2≤H
。
现在我们可得:
同样的对于 {α1,...αm} 我们也可以用 α2 来表示。
因为我们的优化问题是一个2次方程( 就那max12||w||2什么的 ),因此现在我们可以将它表示成一个关于 α2 的2次方程,例如: aα22+bα2+c 。
这样我们就可以通过求导直接计算出函数的最优值。当然我们同时也要保证 α2 满足约束。
将在不考虑约束的情况下求得的 α2 的值表示成 αwithoutconstraints2 ,由于 α2 的取值范围是[L,H]
可通过如下方式确定 α2 的值:
然后我们就可以通过 α2 得到其他的 α 的值了。