感知机

来源:互联网 发布:二叉树的遍历算法三种 编辑:程序博客网 时间:2024/05/01 08:22

感知机模型:
1 判别模型,
2 旨在学习出一个线性划分的超平面

输入 T= {(x1,y1),(x2,y2)……(xN,yN)}xi 是一n维的特征向量,yi属于{+1,-1}。
通俗来讲就是。(假设T是线性可分的)

输出 函数f(x) = sign(w·x + b)

sign表示符号函数。是一n维的向量。
(w,b)可以确定一个超平面。

首先,我们要使用梯度下降来求解。就得确定损失函数。

分类错误的情况 下

yi(wxi+b)<0

定义M是被(w,b)确定的超平面分错的点。那么

Lossw,b=i=1Myi(wxi+b)

至于为什么这么定义。是因为这么定义方便求导,当然你也可以定义其他类型的loss function。

ΔwLossw,b=i=1Myixi

ΔbLossw,b=i=1Myi

采用随机梯度下降。

w=w+βyixi

b=b+βyi

β是学习率

当然你也可以用批梯度下降,也就是一次性把所有误分类点的梯度累加,不过效果和效率应该还是SGD比较好。

学习过程:
(1)选取初始值w0 ,b0
(2)在训练集合中选取一个数据(xi,yi)
(3)如果yi(w·xi +b)<0

w=w+βyixi

b=b+βyi

算法的直观解释,当一个实例点被误分类时,即位于分类超平面的错误一侧的时候,调整w,b使分离超平面,向该误分类点一侧移动,以减少距离,知道越过这个点,使其被正确分类为止。

接下来说说对偶问题。这个很重要,对以后学习SVM也很有帮助。

对偶算法的基本思想是,将w,b表示为实例xi和标记yi的线性组合的形式,通过求解其系数而求得w和b。由上面的公式可知,w,b初始都为0,而他两又是由下面公式一步一步迭代出来的。

w=w+βyixi

b=b+βyi

所以  wb可以写成下面的形式

w=i=1Nαiyixi

b=i=1Nαiyi

αi=niβ 表示在i这个分类点 修改过ni次。也就是把超平面移动过ni次才使得i这个点被分对。

由此代入原公式。
要求的公式为,我们只需要求出 α,b即可
f(x)=sign(Ni=1αiyixix+b) (1)
所以迭代过程就变为了

αi=αi+β
b=b+β

这个地方我刚开始有点迷惑,当我把公式(1)对 αi,b求导时,并不能得到上面的结果。后面才发现,这里不能对这两个参数求导,只需要把

w=i=1Nαiyixi

b=i=1Nαiyi

代入到
w=w+βyixi

b=b+βyi

代入前面的迭代过程即可。
转化为对偶问题的好处:
转换为内积形式。需要多次计算xi · xj 所以可以预先计算并保存结果,提高效率。
原创粉丝点击