zoukankan      html  css  js  c++  java
  • 机器学习核方法

    核方法

    拉格朗日乘子法

    参考:【整理】深入理解拉格朗日乘子法(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)

  • 相关阅读:
    leetcode教程系列——Binary Tree
    《Ranked List Loss for Deep Metric Learning》CVPR 2019
    《Domain Agnostic Learning with Disentangled Representations》ICML 2019
    Pytorch从0开始实现YOLO V3指南 part5——设计输入和输出的流程
    Pytorch从0开始实现YOLO V3指南 part4——置信度阈值和非极大值抑制
    Pytorch从0开始实现YOLO V3指南 part3——实现网络前向传播
    Pytorch从0开始实现YOLO V3指南 part2——搭建网络结构层
    Pytorch从0开始实现YOLO V3指南 part1——理解YOLO的工作
    让我佩服的人生 文章
    win8.1配置cordova+ionic等一系列东西
  • 原文地址:https://www.cnblogs.com/ColleenHe/p/11637646.html
Copyright © 2011-2022 走看看