本文主要介绍用于解决SVM对偶模型的算法,它于1998年由John Platt在论文“Sequential Minimal Optimization:A Fast Algorithm for Training Support Vector Machines”中提出的。这篇笔记还参考了某篇博客,但由于是一年前的事了,暂时没找到这篇博客,所以没有引用出来,希望该篇博客的主人见谅。
(1)解决的问题。
SMO 算法解决的是 soft SVM 对偶问题。其模型为:
\begin{align}\mathop{\max}_{\alpha}&\quad W(\alpha)=\sum_{i=1}^n\alpha_i-\frac{1}{2}\sum_{i,j=1}^ny_iy_j\alpha_i\alpha_j\langle x_i,x_j\rangle\nonumber\\\mathop{s.t.}&\quad 0\leq\alpha_i\leq C\nonumber\\&\quad\sum_{i=1}^n\alpha_iy_i=0\label{model:SoftSVMDual}\end{align}
不失一般性,可以将$\langle x_i,y_j\rangle$替换为核函数,记为$K_{ij}$。对应的KKT条件为:
- $\alpha_i=0\Longrightarrow y_i[x_i^\prime w+b]\geq 1$.
- $\alpha_i=C\Longrightarrow y_i[x_i^\prime w+b]\leq 1$.
- $0<\alpha_i<C\Longrightarrow y_i[x_i^\prime w+b]=1$.
(2)思路。
对模型\ref{model:SoftSVMDual}(二次规划问题,QP),如果采用 interior point methods (比如 the projected conjugate gradient algorithm)的话,当训练集的数据量很大时,将产生一个非常大的矩阵,这对内存的要求以及效率影响非常大。SMO的思路就是把大的QP问题分解成一系列小的QP问题。具体点就是将向量$\alpha=(\alpha_1,\alpha_2,\cdots,\alpha_n)$中的大部分均固定住,只取其中的两个分量为变量,然后求解模型\ref{model:SoftSVMDual}。 其主要步骤如下:
repeat till convergence{
- 采用启发式的方法选取一对$\alpha_i,\alpha_j$,然后固定其他分量;
- 在$\alpha_i,\alpha_j$为变量的情况下求解模型\ref{model:SoftSVMDual},更新$\alpha_i,\alpha_j$。
}
(3)SMO分析。
不失一般性,我们假设选取的点为$\alpha_1,\alpha_2$,由限制条件$\sum_{i=1}^n\alpha_iy_i=0$可知$y_1\alpha_1+y_2\alpha_2=-\sum_{i=3}^n\alpha_iy_i\triangleq k$,其中$k$为常数。又由限制条件$0\leq\alpha_i\leq C$可知,可行解被限制在如下的两个盒子里。
对第二个限制条件$y_1\alpha_1+y_2\alpha_2=k$进行讨论。
1)当$y_1\neq y_2$时,$\alpha_1-\alpha_2=k$。设$\alpha_2$的上下界为$L,H$。
若$k\geq 0$,则$\alpha_1,\alpha_2$只能在图1中直线一的实线部分,则此时$L=0,H=C-k$;
若$k< 0$,则$\alpha_1,\alpha_2$只能在图1中直线二的实线部分,则此时$L=-k,H=C$;
2) 当$y_1=y_2$时,$\alpha_1+\alpha_2=k$。
若$0\leq k\leq C$,则$\alpha_1,\alpha_2$只能在图2中直线一的实线部分,则此时$L=0,H=k$;
若$k>C$,则$\alpha_1,\alpha_2$只能在图2中直线二的实线部分,则此时$L=k-C,H=C$。
综上,$\alpha_2$的取值范围为: $L\leq\alpha_2\leq H$。
对目标函数进行转化:
\begin{align*}W(\alpha_2)&=\sum_{i=1}^n\alpha_i-\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^ny_iy_jK_{ij}\alpha_i\alpha_j\\&=\alpha_1+\alpha_2+\sum_{i=3}^n\alpha_i-\frac{1}{2}\sum_{i=1}^n(\sum_{j=1}^2y_iy_jK_{ij}\alpha_i\alpha_j+\sum_{j=3}^ny_iy_jK_{ij}\alpha_i\alpha_j)\\&=\alpha_1+\alpha_2+\sum_{i=3}^n\alpha_i-\frac{1}{2}\sum_{i=1}^2(\sum_{j=1}^2y_iy_jK_{ij}\alpha_i\alpha_j+\sum_{j=3}^ny_iy_jK_{ij}\alpha_i\alpha_j)\\&\quad-\frac{1}{2}\sum_{i=3}^n(\sum_{j=1}^2y_iy_jK_{ij}\alpha_i\alpha_j+\sum_{j=3}^ny_iy_jK_{ij}\alpha_i\alpha_j)\\&=\alpha_1+\alpha_2+\sum_{i=3}^n\alpha_i-\frac{1}{2}\sum_{i=1}^2\sum_{j=1}^2y_iy_j\alpha_i\alpha_jK_{ij}-\sum_{i=1}^2\sum_{j=3}^ny_iy_j\alpha_i\alpha_jK_{ij}-\frac{1}{2}\sum_{i=3}^n\sum_{j=3}^ny_iy_j\alpha_i\alpha_jK_{ij}\\&=\alpha_1+\alpha_2-\frac{1}{2}\alpha_1^2K_{11}-\frac{1}{2}\alpha_2^2K_{22}-y_1y_2\alpha_1\alpha_2K_{12}-y_1\alpha_1\sum_{j=3}^ny_j\alpha_jK_{1j}-y_2\alpha_2\sum_{j=3}^ny_j\alpha_jK_{2j}\\&\quad +\sum_{i=3}^n\alpha_i-\frac{1}{2}\sum_{i=3}^n\sum_{j=3}^ny_iy_j\alpha_i\alpha_jK_{ij}\\&=\alpha_1+\alpha_2-\frac{1}{2}K_{11}\alpha_1^2-\frac{1}{2}K_{22}\alpha_2-y_1y_2K_{12}\alpha_1\alpha_2-y_1\alpha_1v_1-y_2\alpha_2v_2+\text{Constant}\end{align*}
其中$v_1=\sum_{j=3}^ny_j\alpha_jK_{1j},v_2=\sum_{j=3}^ny_j\alpha_jK_{2j}$。
由$\sum_{i=1}^ny_i\alpha_i=0\Longrightarrow \alpha_1y_1+\alpha_2y_2=k\Longrightarrow \alpha_1=r-s\alpha_2$,其中$r=ky_1$为常数,$s=y_1y_2$。 将$\alpha_1=r-s\alpha_2$代入上式得到:
\begin{align*}W(\alpha_2)=&r-s\alpha_2+\alpha_2-\frac{1}{2}K_{11}(r-s\alpha_2)^2-\frac{1}{2}K_{22}\alpha_2^2-sK_{12}\alpha_2(r-s\alpha_2)\\&\quad-y_1(r-s\alpha_2)v_1-y_2\alpha_2v_2+\text{Constant}\end{align*}
对$W(\alpha)$求导并令导数为0得:
\begin{align*}\frac{dW(\alpha_2)}{d\alpha_2}=-s+1+sK_{11}(r-s\alpha_2)-K_{22}\alpha_2-srK_{12}+2K_{12}\alpha_2+y_1v_1s-y_2v_2=0\end{align*}
$$\Longrightarrow(K_{11}+K_{22}-2K_{12})\alpha_2=1-y_1y_2+y_1y_2r(K_{11}-K_{12})+y_2(v_1-v_2)$$
\begin{equation}\Longrightarrow\alpha_2=\frac{y_2[y_2-y_1+y_1r(K_{11}-K_{12})+v_1-v_2]}{K_{11}+K_{22}-2K_{12}}\label{equ:solutionOfAlpha2}\end{equation}
将$v_1=\sum_{j=3}^ny_j\alpha_jK_{1j}, v_2=\sum_{j=3}^ny_j\alpha_jK_{2j}, r=\alpha_1+s\alpha_2=\alpha_1^{old}+s\alpha_2^{old}$ 代入式子\ref{equ:solutionOfAlpha2}得:
\begin{equation}\alpha_2^{new}=\frac{y_2[y_2-y_1+y_1(\alpha_1^{old}+s\alpha_2^{old})(K_{11}-K_{12})+\sum_{j=3}^ny_j\alpha_jK_{1j}-\sum_{i=3}^ny_i\alpha_iK_{2i}]}{K_{11}+K_{22}-2K_{12}}\label{equ:updateAlpha2}\end{equation}
记$f(x_i)=\sum_{j=1}^ny_j\alpha_jK_{ij}+b$,即$f(x_i)=w^\prime x_i+b$,故可得$v_1,v_2$:
\begin{equation}v_1=\sum_{j=3}^ny_j\alpha_jK_{1j}=f(x_1)-b-y_1\alpha_1K_{11}-y_2\alpha_2K_{12}=f(x_1)-b-y_1\alpha_1^{old}K_{11}-y_2\alpha_2^{old}K_{12}\label{equ:v1}\end{equation}
\begin{equation}v_2=\sum_{j=3}^ny_j\alpha_jK_{2j}=f(x_2)-b-y_1\alpha_1K_{21}-y_2\alpha_2K_{22}=f(x_2)-b-y_1\alpha_1^{old}K_{21}-y_2\alpha_2^{old}K_{22}\label{equ:v2}\end{equation}
将式子\ref{equ:v1}和\ref{equ:v2}代入式子\ref{equ:updateAlpha2}得:
\begin{align}\alpha_2^{new}&=\frac{y_2[y_2-y_1+y_1(\alpha_1^{old}+s\alpha_2^{old})(K_{11}-K_{12})+f(x_1)-f(x_2)\\-y_1\alpha_1^{old}K_{11}-y_2\alpha_2^{old}K_{12}+y_1\alpha_1^{old}+y_2\alpha_2^{old}K_{22}]}{K_{11}+K_{22}-2K_{12}}\nonumber\\&=\frac{y_2[y_2-y_1+y_1\alpha_1^{old}(K_{11}-K_{12})+y_2\alpha_2^{old}(K_{11}-K_{12})\\+y_1\alpha_1^{old}(K_{21}-K_{11})+y_2\alpha_2^{old}(K_{22}-K_{21})+f(x_1)-f(x_2)]}{K_{11}+K_{22}-2K_{12}}\nonumber\\&=\frac{y_2[y_2-y_1+y_2\alpha_2^{old}(K_{11}-K_{12}+K_{22}-K_{21})+f(x_1)-f(x_2)]}{K_{11}+K_{22}-K_{12}}\nonumber\\&=\alpha_2^{old}+\frac{y_2[(f(x_1)-y_1)-(f(x_2)-y_2)]}{K_{11}+K_{22}-2K_{12}}\nonumber\\&\triangleq\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}\label{equ:newUpdateAlpha2}\end{align}
其中$E_i=f(x_i)-y_i$表示误差项,$\eta=K_{11}+K_{22}-2K_{12}=\|\Phi(x_1)-\Phi(x_2)\|^2$.($\Phi$是原始空间向特征空间的映射,其中$\sqrt{\eta}$可以看成是一个度量两个样本的相似性距离)
得到$\alpha_2^{old}$的更新式子后,由于$\alpha_2^{old}$也必须落入限制盒子里,故必须对$\alpha_2^{new}$进行限制,即:
\begin{equation}\alpha_2^{new.clipped}=\left\{\begin{array}&L\quad\quad\quad\alpha_2^{new}\leq L\\\alpha_2^{new}\quad\quad\quad L<\alpha_2^{new}<H\\H\quad\quad\quad\alpha_2^{new}\geq H\end{array}\right.\label{equ:clippedAlpha2}\end{equation}
又因为$\alpha_1^{old}=r-s\alpha_2^{old},\alpha_1^{new}=r-s\alpha_2^{new.clipped}$,消去$r$得到:
\begin{equation}\alpha_1^{new}=\alpha_1^{old}+s\alpha_2^{old}-s\alpha_2^{new.clipped}=\alpha_1^{old}+y_1y_2(\alpha_2^{old}-\alpha_2^{new.clipped})\label{equ:updateAlpha1}\end{equation}
得到更新$\alpha_1$与$\alpha_2$的两个迭代式:
$\alpha_2^{new}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}$,进一步求得$\alpha_2^{new.clipped}$
$\alpha_1^{new}=\alpha_1^{old}+y_1y_2(\alpha_2^{old}-\alpha_2^{new.clipped})$.
(4)停止条件。
一般对于凸优化问题,有如下三种停止条件:
- 监视目标函数的增长率,即$W(\alpha)$的增长低于某一tolerance时停止,这种效果一般都不好。
- 监视原问题的KKT条件,由于最优解必定满足KKT条件,但KKT条件本身较为苛刻,故只需在一定的tolerance范围内所有样本满足KKT条件即可停止。
- 监视可行间隙,即原问题与对偶问题的目标函数值之差,对于凸优化来说这个间隙为0.
设原问题的目标函数值为$O(w,b)$,对偶问题的目标函数为$W(\alpha)$,则Gap为:
\begin{align}\text{Gap}&=\frac{1}{2}w^\prime w+C\sum_{i=1}^n\xi_i-(\sum_{i=1}^n\alpha_i-\frac{1}{2}\sum_{i,j=1}^ny_iy_j\alpha_i\alpha_jK_{ij})\nonumber\\&\frac{1}{2}\sum_{i,j=1}^ny_iy_j\alpha_i\alpha_jK_{ij}+C\sum_{i=1}^n\xi_i-(\sum_{i=1}^n\alpha_i-\frac{1}{2}\sum_{i,j=1}^ny_iy_j\alpha_i\alpha_jK_{ij})\nonumber\\&=\sum_{i,j=1}^ny_iy_j\alpha_i\alpha_jK_{ij}+C\sum_{i=1}^n\xi_i-\sum_{i=1}^n\alpha_i\nonumber\\&=2\sum_{i=1}^n\alpha_i-2W(\alpha)+C\sum_{i=1}^n\xi_i-\sum_{i=1}^n\alpha_i\nonumber\\&=\sum_{i=1}^n\alpha_i-2W(\alpha)+C\sum_{i=1}^n\xi_i\label{equ:Gap}\end{align}
所以当上诉的Gap达到某一tolerance时即可停止。
(5)启发式(Heuristics)的方法选择$\alpha_i,\alpha_j$。
从上述停止条件可知,最优点满足KKT条件,因此我们可以选择“最违反KKT条件”的点进行优化。违反KKT条件的点指的是:
\begin{equation}\alpha_i=0 \&\& y_i(x_i^\prime w+b) < 1\label{equ:violateKKT1}\end{equation}
\begin{equation}0<\alpha_i<C \&\& y_i(x_i^\prime w+b) \neq 1\label{equ:violateKKT2}\end{equation}
\begin{equation}\alpha_i=C\&\& y_i(x_i^\prime w+b)>1\label{equ:violateKKT3}\end{equation}
从式子\ref{equ:Gap}可知,第$i$个点对Gap的贡献为:
\begin{align*}\text{Gap}_i&=\alpha_i[y_i(\sum_{j=1}^n\alpha_jy_jK_{ij})-1]+C\xi_i\\&=\alpha_i(y_iu_i-1y_ib)+C\xi_i\end{align*}
其中$u_i=w^\prime x_i+b=\sum_{j=1}^n\alpha_jy_jK_{ij}+b$。
1)若满足第一个KKT条件,即$\alpha_i=0\&\& y_iu_i\geq 1\Longrightarrow \xi_i=0$(参考Soft Margin SVM笔记),则
\begin{equation*}\text{Gap}_i=\alpha_i(y_iu_i-1-y_ib)+C\xi_i=0\end{equation*}
若违反第一个KKT条件,即$\alpha_i=0\&\&y_iu_i<1\Longrightarrow \xi_i>0$,于是$\text{Gap}_i=C\xi_i>0$,故违反第一个KKT条件使可行间隙变大。
2)若满足第二个KKT条件,即$0<\alpha_i<C \&\& y_i(x_i^\prime w+b) = 1\Longrightarrow \xi_i=0$,则
\begin{equation*}\text{Gap}_i=-\alpha_iy_ib+C\xi_i=-\alpha_iy_ib\end{equation*}
若违反,即$0<\alpha_i<C \&\& y_i(x_i^\prime w+b) \neq 1$。当$y_iu_i>1\Longrightarrow\xi_i=0$时,$\text{Gap}_i=\alpha_i(y_iu_i-1)-\alpha_iy_ib>-\alpha_iy_ib$;当$y_iu_i<1\Longrightarrow\xi_1-y_iu_i$时,故$\text{Gap}_i=\alpha_i(y_iu_i-1-y_ib)+C(1-y_iu_i)=(C-\alpha_i)(1-y_iu_i)-\alpha_iy_ib>-\alpha_iy_ib$。故违反第二个KKT条件使可行间隙变大。
3)若满足第三个KKT条件,即$\alpha_i=C\&\&y_iu_i\leq 1\Longrightarrow \xi_i=1-y_iu_i$,则
\begin{equation*}\text{Gap}_i=\alpha_i(y_iu_i-1-y_ib)+C\xi_i=Cy_ib\end{equation*}
若违反第三个KKT条件,即$\alpha_i=C\&\&y_iu_i>1$时,$\xi_i=0$:
\begin{equation*}\text{Gap}_i=\alpha_i(y_iu_i-1-y_ib)+C\xi_i=C(y_iu_i-1)-Cy_ib>-Cy_ib\end{equation*}
故违反第三个KKT条件使可行间隙变大。
从上述分析可知,采用该策略是可行的,严格的收敛证明可以根据Osuna E Personal Communication 中提到的Osuna's theorem。
该启发式选择分为两个部分,第一部分用于选择第一个乘子$\alpha_i$,第二部分用于选择第二个乘子$\alpha_j$,其第一部分过程可描述如下:
while(存在违反KKT条件的样本点)
for(i :遍历所有违反KKT条件的样本点)
j = 采用第二个启发式方法选择乘子;
以$\alpha_i,\alpha_j$为变量进行优化;
end for
while(存在违反KKT条件的边界点,其中边界点指的是$\alpha$等于$0$或者$C$)
for(i:遍历所有违反KKT条件的边界点)
j = 采用第二个启发式方法选择乘子;
以$\alpha_i,\alpha_j$为变量进行优化;
end for
end while
end while
第二部分过程描述如下:
由于$\alpha_2^{new}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}$,故为了加快收敛速度,可选择$|E_1-E_2|$的最大值为优化的另一个乘子。
- 在非边界样本点中找值$|E_1-E_2|$最大的点,若不存在或则该最大值点不会是目标函数增加的话,则转2;
- 在非边界样本点中随机选一个样本点,从该样本点开始遍历所有非边界点,直到找到可行的点,否则转3;
- 在所有边界样本点中随机选一个样本点,从该样本点开始遍历所有边界点,直到找到可行的点,否则返回0,表示没找到可行点。
整个SMO的伪代码可在原论文中找到。
(6)关于两个乘子优化的说明。
对目标函数求一阶和二阶导数如下:
\begin{equation}\frac{\partial W(\alpha_2)}{\partial\alpha_2}=-s+1sK_{11}r-K_{11}\alpha_2-K_{22}\alpha_2-srK_{12}+2K_{12}\alpha_2+y_1v_1-y_2v_2\end{equation}
\begin{equation}\frac{\partial^2W(\alpha_2)}{\partial\alpha_2^2}=-K_{11}-K_{22}+2K_{12}=-\eta\end{equation}
由于之前的更新是由导数等于0而得到的,而当二阶导数大于零的时候,这种更新不会使目标函数值保持增长,现在我们对更新方法进行改进,使其对所有的情况都可使目标函数保持增长。
1)当$-\eta<0$时,目标函数(关于$\alpha_2$的二次函数)开口向下,则有如下三种情况:
- 令$\frac{\partial W}{\partial\alpha_2}=0\Longrightarrow \alpha_2=\alpha_2^\prime\in[L,H]$,目标函数取得最大值;
- 令$\frac{\partial W}{\partial\alpha_2}=0\Longrightarrow \alpha_2=\alpha_2^\prime>H$,$\alpha_2$经过clipped,$\alpha_2^{new.clipped}=H$,目标函数取得最大值;
- 令$\frac{\partial W}{\partial\alpha_2}=0\Longrightarrow \alpha_2=\alpha_2^\prime<L$,$\alpha_2$经过clipped,$\alpha_2^{new.clipped}=L$,目标函数取得最大值。
2)当$-\eta>0$时,目标函数开口向上,此时目标函数的最大值必定在边界处取得,因此只要验证边界值的大小即可。将a) $\left\{\begin{array}&\alpha_2^{new.clipped}=L\\\alpha_1^{new}=\alpha_1^{old}+s(\alpha_1^{old}-L)\end{array}\right.$ 和 b) $\left\{\begin{array}&\alpha_2^{new.clipped}=H\\\alpha_1^{new}=\alpha_1^{old}+s(\alpha_1^{old}-H)\end{array}\right.$ 分别代入目标函数中,若a)使目标函数值更大则采用更新a);若b)使目标函数值更大则采用更新b)。
(7)更新阈值(Threshold)。
为了使每一次更新后的$\alpha_1,\alpha_2$都满足KKT条件,我们还必须更新阈值$b$。
1)设$\alpha_1^{new}$在界内,即$0<\alpha_1^{new}<C$,由KKT条件可知:
\begin{equation}y_1u_1^{new}=1\Longrightarrow y_1(\alpha_1^{new}y_1K_{11}+\alpha_2^{new.clipped}y_2K_{21}+\sum_{i=3}^n(\alpha_iy_iK_{i1})+b^{new})=1\label{equ:updateThre1}\end{equation}
又因:
\begin{align}E_1&=f(x_1)-y_1\nonumber\\&=\sum_{j=1}^ny_j\alpha_j^{old}K_{1j}+b^{old}-y_1\nonumber\\&=y_1\alpha_1^{old}K_{11}+y_2\alpha_2^{old}K_{12}+\sum_{j=3}^n\alpha_jy_jK_{1j}+b^{old}-y_1\nonumber\\\Longrightarrow&\nonumber\\\sum_{i=3}^n\alpha_iy_iK_{1i}&=E_1-\alpha_1^{old}y_1K_{11}-\alpha_2^{old}y_2K_{12}-b^{old}+y_1\label{equ:updateThre2}\end{align}
将式子\ref{equ:updateThre2}代入式子\ref{equ:updateThre1}得:
$$y_1(\alpha_1^{new}y_1K_{11}+\alpha_2^{new.clipped}y_2K_{21}+E_1-\alpha_1^{old}y_1K_{11}-\alpha_2^{old}y_2K_{12}-b^{old}+y_1+b^{new})=1$$
即:
\begin{align*}b^{new}&=-\alpha_1^{new}y_1K_{11}-\alpha_2^{new.clipped}y_2K_{21}-E_1+\alpha_1^{old}y_1K_{11}+\alpha_2^{old}y_2K_{12}+b^{old}\\&=(\alpha_1^{old}-\alpha_1^{new})y_1K_{11}+(\alpha_2^{old}-\alpha_2^{new.clipped})y_2K_{21}-E_1+b^{old}\end{align*}
2)设$\alpha_2^{new.clipped}$在界内,即$0<\alpha_2^{new.clipped}<C$,由KKT条件知:
\begin{equation}y_2u_2^{new}=1\Longrightarrow y_2(w^\prime x_2+b^{new})=y_2(\alpha_1^{new}y_1K_{21}+\alpha_2^{new}y_2K_{22}+\sum_{i=3}^n\alpha_iy_iK_{2j}+b^{new})=1\label{equ:updateThre3}\end{equation}
又因:
\begin{align}E_2&=f(x_2)-y_2\nonumber\\&=\sum_{j=1}^ny_j\alpha_j^{old}K_{2j}+b^{old}-y_2\nonumber\\&=y_1\alpha_1^{old}K_{21}+y_2\alpha_2^{old}K_{22}+\sum_{j=3}^n\alpha_jy_jK_{2j}+b^{old}-y_2\nonumber\\\Longrightarrow&\nonumber\\\sum_{i=3}^n\alpha_iy_iK_{2i}&=E_2-\alpha_1^{old}y_1K_{21}-\alpha_2^{old}y_2K_{22}-b^{old}+y_2\label{equ:updateThre4}\end{align}
将式子\ref{equ:updateThre4}代入式子\ref{equ:updateThre3}得:
$$y_2(\alpha_1^{new}y_1K_{21}+\alpha_2^{new}y_2K_{22}+E_2-\alpha_1^{old}y_1K_{21}-\alpha_2^{old}y_2K_{22}-b^{old}+y_2+b^{new})=1$$
即:
\begin{align*}b^{new}&=-\alpha_1^{new}y_1K_{21}-\alpha_2^{new}y_2K_{22}-E_2+\alpha_1^{old}y_1K_{21}+\alpha_2^{old}y_2K_{22}+b^{old}\\&=(\alpha_1^{old}-\alpha_1^{new})y_1K_{21}+(\alpha_2^{old}-\alpha_2^{new})y_2K_{22}-E_2+b^{old}\end{align*}
3)若$\alpha_1^{new},\alpha_2^{new.clipped}$都在界内,则情况1)和情况2)的$b$值相等,任取一个即可。
4)若$\alpha_1^{new},\alpha_2^{new.clipped}$都不再界内,则$b^{new}$取情况1)和情况2)之间的任一值即可。在SMO里,我们去二者的平均值。
(8)提高SMO速度。
有两种技巧可用于提高SMO算法的速度。
1)将核矩阵放在缓存中,减少重复计算。
2)若核函数为线性时,可直接更新$w$,即:
\begin{align*}w^{new}&=y_1\alpha_1^{new}x_1+y_2\alpha_2^{new}x_2+\sum_{i=1}^ny_i\alpha_ix_i\\&=y_1\alpha_1^{old}x_1+y_1\alpha_1^{new}x_1-y_1\alpha_1^{old}x_1+y_2\alpha_2^{old}x_2+y_2\alpha_2^{new}x_2-y_2\alpha_2^{old}x_2+\sum_{i=3}^ny_i\alpha_ix_i\\&=\sum_{i=1}^ny_i\alpha_i^{old}x_i+(\alpha_1^{new}-\alpha_1^{old})y_1x_1+(\alpha_2^{new}-\alpha_2^{old})y_2\alpha_2\\&=w^{old}+(\alpha_1^{new}-\alpha_1^{old})y_1x_1+(\alpha_2^{new}-\alpha_2^{old})y_2\alpha_2\end{align*}