Coursera机器学习基石 第2讲:感知器
来源:互联网 发布:网络拒绝接入怎么解决 编辑:程序博客网 时间:2024/06/07 11:47
转自:http://www.cnblogs.com/wacc/p/3848418.html
第一讲中我们学习了一个机器学习系统的完整框架,包含以下3部分:训练集、假设集、学习算法
一个机器学习系统的工作原理是:学习算法根据训练集,从假设集合H中选择一个最好的假设g,使得g与目标函数f尽可能低接近。H称为假设空间,是由一个学习模型的参数决定的假设构成的一个空间。而我们这周就要学习一个特定的H——感知器模型。
感知器模型在神经网络发展历史中占有特殊地位,并且是第一个具有完整算法描述的神经网络学习算法(称为感知器学习算法:PLA)。这个算法是由一位心理学家Rosenblatt在1958年提出来的,因此它也叫做Rosenblatt感知器。感知器是用于线性可分模式分类的最简单的神经网络模型,它由一个具有可调突触权值和偏置的神经元组成。用于调节神经网络中参数的算法最早出现在Rosenblatt(1958,1962)提出的用于其脑感知模型的一个学习过程中(即PLA)。Rosenblatt证明了当输入数据的模式是线性可分的时候,感知器学习算法能够在有限步迭代后收敛,并且决策面是位于两类之间的超平面。算法的收敛性证明被称为感知器收敛定理。那么首先介绍一下什么是感知器。
下图是一个感知器的示意图:
(图摘自Neural Networks and Learning Machines,3rd Edition)
一个感知器由三个部分组成:
1)突触权值(即图中的
2)求和单元,用突触权值对输入进行加权并加上偏置,得到诱导局部域(v)
3)激活函数(即图中的hard limiter)用于限制诱导局部域输出的振幅,在感知器中,使用符号函数来限制输出(当v>0时输出为1,反之为-1)
以上神经元称为McCulloch-Pitts模型,可以用两条数学公式概括:
关于偏置的作用,直观上可以这样理解,当
我们可以把偏置
感知器模型实际上定义了一组超平面
其中sign是符号函数,当括号里的项大于时,输出为+1;小(等)于0时,输出为-1.给定一个训练数据集
下图是一个二维的超平面
上图中,点x到超平面的距离是
推导过程:
由图中的关系有:
因为
于是有
距离为
直观上来理解,误分类点离超平面越远,我们就需要花越多的代价将
其中
我们求
这里,因为一次更新采用所有样本太费时,我们一次从分错的样本中随机挑选出一个来更新,此方法称为随机梯度下降算法。对应w,b的更新式为
式中
为了方便后面的推导,把
这个更新式就是感知器学习算法PLA的核心。
下面是PLA算法的完整描述:
输入:训练集T,学习率
输出:w,b;感知器模型
过程:
(1)初始化
(2)选取数据
(3)如果
(4)跳至(2),直至训练集中没有误分类点
注意到,误分类点有这样一个性质:
设最终收敛的权重向量是
这个算法看起来很简洁,有人会问,这么简单的算法真的起作用吗,能收敛吗? 答案是肯定的。也就是说,可以证明算法一定能收敛,并且可以求出收敛次数的上限。
假设第t次迭代时w的值为
(1)
(2)
证明过程:
首先考察
另一方面,
因此,
由此我们可以知道
注意:不要认为
线性可分告诉我们
总结一下PLA算法:
优点:易于实现,效率高, 对于任意维度都适用
缺点:
(1)事先不知道数据是否线性可分,需要找到一个
(2)即使知道数据是线性可分的,我们也无法知道算法什么时候能停下来,因为我们不知道
线性可分是一种比较理想的情况,真实世界中这样的数据并不多见。一方面现实中的数据维度一般都远大于二维,维数越多,数据的分布就越复杂,线性可分的可能性就越小;另一方面,即使target function是线性的,由于数据采集过程中的噪声导致的非线性也是非常有可能的。这样一来,感知器模型就无法广泛地应用了,于是有人提出了能够应用于非线性可分数据的感知器:Pocket PLA。它是一类贪心算法,先在“口袋”里保存一条最好的线
pocket算法比PLA慢,这是因为要比较两条线哪条更好,需要遍历所有数据,计算两条线各自犯的错误是多少。
- Coursera机器学习基石 第2讲:感知器
- 《机器学习基石》第2讲 学习笔记
- 《机器学习基石》第5讲 学习记录
- 《机器学习基石》 第7讲 学习笔记
- 听课笔记(第一讲):台湾国立大学的《机器学习基石》(Coursera 版)
- 机器学习基石——第15-16讲.Validation
- 听课笔记(第二讲): Perceptron-感知机 (台湾国立大学机器学习基石)
- 听课笔记(第二讲): Perceptron-感知机 (台湾国立大学机器学习基石)
- 机器学习基石——第1-2讲.The Learning Problem
- 机器学习基石笔记-感知机
- NTU-Coursera机器学习:机器学习基石 (Machine Learning Foundations)
- 机器学习基石第九讲:linear regression
- 机器学习基石第一讲:PLA
- 《机器学习基石》笔记:第一讲
- 《机器学习基石》笔记:第二讲
- 《机器学习基石》笔记:第三讲
- 机器学习基石-林轩田 第五讲笔记
- 机器学习基石(2)
- 六种主流编程语言(C、C++、Python、JavaScript、PHP、Java)特性对比
- Android的Fragment
- Android平台Log输出规范
- Android的Intent&IntentFilter Intent属性及Intent-filter配置
- Android的应用资源
- Coursera机器学习基石 第2讲:感知器
- json转java对象
- iOS开发之打包上传到App Store——(二)开发/发布流程
- Android的图形与图像处理之一 使用简单图片&绘图
- 蛇形填数(矩阵)
- HDOJ-1787-GCD Again 解题报告
- Android的图形与图像处理之二 图形特效处理
- WebService之WSDL和SOAP实例(基于JAVA)
- Android的图形与图像处理之三 逐帧动画(Frame)