SMO算法(Sequential minimal optimization)要解决的对偶问题
maxα −12∑i=1m∑j=1mαiαjy(i)y(j)⟨x(i),x(j)⟩+∑i=1mαi
s.t. ∑i=1mαiyi=0
0⩽αi⩽C, i=1,...,m
该问题的收敛条件
αi=0αi=C0<αi<C⇒y(i)(wTx(i)+b)⩾1⇒y(i)(wTx(i)+b)⩽1⇒y(i)(wTx(i)+b)=1
SMO算法中的“minimal”表示我们希望一次迭代改变最小数量的αi,在该算法中只需要改变2个
Coordinate ascent

坐标上升法的特点是,尽管可能需要比较多的迭代次数,但是每一步迭代的代价非常低
SMO算法采用了Coordinate ascent的思想
考虑满足约束条件的α1,α2,...,αm,现在我们采用Coordinate ascent的思想来完成一次迭代,假设我们固定α2,...,αm,取α1进行优化,这样做可行吗?
回答是不可行,因为约束∑i=1mαiyi=0始终是存在的,这意味着固定α2,...,αm,则α1的取值只能是唯一的,所以不能只取αi进行优化,而应该取一对αi,αj进行优化
假设我们固定α3,…,αm,取α1,α2进行优化
则α1y(1)+α2y(2)=ζ
以α1,α2为坐标轴,画出如下示意图

由于α1,α2需要满足下列3个条件
0⩽α1⩽C
0⩽α2⩽C
α1y(1)+α2y(2)=ζ
故(α1,α2)可行的位置为图中红色线段,α1,α2各自可行的位置为图中绿色线段,换句话说,α1,α2的取值范围被各自限定在一个区间内
假设我们选取α2进行优化,并设α2可行的上下界分别为H和L,即L⩽α2⩽H
首先我们利用α1y(1)+α2y(2)=ζ消去α1,最终得到一个只包含α2的式子,这个式子的最高次数为2,可以直接套用公式求出最优解α∗2(初中就已经学过如何求二次函数的最值)
然后还需要检查α∗2是否在区间[L,H]内,如果不是,需要进行处理,得到迭代后的αnew2,处理方法如下
αnew2=⎧⎩⎨⎪⎪Hif α∗2>Hα∗2if L⩽α∗2⩽HLif α∗2<L(46)(47)(48)
再利用αnew1y(1)+αnew2y(2)=ζ求出αnew1,此时,本次迭代的工作完成
【重新思考】
假设参数更新前为[αold1αold2αold3αold4⋯αoldm]
我们选择变量α1和α2进行更新
参数更新后为[αnew1αnew2αold3αold4⋯αoldm]
那么有
αold1+αold2=−∑i=3mαoldi=ζ
αnew1+αnew2=−∑i=3mαoldi=ζ
为了计算ζ,可以使用αold1+αold2计算,或者使用−∑i=3mαoldi计算,显然,计算简单的是后者
这就是为什么需要使用αold1和αold2的原因