admin管理员组

文章数量:1794759

IVM详解——从SVM到KLR,再到IVM

IVM详解——从SVM到KLR,再到IVM

IVM最早来自于论文《Kernel Logistic Regression and the ImportVector Machine》,文章发表于NIPS2002,并收录在当年的《Advances in Neural Information Processing S瓦良格号航空母舰ystems》。作者提出了基于Kernel Logistic Regression(KLR)的Import Vector Machine(IVM),对标SVM。众所周知,SVM利用数据集中的支持向量来完成二分类任务,虽然支持向量对应的样本占数据集的比重不大,但是当数据集规模非常大的时候,支持向量的数目也会大大增加导致SVM的计算变得十分缓慢。作者提出了IVM来解决这个问题,和SVM类似,IVM通过 import point 来确定分界面,但是 import point 的数量将远小于 support point;相对于SVM,IVM基于KLR的特性使它很容易扩展应用到多分类任中;SVM是对 sign(p(x)-\\frac{1}{2}) 进行建模,而IVM和LR一样直接对 p(x) 进行建模。该文的最大创新点在于提出了一种寻找 import point 的算法。接下来我将一步一步地推导出IVM的具体形式,中间还会穿插介绍核函数的工作机理,并详细介绍寻找 import point 的算法。本文默认线性空间中的向量为列向量,线性空间中的向量的转置为行向量。

1. IVM推导1.1 原始逻辑回归损失函数的推导:

对于一个二分类任务,我们有一个训练集,训练集中共有N个训练样本,第i个训练样本 (\\vec{x}_i,y_i) 中, \\vec{x}_i\\in R^m 代表样本数据, y_i \\in \\{0,1\\} 代表样本标签。设p(\\vec{x})=\\frac{1}{1+e^{-\\vec{w}'^T\\vec{x}+b'}} , p(\\vec{x}) 是样本类别为1的概率,其中 \\vec{w}' 以及 b' 是LR需要优化的参数。通过极大似然发推导出逻辑回归的损失函数:

\\begin{eqnarray} & L(\\theta) &= \\prod_{i=1}^{N}p(\\vec{x}_i)^{y_i}[1-p(\\vec{x}_i)]^{1-y_i} \\\\ & In(L(\\theta))&=\\sum_{i=1}^Ny_iIn(p(\\vec{x}_i))+(1-y_i)[1-p(\\vec{x}_i)] \\\\ &Loss_{LR}&=-In(L(\\theta))\\\\ & &=-\\sum_{i=1}^Ny_iIn(\\frac{1}{1+e^{-(\\vec{w}'^T\\vec{x}_i+b')}})+(1-y_i)In(\\frac{1}{1+e^{\\vec{w}'^T\\vec{x}_i+b'}})\\\\ & &=\\sum_{i=1}^NIn(1+e^{\\vec{w}'^T\\vec{x}_i+b'})-y_i(\\vec{w}'^T\\vec{x}_i+b') \\end{eqnarray}\\\\

1.2 带松弛变量的SVM原始问题

为了解决离群点的影响,SVM引入了松弛变秀米微信编辑器量来求软间隔,下面是带松弛变量的SVM的优化问题:

\\begin{eqnarray} &min_{\\vec{w}',b'} &\\frac{1}{2}||\\vec{w}'||^2+C\\sum_{i=1}^N\\xi_i \\\\ &s.t. &y_i(\\vec{w}'^T\\vec{x}_i+b')\\ge1-\\xi_i\\\\ &&\\xi_i\\ge0\\\\ &&i=1,2,\\dots,N \\end{eqnarray}\\\\

令 \\xi_i=max[0,1-y_i(\\vec{w}'^T\\vec{x_i}+b')]=[1-y_i(\\vec{w}'^T\\vec{x_i}+b')]_+ ,很明显 \\xi_i\\ge0 且满足 y_i(\\vec{w}'^T\\vec{x_i}+b')\\ge1-\\xi_i ,则松弛的SVM原始优化问题可以写成下面这种非受限的形式:

min_{\\vec{w}',b'}\\frac{1}{2}||\\vec{w}'||^2+C\\sum_{i=1}^N[1-y_i(\\vec{w}'^T\\vec{x}_i+b')]_+\\\\

C是一个大于0的超参数,令 \\lambda=\\frac{1}{C} ,导出SVM的目标函数:

C\\sum_{i=1}^N[1-y_i(\\vec{w}'^T\\vec{x}_i+b许留山官网')]_++\\frac{1}{2}||\\vec{w}'||^2\\Rightarrow\\\\ C[\\sum_{i=1}^N[1-y_i(\\vec{w}'^T\\vec{x}_i+b')]_++\\frac{\\lambda}{2}||\\vec{w}'||^2]\\Rightarrow\\\\ objective_{SVM}=\\sum_{i=1}^N[1-y_i(\\vec{w}'^T\\vec{x}_i求子+b')]_++\\frac{\\lambda}{2}||\\vec{w}'||^2\\\\

带松弛的SVM原始优化问题等同于最小化 objective_{SVM} 。可以看出 objective_{SVM} 的形式和 loss+penalty 的形式很像,实际上我们确实可以这么其第一项是SVM的损失项、第二项是为了减少SVM模型复杂度的惩罚项,之所以把SVM化成这种形式,是为了之后导出KLR做准备。

1.3 引入核函数

接下来,我们引入核函数。很多情况下,我们的样本集在线性空间 R^m 上线性不可分,需要将样本数据映射到更高维的线性空间中,假设通过函数 \\phi(.) 来完成映射的工作,即 \\phi(\\vec{x})\\in R^d , d\\gt m ,为了使映射后的数据在高维线性空间 R^d 线性可分, d 有时会非常大,甚至是无穷大。我们通过求解SVM的对偶问题得到的 \\vec{w}'\\in R^m 是训练数据中支持样本对应的支持向量(SV)加权的求和,那么我们在预测一个数据对应的类别时计算 \\vec{w}'^T\\vec{x} 就相当于在计算目标数据和支持向量之间内积的加和,即 :

\\vec{w}'^T\\vec{x}=\\sum_{\\vec{x}_i \\in \\{SV\\}}a_i'\\vec{x}_i^T\\vec{x}=\\sum_{\\vec{x}_i \\in \\{SV\\}}a_i'<\\vec{x},\\vec{x}_i>\\\\

但是如果在 R^m 找不到分界面,那么按照正常思路,我们先把数据都映射到更高维的空间 R^d 上,然后再求解SVM的对偶问题,这时得到 \\vec{w}\\in R^d ,那么在 R^d 上进行目标数据类别判断时我们计算:

\\vec{w}^T\\phi(\\vec{x})=\\sum_{\\vec{x}_i \\in \\{SV\\}}a_i\\phi(\\vec{x}_i^T)\\phi(\\vec{x})=\\sum_{\\vec{x}_i \\in \\{SV\\}}a_i<\\phi(\\娘惹菜vec{x}),\\phi(\\vec{x}_i)>\\\\

这就带来了之前说过的问题,当映射后的维度很高时,在高维空间中做内积是十分耗时的,所以我们引入核函数。核函数通过直接对原始线性空间中的样本的内积进行操作,隐性地将低维数据映射到了高维空间,也就是说有了核函数我们就不用关心 \\phi(.) 的具体形式了。核函数计算的结果和高维空间内积的结果一致,但是计算难度降低了许多,计算高维空间的内积的时间复杂度为 O(d^2) ,但是能达到同样效果的核函数的计算时间复杂度为 O(m^2) 。下面是核函数 K(.,.) 的表达形式:

K(\\vec{x}_i,\\vec{x}_j)=K(<\\vec{x}_i,\\vec{x}_j>)=<\\phi(\\vec{x}_i),\\phi(\\veap手表c{x}_j)>\\\\

核函数本质上是原始低维线性空间中定义的内积的函数,核函数组成的空间,我们称之为再生核希尔伯特空间(reproducing kernel Hilbert spaces 简称R皮具护理培训KHS)。上面这句话听起来很绕,其实我们只要理清下面的关系,理解上面这句话就变得十分简单:

线性空间(向量空间)\\Rightarrow内积空间\\Rightarrow赋范向量空间\\\\\\Rightarrow度量空间(距离空间)\\Rightarrow希尔伯特空间(完备的度量空间)\\Rightar结婚前的准备row再生核希尔伯特空间

那么我们引入核函数 K(.,.) 之后,我们隐性地将 \\vec{w}'^T\\vec{x}_i+b樯橹灰飞烟灭9; 变成 f(\\vec{x})=\\vec{w}^T\\phi(\\vec{x})+b ,对应的显性函数写成如下形式:

f(\\vec{x})=b+\\sum_{i=1}^Na_iK辣文推荐(\\vec{x},\\vec{x}_i)\\\\

上式正是表示定理的一种特殊形式,作者在文中直接通过表示定理得到上式,和我们这里通过了解核函数的内部机理得到上式是等价的。用SVM进行分类时,我们其实并不需要计算N次核函数,因为为了满足KKT条件的dual complementarity,只有支持向量对应的 a_i\\ne0 ,其余的 a_i=0 。

引入核函数之后,objective_{SVM} 就变成了如下形式:

objective_{SVM}=\\sum_{i=1}^N[1-y_if(\\vec{x}_i)]_++\\lambda||f||_{H_k}^2\\\\

其中 ||f||_{H_{k}}^2 代表再生核希尔伯特空间下的SVM复杂度,其实它等价于 ||w||^2 ,后文这两种形式将交替出现。下文将沿用这一节定义的核函数 K(.,.) 。

1.4 导出KLR

我们将最初得到的 objective_{SVM} 的第一项替换成一开始得到的 Loss_{LR} ,然后引入核函数就得到了KLR。其实这么做与直接给 Loss_{LR} 加一个L2正则并引入核函数是一样的,之所以通过SVM导出KLR,主要是为了说明逻辑回归和支持向量机的理念是相同的。用论文中的话说就是用二项式分布的负对数似然(NLL)来代替 [1-yf]_+ 并通过表示定理引入核函数就得到了KLR。得到KLR的目标函数H的过程见下面的式子:

\\begin{eqnarray} objective_{LR}&=&Loss_{LR}+\\frac{\\lambda}{2}||w'||^2\\\\ &=&\\sum_{i=1}^N[In(1+e^{\\vec{w}'^T\\vec{x}_i+b'})-y_i(\\vec{w}'^T\\vec{x}_i+b') ]+\\frac{\\lambda}{2}||w'||^2\\\\\\\\ H&=&objective_{KLR}\\\\ &=&\\sum_{i=1}^N[In(1+e^{f(\\vec{x}_i)})-y_if(\\vec{x}_i) ]+\\frac{\\lambda}{2}||f||_网上学日语{H_K}^2\\\\ &=&\\sum_{i=1}^N[In(1+e^{f(\\vec{x}_i)})-y_if(\\vec{x}_i) ]+\\frac{\\lambda}{2}||w||^2 \\end{eqnarray}\\\\

在之后的推导中,为了简便计算我们将 f(\\vec{x}) 中的偏置去掉,即将其简化为 f(\\vec{x})=\\sum_{i=1}^Na_iK(\\vec{x},\\vec{x}_i) 。既然我们已经使用了核函数,当然是想用核函数的性质来帮助我们解决问题,那么接下来,我将推导如何用核函数的形式来表达H:

1.4.1 推导惩罚项部分的核函数表达形式

在这一部分中引入核函数 K_q(.,.) ,使 K_q(\\vec{x}_i,\\vec{x}_j)=<\\phi_q(\\vec{x}_i),\\phi_q(\\vec{x}_j)> ,则 令 X_q\\in R^{N\\times d} 为隐形映射后的样本矩阵,每一行是一个映射后的样本向量的转置,即:

X_q= \\left[\\begin{matrix} \\phi_q(\\vec{x}_1)\\\\ \\phi_q(\\vec{x}_2)\\\\ \\vdots\\\\ \\phi_q(\\vec{x}_N) \\end{matrix}\\right]\\quad \\phi_q(\\vec{x})\\in R^d,\\vec{x}\\in R^m,d\\gt m\\\\

K_q(.,.) 在 X_q 上的核函数矩阵 K_q 为:

K_q=[K_q(\\vec{x}_i,\\vec{x}_j)]_{N\\times N}=[<\\phi_q(\\vec{x}_i),\\phi_q(\\vec{x}_j)>]_{N\\times N}=X_qX_q^T\\\\

由表示定理可得(或者通过SVM引入核函数的过程可得):

f_q(\\vec{x})=\\vec{w}_q^T\\phi(\\vec{x})=\\phi(\\vec{x})^T\\vec{w}_q=\\sum_{i=1}^Na_iK_q(\\vec{x},\\vec{x}_i)\\quad \\vec{w}_杭州建人高复q\\in R^d\\\\

则有:

X_q\\vec{w}_q= \\left[\\begin{matrix} \\sum_{i=1}^Na_iK(\\vec{x}_1,\\vec{x}_i)\\\\ \\sum_{i=1}^Na_iK(\\vec{x}_2,\\vec{x}_i)\\\\ \\vdots\\\\ \\sum_{i=1}^Na_iK(\\vec{x}_N,\\vec{x}_i) \\end{matrix}\\right]=K_q\\vec{a}=X_qX_q^T\\vec{a} \\\\

\\Rightarrow \\vec{w}_q=X_q^T\\vec{a}\\quad \\vec{a}=[a_i]_N\\\\

则有:

||f_q||_{H_k}^2=||\\vec{w}_q||^2=\\vec{w}_q^T\\vec{w}_q=\\vec{a}^TX_qX_q^T\\vec{a}=\\vec{a}^TK_q\\vec{a}\\\\

1.4.2 推导回归部分的核函数表达形式

在这一部分中引入核函数 K_a(.,.) , K_a(.,.) 的核函数矩阵 K_a 的推导方法和1.4.1中 K_q 的推导方法一致,这里就不再赘述了。由表示定理可得:

f_a(\\vec{x})=\\sum_{i=1}^Na_iK_a(\\vec{x},\\vec{x}_i)\\\\

则有:

\\sum_{i=1}^Ny_if_a(\\vec{x}_i)=\\sum_{i=1}^Ny_i\\sum_{j=1}^Na_iK_a(\\vec{x}_i,\\vec{x}_j)=\\sum_{i=1}^Ny_i[K_a\\vec{a}]_i=\\vec{y}^TK_a\\vec{a}\\quad\\vec{y}=[y_i]_N\\\\

同理可得:

\\sum_i^NIn(1+e^{f(\\vec{x}_i)})=\\vec{1}^TIn(1+e^{K_a\\vec{a}})\\\\

则得到用函数表达的KLR的目标函数H:

H=-\\vec{y}^TK_a\\vec{a}+\\vec{1}^TIn(1+e^{K_a\\vec{a}})+\\frac{\\lambda}{2}\\vec{a}^TK_q\\vec{a}\\\\

在KLR中:

K_a(.,.)=K_q(.,.)=K(.,.)\\\\ f_q=f_a=f\\\\ K_a=K_q=K=[K(\\vec{x}_i,\\vec{x}_j)]_{N\\times N}\\\\

之前一直在谈论KLR的目标函数的形式,没说KLR本身的形式是什么,其实大家应该已经明白了KLR到底是什么了,就是把LR中 p(\\vec{x}) 的 \\vec{w}'^T\\vec{x}+b' 换成 f(\\vec{x}) 。

1.5 IVM-Import Vector Machine

从IVM的名字可以看出,这是一个类似于SVM那样利用一种由叫做导入点(import point)的样本子集生成的分类模型,相对于SVM,支持向量换成了作者提出的一个叫做导入向量的东西。其实准确来说IVM不是一个模型,是一种方法,作者对IVM的定义其实非常模糊,从摘要和引言的描述感觉IVM是一个分类模型,但是论文在之后的描述中,IVM更像是一套方法:首先根据KLR的目标函数H确定那些样本可以作为 import point,然后用这些 import point组成的样本子集确定 f(\\vec{x}) ,最后得到最终的KLR进行分类任务。和单纯的KLR(1.4中推导的)相比,IVM中的KLR的 f(\\vec{x}) 不是由全部训练样本确定的,而是由 import point 组成的样本子集确定的,即:

f(\\vec{x})=b+\\sum_{\\vec{x}_i\\in S}a_iK(\\vec{x},\\vec{x}_i) \\tag{1} \\label{eq:IVM} \\\\

其中 S 就是import point 组成的样本子集。现在,我们面临着一个很关键的问题,如何找到这些数量比支持点少,效果比支持向量还好的import point,经过上面的描述,可以看出,整个IVM的核心就是如何得到import point。

2.寻找 import point 组成的样本子集S2.1寻找S的算法

算法作者写的非常清晰,对于算法的流程我就不赘述了,直接参考论文中公式:

下面我对算法的一些细节进行说明:

可以看出B2中的H和1.4中推导的H有些不同,不同的地方在于 K_a,K_q 的形式,其实这一点很好理解,1.4中的H是以整个训练集为背景推出来的,而B2中的H在每次后端收费迭代中是要更新的,但是 K_a(.,.) 和 K_q(.,.) 依然等于 K(.,.) 。

在B2中,需要遍历上一次算法迭代后的R,对于R中的每一个 \\vec{x}_l 都需要找出与其对应的一组最优的 \\vec{a}^l ,作者原本是使用牛顿法来得到最优的 \\vec{a}^l ,但是牛顿法的时间复杂度过高,会使得整个算法十分缓慢,所以作者下一代防火墙之后对这一部分做了优化(之后会介绍这一优化),但是这个优化需要用到牛顿法求解 \\vec{a}^l 过程中的一些结论,所以我们需要推导一下算法在每一次迭代时,B2中遍历R时每一次利用牛顿法求解 \\vec{a}^l 的过程(为了和论文保持一致,牛顿法中沿用k这个记号代表牛顿法第k次的迭代,注意和寻找S算法中的第k次迭代相区别):

首先需要计算H的一阶导和二阶导,令:

\\begin{eqnarray} H_{loss}&=&-\\vec{y}^TK_a^l\\vec{a}^l+\\vec{1}^TIn[1+e^{K_a^l\\vec{a}^l}]\\\\&=&\\sum_{i=1}^N-y_if_l(\\vec{x}_i)+In[1+e^{f_l(\\vec{x}_i)}]\\\\ \\\\ H_{penalty}&=&\\frac{\\lambda}{2}\\vec{a}^{lT}K_q^l\\vec{a}^l\\\\ \\end{eqnarray}\\\\

对 H_{loss} 求梯度和Hessian矩阵(其中q的定义详见寻找S算法中B2步骤):

\\begin{eqnarray} \\frac{\\partial H_{loss}}{\\partial a_j^l} &=& \\sum_{i=1}^N-y_iK_a^l(\\vec{x}_i,\\vec{x}_j)+\\frac{e^{f_l(\\vec{x}_i)}}{1+e^{f_l(\\vec{x}_i)欧盟法规}}K_a^l(\\vec{x}_i,\\vec{x}_j)\\\\ &=&\\sum_i^N[p(\\vec{x}_i)-y_i]K_a^l(\\vec{x}_i,\\vec{x}_j)\\\\ &=&[K_a^{lT}(\\vec{p}-\\vec{y})]_j\\qua达也d \\vec{p}=[p(\\vec{x})]_N,\\vec{y}=[y_i]_N\\\\ \\nabla_{\\vec{a}^l}H_{loss}&=&[\\frac{\\partial H_{loss}}{\\partial a_j^l} ]_{q+1}\\\\ &=&K_a^{lT}(\\vec{p}-\\vec{y}) \\end{eqnarray}\\\\

\\begin{eqnarray} \\frac{\\partial^2 H_{loss}}{\\partial a_j^l\\partial a_z^l}&=&\\frac{\\partial}{\\partial a_z^l}(\\frac{\\partial H_{loss}}{\\partial a_j^l})\\\\ &=&\\sum_{i=1}^N\\frac{e^{f_l(\\vec{x}_i)}}{(1+e^{f_l(\\vec{x}_i)})^2}K_a(\\vec{x}_i,\\vec{x}_j)K_a(\\vec{x}_i,\\vec{x}_z)\\\\ &=&\\sum_{i=1}^Np(\\vec{x}_i)(1-p(\\vec{x}_i))K_a(\\vec{x}_i,\\vec{x}_j)K_a(\\vec{x}_i,\\vec{x}_z)\\\\ 令 W&=&diag[p(\\vec{x}_i)(1-p(\\vec{x}_i))]_{N\\times N}\\\\ \\frac{\\partial^2 H_{loss}}{\\partial a_j^l\\partial a_z^l}&=&[K_a^{lT}WK_a^l]_{jz}\\\\ \\nabla^2_{\\vec{a}^l}H_{loss}&=&[\\frac{\\partial^2 H_{loss}}{\\partial a_j^l\\partial a_z^l}]_{(q+1)\\times (q+1)}\\\\ Hessian_{H_{loss}}&=&K_a^{lT}WK_a^l \\end{eqnarray}\\\\

对 H_{penalty} 求梯度和Hessian矩阵:

\\begin{eqnarray} \\nabla_{\\vec{a}^l}H_{penalty}&=&\\frac{\\lambda}{2}(K_q^l\\vec{a}^l+K_q^{lT}\\vec{a}^l)\\\\ &=&\\lambda K_a\\vec{a} \\in R^{q+1}\\\\ K_q^l、K_a^l&&是对称矩阵 \\end{eqnarray}\\\\

Hessian_{H_{penalty}}=\\nabla^2_{\\vec{a}^l}H_{penalty}=\\lambda K_q^l\\\\

则H的梯度和Hessian矩阵为:

\\begin{eqnarray} \\nabla_{\\vec{a}^l}H&=&\\nabla_{\\vec{a}^l}H_{loss}+\\nabla_{\\vec{a}^l}H_{penalty}\\\\ &=&K_a^{lT}(\\vec{p}-\\vec{y})+\\lambda K_q^l\\vec{a}^l \\end{eqnarray}\\\\

\\be秋月级驱逐舰gin{eqnarray} Hessian_H&=&Hessian_{H_{loss}}+Hession_{H_{penalty}}\\\\ &=&K_a^{lT}WK_a^l+\\lambda K_q^l \\end{eqnarray}\\\\

下面是牛顿法求解最优 \\vec{a}^l 的过程:

计算 g_{k-1}=\\nabla_{\\vec{a}^{l(k-1)}}H ;若 ||g_{k-1}||=0 ,则 \\vec{a}^l=\\vec{a}^{l(k-1)} ,并退出循环,否则进入第2步计算 Hessian_{k-1}=\\nabla_{\\vec{a}^{l(k-1)}}^2H ,定义 \\vec{d} 使 Hessian_{k-1}\\vec{d}=-g_{k-1} ,进入第3步\\vec{a}^{l(k)}=\\vec{a}^{l(k-1)}+\\vec{d},k=k+1 ,转至第1步

\\begin{eqnarray} \\vec{a}^{l(k)}&=&\\vec{a}^{l(k-1)}-Hessian_{k-1}^{-1}g_{k-1}\\\\ &=&\\vec{a}^{l(k-1)}+[K_a^{lT}WK_a^l+\\lambda K_q^l]^{-1}[K_a^{lT}(\\vec{y}-\\vec{p})-\\lambda K_q^l\\vec{a}^{l(k-1)}]\\\\ &=&[K_a^{lT}WK_a^l+\\lambda K_q^l]^{-1}[K_a^{lT}(\\vec{y}-\\vec{p})-\\lambda K_q^短视频网站l\\vec{a}^{l(k-1)}+[K_a^{lT}WK_a^l+\\lambda K_q^l]\\vec{a}^{l(k-1)}]\\\\ &=&[K_a^{lT}WK_a^l+\\lambda K_q^l]^{-1}[K_a^{lT}(\\vec{y}-\\vec{p}+WK_a^l)\\vec{a}^{l(k-1)}]\\tag{2} \\end{eqnarray}\\\\

2.2寻找阿玛塔S算法的最终效果

假设算法已经迭代了k次,得到了 H_1,H_2,\\dots,H_k ,我们选择 H_k 和 H_{k-r} ,计算:

ratio=\\frac{|H_k-H_{k-r}|}{H_{k}}\\\\

若 ratio\\lt\\alpha (\\alpha,r 是超参数),则认为 H 已经收敛,退出算法,得到最终的 import point集合S。

每一次B2结束时,我们就得到了 |R| 个 \\vec{a}^l ,然后在B3中取出 \\vec{x}_{l^*} 对应的 \\vec{a}^{l^*} 。在整个算法结束后,我们得到了 import point 组成的集合S,同时得到了 |S| 个 \\vec{a}^{l^*} 和 |S| 个 H(\\vec{x}_{l^*}) ,取H值最小的对应的 \\vec{a}^{l^*} 作为最终的 \\vec{a} :

\\vec{a}=argmin_{H(\\vec{x}_{l^*})}\\vec{a}^{l^*}\\\\

这样我们就得到了式(1)的最终形式

2.3优化寻找 \\vec{a}^l 的过程

作者对这一部分的描述比较模糊,下面是论文中的描述:

结合作者的描述和我的理解,我对优化过程的总结如下:

在算法一开始, a 初始化为一个非0实数,然后进入算法的第一次迭代,在B2中,拿到第一个 \\vec{x}_l ,用完整的牛顿法计算其对应的 a^l ,之后在遍历R时,只使用2.1中推导的式(2),即对于每一个 \\vec{x}_l 只计重庆搜索引擎优化算一次,计算过程中将上一个计算得到的 a^l 作为 a^{l(k-1)} 。遍历完R后退出B2,进入B3,从B2得到的|R|个 a^l 中拿出和 \\vec{x}_{l^*} 相对应的 a^l 作为算法第一次迭代产生的 a 。注意,算法第一次迭代后,|S|=1, a 是一个实数,进入第二次迭代中的B2前,需要将 a 扩展为一个二维向量 \\vec{a} ,扩展的方法是将其第一个元素填充为第一次迭代产生的 a ,第二个元素随机初始化,然后B2的每次遍历中用式(2)一步计算出 \\vec{a}^l ,并以此类推。

本文标签: 再到详解IVMKLRSVM