Andrew Ng机器学习课程7

回顾

通过定义训练集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

艺少

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 16:00:12

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

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

Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.html 前言 学习了Andrew Ng课程,开始写了一些笔记,现在写完第5章了,先把这5章的内容放在博客中,后面的内容会陆续更新! 这篇博客主要记录了Andrew Ng课程第五章应用机器学习的建议,主要介绍了在测试新数据出现较大误差该怎么处理,这期间讲到了数据集的分类,偏差,方差,学习曲线等概念,帮

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

Andrew Ng机器学习课程笔记(二)之逻辑回归 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7364598.html 前言 学习了Andrew Ng课程,开始写了一些笔记,现在写完第5章了,先把这5章的内容放在博客中,后面的内容会陆续更新! 这篇博客主要记录了Andrew Ng课程第二章逻辑回归的笔记,主要介绍了梯度下降法,逻辑回归的损失函数,多类别分类等等 简要介绍:逻辑回归算法是分类算法,我们将它作为分类算法使用.

Andrew Ng机器学习课程10补充

Andrew Ng机器学习课程10补充 VC dimension 讲到了如果通过最小化训练误差,使用一个具有d个参数的hypothesis class进行学习,为了学习好,一般需要参数d的线性关系个训练样本.到这里需要指出一点,这个结果是基于empirical risk minimization得到的,而对于那些大部分的discriminative的学习算法采用的通过最小化training error或者training error的近似值,前面推导的结论并不总是可以用,而对于non_ERM 学

Andrew Ng机器学习课程17(2)

Andrew Ng机器学习课程17(2) 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:主要介绍了利用value iteration和policy iteration两种迭代算法求解MDP问题,还介绍了在实际应用中如何通过积累"经验"更新对转移概率和reward的估计的学习模型,并结合两种迭代算法进行求解的完整过程. 2015-10-11 艺少 版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/lg1

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

Andrew Ng机器学习课程笔记(四)之神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365730.html 前言 学习了Andrew Ng课程,开始写了一些笔记,现在写完第5章了,先把这5章的内容放在博客中,后面的内容会陆续更新! 这篇博客主要记录Andrew Ng课程第四章和第五章的神经网络,主要介绍前向传播算法,反向传播算法,神经网络的多类分类,梯度校验,参数随机初始化,参数的更新等等 1.神经网络概述

Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 2)及总结

Exercise 1:Linear Regression---实现一个线性回归 关于如何实现一个线性回归,请参考:http://www.cnblogs.com/hapjin/p/6079012.html Exercise 2:Logistic Regression---实现一个逻辑回归 问题描述:用逻辑回归根据学生的考试成绩来判断该学生是否可以入学. 这里的训练数据(training instance)是学生的两次考试成绩,以及TA是否能够入学的决定(y=0表示成绩不合格,不予录取:y=1表示录

Andrew Ng 机器学习课程笔记 ———— 通过初步的神经网络实现手写数字的识别(尽力去向量化实现)

上一篇我总结了自己在学完逻辑回归后,实现了对手写数字的初步识别 , 在学完了Andrew教授的神经网络简易教程后,趁着知识刚学完没多久,记下了自己在运用简易神经网络实现手写数字识别过程中的总结和问题 ^_^  菜鸡QP的第二篇学习笔记 ~ 错误在所难免 ,希望自己可以通过一篇篇菜鸡的笔记心得 ,取得一点点的进步 ~\(≧▽≦)/~    ) 依旧是给定 5000个20 * 20像素点的手写数字图片 ,与前几天自己完成的逻辑回归完成任务不同 ,这次自己终于要用到极富魅力的神经网络啦(虽然只是最基础

Stanford coursera Andrew Ng 机器学习课程第二周总结(附Exercise 1)

Exercise 1:Linear Regression---实现一个线性回归 重要公式 1.h(θ)函数 2.J(θ)函数 思考一下,在matlab里面怎么表达?如下: 原理如下:(如果你懂了这道作业题,上面的也就懂了) 下面通过图形方式感受一下代价函数 : 3.θ迭代过程(梯度下降) First way:批梯度下降:(编程作业使用这个公式,sum转换同理J(θ)) Second way:随机梯度下降: 好比我们下山,每次在一点环顾四周,往最陡峭的路向下走,用图形的方式更形象的表示 : 4.θ

Stanford coursera Andrew Ng 机器学习课程第四周总结(附Exercise 3)

Introduction Neural NetWork的由来 先考虑一个非线性分类,当特征数很少时,逻辑回归就可以完成了,但是当特征数变大时,高阶项将呈指数性增长,复杂度可想而知.如下图:对房屋进行高低档的分类,当特征值只有x1,x2,x3时,我们可以对它进行处理,分类.但是当特征数增长为x1,x2....x100时,分类器的效率就会很低了. Neural NetWork模型 该图是最简单的神经网络,共有3层,输入层Layer1:隐藏层Layer2:输出层Layer3,每层都有多个激励函数ai(