您的位置:首页 > 编程语言 > Go语言

闲谈:感知器学习算法(The perceptron learning algorithm)

2017-04-17 14:53 387 查看
这一节我们简单地介绍历史上的著名算法——感知器算法,这在后面的学习理论中也会有所提及。设想我们改变逻辑回归算法,“迫使”它只能输出-1或1抑或其他定值。在这种情况下,之前的逻辑函数g就会变成阈值函数sign:

sign(z)={1−1if z≥0if z<0

如果我们令假设为hθ(x)=g(θTx),将其带入之前的迭代法中:

θj:=θj+α(y(i)−hθ(x(i)))x(i)j.

至此我们就得出了感知器学习算法。在19世纪60年代,感知器被认为是大脑中神经元工作的初步模型。需要注意的是虽然感知器模型和我们之前的算法形式上很相似,但它实际上和线性回归等算法是完全不同类型的算法。尤其你很难像线性回归一样给感知器概率论上的有效阐述或极大似然估计的推导。

感知器模型的另一种阐述

数据集的线性可分性

给定一个数据集

T={(x1,y1),(x2,y2),...,(xN,yN)}

其中,xi∈X∈Rn,yi∈Y={+1,−1},i=1,2,...,N,如果存在某个超平面S

w⋅x+b=0

能够将数据集的正实例点和负实例点完全正确地划分到超平面的两侧,则称数据集T为线性可分数据集。

感知机学习策略

假设数据集是线性可分的,感知机学习的目标是求得一个能够将训练集正负实例点完全分开的超平面。为了找出这样的超平面,即确定感知机的模型参数w、b,需要定义一个损失函数(成本函数)并将损失函数极小化。

损失函数的一个自然选择是误分类点的个数。但这样的损失函数不是参数w、b的连续可到函数,不易优化。损失函数的另一个选择是误分类点到超平面的距离,这时感知机所采用的。

首先写出空间Rn中任一点x0到超平面S的距离:

1∥w∥|w⋅x0+b|

这里∥w∥是w的L2范数。对于误分类点则有:

−yi(w⋅xi+b)>0

所以误分类点到超平面的距离是

−1∥x∥yi(w⋅xi+b)

那么所有误分类点到超平面的距离为

−1∥x∥∑xi∈Myi(w⋅xi+b)

不考虑1∥x∥,就得到感知机学习的损失函数。感知机sign(w⋅x+b)学习的损失函数定义为

L(w,b)=−∑xi∈Myi(w⋅xi+b)

使用随机梯度下降法优化模型,则有:

∇wL(w,b)∇bL(w,b)=−∑xi∈Myixi=−∑xi∈Myi

没碰到一个误分类点(xi,yi),对w,b进行更新:

wb:=w+ηyixi:=b+ηyi
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息