感知机算法详解

感知机算法详解今天小编给大家带来感知机算法的详解 感知机算法由 Rosenblatt 在 1957 年提出 是一类简单的线性判别算法 通过扩展又可以与许多其他算法密切相关 如逻辑回归模型 支持向量机 前馈神经网络 多层感知机 线性判别分析等 因此感知机算法尽管很少单独使用 但它对于理解其他模型和算法非常有用 很适合作为开始机器学习的一个切入点 同时也是建立知识体系的一个枢纽 本文首先简要介绍感知机 然后讲解感知机的

今天想写一下感知机算法的详解。感知机算法由Rosenblatt在1957年提出,是一类简单的线性判别算法,通过扩展又可以与许多其他算法密切相关。如逻辑回归模型、支持向量机、前馈神经网络(多层感知机)、线性判别分析等。因此感知机算法尽管很少单独使用,但它对于理解其他模型和算法非常有用,很适合作为开始机器学习的一个切入点,同时也是建立知识体系的一个枢纽。

本文首先简要介绍感知机,然后讲解感知机的模型、策略、算法,最后分析感知机算法与各个算法之间的联系并做出总结。

感知机能做什么


图1 二维平面上的线性可分与线性不可分

为了便于应用感知机算法,我们有时会使用一些技巧,使得线性不可分的样本在某些变换下成为线性可分。这些技巧包括将样本分离到更高维空间(图2)或投影到特定的方向(图3)等,这是另一大类方法,本文主要讲解一般的感知机,此处不详细展开讨论。


感知机算法详解图2 分离到高维空间实现线性可分

感知机算法详解图3 投影特定方向实现线性可分

感知机模型

  • 定义
    设输入空间(特征空间)为 X ⊆ R n X\subseteq\R^n XRn,输出空间为 Y = { − 1 , + 1 } Y=\{-1,+1\} Y={
    1,+1}

    输入 x ∈ X x\in X xX 为实例的特征向量 输出 y ∈ Y y\in Y yY 为实例的类别
    由输入空间到输出空间的如下函数称为感知机
    f ( x ) = s i g n ( w x + b ) f(x) = sign(wx+b) f(x)=sign(wx+b)其中 w w w b b b为模型参数, w ∈ R n w\in\R^n wRn称为权值, b ∈ R b\in\R bR称为偏置。 s i g n sign sign是符号函数。



感知机模型有直观的几何解释:线性方程 w x + b = 0 wx+b=0 wx+b=0 对应于分离超平面 S S S,其中 w w w S S S的法向量, b b b S S S的截距。求解感知机,就是要解出 w w w b b b,得到能正确分离所有正负样本的超平面 S S S(见图1).

感知机策略


图4 误分类点个数不连续变化


为此感知机采用的损失函数为:误分类点到超平面 S S S的总距离,该函数对 w w w b b b连续可导。
单个点 x i x_i xi到超平面 S S S的距离为 − 1 ∥ w ∥ ∣ w x i + b ∣ -\frac{1}{\Vert w \Vert}\vert wx_i+b \vert w1wxi+b,

对于误分类点数据 ( x i , y i ) (x_i,y_i) (xi,yi),有 − y i ( w x i + b ) > 0 -y_i(wx_i+b)>0 yi(wxi+b)>0,因为 y i y_i yi w x i + b wx_i+b wxi+b 异号

设超平面 S S S的误分类集合为 M M M,则所有误分类点到超平面 S S S的总距离为 − 1 ∥ w ∥ ∑ x i ∈ M y i ( w x i + b ) -\frac{1}{\Vert w \Vert}\sum_{x_i\in M}y_i(wx_i+b) w1xiMyi(wxi+b) 不考虑式中的 − 1 ∥ w ∥ -\frac{1}{\Vert w \Vert} w1,即得到感知机学习的损失函数。

  • 损失函数
    给定训练集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),…,(x_N,y_N)\} T={
    (x1,y1),(x2,y2),...,(xN,yN)}
    ,其中 x i ∈ X = R n x_i\in X=\R^n xiX=Rn,
    y i ∈ Y = { − 1 , + 1 } , i = 1 , 2 , . . . , N y_i\in Y=\{-1,+1\},i=1,2,…,N yiY={
    1,+1},i=
    1,2,...,N
    .感知机学习的损失函数为
    L ( w , b ) = − ∑ x i ∈ M y i ( w x i + b ) L(w,b)=-\sum_{x_i\in M}y_i(wx_i+b) L(w,b)=xiMyi(wxi+b)


易知损失函数是非负的,误分类点越少,误分类点离超平面越近,损失函数值就越小。如果没有误分类点,则损失函数值时0.感知机学习的策略是在假设空间中选取使损失函数取值最小的模型参数。

感知机学习算法

原始形式

目标:感知机学习算法的原始形式是求解最优化问题 m i n w , b L ( w , b ) = − ∑ x i ∈ M y i ( w x i + b ) {min}_{w,b}L(w,b)=-\sum_{x_i\in M}y_i(wx_i+b) minw,bL(w,b)=xiMyi(wxi+b)其中 M M M为误分类点的集合。
算法:误分类驱动的随机梯度下降法首先选取初始超平面 w 0 , b 0 w_0,b_0 w0,b0,然后计算在该参数取值处的梯度,用梯度下降法不断的极小化目标函数。极小化过程中,不是一次使用 M M M中所有误分类点计算梯度,而是一次随机选取一个误分类点使其梯度下降。设误分类点集合 M M M是固定的,则损失函数的梯度为: ∇ w L ( w , b ) = − ∑ x i ∈ M y i x i \nabla_w L(w,b)=-\sum_{x_i\in M}y_ix_i wL(w,b)=xiMyixi ∇ b L ( w , b ) = − ∑ x i ∈ M y i \nabla_bL(w,b)=-\sum_{x_i\in M}y_i bL(w,b)=xiMyi由于采用随机梯度下降,一次随机选取一个误分类点 ( x i , y i ) (x_i,y_i) (xi,yi), w , b w,b w,b的更新公式为: w ← w + η y i x i , b ← b + η y i w\leftarrow w+\eta y_ix_i, b\leftarrow b+\eta y_i ww+ηyixi,bb+ηyi式中 η ( 0 ≤ η ≤ 1 ) \eta(0\leq\eta\leq1) η0η1称为学习率。整理称为算法形式如下:

  • 算法1
    输入:线性可分的训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),…,(x_N,y_N)\} T={
    (x1,y1),(x2,y2),...,(xN,yN)}
    ,
    其中 x i ∈ X = R n x_i\in X=\R^n xiX=Rn, y i ∈ Y = { − 1 , + 1 } , i = 1 , 2 , . . . , N y_i\in Y=\{-1,+1\},i=1,2,…,N yiY={
    1,+1},i=
    1,2,...,N
    . 学习率 η ( 0 ≤ η ≤ 1 ) \eta(0\leq\eta\leq1) η0η1
    输出:参数 w , b w,b w,b,感知机模型 f ( x ) = s i g n ( w x + b ) f(x)=sign(wx+b) f(x)=sign(wx+b)
    (1)选取初值 w 0 , b 0 w_0,b_0 w0b0
    (2)在训练集中选取数据 ( x i , y i ) (x_i,y_i) (xi,yi)
    (3)如果 y i ( w x i + b ) ≤ 0 y_i(wx_i+b)\leq0 yi(wxi+b)0 w ← w + η y i x i , b ← b + η y i w\leftarrow w+\eta y_ix_i, b\leftarrow b+\eta y_i ww+ηyixi,bb+ηyi
    (4)转至(2),直至训练集中没有误分类点。
    每次根据 ( x i , y i ) (x_i,y_i) (xi,yi)调整 w , b w,b w,b时,分离超平面将向该误分类点移动,以减少该误分类点与超平面的距离,越过该误分类点使其正确分类。







感知机学习算法的收敛性有定理保证,这里不再详细阐述,有兴趣的读者可以查阅相关资料。

对偶形式

感知机学习算法的原始形式是每一步直接更新参数 w , b w,b w,b,经过n步达到收敛。对偶形式的基本想法是,将 w w w b b b表示为实例 x i x_i xi和标记 y i y_i yi的线性组合的形式,通过求解其系数而求得 w w w b b b.假设初值 w 0 , b 0 w_0,b_0 w0,b0均为0,对误分类点 ( x i , y i ) (x_i,y_i) (xi,yi)通过 w ← w + η y i x i w\leftarrow w+\eta y_ix_i ww+ηyixi b ← b + η y i b\leftarrow b+\eta y_i bb+ηyi逐步修改 w , b w,b w,b,设收敛过程中,第 i i i个点共修改了 n i n_i ni次,则 w , b w,b w,b关于 ( x i , y i ) (x_i,y_i) (xi,yi)的增量分别是 α i y i x i \alpha_i y_ix_i αiyixi α i y i \alpha_iy_i αiyi,其中 α i = n i η \alpha_i=n_i\eta αi=niη.对N个样本点上 w , b w,b w,b的增量求和,有 w = ∑ i = 1 N α i y i x i w=\sum_{i=1}^N\alpha_iy_ix_i w=i=1Nαiyixi b = ∑ i = 1 N α i y i b=\sum_{i=1}^N\alpha_iy_i b=i=1Nαiyi从而感知机可以写成由系数 α i , b \alpha_i,b αi,b表示的形式 f ( x ) = s i g n ( ∑ j = 1 N α j y j x j ⋅ x + b ) f(x)=sign(\sum_{j=1}^N\alpha_jy_jx_j\cdot x+b) f(x)=sign(j=1Nαjyjxjx+b),上述过程整理为算法2.

  • 算法2
    输入:线性可分的训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),…,(x_N,y_N)\} T={
    (x1,y1),(x2,y2),...,(xN,yN)}
    ,其中 x i ∈ X = R n x_i\in X=\R^n xiX=Rn, y i ∈ Y = { − 1 , + 1 } , i = 1 , 2 , . . . , N y_i\in Y=\{-1,+1\},i=1,2,…,N yiY={
    1,+1},i=
    1,2,...,N
    . 学习率 η ( 0 ≤ η ≤ 1 ) \eta(0\leq\eta\leq1) η0η1
    输出:参数 α , b \alpha,b α,b,感知机模型 f ( x ) = s i g n ( ∑ j = 1 N α j y j x j ⋅ x + b ) f(x)=sign(\sum_{j=1}^N\alpha_jy_jx_j\cdot x+b) f(x)=sign(j=1Nαjyjxjx+b),其中 α = ( α 1 , α 2 , . . . , α N ) T \alpha=(\alpha_1,\alpha_2,…,\alpha_N)^T α=(α1,α2,...,αN)T
    (1)取初值 α ← 0 , b ← 0 \alpha \leftarrow0,b\leftarrow0 α0,b0
    (2)在训练集中选取数据 ( x i , y i ) (x_i,y_i) (xi,yi)
    (3)如果 y i ( ∑ j = 1 N α j y j x j ⋅ x i + b ) ≤ 0 y_i(\sum_{j=1}^N\alpha_jy_jx_j\cdot x_i+b)\leq0 yi(j=1Nαjyjxjxi+b)0 α i ← α i + η \alpha_i\leftarrow\alpha_i+\eta αiαi+η b ← b + η y i b\leftarrow b +\eta y_i bb+ηyi
    (4)转至(2)中直到没有误分类数据。





对偶形式算法的特点是, α i \alpha_i αi每步更新差值固定, α i \alpha_i αi越大更新次数越多,意味着 ( x i , y i ) (x_i,y_i) (xi,yi)离分离超平面越近,对学习结果的影响也最大。
对偶形式中训练实例仅以内积形式出现,可以预先将实例间的内积计算出来并存储为矩阵,即Gram矩阵。 G = [ x i ⋅ x j ] N × N G=[x_i\cdot x_j]_{N\times N} G=[xixj]N×NGram矩阵是 N × N N\times N N×N的对称矩阵

感知机与其他算法

  • 感知机只能处理线性可分的数据集,线性不可分的数据集会引起分离超平面的震荡而无法收敛。
  • 感知机是误分类驱动的模型,模型的解不唯一。离群点对结果影响很大。
  • 感知机的判别模型由符号函数给出,无法表示更复杂的非线性映射。

为解决以上的局限性,其他算法从不同方向对感知机模型进行了扩展。

感知机与支持向量机

  • 相同点
    感知机与支持向量机都是求解能正确划分样例的超平面
  • 不同点
    感知机是误分类驱动的,其损失函数来源于误分类点到分离超平面的距离之和。数据集线性可分时,能正确划分样例的超平面有无穷多个。
    支持向量机不仅要求正确划分正负样例,还要求正负样例间隔最大,在最大间隔约束下,划分超平面(的法向量)有唯一解。



    感知机算法详解图5 感知机

    感知机算法详解图6 支持向量机

感知机优化目标: m i n w , b L ( w , b ) = − ∑ x i ∈ M y i ( w x i + b ) {min}_{w,b}L(w,b)=-\sum_{x_i\in M}y_i(wx_i+b) minw,bL(w,b)=xiMyi(wxi+b) 支持向量机优化目标: m a x w , b d {max}_{w,b} d maxw,bd

感知机与逻辑回归

感知机与逻辑回归都是判别模型,都是对线性运算的结果进行判别,区别是采用了不同判别方式。

  • 感知机用符号函数进行判别: w ⋅ x + b → f ( x ) = s i g n ( w ⋅ x + b ) w\cdot x+b \rightarrow f(x)=sign(w\cdot x+b) wx+bf(x)=sign(wx+b)
  • 逻辑回归用对数几率进行判别: w ⋅ x + b = l o g p 1 − p → p = 1 1 + e − ( w ⋅ x + b ) w\cdot x+b=log \frac{p}{1-p}\rightarrow p=\frac{1}{1+e^{-(w\cdot x+b)}} wx+b=log1ppp=1+e(wx+b)1
    如果把神经元看成是对线性输入做非线性变换并输出的算法部件,则感知机和逻辑回归可以看成是两种不同的神经元,即采用了不同的非线性变换。

感知机与神经网络

当把感知机看成单个神经元时,该神经元的堆叠就形成了神经网络。最常用的前馈神经网络就是感知机分层堆叠而形成的,也叫多层感知机MLP.感知机的激活函数是阶跃函数(符号函数): f ( x ) = s i g n ( x ) = { 1 , x > 0 − 1 , x ≤ 0 f(x)=sign(x)=\begin{cases}1, x>0\\-1,x\leq0\end{cases} f(x)=sign(x)={
1,x>01,x0

目前常用神经网络的激活函数是线性整流函数(ReLU): f ( x ) = R e L U ( x ) = { x , x > 0 − 1 , x ≤ 0 f(x)=ReLU(x)=\begin{cases}x, x>0\\-1,x\leq0\end{cases} f(x)=ReLU(x)={
x,x>01,x0

感知机算法详解图7 感知机
感知机算法详解图8 MLP(图中每个神经元相当于一个感知机)

关于感知机算法的理论部分小编就介绍这么多,它的实现可以使用常用机器学习开源库sklearn中的模块MLPClassifier来完成。感兴趣的读者不妨去试试哦。



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

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

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


相关推荐

  • 学校老师要求微信群里的家长下载钉钉建群,解散微信群,钉钉是不正当商业竞争吗?「建议收藏」

    学校老师要求微信群里的家长下载钉钉建群,解散微信群,钉钉是不正当商业竞争吗?「建议收藏」仅仅只是一个学校里面在推广使用钉钉软件建群,不再使用微信群。就可以涉及不正当的商业竞争,我想这也未免太夸大其词了。学校使用什么样的软件来帮助老师管理学生管理学校,同时软件又是免费的,何来不正当竞争之说?反过来说如果学校还在使用微信群,那么是不是微信又涉及到不正当的商业竞争呢?所以不论是钉钉还是微信,都只是方便家校沟通的一种软件,只要不牵扯到经济利益,就不存在任何的不正当竞争。微信群为什么越来越不适合作为家校沟通的渠道在当今的移动互联网时代,学校的班级管理同样需要借助于互联网的先进技术,但是就我们

    2022年5月19日
    95
  • OpenCv结构和内容

    OpenCv的结构和内容OpenCv源码组成结构其中包括cv,cvauex,cxcore,highgui,ml这5个模块CV:图像处理和视觉算法MLL:统计分类器HighGui:GUI

    2021年12月18日
    67
  • 阿里的笔试题_阿里测试面试题

    阿里的笔试题_阿里测试面试题http://gointernetgo.com/text/bishi-2015-alibba大家可以去下载哦

    2025年9月3日
    10
  • 什么是字节码指令?[通俗易懂]

    什么是字节码指令?[通俗易懂]字节码指令简介: Java虚拟机的指令由一个字节长度的、代表着某种特定含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构成。由于Java虚拟机采用面向操作数栈而不是寄存器的架构,所以大多数的指令都不包含操作数,只有一个操作码。由于限制了Java虚拟机操作码的长度为一个字节,所以指令集的操作码总数不可能超过256条。字节码与数据…

    2022年10月7日
    3
  • hashmap数组什么时候扩容_hashmap是数组还是链表

    hashmap数组什么时候扩容_hashmap是数组还是链表为什么需要扩容?因为HashMap为了节省创建出的对象的内存占用,一开始只默认分配:staticfinalintDEFAULT_INITIAL_CAPACITY=1<<4;也就是默认的数组大小是16个,而在HashMap的源码中可以发现HashMap扩容方法如下,就是说当HashMap里存储元素的个数大于threshold(capacity*loadFactor时,会进行扩容,…

    2025年12月11日
    4
  • 墨语灵犀从零开始:Hunyuan-MT轻量化部署+冷金笺UI定制教程

    墨语灵犀从零开始:Hunyuan-MT轻量化部署+冷金笺UI定制教程

    2026年3月13日
    4

发表回复

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

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