机器学习核方法

核方法

拉格朗日乘子法

参考:【整理】深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件

参考:拉格朗日乘子法和KKT条件

在求解最优化问题中,拉格朗日乘子法和KKT条件是两种最常用的方法。在有等式约束时使用拉格朗日乘子法,有不等约束时使用KKT条件。

最优化问题的三种情况:(1)无约束条件 (2) 等式约束条件 (3) 不等式约束条件

等式约束条件

[egin{cases}min_xquad f(x)\s.t.quad h(x)=0end{cases} ]

  • 只有到等高线与目标函数的曲线相切的时候,可能取得最优值

  • 对约束函数 (h(x)) 也求梯度 (igtriangledown h(x)),想让目标函数 (f(x)) 的等高线和约束函数相切,则他们切点的梯度一定在一条直线上。

    • 也即最优化解的时候 (igtriangledown_x f(x) = lambda igtriangledown_x h(x))
  • 求解最优化问题转换为

    [egin{cases}igtriangledown_x f(x) = lambda igtriangledown_x h(x)\ h(x)=0end{cases} ]

  • 构造拉格朗日函数:$L(x,lambda) = f(x)+lambda h(x) $。

    • (igtriangledown_x L(x^*,lambda^*) =0) 对应 (igtriangledown_x f(x) = lambda igtriangledown_x h(x))
    • (igtriangledown_{lambda} L(x^*,lambda^*) =0) 对应 (h(x)=0)
  • 多个约束条件:(L(x,lambda) = f(x)+sum_{k=1}^llambda_kh_k(x))

    • 再联立方程组

      [egin{cases}frac{partial L}{partial x_i}=0\frac{partial L}{partial lambda_k}=0end{cases} ]

    • 得到的解为可能极值点

不等式约束条件

KKT条件:在满足一些有规则的条件下,一个非线性规划问题能有最优化解法的一个必要和充分条件

不等式约束条件的约束是一个可行域,约束情况有两种:(1) 极小值点在可行域内 ( 不包含边界 ) (2) 极小值点落在可行域外 (包括边界)

  • 极小值点在可行域内时,约束不起作用,之间目标函数 (f(x)) 梯度等于0求解
  • 极小值点在可行域外,约束起作用,走到极小值点时,约束函数梯度和目标函数负梯度相同(-igtriangledown f(x) = lambda igtriangledown h(x)quad (lambda>0))

构造拉格朗日函数转换求解问题,对于不等式约束的优化,需要满足三个条件,满足三个条件的解 (x^*) 就是极小值点,这三个条件就是著名的KKT条件,整合了上面两种情况的条件。

考虑凸函数的最优化问题

[minquad f(x)quad s.t. quad h(x) le0 ]

定义拉格朗日函数为

[L(x,lambda) = f(x)+lambda h(x) ]

那么 (x^*) 是极小值点且有唯一 (lambda ^*) 使得

  1. (igtriangledown_x L(x^*,lambda^*) =0)
  2. (lambda^* ge 0)
  3. (lambda^* h(x^*)= 0)

凸优化问题中,KKT条件就是全局最小值的充要条件,若不是凸优化,KKT条件是极小值点的必要条件,KKT点是驻点,可能是极值点。极值点一定满足KKT条件,但满足KKT条件的点不一定是极值点。

非凸优化问题,需加一个正定条件,使得KKT条件成为充要条件。

  1. (igtriangledown_x L(x^*,lambda^*) =0)
  2. (lambda^* ge 0)
  3. (lambda^* h(x^*)= 0)
  4. (h(x^*)le0)
  5. (igtriangledown_{xx} L(x^*,lambda^*) 组成的海塞矩阵是正定的)

最大间隔(margin maximization)

问题描述

对于线性函数分类成两类的数据,定义超平面上的点为一类,平面下的点为一类。记超平面为 ( heta^Tx+b=0),平面上的区域为 ( heta^Tx+b>0),平面下的区域为 ( heta^Tx+b<0)

存在不只一个超平面可以正确分类所给数据,选择哪个是最好的。需要一个超平面来最大化类别间距。

前序

给定一个线性函数 (y=2x+3),有点 (0,3) 和 ((-frac{3}{2}),0) 在函数上,将 (y=2x+3) 变形为 (2x-y+3=0),写成向量形式

[(2,-1)left[egin{matrix}x\yend{matrix} ight]+3=0 ]

进一步记作

[(2,-1)left[egin{matrix}x_1\x_2end{matrix} ight]+3=0 ]

构造成 ( heta^T x+ heta_0=0) 的形式,其中 ( heta^T) 的方向垂直于函数斜率方向,等于函数法线方向。

SVM 最大分类问题

选择什么样的 (w)(b),使得 (wx+b=0) 将数据集分类最大化,间距最大。记数据集为 (D={(x^{(1)},y^{(1)}),...,(x^{(N)},y^{(N)})}),其中 (x in R^n)(y in {-1,+1}),给定 (x^{(i)})

[w^T x^{(i)}+b>0quad ifquad y^{(i)}=1 \w^T x^{(i)}+b<0 quad if quad y^{(i)}=-1 ]

重新缩放数据,对于在边界 (w^Tx+b=1) 上或边界之内的,以及在边界 (w^Tx+b=-1) 上或边界之内的。所有数重写等式为

[y_i(w^Tx_i+b)ge 1 ]

计算间距

定义一个点 (x_1) 在边界 (wx+b=-1) 上,另一个类中距离 (x_1) 最近的点 (x_2) 在边界 (wx+b=1) 上,,且 (x_2=x_1+lambda w)

  • (lambda) 是 大于0的常数
  • (w) 是垂直于 (wx+b=0) 的向量

(margin)(||x_2-x_1||=||lambda w||=lambda||w||)

[w x_2+b=1Rightarrow w(x_1+lambda w)+b=1Rightarrow wx_1+lambda w^Tw+b=1 ]

(wx_1+b=-1)

则 $ lambda w^Tw =2 Rightarrow lambda=frac{2}{||w||^2}$

所以 (margin)(||x_2-x_1||=lambda||w||=frac{2}{||w||^2}cdot ||w||=frac{2}{||w||})

问题转化

寻找最大间距的边界问题转化为带不等式约束的优化问题

[egin{cases}max_w frac{2}{||w||}\s.t.quad y_i(wx_i+b)ge 1end{cases} ]

写成拉格朗日乘子法适用类型

[egin{cases}min_w frac{1}{2}||w||^2\s.t.quad 1-y_i(wx_i+b)le 0end{cases} ]

  • 因为 (L-2norm) 求导时方便

[L(w,lambda)=frac{1}{2}||w||^2+alpha_i[1-y_i(wx_i+b)] ]

SVM 软间隔

参考:《SVM笔记系列之五》软间隔线性支持向量机

20171127163540833.png

拉格朗日对偶问题

引子

eg:拉格朗日函数 (L(x,lambda)=x^2+lambda(b-x))

[frac{partial L}{partial x}=2x-lambda=0quad Rightarrow quad x^*=frac{lambda}{2}\frac{partial L}{partial lambda}=b-x=0quad Rightarrow quad x=b quad Rightarrow quad frac{lambda}{2}=bquad Rightarrow quad lambda^*=2b ]

(lambdage 0),则 (lambda^*=max(0,2b))

则拉格朗日函数写成

[max_{lambda}min_x(x^2+lambda(b-x)) ]

正文

求解最大间隔问题中的拉格朗日函数

[L(w,lambda)=frac{1}{2}||w||^2+alpha_i[1-y_i(wx_i+b)] ]

写成

[L=min_{w,b}max_{alpha_i} frac{1}{2}||w||^2+sum_{alpha_i}alpha_i[1-y_i(wx_i+b)] ]

则其对偶问题为

[L=max_{alpha_i}min_{w,b} frac{1}{2}||w||^2+sum_{alpha_i}alpha_i[1-y_i(wx_i+b)] ]

我们先求对偶问题 (min_{w,b} frac{1}{2}||w||^2+sum_{alpha_i}alpha_i[1-y_i(wx_i+b)]),根据KKT条件

  1. (frac{partial L}{partial w}=0 quad Rightarrow quad w-sum_ialpha_iy^{(i)}x^{(i)}=0quad Rightarrow quad w=sum_ialpha_iy^{(i)}x^{(i)})

    (frac{partial L}{partial b}=0quad Rightarrow quad sum_ialpha_iy^{(i)}=0)

  2. 则可使用 (alpha) 替换 (w)(b)

    [L=frac{1}{2} (sum_ialpha_iy^{(i)}x^{(i)})^Tsum_ialpha_iy^{(i)}x^{(i)}+sum_{alpha_i}alpha_i[1-y^{(i)}(sum_jalpha_jy^{(j)}x^{(j)}x^{(i)}+b)]\=frac{1}{2}(sum_ialpha_iy^{(i)}x^{(i)})(sum_jalpha_jy^{(j)}x^{(j)})+sum_{alpha_i}alpha_i[1-y^{(i)}(sum_jalpha_jy^{(j)}x^{(j)}x^{(i)}+b)]\=frac{1}{2}(sum_isum_jalpha_iy^{(i)}x^{(i)}alpha_jy^{(j)}x^{(j)})+sum_i alpha_i-sum_isum_j alpha^{(i)} alpha^{(j)}y^{(i)}y^{(j)}x^{(i)}x^{(j)}+bsum_ialpha^{(i)}y^{(i)}\=sum_i alpha_i-frac{1}{2}sum_isum_jalpha_iy^{(i)}x^{(i)}alpha_jy^{(j)}x^{(j)}+bsum_ialpha^{(i)}y^{(i)} ]

    因为 (sum_ialpha_iy^{(i)}=0),所以

    [L=sum_i alpha_i-frac{1}{2}sum_isum_jalpha_iy^{(i)}x^{(i)}alpha_jy^{(j)}x^{(j)}quad (i,j=1,2,...,N)\s.t. quad alpha ge 0 ,quad sum_ialpha_iy^{(i)}=0 ]

所以问题转化为

[L=max_{alpha_i}(sum_i alpha_i-frac{1}{2}sum_isum_jalpha_iy^{(i)}x^{(i)}alpha_jy^{(j)}x^{(j)}quad (i,j=1,2,...,N)\s.t. quad alpha ge 0 ,quad sum_ialpha_iy^{(i)}=0) ]

支持向量

原始拉格朗日函数 (L(w,lambda)=frac{1}{2}||w||^2+alpha_i[1-y_i(wx_i+b)]),如果判对了 (y_i(wx_i+b)>1) ,则 ([1-y_i(wx_i+b)]<0) 。目的是使得 (L) 最大,则 (alpha=0),如果数据远离边界被正确分类,那么权重 (alpha=0),如果数据在边界上,([1-y_i(wx_i+b)]=0),那就变成等式优化,(alpha >0)。也就是说在边界上的点(alpha >0),对优化很重要。边界上的点叫 (supportquad vector)

(SVM) 是一个线性优化,做的事情是使得边界最大,边界上的点叫 (supportquad vector),其他的点权重置零。

线性可分

SVM 是线性分类器,若数据原本就线性不可分怎么解决。

  • 数据在原始空间(称为输入空间)线性不可分,但是映射到高维空间(称为特征空间)后很可能就线性可分了。

核方法在 SVM 中的应用最关键的是 (x^{(i)}cdot x^{(j)}) 内积,降低计算复杂度,解决映射后可能产生的维度爆炸问题。

关于核技巧 参考:核技巧(The Kernel Trick)

原文地址:https://www.cnblogs.com/ColleenHe/p/11637646.html