多层感知机不等于神经网络?

2024-06-24 11:18

本文主要是介绍多层感知机不等于神经网络?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    在前一章节(https://blog.csdn.net/u012132349/article/details/86166324),我们介绍了感知机可以实现与门、或门、非门。只需给定合适的参数(w1, w2, b)并利用Python就可以简单实现对输入的任意(x1,x2),输出0或1。

    今天我们将介绍感知机的局限性(严格说是单层感知机的局限性)。这里我们想用感知机实现异或门,所谓异或门,指的是只有x1或x2中的一方为1时,才会输出1,真值表如下图所示:

                                                   

    读者可尝试用前面介绍的感知机去实现这个异或门,您可以设置任意的(w1, w2, b)值,看看对输入的任意(x1,x2),输出是否一定满足上图的条件。实际上,用前面介绍的单层感知机是无法实现这个异或门的。下面我们通过画图的方式来分析这个问题。首先,我们试着将前面介绍的与非门的动作形象化,当权重(w1,w2,b)=(-0.5,-0.5,0.7)时感知机可用下式表示:

                                                 

    与非门表明只要有一个输入信号为0,则输出就为1,上式满足此条件。该公式表示的感知机生成了由直线0.7-0.5x1-0.5x2=0分割开的两个空间,如下图所示,一个空间输出0,一个空间输出1。

                                              

    不难验证,与非门在(x1,x2)等于(0,0)、(1,0)、(0,1)时输出为1,在(x1,x2)等于(1,1)时输出为0。实际上图中的那条线就将这四个点正确地分开了。同样地,我们将异或门的真值表在图中标记出来。如下图所示。

                                      

    图中,(x1,x2)等于(0,0)、(1,1)时输出为0,在(x1,x2)等于(0,1)和(1,0)时输出为1。显然已经不能用一条直线将图中的0和□分割开来。事实上一条直线是无法将它们分割开来的,只能用下图所示的曲线将它们分割开来。

                                         

    可见,单层感知机的局限性就在于它只能表示由一条直线分割的空间(称为线性空间)。像上图这样的弯曲的曲线是无法用单层感知机表示。说明一下,曲线分割的空间称为非线性空间

    由上面的分析可知单层感知机无法表示异或门,即单层感知机无法分离非线性空间。因此需要组合感知机(叠加层)来实现异或门,这里先不考虑叠加层具体是指什么。在电路专业中,可以通过组合与门、非门、或门实现异或门。如下图所示。

                                                     

    从图中可知,x1和x2是与非门和或门的输入,而与非门和或门的输出则是与门的输入。图中的s1是与非门的输出,s2是或门的输出。s1和s2作为与门的输入,y作为与门的输出。现在给出异或门的真值表如下所示:

                              

   观察真值表x1、x2、y,可以发现确实符合异或门的输出。使用Python可轻松实现异或门,如下所示:

import numpy as npdef yufei(x1,x2):"""与非门的实现"""x=np.array([x1,x2])w=np.array([-0.5,-0.5])b=0.7value=np.sum(w*x)+bif value<=0:return 0else:return 1def huo(x1,x2):"""或门的实现,只有参数不一样"""x=np.array([x1,x2])w=np.array([0.5,0.5])b=-0.2value=np.sum(w*x)+bif value<=0:return 0else:return 1def yu(x1,x2):"""与门的实现,只有参数不一样"""x=np.array([x1,x2])w=np.array([0.5,0.5])b=-0.7value=np.sum(w*x)+bif value<=0:return 0else:return 1  def yihuo(x1,x2):"""异或门的实现"""s1=yufei(x1,x2)s2=huo(x1,x2)y=yu(s1,s2)return yyihuo(0,0)  #输出0
yihuo(1,0)  #输出1
yihuo(0,1)  #输出1
yihuo(1,1)  #输出0

    下面用感知机的表示方法来表示这个异或门,如下图所示。异或门是一种多层结构的神经网络(简单来说,就是多层感知机)。这里将最左边的一列称为第0层,中间的一列称为第1层,最右边的一列称为第二层。前面介绍的与门、或门等都是单层感知机,异或门是2层感知机(第0层没有权重,所以这里不算)。叠加了多层的感知机也称为多层感知机。可见通过叠加层(加深层)能够进行非线性的表示。

                                              

    上图中的2层感知机,先在第0层和第1层的神经元之间进行信号的传递和接收,然后在第1层和第2层之间进行信号的传送和接收。通过异或门的实现,我们不难理解,可以通过增加层来实现更复杂的电路,像加法运算的加法器也可以用感知机实现。实际上,只需要通过与非门的组合,就能再现计算机进行的处理,这说明使用感知机也可以表示计算机(当然这不是我们所关心的)。

    本章主要讲解了单层感知机的局限性,并引出2层感知机来表示异或门。这里提到了多层感知机组成了神经网络,当然神经网络没这么简单,但是它和多层感知机是有很多共同点,如果你掌握了文章中介绍的2层感知机,相信对你学习神经网络是非常有帮助的。后面我们将正式进入神经网络的学习! 欢迎关注我的博客,有欢迎欢迎关注我的微信公众号“Python生态智联”

 

这篇关于多层感知机不等于神经网络?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1089994

相关文章

人工智能机器学习算法总结神经网络算法(前向及反向传播)

1.定义,意义和优缺点 定义: 神经网络算法是一种模仿人类大脑神经元之间连接方式的机器学习算法。通过多层神经元的组合和激活函数的非线性转换,神经网络能够学习数据的特征和模式,实现对复杂数据的建模和预测。(我们可以借助人类的神经元模型来更好的帮助我们理解该算法的本质,不过这里需要说明的是,虽然名字是神经网络,并且结构等等也是借鉴了神经网络,但其原型以及算法本质上还和生物层面的神经网络运行原理存在

python实现最简单循环神经网络(RNNs)

Recurrent Neural Networks(RNNs) 的模型: 上图中红色部分是输入向量。文本、单词、数据都是输入,在网络里都以向量的形式进行表示。 绿色部分是隐藏向量。是加工处理过程。 蓝色部分是输出向量。 python代码表示如下: rnn = RNN()y = rnn.step(x) # x为输入向量,y为输出向量 RNNs神经网络由神经元组成, python

神经网络第四篇:推理处理之手写数字识别

到目前为止,我们已经介绍完了神经网络的基本结构,现在用一个图像识别示例对前面的知识作整体的总结。本专题知识点如下: MNIST数据集图像数据转图像神经网络的推理处理批处理  MNIST数据集          mnist数据图像 MNIST数据集由0到9的数字图像构成。像素取值在0到255之间。每个图像数据都相应地标有“7”、“2”、“1”等数字标签。MNIST数据集中,

神经网络第三篇:输出层及softmax函数

在上一篇专题中,我们以三层神经网络的实现为例,介绍了如何利用Python和Numpy编程实现神经网络的计算。其中,中间(隐藏)层和输出层的激活函数分别选择了 sigmoid函数和恒等函数。此刻,我们心中不难发问:为什么要花一个专题来介绍输出层及其激活函数?它和中间层又有什么区别?softmax函数何来何去?下面我们带着这些疑问进入本专题的知识点: 1 输出层概述 2 回归问题及恒等函数 3

神经网络第一篇:激活函数是连接感知机和神经网络的桥梁

前面发布的文章介绍了感知机,了解了感知机可以通过叠加层表示复杂的函数。遗憾的是,设定合适的、能符合预期的输入与输出的权重,是由人工进行的。从本章开始,将进入神经网络的学习,首先介绍激活函数,因为它是连接感知机和神经网络的桥梁。如果读者认知阅读了本专题知识,相信你必有收获。 感知机数学表达式的简化 前面我们介绍了用感知机接收两个输入信号的数学表示如下:

【图像识别系统】昆虫识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50

一、介绍 昆虫识别系统,使用Python作为主要开发语言。通过TensorFlow搭建ResNet50卷积神经网络算法(CNN)模型。通过对10种常见的昆虫图片数据集(‘蜜蜂’, ‘甲虫’, ‘蝴蝶’, ‘蝉’, ‘蜻蜓’, ‘蚱蜢’, ‘蛾’, ‘蝎子’, ‘蜗牛’, ‘蜘蛛’)进行训练,得到一个识别精度较高的H5格式模型文件,然后使用Django搭建Web网页端可视化操作界面,实现用户上传一

【剖析】为什么说RBF神经网络的误差为0

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 机器学习中的模型非常的多,但如果要问有没有这样的一个模型,它的训练误差为0,那么就非RBF神经网络莫属了!下面我们来聊聊,为什么RBF神经网络的训练误差为0。 一、RBF神经网络是什么 知道RBF神经网络的人都知道,但不知道RBF神经网络的人还是不知道。所以简单提一下,RBF神经网络是一个什么东西。

深度神经网络:解锁智能的密钥

深度神经网络:解锁智能的密钥 在人工智能的浩瀚星空中,深度神经网络(Deep Neural Networks, DNNs)无疑是最耀眼的那颗星。它以其强大的学习能力、高度的适应性和广泛的应用场景,成为了我们解锁智能世界的一把密钥。本文将带你走进深度神经网络的神秘世界,探讨其原理、应用以及实用操作技巧。 一、深度神经网络概述 深度神经网络,顾名思义,是一种具有多个隐藏层的神经网络。与传统的神经

nlp基础-文本预处理及循环神经网络

1 认识文本预处理 1 文本预处理及其作用 定义:文本送给模型之前,提前要做的工作 作用:指导模型超参数的选择 、提升模型的评估指标 举个例子: 思路常识,打造成 X Y关于Y:10分类标签是否均衡关于X:数据有没有脏数据 数据长度(512)样本不够! 文本预处理 工作 结束 的标志:准备出来X和Y 能送给模型 2 文本预处理的主要环节 1 文本处理的基本方法 分词:按照一定规

从函数逼近角度理解神经网络、残差连接与激活函数

概述 最近思考激活函数的时候,突然想到神经网络中残差连接是不是和函数的泰勒展开很像,尤其是在激活函数 f ( x ) = x 2 f(x)=x^2 f(x)=x2时(这个激活函数想法来源于 f ( x ) = R e L U 2 ( x ) [ 3 ] f(x)=ReLU^2(x)[3] f(x)=ReLU2(x)[3]),所以验证了一下就顺便写下来了,本文抛砖引玉,如果有建议或更好的想法可以写