感知机原理小结

感知机原理小结  感知机由Rosenblatt于1957年提出,是神经网络和支持向量机的基础。这里先简单介绍一下什么是感知机。本篇博客为《统计学方法》第二章和博客《感知机原理小结》的总结。感知机模型  感知机是二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,分别取+1+1+1和−1−1-1二值。感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型。这还是很…


Jetbrains全系列IDE稳定放心使用

  感知机由Rosenblatt于1957年提出,是神经网络和支持向量机的基础。这里先简单介绍一下什么是感知机。本篇博客为《统计学方法》第二章和博客《感知机原理小结》的总结。

感知机模型

  感知机是二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,分别取 +1 + 1 和 −1 − 1 二值。感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型。这还是很容易理解的,以二维平面为例,假设平面中存在着 ′∘′ ′ ∘ ′ 和 ′×′ ′ × ′ 两种形状的点,感知机要做的是就是找到一条直线,将两类点分割开,如下图所示。这里要注意的是,感知机只适合于线性可分的数据,所以它是一个线性模型。

感知机原理小结

  假设现在我们训练集有 m m 个样本,每个样本对应于
n

n
维特征和一个二元类别输出:

x(i)=(x(i)1,x(i)2,…,x(i)n),y(i)∈[−1,+1] (i=1,2,…,m) x ( i ) = ( x 1 ( i ) , x 2 ( i ) , … , x n ( i ) ) , y ( i ) ∈ [ − 1 , + 1 ]   ( i = 1 , 2 , … , m )

我们现在的目标就是找到一个超平面

S S
(为了表达简洁,后面都用向量形式了):


w⋅x+b=0

w ⋅ x + b = 0

其中

w w
是超平面的法向量,


b

b

是超平面的截距,这个超平面将特征空间划分为两个部分:

  对于

y(i)=−1 y ( i ) = − 1
的样本,

w⋅x(i)+b<0 w ⋅ x ( i ) + b < 0
;

  对于

y(i)=+1 y ( i ) = + 1
的样本,

w⋅x(i)+b>0 w ⋅ x ( i ) + b > 0
。

从而实现分类的目的。这就是感知机模型,可以表示为从输入空间到输出空间的函数:

f(x)=sign(w⋅x+b) f ( x ) = s i g n ( w ⋅ x + b )

其中权值

w∈Rn w ∈ R n
和偏置

b∈R b ∈ R
是感知机模型参数,比如二维平面中

w w
就是一个二维向量。



s i g n ( x )

是符号函数,即

sign(x)={
+1,−1,x≥0x<0
s i g n ( x ) = { + 1 , x ≥ 0 − 1 , x < 0

一旦学习到了

w w
和



b

的值,我们就可以利用

f(x(i)) f ( x ( i ) )
来判断新的样本属于哪一类别。

感知机学习策略

  感知机学习的目标是求得一个能够将训练集正类和负类样本点完全正确分开的分离超平面。为了确定超平面的参数 w w 和

b
,我们需要定义损失函数并将损失函数最小化。
  我们自然而然能想到的一个选择是最小化误分类点的总数,即 0−1 0 − 1 损失,但这样的损失函数不是参数 w,b w , b 的连续可导函数,难以优化。另一个选择是最小化误分类点到超平面 S S 的总距离,这正是感知机所采用的。
  先回顾一下空间任一点

x ( i )
到平面 w⋅x+b w ⋅ x + b 的距离公式:

|w⋅x(i)+b|∥w∥2 | w ⋅ x ( i ) + b | ‖ w ‖ 2

然后对于误分类的数据点 (x(i),y(i)) ( x ( i ) , y ( i ) ) ,总是满足 y(i)f(x(i))<0 y ( i ) f ( x ( i ) ) < 0 ,所以误分类点到超平面S的距离为:

−−y(i)(w⋅x(i)+b)∥w∥2 − − y ( i ) ( w ⋅ x ( i ) + b ) ‖ w ‖ 2

记误分类点的集合为 M M ,那么所有误分类点到超平面

S
的总距离为:

−1∥w∥2∑x(i)∈My(i)(w⋅x(i)+b) − 1 ‖ w ‖ 2 ∑ x ( i ) ∈ M y ( i ) ( w ⋅ x ( i ) + b )

由于我们总能通过缩放 w,b w , b 使得在不改变超平面的的情况下使 ∥w∥2=1 ‖ w ‖ 2 = 1 ,为了简化损失函数,我们不妨令 ∥w∥2=1 ‖ w ‖ 2 = 1 ,于是得到了感知机的损失函数最终形式如下:

L(w,b)=−∑x(i)∈My(i)(w⋅x(i)+b)(1) (1) L ( w , b ) = − ∑ x ( i ) ∈ M y ( i ) ( w ⋅ x ( i ) + b )

这个损失函数就是感知机学习的经验风险函数,显然 L(w,b) L ( w , b ) 是非负的,如果没有误分类点,损失函数值为0。误分类点越少,误分类点距离超平面越近,损失函数值就越小。
  最后一句话总结,感知机学习的策略是在假设空间中选取使损失函数式(1)最小的模型参数 w,b w , b ,即感知机模型。

感知机学习算法

  感知机学习问题就是损失函数式(1)的最优化问题,可以用随机梯度下降求解。下面介绍一下感知机学习算法的原始形式和对偶形式。

原始形式

  给定训练集 T T ,感知机学习的目标是:



(1) min w , b L ( w , b ) = − ∑ x ( i ) ∈ M y ( i ) ( w ⋅ x ( i ) + b )

其中 M M 是训练集中误分类点的集合。感知机学习算法是误分类驱动的,具体采用SGD,首先随机选取一个超平面

w 0 , b 0
,然后每次随机选取一个误分类点进行梯度下降。
  损失函数的梯度由

∇wL(w,b)∇bL(w,b)=−∑x(i)∈My(i)x(i)=−∑x(i)∈My(i) ∇ w L ( w , b ) = − ∑ x ( i ) ∈ M y ( i ) x ( i ) ∇ b L ( w , b ) = − ∑ x ( i ) ∈ M y ( i )

给出。然后每轮迭代选取一个误分类点 (x(i),y(i)) ( x ( i ) , y ( i ) ) 对 w,b w , b 进行更新:

wb=w−η∇wL(w,b)=w+ηy(i)x(i)=b−η∇bL(w,b)=b+ηy(i)(2) (2) w = w − η ∇ w L ( w , b ) = w + η y ( i ) x ( i ) b = b − η ∇ b L ( w , b ) = b + η y ( i )

其中 η η 为学习率。整个过程直观的解释是,每次遇到误分类点就调整 w,b w , b ,使超平面向误分类点的一侧移动,以减小改误分类点与超平面间的距离,直到超平面越过该点使其被正确分类。感知机学习算法存在许多解,这不仅依赖于 w,b w , b 初始值的选择,也依赖于误分类点的选择顺序。为了得到唯一的超平面,需要对分离超平面增加约束条件,这就是线性支持向量机的思想。
  最后提一下感知机的两点性质:
  (1) 当数据集线性可分的时候,学习算法一定收敛,即可以找到一个将数据点完全正确分开的超平面,而且误分类的次数是有上界的,即经过有限次的搜索一定可以找到最优分离超平面;
  (2) 当数据集不是线性可分的时候,学习算法不收敛,可能会发生震荡。

对偶形式

  这里顺便解释一下什么是对偶。对偶就是从一个不同的角度去解答相似问题,但是问题的解是相通的,甚至是一样一样的。那为什么感知机已经有原始形式了还要特地提出一个对偶形式?吃饱了撑着?不,这里引入对偶主要是为了减小计算量(特征维度越高越明显),至于为什么能减少计算量,等推导完对偶形式就自然而然出来了。
  感知机对偶形式的基本思路是,将 w w 和

b
表示为样本 x(i) x ( i ) 标记 y(i) y ( i ) 的线性组合的形式,这样就可以通过求解其系数而求得 w w 和

b
。
  不失一般性,我们可以假设初始值 w0,b0 w 0 , b 0 均为0,然后使用式(2)逐步调整 w,b w , b ,设现在迭代 n n 次,

w , b
关于 (x(i),y(i)) ( x ( i ) , y ( i ) ) 的增量分别是 αiy(i)x(i) α i y ( i ) x ( i ) 和 αiy(i) α i y ( i ) ,最后学习到的 w,b w , b 可以分别表示为:

wb=∑i=1nαiy(i)x(i)=∑i=1nαiy(i)(3) (3) w = ∑ i = 1 n α i y ( i ) x ( i ) b = ∑ i = 1 n α i y ( i )

这里 αi=niη α i = n i η , ni n i 表示到目前为止第 i i 个样本点由于误分类而进行更新的次数,即一开始每个样本的

n i = 0
,每次当这个样本误分类进行一次梯度下降更新时, ni n i 就加1。样本点更新次数越多,意味着它距离分离超平面就越近,也就越难正确分类。换句话说,这样的样本点对学习结果影响最大。
  然后,每次判断误分类点时,判断条件 y(i)(w⋅x(i)+b)≤0 y ( i ) ( w ⋅ x ( i ) + b ) ≤ 0 就变成了 y(i)(∑nj=1αiy(j)x(j)⋅x(i)+b)≤0 y ( i ) ( ∑ j = 1 n α i y ( j ) x ( j ) ⋅ x ( i ) + b ) ≤ 0 。这种形式有一个好处,就是在训练过程中,训练样本仅以内积 x(j)⋅x(i) x ( j ) ⋅ x ( i ) 的形式出现。我们可以预先将样本内积算出来并以矩阵的形式存储,在后面的迭代过程中这个结果将会被重复利用。这个样本内积矩阵也就是所谓的Gram矩阵:

G=[x(i)⋅y(j)]N×N G = [ x ( i ) ⋅ y ( j ) ] N × N

  现在来分析一下对偶为什么比原始形式好。
  (1) 第一个原因在上面提到了,就是计算量小。我们在每次迭代过程中都必须判断各个样本点是否误分类,在原始形式中我们利用 y(i)(w⋅x(i)+b)≤0 y ( i ) ( w ⋅ x ( i ) + b ) ≤ 0 判断,因为每次 w w 都有变化,所以每次都需要计算特征向量

x ( i )
和 w w 的乘积。在对偶形式中我们利用

y ( i ) ( ∑ j = 1 n α i y ( j ) x ( j ) ⋅ x ( i ) + b ) ≤ 0
来判断,这里索引Gram矩阵就能得到样本内积 x(j)⋅x(i) x ( j ) ⋅ x ( i ) ,且Gram矩阵可以预先计算好,之后迭代中的计算就全部可以通过查表的方式得到了,这相比原始形式每次迭代都需要计算 w⋅x(i) w ⋅ x ( i ) ,减少了大量的计算时间。
  (2) 内积形式很方便我们引入支持向量机的核方法,用来解决数据集线性不可分时的情况。
  
  最后总结一下感知机的对偶形式,它本质上就是用样本 x(i) x ( i ) 标记 y(i) y ( i ) 的线性组合去表达原始形式中的 w,b w , b ,如式(3)所示。这种形式的表达可以引入样本内积,减少计算量。然后对偶形式中要更新的模型参数就只有一个 αi=ηni α i = η n i 了,我们每次用一个误分类样本 x(i) x ( i ) 对参数进行更新,只需要将相应的 ni n i 加1,即

αi=η(ni+1)=αi+η(4) (4) α i = η ( n i + 1 ) = α i + η

这就是对偶形式的参数更新规则,和原始的随机初始化参数不同, αi α i 被初始化为0(因为 ni n i 一开始都为0)。

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

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • gateway网关详解_天翼网关扩展wifi

    gateway网关详解_天翼网关扩展wifi文章目录Gateway简介网关的功能搭建Gateway网关路由断言工厂路由过滤器全局过滤器过滤器执行顺序跨域问题处理Gateway简介Gateway是SpringCloud中的网关组件,SpringCloudGateway旨在提供一种简单而有效的方式来路由到API。SpringCloud在1.x版本中都是使用Zuul网关,但在2.x版本中使用Gateway替代了Zuul。Zuul是基于Servlet的实现,属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的We

    2022年10月11日
  • slam技术前景_无人机航拍技术毕业论文

    slam技术前景_无人机航拍技术毕业论文过去几年,扫地机的出现使得SLAM名声大噪,这个被业界认为是实现机器人自主移动的关键技术,已逐渐进入人们的视野,而随着无人驾驶、AGV等行业的兴起,又使其找到了另一片广阔天地。SLAM的前世今生对于定位、定向等需求人们其实在千年前就有了,最早时期,古人提出了夜观天象,基于遥远恒星的方位推断自身所处的位置,进而演变出一门博大精深的学科“牵星术”,用牵星板测量星星实现纬度估计。直到1964…

    2022年9月1日
  • 我的第一个Python爬虫——谈心得[通俗易懂]

    我的第一个Python爬虫——谈心得[通俗易懂]   2018年3月27日,继开学以来,开了软件工程和信息系统设计,想来想去也没什么好的题目,干脆就想弄一个实用点的,于是产生了做“学生服务系统”想法。相信各大高校应该都有本校APP或超级课程表之类的软件,在信息化的时代能快速收集/查询自己想要的咨询也是种很重要的能力,所以记下了这篇博客,用于总结我所学到的东西,以及用于记录我的第一个爬虫的初生。一、做爬虫所需要的基础二、介绍几款优秀制作…

    2022年6月10日
  • UDP协议抓包分析

    UDP协议抓包分析一、什么是UDPUDP就是一种无连接的协议。该协议用来支撑那些需要在计算机之间传输数据的网络应用,包括网络视频会议系统在内的众多客户/服务器模式的应用。二、UDP协议的特点UDP使用底层的互联网协议来传送报文,同IP一样提供不可靠的无连接传输服务。他也不提供报文到达确认、排序及流量控制等功能。(1)UDP是一个无连接协议,也就是传输数据之前源端口和目标端口不能建立连接。当它想传输时,就简单…

    2022年5月11日
  • idea配置svn地址

    idea配置svn地址idea会报如下错误:说明要有svn客户端面命令,可是一般个人开发本地不需要安装svn,所以,进行如下操作:file->settings将红圈处的对勾取消

    2022年5月14日
  • 大型网站技术架构演进_网站信息架构

    大型网站技术架构演进_网站信息架构出处:http://blog.csdn.net/anxpp/article/details/51614973大型网站架构演化过程1、初始阶段的网站架构网站一开始,使用的人并不多,访问量比较小,使用一台服务器就已经完全满足要求的。我们的个人主页、博客,都可以使用如下架构:01应用程序、数据库和文件等资源,都在同一台服务器上。通常也使用一些开源免费的软件来将成本最低化。2.2、应用服务于数

    2022年11月2日

发表回复

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

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