回顾

通过定义训练集S={(x(i),y(i));i=1,2,...,m}与线性决策平面(w,b)之间的function margin γ^和geometric margin γ 、好的分类决策平面特点得到了一个最优化问题:

max(γ,w,b)γ s.t. y(i)(wTx(i)+b)≥γ, ||w||=1

下面要介绍的就是如何解决这个最优化问题,一个思路就是将这个没有“现货”可以解决的优化问题,转变为off-the-shelf的最优化问题的形式,以便直接拿来使用。

最优化问题推导过程

约束条件中的||w||=1是一个nasty(非凸)的目标,于是进行第一步的演变:

  • 将最大化geometric margin转变为最大化function margin

    max(γ^,w,b)γ^ s.t. y(i)(wTx(i)+b)≥γ^,i=1,2,...,m

    虽然没有了||w||=1的约束,但这个优化目标则变为了一个nasty(non-convex)函数,需要进行第二步的演变:

  • 引入(w,b)的尺度限制,使function margin γ^=1

    考虑到最大化γ^/||w||=1/||w||等效于最小化||w||2,于是第二步演变后得到的优化问题为:

    max(γ,w,b)12||w||2 s.t. y(i)(wTx(i)+b)≥1,i=1,2,...,m

    经过两步的推导,问题转变为了一个典型的凸二次目标与线性约束的优化问题,这类问题可以通过成熟的software解决,不必深究。

虽然通过上面的推导过程能够解决并得到一个好的分类决策超平面,但是还得介绍一下Lagrange duality,通过上面优化问题的对偶形式,可以引入kernel trick得到在高维空间表现很好的optimal margin classifiers,另外,dual form将得到比上面解普通二次优化问题更加有效的方法。

Lagrange duality

1. Lagrange multiplier

考虑下面形式的优化问题:

minw f(w) s.t. hi(w)=0, i=1,...,l.

解决方法之一就是Lagrange multipliers,定义Lagrangian为:

L(w,β)=f(w)+sumli=1βihi(w)

βi那一项叫做Lagrange multipliers。通过求解偏微分来得到对应的w、β。

2. primal optimization problem

将如下形式的优化问题成为primal optimization问题:

minw f(w) s.t. gi(w)≤0,i=1,...,k hi(w)=0, i=1,...,l.

为了解决这个问题,开始进行相关的推导:

  • generalized Lagrangian:

    L(w,α,β)=f(w)+sumki=1αigi(w)+sumli=1βihi(w)
  • objective θP(w):
θP(w)=maxα,β:αi≥0L(w,α,β)=maxα,β:αi≥0 f(w)+sumki=1αigi(w)+sumli=1βihi(w)

讨论一下,如果gi(w)>0 or hi(w)≠0,则objective就变为了无穷大,因此maximize就是为了使gi(w)、hi(w)满足约束条件。当它们满足约束条件时,为了使objective就等于了f(w)。这里P的含义代表的是primal。

  • final optimization form:
minwθP(w)=minw maxα,β:αi≥0L(w,α,β)
  • final optimal solution:
p∗=minwθP(w)

3. 对偶问题dual optimization problem

  • objective θD(α,β):
θD(α,β)=minwL(w,α,β)

这里D代表的是dual。

  • dual optimization problem:
maxα,β:αi≥0θD(α,β)=maxα,β:αi≥0 minwL(w,α,β)
  • dual solution:
d∗=maxα,β:αi≥0θD(w)

4. 耦合primal和dual问题

不加约束地,两者有如下形式的关系:

d∗=maxα,β:αi≥0 minwL(w,α,β)≤minw maxα,β:αi≥0L(w,α,β)=p∗

我们期望是在满足某些条件时,令d∗=p∗。而这个条件就是著名的KKT条件,这里不再详述,只是进行稍微的解释说明:f、gi(w)是凸函数,而hi(w)需为affine,即形如hi(w)=aTiw+bi。同时,如果(w,α,β)满足KKT条件,它就是primal和dual问题的解。

  • KKT formulation
∂L(w∗,α∗,β∗)∂wi=0,i=1,...n∂L(w∗,α∗,β∗)∂βi=0,i=1,...lα∗gi(w∗)=0,i=1,...,kgi(w∗)≤0,i=1,...,kα∗≥0,i=1,...,k

另外值得注意的条件就是,α∗gi(w∗)=0,i=1,...,k,叫做KKT dual complementary condition,它表明了如果α∗>0,那么gi(w∗)=0。后续引入到maximize marge问题中,会推导出support vector的定义。

optimal margin classifiers

这里重写margin最大化的问题:

max(γ,w,b)12||w||2 s.t. y(i)(wTx(i)+b)≥1,i=1,2,...,m
  1. support vector

通过定义gi(w)这个约束项为如下形式:

gi(w)=−y(i)(wTx(i)+b)+1≤0

这样这个问题就转变为了上面所介绍的那些预备问题了。从KKT dual complementary condition中可知,α∗>0对应训练样本中那些functional margin等于1的样本点,即使得gi(w∗)=0,这些点就叫做support vector。

2. 构造对偶问题

  • 构造Lagrangian

按照上面的介绍的Lagrangian,构造如下形式:

L(w,b,α)=12||w||2−∑i=1mαi[y(i)(wTx(i)+b)−1]
  • 构造θD

按照上面介绍的dual问题的步骤,进行构造,然后求解。对w求解偏微分,得到如下的对应的w:

w=∑i=1mαiy(i)x(i)

这个公式很重要,还记得刚才提到的support vector,实际上最后得到的w就是support vectors的样本点的线性组合。这一现象被称为∗∗表示定理∗∗。实际上知道了决策超平面w之后,很容易得到b的表达式为:

b∗=−maxi:y(i)=−1w∗Tx(i)+mini:y(i)=+1w∗Tx(i)2

实际上的含义就是当知道斜率之后,求截距b就是不断地进行平移,移动到两个样本的正中间。其实比较困难的地方时在求斜率上。

  • 对偶问题

最后推出的dual问题的形式如下:

maxα W(α)=∑i=1mαi−12∑i,j=1my(i)y(j)αiαj<x(i),x(j)>s.t. αi≥0,i=1,...,m∑i=1mαiy(i)=0

当然这样进行dual问题转化,需要先验证KKT条件,否则两者primal和dual问题的解不等,转化就没意义了。这样问题转化为了求解参数为αi的最大化问题。

到此,假设已经得到了对应的解,那么模型在进行工作时,计算wTx+b时,可以进行如下的转换:

wTx+b=(∑i+1mαiy(i)x(i))Tx+b=∑i+1mαiy(i)<x,x(i)>+b

所以,计算中只需要计算新输入的x与训练集中的x的内积就好了。还记得support vector吧,实际上只需要计算新输入x与support vcetors的内积就好了。上面的那种形式,有助于我们引出kernel trick。

Kernels核

回顾linear regression,通过features x,x2,x3...,xn来获取更加powerful的曲线。实际上是通过特征一声,将原始特征映射到高维空间,随着n的增大,模型的能力越强,复杂度越高,可以拟合的曲线也越弯曲,但是随着自由度的增加,模型很有可能overfitting。常规的方法是不可能达到无穷多维度的拟合的。特征映射记为ϕ,映射后的特征记为ϕ(x)。而kernel的定义为:对应给定的特征映射ϕ(x),K(x,z)=ϕ(x)Tϕ(z)。给定一个kernel就表达了两层信息,一是特征映射函数,二是内积。Kernel的好处是容易计算,如果对应的特征映射ϕ(x)是一个高维度的矢量,那么计算内积就比较费劲,而通常直接利用Kernel能够获得更有效率的计算。另一方面,kernel具有内积的特性,表示了经过特征转换后的特征相似度。比如:

K(x,z)=exp(−||x−z||22σ2)

当x,z距离很近时,接近为值接近为1;当x,z距离很远时,接近为值接近为0;这个Kernel叫做Gaussian kernel。定义Kernel matrix为Kij=K(xi,xj)。K得是半正定的对称矩阵。这是一个充分条件,被称为Mercer Theorem。

将Kernel应用与SVM是非常明显的,而kernel不仅仅能应用于SVM,特别地,当学习算法中需要以输入特征矢量的内积形式时,使用kernel代替将会在高维特征空间非常高效地工作。所以,称这种技能为kernel trick。


2015-8-26

艺少

Andrew Ng机器学习课程7的更多相关文章

  1. Andrew Ng机器学习课程笔记(五)之应用机器学习的建议

    Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...

  2. Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归)

    title: Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归) tags: 机器学习, 学习笔记 grammar_cjkRuby: true --- 之前看过一遍,但是总是模 ...

  3. Andrew Ng机器学习课程笔记--汇总

    笔记总结,各章节主要内容已总结在标题之中 Andrew Ng机器学习课程笔记–week1(机器学习简介&线性回归模型) Andrew Ng机器学习课程笔记--week2(多元线性回归& ...

  4. Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计

    Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7392408.h ...

  5. Andrew Ng机器学习课程笔记(四)之神经网络

    Andrew Ng机器学习课程笔记(四)之神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365730.html 前言 ...

  6. Andrew Ng机器学习课程笔记(三)之正则化

    Andrew Ng机器学习课程笔记(三)之正则化 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365475.html 前言 ...

  7. Andrew Ng机器学习课程笔记(二)之逻辑回归

    Andrew Ng机器学习课程笔记(二)之逻辑回归 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7364636.html 前言 ...

  8. Andrew Ng机器学习课程笔记(一)之线性回归

    Andrew Ng机器学习课程笔记(一)之线性回归 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7364598.html 前言 ...

  9. Andrew Ng机器学习课程6

    Andrew Ng机器学习课程6 说明 在前面尾随者台大机器学习基石课程和机器学习技法课程的设置,对机器学习所涉及到的大部分的知识有了一个较为全面的了解,可是对于没有动手敲代码并加以使用的情况,基本上 ...

  10. Andrew Ng机器学习课程10补充

    Andrew Ng机器学习课程10补充 VC dimension 讲到了如果通过最小化训练误差,使用一个具有d个参数的hypothesis class进行学习,为了学习好,一般需要参数d的线性关系个训 ...

随机推荐

  1. 洛谷 P1102 A-B数对 题解

    P1102 A-B 数对 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的 A+B Problem,改用 A-B 了哈哈! 好吧,题目是这样的:给出一串数以及一个数字 ...

  2. P1903 [国家集训队]数颜色 (带修改莫队)

    题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. 2 ...

  3. 【概率论】5-8:Beta分布(The Beta Distributions)

    title: [概率论]5-8:Beta分布(The Beta Distributions) categories: - Mathematic - Probability keywords: - Th ...

  4. 《挑战30天C++入门极限》新手入门:C++中的函数重载

        新手入门:C++中的函数重载 函数重载是用来iostream>  using namespace std;  int test(int a,int b);  float test(flo ...

  5. DM-移除几何上的洞方法二

    ​原视频下载地址:http://yunpan.cn/cujkVABuZXc9t  访问密码 ba61

  6. 单一职责原则(SRP)

    内聚性:一个模块的组成元素之间的功能相关性.就一个类而言,应该仅有一个引起它变化的原因.当需求变化时,该变化会反映为类的职责的变化,如果一个类承担了多于一个的职责,那么引起它变化的原因就会有多个.如果 ...

  7. Django 创建数据库表

    1.连接数据库之前,我们需要在setting中修改一些内容 2.Django的表是在models中创建的,一个class代表一个数据库表 abstract是为了继承,将该基类定义为抽象类,即不必生成数 ...

  8. flink 读JDQ和写JDQ的流程

    ReadFromJDQ3 1)消费JDQ的必要信息,通过参数传入,有6个参数 2)获取flink JDQ3的鉴权客户端 3)根据鉴权客户端获取消费属性的配置 4)构建应用环境ENV和checkpoin ...

  9. 关于如何重写Controller和Service技术攻关文档

    版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_39784756/articl ...

  10. Tosca IE 浏览器的Internet Options 配置, 解决login很慢的问题

    Screen 1-3 Screen 4-6 Screen 7