开发者学堂课程【神经网络概览及算法详解:多层感知器-1】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/40/detail/926
多层感知器-1
内容介绍:
一、多层感知器
二、多层感知器实现异或XOR
一、多层感知器
在上一章的单层感知器,了解到了单层感知器的一些特点。单层感知器不能去处理线性不可分的问题,比如异或,异或问题如何解决?可以把异或的逻辑表达式通过非、与、或这种简单的逻辑表达形式表示为一个式子,然后通过设计,把表达式通过逻辑电路、计算机模拟、神经网络等模式实现,就可以解决异或的问题。结果实际上已经不再是单层感知器,而是在单层感知器的基础上增加了一些层。增加了一些层之后,就变成了多层感知器。
1. 概念
多层感知器(Multi Layer Perceptron,即MLP)是一种前馈人工神经网络模型,包含至少一个隐藏层,对于单层感知器,共分为两层,一个是输入层,一个是输出层。多层感知器就是在输入层和输出层之间增加了一个或多个隐藏层,然后将输入的数据集映射到单一的输出的数据集上。
2.区别
如下图所示,与单层感知器相比,多层感应器多了隐藏层,图中只画了一个隐藏层。
(1)单和多是指具有计算功能的节点的层数。输入层只是接受一个输入信号,它不对输入信号进行任何处理,所以他不具备任何的计算功能。
(2)输出层肯定是具备计算功能的,它会把输入的值与权重相乘再相加,从而得到一个净输出。如果有激活函数的话,还要用激活函数作用到净输出值上得到最终的结果,所以它是有计算功能的。
(3)隐藏层也具有计算功能,对于单层感知器来说,只有一层有计算功能的层的感知器模型就叫做单层感知器。有多层的,超过一层的,叫做多层感知器。
(4)单层只能学习线性函数,多层可以学习非线性,适用于模式识别,图像处理,函数逼近等领域。比如给出一系列特征X=(x1,x2,…)和目标Y,一个多层感知器可以以分类或者回归为目的,学习得到特征和目标之间的关系。简单的理解就是,分类,输出为离散值。回归,输出为连续值。
二、多层感知器实现异或XOR
1. 多层感知器实现异或的例子
(1)如下图所示,首先看样本,输入为X1 、X2有两个向量,这俩个向量有两个分量,其结果要么是0,要么是1,就是对X1,X2求异或得到一个结果。 X1和X2相等的时候,都为0结果就是0或者都为1,结果也为0。如果X1和X2不相等,像中间这两条一个是0,1,一个是1,0的时候,它的结果都是1。
将X1, X2两个分量画在一个二维的坐标系,(0,0)和(1,1)用红颜色来表示,(0,1)和(1,0)是一类,用蓝颜色来表示。
(2)然后给它建立一个多层感知器MLP(如下图),这个感知器的结构也比较简单,一个输入层,一个隐藏层一个输出层,或者也叫单隐层多层感知器。其中输入变量X1,X2,另外还有bias偏置,隐藏层是两个节点,但是也加了个bias,最后输出值是O1。输出值只有一个分量,因为输出是一个向量,它只有一个分量,只不过分量的取值可以为0,也可以为1,而不是输出两个分量。
(3)然后用四个样本对这个模型进行训练,得到一组参数。如图,W01权重值给出,bias就是图中的b都已给出。接下来就用这个模型来验证一下我们要写出的公式。
(4)举个例子,式子中f1(x)就是图中自上而下第一个标红节点,这个节点的输入有三个,以从bias节点过来的输入为例,b为-1,从bias节点到要计算出的节点的权重就是w01代入式子中可得结果为-0.5。同理,X1,X2分别代入式子中,可得表达式f1(x)=sign(-x1+x2-0.5)。W11就是此节点的输出值,同理可以算出第二个标红的节点的输出值。
(5) 最终输出节点o1,这个节点它的输出的表达式是什么?就是俩个标红节点的输出加上bias的输出,因为w01等于0,所以这一项就没有了,对这个结果呢,再去使用函数sign,就可以得到最终的输出。我们按照这个公式分别来算,以第一条为例,X1=0,X2=0,中间这一项就是-0.5,那么它的值就是0,对于f2,X1=0 ,X2=0加上-0.5,结果是小于0的,所以它的值也是0,整个的输出就是这0。同理我们可以对余下三条进行验证,结果如下图。
(6) 所有的结果都与预期结果一致,如果在二维空间里去分类,每一个感知器都是一条直线,可以用一条直线可以去划分,X1+X2-5=0和X1-X2-0.5=0,这是一个标准的直线的方程,我们在二维空间里把它画出来,通过这两条线就可以把数据分开。正常求出来的参数模型有很多种,只要是划两条直线可以分开即可。
如下图: