回顾

通过定义训练集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. C语言中一个字符对应一个ascii码;占一个1个字节8个二进制位;存到内存中也是用ascii的十进制的二进制表示

    /** 只读变量和常量 const 只读 const int a; int const a;//同上面的代码行是等价的,都表示一个常整形数. int *const a;//const具有"左 ...

  2. fft相关的复习

    任意长度卷积 CZT 就是一波推导 \[ \begin{aligned} b_i &= \sum_{j=0}^{n-1} \omega^{ij}a_j \\ &= \sum_{j=0} ...

  3. python 格式化输出之%号

    一.格式化输出1.整数的输出%o —— oct 八进制%d —— dec 十进制%x —— hex 十六进制 1 >>> print('%o' % 20) 2 24 3 >&g ...

  4. 课标2-2-1-3 :MMU配置与使用

    void create_page_table(void){ unsigned long *ttb = (unsigned long *)0x20000000; unsigned long vaddr, ...

  5. AtCoder Grand Contest 013题解

    传送门 \(A\) 先把相同的缩一起,然后贪心就可以了 //quming #include<bits/stdc++.h> #define R register #define fp(i,a ...

  6. VMware安装VMwaretools

    默认点击“安装VMware Tools(T)”选项下载好安装包 下载的安装包放在计算机的media目录下 进入/media/ubuntu14-04/VMware Tools目录: cd /media/ ...

  7. ubuntu 14.04 系统配置磁盘,CPU,内存,硬盘信息查看

    Linux查看物理CPU个数.核数.逻辑CPU个数# 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 查看分区磁盘 ...

  8. 第02组 Alpha冲刺(2/6)

    队名:無駄無駄 组长博客 作业博客 组员情况 张越洋 过去两天完成了哪些任务 任务分配.进度监督 提交记录(全组共用) 接下来的计划 沟通前后端成员,监督.提醒他们尽快完成各自的进度 还剩下哪些任务 ...

  9. 并发用户 VS TPS

    TPS模式(吞吐量模式)是一种更好的方式衡量服务端系统的能力. 基本概念: 并发用户数:简称VU ,指的是现实系统中操作业务的用户,在性能测试工具中,一般称为虚拟用户数(Virutal User),注 ...

  10. 聊聊SSH框架

    目录 前期准备工作 jrebel(热加载,后台会自动帮忙部署项目) lombok(根据字段,自动生成对应的set和get方法) log4j(日志打印) 所需jar包 log4j2.xml log4j. ...