热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从感知机到人工神经网络

文章目录一、感知机二、人工神经网络(artificialneuralnetworks,ANN)三、人工神经网络发展四、神经网络BP算法五、人工神经网络的特点上一篇博客,我们介绍了感

文章目录

    • 一、感知机
    • 二、人工神经网络(artificial neural networks,ANN)
    • 三、人工神经网络发展
    • 四、神经网络BP算法
    • 五、人工神经网络的特点

上一篇博客,我们介绍了感知机原理,一种线性模型用来做二元分类。感知机不是一个通用函数近似器;它的决策边界必须是一个超平面。感兴趣的可以查阅感知机原理(Perceptron),本片博客旨在大体的介绍感知机到人工神经网络,仅个人理解,如有偏差,欢迎指正。

一、感知机

人工神经网络的第一个里程碑是感知机perceptron, 这个名字其实有点误导, 因为它根本上是做决策的。 一个感知机其实是对神经元最基本概念的模拟 ,都未必有多少网络概念,他就是一个自动做决策的机器。
《从感知机到人工神经网络》

当只有一层这样的神经元存在时,它被称为感知机。单层感知机只可以用来区分线性可分的数据,输入层被称为第零层,因为它只是缓冲输入。存在的唯一一层神经元形成输出层。输出层的每个神经元都有自己的权重和阈值。

二、人工神经网络(artificial neural networks,ANN)

人工神经网络(artificial neural networks,ANN),一种用于强大的非线性回归和分类模型,用新的策略来克服感知机只可以用来区分线性可分的数据的缺点。

如果把感知机比喻成一个神经元,那么人工神经网络,即神经网,就是一个大脑。人脑就是由十几亿的神经元和上千亿的突触组成,人工神经网络是一种感知器或其他人工神经的有向图。这个图的边带有权重,这些权重是模型需要学习的参数。

1.我们分析一个ANN时,通常都是从它的三要素入手,即

  • 1)网络拓扑结构;
  • 2)传递函数;
  • 3)学习算法。
    《从感知机到人工神经网络》

2.人工神经网络主要分为两种类型:

(1) 前馈人工神经网络(Feedforward neural networks)是最常用的神经网络类型,一般定义为有向无环图。信号只能沿着最终输入的那个方向传播。

主要有以下三种:

感知器网络

  • 感知器(又叫感知机)是最简单的前馈网络,它主要用于模式分类,也可用在基于模式分类的学习控制和多模态控制中。感知器网络可分为单层感知器网络和多层感知器网络。

BP网络

  • BP网络是指连接权调整采用了反向传播(Back
    Propagation)学习算法的前馈网络。与感知器不同之处在于,BP网络的神经元变换函数采用了S形函数(Sigmoid函数),因此输出量是0~1之间的连续量,可实现从输入到输出的任意的非线性映射。

最简单的神经网络–Bp神经网络

RBF网络

  • RBF网络是指隐含层神经元由RBF神经元组成的前馈网络。RBF神经元是指神经元的变换函数为RBF(Radial Basis
    Function,径向基函数)的神经元。典型的RBF网络由三层组成:一个输入层,一个或多个由RBF神经元组成的RBF层(隐含层),一个由线性神经元组成的输出层。

(2) 反馈人工神经网络(feedback neural networks),也称递归神经网络(recurrent neural
networks),网络图中有环。反馈环表示网络的一种内部状态,随着不同时间内输入条件的改变,网络的行为也会发生变化。反馈人工神经网络的临时状态让它们适合处理涉及连续输入的问题。目前scikit-learn没有实现反馈人工神经网络。

《从感知机到人工神经网络》

当存在许多这样的层时,网络被称为多层感知机(multilayer perceptron,MLP)。MLP有一个或多个隐藏层。

事实上,多层感知器可以模拟成任意复杂的函数,其中函数的复杂性取决于网络输入个数和隐层个数。

这些隐藏层具有不同数量的隐藏神经元。每个隐藏层的神经元具有相同的激活函数:

在该 MLP 中,下层的所有神经元都连接到其相邻的上层的所有神经元。因此,MLP 也被称为全连接层。MLP 中的信息流通常是从输入到输出,目前没有反馈或跳转,因此这些网络也被称为前馈网络

3.神经网络如何处理线性不可分问题

单层感知能够机用来模拟逻辑函数,例如逻辑非NOT、逻辑或非XOR、逻辑或OR、逻辑与AND和逻辑与非NAND等,但是不能用来模拟逻辑异或XOR(对于这个函数,必须用两层神经元),因为XOR(异或)作为线性不可分函数不能被近似。

如下图:
《从感知机到人工神经网络》
4.异或的实现,简单的神经网络:

一个异或问题,单纯的用感知机是不能解决的,因为在平面中我们找不到一条直线将其区分,但是我们可以组合两个感知机,然后去他们的交集,从而可以完美的解决这个问题。

《从感知机到人工神经网络》

这个神经网络有一个隐藏层和一个输出层,两层元,每个神经元都是带有sigmoid的激活函数。

《从感知机到人工神经网络》

每个样本的特征x1,x2表述都被输入到两个神经元:一个NAND神经元和一个OR神经元,对应隐藏层1,2。这些神经元的输出将连接到第三个AND神经元上,对应输出层3,测试XOR的条件是否为真。从而实现异或。

5.神经网络激活函数

激活函数也叫传递函数,它有许多的种类如下图所示:
《从感知机到人工神经网络》
上图分别为sigmoid,tanh,relu,leaky relu,其中在人工神经网络中常用的是sigmoid函数,卷积神经网络中常用的是relu.

6.补充说明

引入激活函数的目的是在模型中引入非线性。如果没有激活函数,那么无论你的神经网络有多少层,最终都是一个线性映射,单纯的线性映射无法解决线性不可分问题。引入非线性可以让模型解决线性不可分问题。

一般来说,在神经网络的中间层更加建议使用relu函数,两个原因:

  • relu函数计算简单,可以加快模型速度;
  • 由于反向传播过程中需要计算偏导数,通过求导可以得到sigmoid函数导数的最大值为0.25,如果使用sigmoid函数的话,每一层的反向传播都会使梯度最少变为原来的四分之一,当层数比较多的时候可能会造成梯度消失,从而模型无法收敛。

6.神经网络过拟合问题

神经网络的表达能力是非常强大的,只有给予足够多的神经元,通常其都面临着过拟合的问题。

《从感知机到人工神经网络》

因此,过多的隐含层和神经元的节点,会带来过拟合的问题。同常来说不应该通过降低神经网络的参数量来减少过拟合,可以用正则化项对其进行惩罚或者时通过dropout进行一部分神经元的随机失活。

三、人工神经网络发展

1.感知机

神经网络技术起源于上世纪五、六十年代,当时叫感知机(perceptron),拥有输入层、输出层和一个隐含层。输入的特征向量通过隐含层变换达到输出层,在输出层得到分类结果。早期感知机的推动者是Rosenblatt。但是,Rosenblatt的单层感知机有一个严重得不能再严重的问题,对于计算稍微复杂的函数其计算力显得无能为力。

2.多层感知机的出现

随着数学的发展,这个缺点直到上世纪八十年代才被Rumelhart、Williams、Hinton、LeCun等人发明的多层感知机(multilayer perceptron)克服。多层感知机,顾名思义,就是有多个隐含层的感知机。

多层感知机可以摆脱早期离散传输函数的束缚,使用sigmoid或tanh等连续函数模拟神经元对激励的响应,在训练算法上则使用Werbos发明的反向传播BP算法。对,这就是我们现在所说的神经网络( NN)!多层感知机解决了之前无法模拟异或逻辑的缺陷,同时更多的层数也让网络更能够刻画现实世界中的复杂情形。多层感知机给我们带来的启示是,神经网络的层数直接决定了它对现实的刻画能力——利用每层更少的神经元拟合更加复杂的函数。

即便大牛们早就预料到神经网络需要变得更深,但是有一个梦魇总是萦绕左右。随着神经网络层数的加深,优化函数越来越容易陷入局部最优解,并且这个“陷阱”越来越偏离真正的全局最优。利用有限数据训练的深层网络,性能还不如较浅层网络。同时,另一个不可忽略的问题是随着网络层数增加,“梯度消失”现象更加严重。具体来说,我们常常使用 sigmoid 作为神经元的输入输出函数。对于幅度为1的信号,在BP反向传播梯度时,每传递一层,梯度衰减为原来的0.25。层数一多,梯度指数衰减后低层基本上接受不到有效的训练信号。

3.(DNN)神经网络“具有深度”

2006年,Hinton利用预训练方法缓解了局部最优解问题,将隐含层推动到了7层(参考论文:Hinton G E, Salakhutdinov R R. Reducing the Dimensionality of Data with Neural Networks[J]. Science, 2006, 313(5786):504-507.),神经网络真正意义上有了“深度”,由此揭开了深度学习的热潮。这里的“深度”并没有固定的定义——在语音识别中4层网络就能够被认为是“较深的”,而在图像识别中20层以上的网络屡见不鲜。为了克服梯度消失,ReLU、maxout等传输函数代替了 sigmoid,形成了如今 DNN 的基本形式。单从结构上来说,全连接的DNN和上图的多层感知机是没有任何区别的。值得一提的是,今年出现的高速公路网络(highway network)和深度残差学习(deep residual learning)进一步避免了梯度弥散问题,网络层数达到了前所未有的一百多层(深度残差学习:152层,具体去看何恺明大神的paper)!

4.CNN(卷积神经网络)的出现

我们看到全连接DNN的结构里下层神经元和所有上层神经元都能够形成连接,带来的潜在问题是参数数量的膨胀。假设输入的是一幅像素为1K*1K的图像,隐含层有1M个节点,光这一层就有10^12个权重需要训练,这不仅容易过拟合,而且极容易陷入局部最优。另外,图像中有固有的局部模式(比如轮廓、边界,人的眼睛、鼻子、嘴等)可以利用,显然应该将图像处理中的概念和神经网络技术相结合。此时我们可以祭出题主所说的卷积神经网络CNN。对于CNN来说,并不是所有上下层神经元都能直接相连,而是通过“卷积核”作为中介。同一个卷积核在所有图像内是共享的,图像通过卷积操作后仍然保留原先的位置关系。

通过一个例子简单说明卷积神经网络的结构。假设我们需要识别一幅彩色图像,这幅图像具有四个通道 ARGB (透明度和红绿蓝,对应了四幅相同大小的图像),假设卷积核大小为 3∗3 共使用100个卷积核w1到w100(从直觉来看,每个卷积核应该学习到不同的结构特征)。用w1在ARGB图像上进行卷积操作,可以得到隐含层的第一幅图像;这幅隐含层图像左上角第一个像素是四幅输入图像左上角 3∗3 区域内像素的加权求和,以此类推。同理,算上其他卷积核,隐含层对应100幅“图像”。每幅图像对是对原始图像中不同特征的响应。按照这样的结构继续传递下去。CNN中还有 max-pooling 等操作进一步提高鲁棒性。

我们注意到,对于图像,如果没有卷积操作,学习的参数量是灾难级的。CNN之所以用于图像识别,正是由于CNN模型限制了参数的个数并挖掘了局部结构的这个特点。顺着同样的思路,利用语音语谱结构中的局部信息,CNN照样能应用在语音识别中。在普通的全连接网络或CNN中,每层神经元的信号只能向上一层传播,样本的处理在各个时刻独立,因此又被成为前向神经网络(Feed-forward Neural Networks)。

5.RNN(循环神经网络)的出现

全连接的DNN还存在着另一个问题——无法对时间序列上的变化进行建模。然而,样本出现的时间顺序对于自然语言处理、语音识别、手写体识别等应用非常重要。对了适应这种需求,就出现了另一种神经网络结构——循环神经网络RNN。而在RNN中,神经元的输出可以在下一个时间戳直接作用到自身,即第i层神经元在m时刻的输入,除了(i−1)层神经元在该时刻的输出外,还包括其自身在(m−1)时刻的输出。

RNN可以看成一个在时间上传递的神经网络,它的深度是时间的长度!正如我们上面所说,“梯度消失”现象又要出现了,只不过这次发生在时间轴上。对于t时刻来说,它产生的梯度在时间轴上向历史传播几层之后就消失了,根本就无法影响太遥远的过去。因此,之前说“所有历史”共同作用只是理想的情况,在实际中,这种影响也就只能维持若干个时间戳。为了解决时间上的梯度消失,机器学习领域发展出了长短时记忆单元 LSTM,通过门的开关实现时间上记忆功能,并防止梯度消失

四、神经网络BP算法

反向传播算法(Back Propagation)分二步进行,即正向传播和反向传播。这两个过程简述如下:

1.正向传播

输入的样本从输入层经过隐单元一层一层进行处理,传向输出层;在逐层处理的过程中。在输出层把当前输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程。

2.反向传播

反向传播时,把误差信号按原来正向传播的通路反向传回,逐层修改连接权值,以望代价函数趋向最小。

误差推导过程:

《从感知机到人工神经网络》
《从感知机到人工神经网络》

《从感知机到人工神经网络》

标准BP算法,累计BP算法

从上述的推导计算法可以看出其实基于一个训练要本给出的更新权值的过程,其被称为标准bp算法,如果类似的基于累积误差最小化的更新原则,得到的是累积的更新算法,即累积BP算法。

一般来说,标准的BP算法每次更新只针对于单个样例,参数更新较为频繁,同时他还有可能出现对不同样例更新出现“抵消”现象,因此其往往需要更多次数的迭代,累积BP算法直接针对累积误差最小化,它将完整训练集读取一遍后才进行参数的更新,其参数频率更新的低得多,但是其累积误差下降到一定的程序后,进一步的下降会非常的缓慢,这是标准BP往往会更快得到较好的解,尤其是在训练集较大的时候。

五、人工神经网络的特点

《从感知机到人工神经网络》
《从感知机到人工神经网络》

参考资料:
[1] 统计学习方法》 李航

[2]《机器学习》 周志华

[3] 浅谈感知机与神经网络(无师自通)

[4] 人工神经网络(二)单层感知器

[5] 机器学习系列:(十)从感知器到人工神经网络

[6] 从感知机到人工神经网络

[7] 人工神经网络模型与分类


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • Learning to Paint with Model-based Deep Reinforcement Learning
    本文介绍了一种基于模型的深度强化学习方法,通过结合神经渲染器,教机器像人类画家一样进行绘画。该方法能够生成笔画的坐标点、半径、透明度、颜色值等,以生成类似于给定目标图像的绘画。文章还讨论了该方法面临的挑战,包括绘制纹理丰富的图像等。通过对比实验的结果,作者证明了基于模型的深度强化学习方法相对于基于模型的DDPG和模型无关的DDPG方法的优势。该研究对于深度强化学习在绘画领域的应用具有重要意义。 ... [详细]
  • 鄂维南:从数学角度,理解机器学习的「黑魔法」,并应用于更广泛的科学问题...
    作者|Hertz来源|科学智能AISI北京时间2022年7月8日晚上22:30,鄂维南院士在2022年的国际数学家大会上作一小时大会报告(plenarytalk)。今 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 基于深度学习的遥感应用
    文章目录深度学习的发展过程深度学习在遥感中的应用基于深度学习的遥感样例库建设基于深度学习的遥感影像目标及场景检索基于深度学习的建筑物提取基于深度学习的密集建筑物自动检测基于深度学习 ... [详细]
  • Visualizing and Understanding Convolutional Networks(ZFNet网络)论文阅读笔记
    VisualizingandUnderstandingConvolutionalNetworksZFNet网络架构论文阅读笔记2022.4.4论文地址https:arxiv ... [详细]
  • 分类与聚类
    一:分类1:定义分类其实是从特定的数据中挖掘模式,做出判断的过程。分类是在一群已经知道类别标号的样本中,训练一种分类器 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
author-avatar
小白秋波_314
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有