单层感知机模型及其学习算法
目录
一、什么是感知机?
二、单层感知机模型
三、感知机的学习策略
四、感知机的学习算法
一、什么是感知机?
1958年,美国心理学家Frank Rosenblatt提出一种具有单层计算单元的神经网络,称为感知机(Perceptron)。感知机模拟人的视觉接受环境的信息,并利用神经元之间的连接进行信息传递。在感知机的研究中首次提出自组织、自学习的思想,而且对所能解决的问题存在着收敛算法,即在数学上能严格证明有效,因而对神经网络的研究起了重要的推动作用。
由于单层感知机的结构和功能都非常的简单,以至于目前在解决实际问题时很少被采用,但是由于它在神经网络研究中具有重要的意义,是研究其他深度网络的基础,所以理解单层感知机的原理是必要的。
二、单层感知机模型
单个人工神经元模型(M-P模型):
多输出节点的单层感知机:
单层感知机只有一层处理单元,结构如上图所示。
图中左侧为输入层,也称为感知层,有n个神经元节点,这些节点只负责引入外部信息,自身不进行信息的处理。每个神经元节点接受一个输入信号(=1,2,3…n),n个输入信号构成输入列向量:
图中右侧为输出层,也称为处理层,有m个神经元节点。每个节点均具有信息处理能力,m个节点向外输出处理过的信息构成输出列向量:
对于输出层来讲,用表示输出层第个神经元的权值列向量,其中。
m个权值列向量又构成了感知机的权值矩阵。
其中元素为,表示输入层第个神经元到输出层第的神经元的权值。
(表示下一层即输出层的第个神经元,表示上一层即输入层的第个神经元。)
由M-P模型可知,对于输出层的任意一神经元节点,其输入,为神经元的阈值,净输入为,激励函数为符号函数。则输出神经元的输出表示为:
在计算神经元的输出时,实际为一个M-P模型,其中输入向量,权值向量,则展开写成标量形式为:
这在几何意义上实则为一个n维超平面的一般方程,为超平面的法向量,为超平面的截距。此n维超平面可以将n维空间分为两个部分,也即可以将输入的样本分为两类。
关于以上几何意义说法的简要证明:
因为过空间一点可以作而且只能作一平面垂直于一已知直线,所以当平面上一点和它的一个法线向量为已知时,平面的位置就完全确定了。由此我们可以建立平面的方程:
设是平面上的任意一点,为平面上已知一点,则向量必然与平面的法线向量垂直,即数量积等于零:
因为,,所以有:
此方程是由平面上已知一点和该平面的法线向量确定的,所以该方程叫做平面的点法式方程。
由上可知,平面的点法式方程是x,y,z的一次方程,而任意一平面都可以用它上面的一点及法线向量来确定,所以任一平面都可以用三元一次方程来表示。设有一般三元一次方程:
任取满足该方程的一组数,即
上述两式相减,得
方程和上面的点法式方程作比较,可知方程即为点法式方程,而方程又和方程经过加减已知的可以互相得到,所以方程和是同解方程。由此可知,任一三元一次方程的图形总是一个平面,而其中x,y,z的系数就是该平面的法线向量,即。
上述的证明限制在三维空间中,可以用三元一次方程表示。而在上述列向量所确定的n维空间中,亦可以用的n元一次方程确定一个n维超平面:
同理,变量的系数就是该超平面的法向量。
上述的证明可以更好的从几何的意义上理解单层感知机具有分类能力,且只能解决线性的二分类问题。
三、感知机的学习策略
假设训练数据集是线性可分的,感知机的学习目标就是确定一个能够将训练集正实例点和负实例点完全分离的超平面,也就是将训练集的输入正确地分类到+1和-1两个类别中。
所以需要确定感知机的参数:权值向量和阈值(几何意义上的超平面截距)和定义一个损失函数(loss function)并将损失函数极小化。
分类问题损失函数的确定的一个自然想法是:误分类点的个数。使误分类点的个数达到最少即完成了感知机的分类目标。但是这样的损失函数是离散的,并不是参数和的连续可导函数,所以不易进行优化求取极小值。
另一个损失函数选择是:误分类点到超平面的总距离。(因为可能有多个被误分类的点,所以这里的“总”指的是它们的距离之和。)误分类点到超平面的总距离越小,即代表被误分类的点越少。这是感知机所采用的损失函数。
在三维空间中,点到平面的距离表示为:
这里不再给出点到平面的距离公式证明。同理,将此距离公式推广到n维空间,则n维空间中样本点到超平面的距离为:
这里的就等价于模型的输入向量。其中为权值向量的范数,即向量的模长。
对于模型的输入,输出为:
激励函数(即符号函数)会将输入映射为两类输出标签,即输出
对于误分类数据来说,输入结果被分到-1标签,即;输入,结果却被分到+1标签,即。那么有以下式子恒成立:
那么根据以上分析,误分类的样本点到超平面的距离是:
设误分类样本点集合为,且不考虑,就得到了感知机的损失函数:
显然,损失函数是非负的。没有误分类点是损失函数是零。有误分类点时,误分类点越少,误分类点离超平面越近,损失函数的值就越小。
四、感知机的学习算法
感知机的学习问题就是求解损失函数的最优化问题,方法是随机梯度下降法。首先求出损失函数的梯度:
再随机选取一个误分类点,用表示迭代次数,表示学习率,对和进行迭代更新:
这种学习算法几何上的直观解释为:当一个样本点被误分类时,即位于超平面的错误一侧时,则根据上式迭代调整和,使超平面向该误分类点的一侧移动,以减少误分类点和超平面的距离,直至迭代到合适的和使得超平面越过该误分类点使其被正确分类。
例题:有某数据集,其正实例点为,,负实例点为,学习率,求感知机模型。
解:(1)首先随机选取初值:,
(2)判断实例点是否被正确分类:
对,,未被正确分类,迭代
(3)对于新的和确定的新的超平面,再次判断实例点是否被正确分类:
对,,被正确分类;
对,,被正确分类;
对,,未被正确分类,迭代
重复(2)(3)过程,直至三个实例点都被正确分类,得到最终迭代结果:
,
即最终所确定的感知机模型为:
分离超平面为:
例题代码:
import numpy as np
import matplotlib.pyplot as plttrain = [((3,3),1),((4,3),1),((1,1),-1)]
feature = []
label = []
xpoints=[]
ypoints=[]for data in train:feature.append(data[0])label.append(data[1]) #提取特征和标签数据xpoints.append(data[0][0])ypoints.append(data[0][1]) #提取x,y坐标用于后面的画图feature = np.array(feature)
label = np.array(label) #将特征和标签数据转化为numpy数组w = np.array([0,0])
b=0
eta = 1 #初始化w,b,eta学习率设为1flag = True #设置标记用于结束迭代
num = 0 #记录迭代次数
while flag:count = len(feature) for i in range(len(feature)):if -label[i]*( np.dot(w,feature[i].T) + b) >= 0: #如果数据被误分类w = w + eta*label[i]*feature[i].Tb = b + eta*label[i] num = num + 1print("第{}次迭代:w={},b={}".format(num,w,b)) #迭代并输出迭代后的w和belse:count = count - 1 #conut循环减1,减到0时表示所有数据都分类成功if count == 0:flag = False #如果所有数据都分类成功。停止循环迭代
print("共迭代{}次,最终迭代结果:w={},b={}".format(num,w,b)) #输出最终结果x = np.linspace(-5,+5,50)
y = -(w[0]*x + b)/w[1]
plt.plot(x,y)
plt.plot(xpoints,ypoints,'o',)
plt.show() #画出示意图
输出结果:
注:不同的参考书中,对于输入可能写成或。对于还是的问题,由于本文章输入是由M-P模型(单个神经元模型)引入的,所以这里采取前者的写法。采取后者写法甚至更优,会使迭代公式有统一的形式,即:
而前者写法的迭代公式为:
两种写法并无本质的不同,所得最终结果也是一样的,后者写法虽然更优,但不再做更改,需要读者尤其注意正负号的问题。
参考
[1]刘若辰,慕彩虹,焦李成,刘芳,陈璞花.人工智能导论[M].北京:清华大学出版社,2021.8:195-200.
[2]李航.统计学习方法[M].北京:清华大学出版社,2019.5:35-41.
[3]同济大学数学系.高等数学[M].北京:高等教育出版社,2014.7:23-27.
单层感知机模型及其学习算法相关推荐
- 多层感知机与深度学习算法概述
多层感知机与深度学习算法概述 读研之前那会儿我们曾纠结于机器学习.深度学习.神经网络这些概念的异同.现在看来深度学习这一算法竟然容易让人和他的爸爸机器学习搞混-可见深度学习技术的影响力之大.深度学习, ...
- 【机器学习】隐马尔可夫模型及其三个基本问题(三)模型参数学习算法及python实现
[机器学习]隐马尔可夫模型及其三个基本问题(三)模型参数学习算法及python实现 一.一些概率与期望值的计算 二.非监督学习方法(Baum-Welch算法) 三.python实现 隐马尔可夫模型参数 ...
- 论文笔记-连续HVAC控制的无模型强化学习算法的实验评估
本文在一个模拟的数据中心中对四种actor-critic算法进行了实验评估.性能评估基于它们在提高能效的同时保持热稳定性的能力,以及它们对天气动态的适应性.与在EnergyPlus中实施的基于模型的控 ...
- 一篇详解带你再次重现《统计学习方法》——第二章、感知机模型
个性签名:整个建筑最重要的是地基,地基不稳,地动山摇. 而学技术更要扎稳基础,关注我,带你稳扎每一板块邻域的基础. 博客主页:七归的博客 专栏:<统计学习方法>第二版--个人笔记 创作不易 ...
- 深度学习笔记(一)——感知机模型(Perceptron Model)
零.引言 感知机,也叫单层神经网络,是最基础的神经网络模型结构. 神经网络模型由生物神经中得到启发.在生物神经元细胞中,神经突触接收到信号,经过接收并处理信号后判断信号的信息强弱,来做出不同神经电位变 ...
- PyTorch教程(十):单层感知机以及梯度更新
单层感知机模型 y=XW+by=∑xi∗wi+by = XW + b \\ y = \sum x_i*w_i+ b y=XW+by=∑xi∗wi+b 单层感知机模型的每一个输入节点xix_ixi ...
- 基于值的深度强化学习算法
目录 DQN2013 -- Playing Atari with Deep Reinforcement Learning DQN2015 -- Human-level control through ...
- 初探神经网络(二)单层感知机的Rosenblatt算法原理
本期大量干货,配合线性代数和较扎实的统计知识食用更佳. 介绍过了M-P模型,也了解到了M-P模型本质上是对生物上神经元的抽象模型.在上一章,我反复在强调这只是一个生物学的概念,我相信看到这篇文章的人绝 ...
- 统计学习笔记(2)——感知机模型
感知机学习旨在求出将训练数据集进行线性划分的分类超平面,为此,导入了基于误分类的损失函数,然后利用梯度下降法对损失函数进行极小化,从而求出感知机模型.感知机模型是神经网络和支持向量机的基础.下面分别从 ...
- 【统计学习】随机梯度下降法求解感知机模型
1. 感知机学习模型 感知机是一个二分类的线性分类问题,求解是使误分类点到超平面距离总和的损失函数最小化问题.采用的是随机梯度下降法,首先任意选取一个超平面w0和b0,然后用梯度下降法不断地极小化目标 ...
最新文章
- Varnish3.0中文入门教程-应用篇2
- spark-submit python egg 解决三方件依赖问题
- android自定义view圆,Android自定义View圆形百分比控件(一)
- 删除字符串中的所有相邻重复项
- VScode中常用element语法
- glut编译问题 (程序无法运行)
- Contoso 大学 - 3 - 排序、过滤及分页
- CA的建立与证书的颁发
- Flash 加密和破解
- win10清除系统激活密钥
- 解决WIN10本地账号绑定微软账号后无法解绑的方法
- 关于“父虚拟磁盘在子虚拟磁盘创建之后被修改过。……打不开磁盘啥啥啥”的解决方法
- 点微同城小程序配置教程及提交审核包过审经验分享
- 最新苹果审核被拒4.3解决方案总结(2020年7月)
- 百家号室内设计行业粉丝数量统计(2019.12.24)
- “阿里云大数据技术实战训练营”江苏省大学生万人计划学术冬令营活动成功举行...
- C语言编程>第二十六周 ① 函数fun的功能是:将形参b所指数组中的前半部分元素的值和后半部分元素的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。
- 互联网公司的主要角色以及其职责
- IDEA中自动生成类图方法
- 下载android2.2源码(froyo)(1)
热门文章
- 数学建模Latex简易模板
- HDU 3065 病毒侵袭持续中 【AC自动机模版题】
- 网页实现中英文切换方式对比与实现
- modelsim 波形设置显示时间单位
- Python for S60(pys60)介绍
- Java微信如何自动添加好友,微信自动加好友 模拟位置
- win7连接远程服务器特别慢,主编告诉你win7远程桌面连接速度慢的完全解决教程...
- 觅伊、Soul,这些社交软件是怎么火起来的?
- WiFi-802.11 2.4G频段 5G频段 信道频率分配表
- 动手实践感受下企业微信的网页授权登录、扫码授权登录