感知机模型

感知机模型感知机模型本内容为 统计学习方法 学习笔记 会不定时更新 感知机模型是一个非常简单的线性机器学习分类器 其定义为 不过其有一个非常苛刻的前提 输入样本需要满足线性可分 亦即非线性可分的样本无法实现感知机分类任务 给定一组样本 T x1 y1 xN yN T x 1 y 1 x N y N T x1 y1 xN yN

感知机模型

本内容为《统计学习方法》学习笔记,会不定时更新


1、感知机学习策略

  统计学习方法的策略即寻找一个损失函数进行建模。因为感知机的目标是将给定的样本划分为两个类,因此可以使用每个样本到超平面的距离作为度量标准。如果给定一个样本点 x i = ( x i ( 1 ) , x i ( 2 ) , . . . ) x_i=(x_i^{(1)},x_i^{(2)},…) xi=(xi(1),xi(2),...),距离函数定义为 1 ∣ ∣ w ∣ ∣ ∣ w x i + b ∣ \frac{1}{||w||}|wx_i+b| w1wxi+b
  如果假设样本被错误分类,可知感知机 f ( x i ) f(x_i) f(xi)与实际类 y i ∈ { − 1 , + 1 } y_i\in\{-1,+1\} yi{
1,+1}
的值恰好相反,即 − y i f ( x i ) = 1 -y_if(x_i)=1 yif(xi)=1,如果去掉符号函数来定量的描述错误样本与超平面的距离,则有 − y i ( w x i + b ) > 0 -y_i(wx_i+b)>0 yi(wxi+b)>0。事实上,如果样本被正确的分类,我们大可不必要去度量它与超平面距离,所以感知机分类时,我们只关心那些错误分类的样本。自然,在初始化某一个 w 0 , b 0 w_0,b_0 w0,b0时,感知机模型即可判断有多少样本点被错误分类,这些样本组成一个动态的集合 M M M。经验损失函数则为:

L = − 1 ∣ ∣ w ∣ ∣ ∑ x i ∈ M y i ( w x i + b ) L = -\frac{1}{||w||}\sum_{x_i\in M}y_i(wx_i+b) L=w1xiMyi(wxi+b)

其中 ∣ ∣ w ∣ ∣ ||w|| w是二范式,一般来说,损失函数可去掉这个二范式,即 L = − ∑ x i ∈ M y i ( w x i + b ) L = -\sum_{x_i\in M}y_i(wx_i+b) L=xiMyi(wxi+b)

2、感知机算法

  感知机算法的目标就是最小化损失函数,每一次迭代过程中,更新被误分类的样本集合 M M M,采用随机梯度下降法,每次从集合中挑选一个样本来进行参数更新。算法为:

在这里插入图片描述
  因为对于所有误分类的样本,损失函数是一个大于0的连续函数,即具有可微可导性质。对某一个样本产生的损失函数 L = − y i ( w x i + b ) L=-y_i(wx_i+b) L=yi(wxi+b)对参数 w , b w,b w,b分别求导:

∂ L ∂ w = − y i x i \frac{\partial L}{\partial w} = -y_ix_i wL=yixi

∂ L ∂ b = − y i \frac{\partial L}{\partial b} = -y_i bL=yi

因此梯度下降更新公式 w = w − η Δ w = w + η y i x i w=w-\eta\Delta w=w+\eta y_ix_i w=wηΔw=w+ηyixi b = b − η Δ b = w + η y i b=b-\eta\Delta b=w+\eta y_i b=bηΔb=w+ηyi。由算法可知,当集合 M M M为空时,算法结束。

  另外感知机的对偶形式如下所示:

在这里插入图片描述
  另外,感知机是否可以来表示异或问题呢?先考虑一下异或关系:对于一个二元数 a , b a,b a,b,如果 a = 1 , b = 1 a=1,b=1 a=1,b=1,则异或的结果为0,如果 a = 1 , b = 0 a=1,b=0 a=1,b=0则异或的结果为1,因此以二元 ( 0 , 0 ) , ( 0 , 1 ) , ( 1 , 0 ) , ( 1 , 1 ) (0,0),(0,1),(1,0),(1,1) (0,0),(0,1),(1,0),(1,1)为例,其异或分别为0,1,1,0,可发现这四个点并不是线性可分的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176608.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午9:30
下一篇 2026年3月26日 下午9:30


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号