来自:http://blog.csdn.net/wasd6081058/article/details/7886697
线性学习器-----最小二乘法 Rosenblatt感知机 delta法则
引言
在分类问题中我们通常会用一个实值函数 F(x) 按照这种方式操作:当 F(x) > 0,测试用例x= (x1,x2,...,xn)' ,被划分为正类,否则赋给负类。若 F(x) 与 x 为线性关系,则可称F(x) 为线性函数,如:
其中 w 为权重向量,而 b 为偏执向量,学习器的任务就是学习这两个向量的值以确定一个最好的超平面将训练集划分出来,如图所示:
本文将介绍三种最著名的算法以及它们之间的不同和联系,本文若有任何纰漏还请各位看官指出,小生将不胜感谢.....
Rosenblatt感知机
感知器
感知器是一种神经网络的基本单元,它是一个二元分类器,即对于 f(x)
这里要注意感知器的表达能力是很有线的,它可以表示所有的原子布尔函数:与,或,
与非,或非,但有些布尔函数却无法用单一的感知器来表达,如异或函数,所以在神
经网络中往往用多层感知器。
(我们无法用一条直线将划分0和1)
Rosenblatt 算法
线性分类器的第一个迭代器学习算法是Fank Rosenblatt在1965年为感知机提出的,
这个算法提出以后受到了很大的关注,下面我们看一下Rosenblatt算法最原始的形式
算法思想就是对所有的样例,若有样例被误分,那么就会自动的调整权值向量和偏置
向量,它会怎么调整呢?
对与输入中xi对应的权值wi,
wi <---- wi + *wi
*wi = a( t - 0 ) xi
t代表当前样例x的目标输出,o代表感知器的输出,a是一个常数,成为学习速率,现
在各位看官可能有个小疑问,这么简单的一个式子怎么就可以训练出正确的权值呢?
为了有一个直观的理解,我举一个例子,若感知器正确分类,则 t - o为零,权值wi不
会调整;若目标输出为+1,而感知器输出为-1,也就是感知器低估了目标输出,此时
t - 0为 2,那么wi会增加 ; 反过来,若目标输出t为-1,感知器输出为+1,感知器高估
了目标的输出,此时t - o = -2,相应的wi就会减少。这样,通过有限次的使用感知器训
练法则,我们的权值向量就会收敛到一个能正确分类的权向量了,当然这个学习速度a
也要够小。
Rosenblatt 算法的不足之处在于它只能对线性的数据进行划分,当数据不是线性可分的
时候,它就不能保证训练过程的收敛。
梯度下降和delta法则
为了克服上面感知器算法的不足,人们有找到了delta训练法则来收敛到目标概念的最佳
近似。
delta法则的 F(n) 不在是一个布尔函数了(即只能取1和-1)
这样delta法则就是在一个连续的空间中去找一个训练模型使得训练误差最小,其中训练
误差可以用下面的标准来衡量:
E(w) = 1/2∑(t - o)^2 (t为样例的目标输出,0为训练器的输出)
现在问题就变成了找到合适的权值向量W使得上面的式子最小,为了有一个直观的理解,
假设有两个权值w0,w1,我们现在就是要在下图中找到最小的那个点
大家想一想,我们在高中时候求一个抛物线的最小值会怎么求呢?
求导!!有木有!!
在这里也是这样,在这里我们会用梯度下降原则,E(w) 是关于w的二次函数,我们分别
对wo,w1求偏导,然后找到下降最快的地方找到最低点。
wi <---- wi + *wi
*wi = a∑(t - 0)xi
这里是梯度下降的算法:
通过对比可以发现Rosenblatt 算法 和delta法则两者算法的过程都是一样的,二者的有
两点不同点:
1. 目标函数F(n),Rosenblatt 算法是离散的(也称为阀值化),而delta则是基于连续的空间。
2.权值的调整*wi,delta会统计出所有样例的误差之和(delta还有一个随机近似算法,*wi和
Rosenblatt 算法 是一样的)