龙空技术网

前馈神经网络求解XOR问题

人工智能AI算法 92

前言:

现时大家对“xor怎么运算”大致比较讲究,朋友们都需要了解一些“xor怎么运算”的相关内容。那么小编也在网摘上收集了一些有关“xor怎么运算””的相关资讯,希望小伙伴们能喜欢,咱们快快来学习一下吧!

摘要

前馈神经网络是一种最简单的神经网络,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层.各层之间没有反馈。是目前应用最广泛、发展最迅速的人工神经网络之一。研究从20世纪60年代开始,目前理论研究和实际应用达到了很高的水平[1]。本节通过设计包含输入层、一个隐含层和输出层的前馈神经网络,实现XOR运算,并基于计算数据或实验数据分析隐含层决策面的特点,进而总结前馈神经网络隐含层的作用。

1.1 神经网络结构设计

1.1.1 XOR问题描述

异或是对两个运算元的一种逻辑分析类型,当两两数值相同时为否,而数值不同时为真。异或的真值表见表1-1所示:

表1-1 异或的真值表

1.1.2 XOR运算的网络结构设计

为了采用前馈神经网络解决XOR问题,首先我们通过引入其他逻辑运算与XOR问题进行对比分析,从而设计适合解决XOR运算的网络结构模型。如图1-1和图1-2所示,图中的直线是决策边界。在逻辑运算与、或运算中我们总可以找到一条直线对它们进行准确的分类,它们属于线性可分。然而在图1-3所示的XOR问题中,我们无法找到一条直线将其进行准确的分类,XOR属于一种线性不可分。由于单层神经网络只能解决线性问题,无法解决非线性问题,异或问题属于非线性问题,所以感知机无法解决异或问题[2]。要解决XOR运算问题,需要生成非线性的决策边界。因此,我们使用多层感知机进行求解,在单层前馈神经网络的基础上,加入一层隐含层,即二层的前馈神经网络进行XOR的运算,这里为什么加入一层隐含层即可解决非线性问题,将在1.2节通过实验详细描述。网络结构设计如图1-4所示。从图中可以看出我们设计了一个二层的前馈神经网络对XOR运算进行求解。网络结构由一个输入层、一个隐含层和一个输出层构成,其中输入层有两个神经元,隐含层有两个神经元,输出层有一个神经元构成。

图1-1 AND 图1-2 OR 图1-3 XOR

隐含层的表达式见公式1和公式2所示。

h1 = w11*x1+w21*x2+b11 (1)

h2= w12*x1+w22*x2+b12 (2)

输出层表达式如公式3所示。

y=w'11*x1+w'21*x2+b11 (3)

图1-4 XOR运算网络结构图

1.2 隐含层决策面的特点

为了直观地显示隐含层决策面的特点,我们以解决XOR运算为例,当公式1到公式3参数分别为w11=1、w21=1、b11=0.5、w12=-1、w22=-1、b12=-1.5、w'11=1、w'21=1和b11=1.5时。我们可以得到表达式h1=1*x1+1*x2-0.5、h2=-1*x1+-1*x2+1.5和y=1*x1+1+x2-1.5,这样所设计网络的每个节点的计算结果如表1-2所示。

表1-2 求解XOR网络各节点参数计算结果

从表中可以看出所设计的网络对于计算XOR结果都是正确的,其中隐含层h1所确定的直线可以识别一个半平面,隐含层h2所确定的直线可以识别另一个半平面,同时可以看出输出层y所确定的直线相当于将隐含层h1和隐含层h2进行了与运算操作,因此它可识别由隐含层所识别的两个半平面的交集所构成凸多边形。因此,我们得到加入隐含层的神经网络可以让线性不可分的问题变得线性可分,详细可视化描述见1.3节。为了进一步挖掘隐含层的特点,我们在神经网络学习率相同的情况下,分别采用包含不同个数神经元的一个隐含层的神经网络和使用包含不相同个数神经元的多个隐含层的神经网络进行实验对比,实验结果如表1-5所示至图1-7所示。对比图1-5和图1-6,从图中对比我们可得随着神经网络隐含层数的增多,网络的非线性性能越强。但是从图中可以看出随着隐含层的增加,程序运行的时间增大,参数也随之增多,网络的复杂度变高。对比图1-5和图1-7可得,当隐含层的层数很大,神经元数量非常多时,对于较简单的问题易出现过拟合现象。因此,对于不同的问题应适当加入隐含层个数和神经元个数以及其它参数的调整,使得网络达到最优性能。

图1-5 一个隐含层的可视化结果

图1-6 两个隐含层的可视化结果

图1-7 八个隐含层的可视化结果

1.3 前馈神经网络隐含层的作用

为了直观地看到隐含层的作用,我们分别采用一个没有加入隐含层的前馈神经网络和加入一个隐含层的神经网络来求解XOR问题进行对比,并将其进行了3D可视化操作,实验测试代码见论文最后的github。实验结果如图1-9和图1-10所示。

图1-8 XOR可视化 图1-9 不含隐含层结果可视化 图1-10 含隐含层结果可视化

图1-8是将XOR运算在3D图中的呈现结果,x轴表示输入x1,y轴表示输入x2,z轴表示x1 XOR x2的运算结果。红色圆表示输出结果为0,为第一类,蓝色圆表示输出结果为1,为第二类。图1-9表示不含隐含层网络下可视化结果,我们可以看出,找不到一个平面可以使红色样本点和蓝色样本点同时落在该平面上,它无法使决策面成曲面形式。说明不含隐含层的单层感知机不能解决异或这种非线性可分的问题。从图1-10中可得四个坐标点全部落在了对应的曲面上,决策面成功地将结果进行了分类。

1.4. 总结

通过实验,我们可得隐含层的作用,隐含层隐藏层不直接接受外界的信号,也不直接向外界发送信号,它通过对输入的数据进行加权求和处理,将其转化为更能被输出层接受的形式,加入隐含层可以提高神经网络的非线性处理能力。

参考文献

[1] 乔俊飞, 韩红桂. 前馈神经网络分析与设计 : Analysis and design of feedforward neural networks[M]. 科学出版社, 2013.

[2] 饶钢. 非线性权重线性激发函数前馈神经网络解XOR问题[C]// 中国神经网络学术大会. 1991.

论文实验代码见github:

标签: #xor怎么运算