神经网络算法:单层感知器算法原理及应用

Posted 猛飞的野猪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神经网络算法:单层感知器算法原理及应用相关的知识,希望对你有一定的参考价值。

点击上方 “猛飞的野猪” 可以订阅哦!


神经网络算法(1)

单层感知器算法原理及应用

人工神经网络(Artificial Neural Network,ANN),通常简称为神经网络,是一种在生物神经网络的启示下建立的数据处理模型。神经网络由大量人工神经元相互连接进行计算,根据外界的信息改变自身的结构,主要通过调整神经元之间的权值来对输入的数据进行建模,最终具备解决实际问题的能力。神经网络将知识存储在调整后的各权值中,这一点是神经网络的精髓。


神经网络具有强大的模式识别、数据拟合和非线性逼近能力,不同类型的神经网络适用于不同的问题。神经网络系列文章将探讨不同神经网络算法的实现方式及实际应用场景,采用Matlab软件对不同神经网络算法进行分析和建模。

单层感知器算法原理及应用

单层感知器属于单层前向网络,即除输入层和输出层外,只拥有一层神经元节点。前向网络的特点是,输入数据从输入层经过隐层向输出层逐层传播,相邻两层神经元之间相互连接,同一层神经元之间则没有连接。


感知器是由美国学者F.Rosenblatt提出的,与人工神经网络领域最早提出的MP模型不同,其神经元突触权值是可变的,因此可以通过一定规则进行学习。感知器至今仍是一种十分重要的神经网络模型,可以快速、可靠地解决线性可分问题。理解感知器的结构和原理,也是学习其他复杂神经网络的基础。单层感知器就是包含一层权值可变的神经元的感知模型。


单层感知器的原理及结构


单层感知器是感知器中最简单的一种,由单个神经元组成的单层感知器只能用来解决线性可分的二分类问题。将其用于两类模式分类时,就相当于在高维样本空间中,用一个超平面将样本分开。Rosenblatt证明,如果两类模式线性可分,则算法一定收敛。


单层感知器由一个线性组合器和一个二值阈值元件组成。输入向量的各个分量先与权值相乘,然后在线性组合器中进行叠加,得到的结果是一个标量。线性组合器的输出是二值阈值元件的输入,得到的线性组合结果经过一个二值阈值元件由隐含层传送到输出层,实际上这一步执行了一个符号函数。二值阈值元件通常是一个上升的函数,典型功能是将非负的输入值映射为1,负的输入值映射为-1或0。单层感知器结构图如图1所示。


以一个两类模式分类问题来说明单层感知器工作原理。


输入是一个N维向量X=[x1,x2,…,xn ],其中每一个分量都对应于一个权值,隐含层的输出叠加为一个标量值:

神经网络算法(1):单层感知器算法原理及应用

随后在二值阈值元件中对得到的v值进行判断,产生二值输出:

神经网络算法(1):单层感知器算法原理及应用
神经网络算法(1):单层感知器算法原理及应用

图1 单层感知器的结构图


单层感知器可以将输入数据分为两类:A或B。当y=1时,认为输入X=[x1,x2,…,xN ]属于A类,当y=-1时,认为输入X=[x1,x2,…,xN ]属于B类。


在实际应用中,除了输入的N维向量外,还有一个外部偏置,值恒为1,权值为b。此时,输出y可表示为

神经网络算法(1):单层感知器算法原理及应用

单层感知器进行模式识别的超平面由下式决定:

神经网络算法(1):单层感知器算法原理及应用

当维数N=2时,输入向量可表示为平面直角坐标系中的一个点。此时分类超平面是一条直线:

神经网络算法(1):单层感知器算法原理及应用

假设有三个点,分为两类,第一类包括点(3,0)和(4,-1),第二类包括点(0,2.5)。选择权值为,平面上坐标点的分类情况如图2所示。

神经网络算法(1):单层感知器算法原理及应用

图2 N=2时的二分类


二维空间中的超平面是一条直线。在直线下方的点,输出v>0,因此y=1,属于A类;在直线上方的点,输出V<0,因此y=-1,属于B类。


单层感知器的学习算法

在实际应用中,为了正确地将数据分类,需要使用计算机自动根据训练数据学习获得正确的权值,通常采用纠错学习规则的学习算法。


为了方便起见,修改单层感知器结构图如图3所示,将偏置作为一个固定输入。

神经网络算法(1):单层感知器算法原理及应用

图3 感知器等价结构图

定义的输入向量:

神经网络算法(1):单层感知器算法原理及应用

这里n表示迭代次数。相应地,定义权值向量:

神经网络算法(1):单层感知器算法原理及应用

因此线性组合器的输出为:

神经网络算法(1):单层感知器算法原理及应用

令上式等于0,即得二分类问题的决策面。


学习算法步骤如下:

神经网络算法(1):单层感知器算法原理及应用

学习收敛条件是什么?显然,当权值向量已经能正确实现分类时,算法就收敛了,此时,网络的误差为零。在计算时,收敛条件通常可以是:

神经网络算法(1):单层感知器算法原理及应用

另外,学习率η是需要通过经验事先确定的参数,其大小决定了误差对权值的影响大小,既不能过大也不能过小。在实际使用中,采用变化的学习率往往比采用固定的学习率更有效。在迭代开始时可以采用较大的学习率,在迭代到一定次数后,再采用较小的学习率。这样收敛更快。

 

值得注意的是,单层感知器并不对所有二分类问题收敛,只对线性可分问题收敛,即可通过学习,调整权值,最终找到合适的决策面,实现正确分类。对于线性不可分问题,单层感知器的学习算法是不能收敛的,无法实现正确分类。


但对于线性不可分问题,单层感知器并不是毫无研究价值。尽管不可能实现全部样本数据的正确分类,依然可以实现近似分类。问题可以转化为:定义一个误差准则,在不同的超平面中选择一个最优超平面,使得这个误差准则下的误差最小,实现近似分类。

神经网络算法(1):单层感知器算法原理及应用

线性可分问题                                      线性不可分问题


感知器的局限性

感知器的局限性在上文已经基本表现出来了。人工智能之父Minsky证明,建立在局部学习例子基础上的Rosenblatt感知器没有进行全局泛化的能力。由于单层感知器可以变形为多层感知器,他们推测多层感知器也是一样的。这一悲观结论引起了当时研究人员对神经网络能力的怀疑,使当时神经网络的研究陷入了低谷。


单层感知器的局限性总结如下:

1

感知器的激活函数使用阈值函数,使得输出只能取两个值(1/-1或0/1),这样就限制了在分类种类上的扩展。

2

感知器只对线性可分问题收敛,这是一个巨大的缺陷。根据感知器收敛定理,只要输入向量是线性可分的,感知器总能在有限的时间内收敛;若问题不可分,则感知器无能为力。

3

若样本数据存在奇异样本,则网络需要花费很长的时间才能收敛。

4

感知器的学习算法只对单层有效,无法直接套用其规则设计多层感知器。


单层感知器的应用实例

问题设定

给出平面中的若干点及每个点所属的类型,要求正确地实现分类。此处,给出6个线性可分的点,要求进行二分类。6个点如下表所示。

神经网络算法(1):单层感知器算法原理及应用

表1    6个线性可分点


问题分析

这是一个线性可分问题,输入向量是2维向量,在2维空间中可用一条直线将两个类别正确地分开。由于输出向量维数为1,因此创建的感知器网络拥有2个输入节点,1个输出节点,网络结构如图4所示。

神经网络算法(1):单层感知器算法原理及应用

图4 分类问题网络结构

网络中需要求解的是权值。


定义向量

神经网络算法(1):单层感知器算法原理及应用

Matlab程序实现

神经网络算法(1):单层感知器算法原理及应用
神经网络算法(1):单层感知器算法原理及应用
神经网络算法(1):单层感知器算法原理及应用

输出结果

神经网络算法(1):单层感知器算法原理及应用
神经网络算法(1):单层感知器算法原理及应用

解释说明

1

二分类成功的权值为:b=-0.4;w1=7;w2=-3.4;得到的分类超平面是直线7x-3.4y-0.4=0;

2

Hardlim函数为感知器传输函数;负数时输出0,0和正数时输出1;

3

mae函数为一种神经网络性能函数,用平均绝对误差来衡量系统性能。从图中结果可以看出,迭代4次后,mae值为0,此时算法收敛。

上例已经清晰的表现了单层感知器的工作原理。读者若有兴趣,可以进一步修改期望输出,此时该问题可能变为一个线性不可分问题,单层感知器无法在有限时间收敛,用上面程序求解将不能得出正确结果。


END



以上是关于神经网络算法:单层感知器算法原理及应用的主要内容,如果未能解决你的问题,请参考以下文章

数学建模学习(30):神经网络算法模型之感知器,详细讲解+完整代码,包教包会!

深度学习课程笔记神经网络基础

Matlab基于BP神经网络实现多分类预测(源码可直接替换数据)

Matlab基于BP神经网络实现多分类预测(源码可直接替换数据)

Matlab基于多层前馈网络BP神经网络实现多分类预测(Excel可直接替换数据)

BP神经网络和感知器有啥区别?