如何理解神经网络里面的反向传播算法

反向传播算法(Backpropagation)是目前用来训练人工神经网络(ArtificialNeuralNetwork,ANN)的最常用且最有效的算法。

其主要思想是:(1)将训练集数据输入到ANN的输入层,经过隐藏层,最后达到输出层并输出结果,这是ANN的前向传播过程;(2)由于ANN的输出结果与实际结果有误差,则计算估计值与实际值之间的误差,并将该误差从输出层向隐藏层反向传播,直至传播到输入层;(3)在反向传播的过程中,根据误差调整各种参数的值;不断迭代上述过程,直至收敛。

反向传播算法的思想比较容易理解,但具体的公式则要一步步推导,因此本文着重介绍公式的推导过程。1.变量定义上图是一个三层人工神经网络,layer1至layer3分别是输入层、隐藏层和输出层。

如图,先定义一些变量:表示第层的第个神经元连接到第层的第个神经元的权重;表示第层的第个神经元的偏置;表示第层的第个神经元的输入,即:表示第层的第个神经元的输出,即:其中表示激活函数。

谷歌人工智能写作项目:神经网络伪原创

BP神经网络(误差反传网络)

虽然每个人工神经元很简单,但是只要把多个人工神经元按一定方式连接起来就构成了一个能处理复杂信息的神经网络文案狗。采用BP算法的多层前馈网络是目前应用最广泛的神经网络,称之为BP神经网络。

它的最大功能就是能映射复杂的非线性函数关系。

对于已知的模型空间和数据空间,我们知道某个模型和他对应的数据,但是无法写出它们之间的函数关系式,但是如果有大量的一一对应的模型和数据样本集合,利用BP神经网络可以模拟(映射)它们之间的函数关系。

一个三层BP网络如图8.11所示,分为输入层、隐层、输出层。它是最常用的BP网络。理论分析证明三层网络已经能够表达任意复杂的连续函数关系了。只有在映射不连续函数时(如锯齿波)才需要两个隐层[8]。

图8.11中,X=(x1,…,xi,…,xn)T为输入向量,如加入x0=-1,可以为隐层神经元引入阀值;隐层输出向量为:Y=(y1,…,yi,…,ym)T,如加入y0=-1,可以为输出层神经元引入阀值;输出层输出向量为:O=(o1,…,oi,…,ol)T;输入层到隐层之间的权值矩阵用V表示,V=(V1,…,Vj,…,Vl)T,其中列向量Vj表示隐层第j个神经元的权值向量;隐层到输出层之间的权值矩阵用W表示,W=(W1,…,Wk,…,Wl)T,其中列向量Wk表示输出层第k个神经元的权值向量。

图8.11三层BP网络[8]BP算法的基本思想是:预先给定一一对应的输入输出样本集。学习过程由信号的正向传播与误差的反向传播两个过程组成。

正向传播时,输入样本从输入层传入,经过各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出(教师信号)不符,则转入误差的反向传播。

将输出误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有神经元,获得各层的误差信号,用它们可以对各层的神经元的权值进行调整(关于如何修改权值参见韩立群著作[8]),循环不断地利用输入输出样本集进行权值调整,以使所有输入样本的输出误差都减小到满意的精度。

这个过程就称为网络的学习训练过程。当网络训练完毕后,它相当于映射(表达)了输入输出样本之间的函数关系。

在地球物理勘探中,正演过程可以表示为如下函数:d=f(m)(8.31)它的反函数为m=f-1(d)(8.32)如果能够获得这个反函数,那么就解决了反演问题。

一般来说,难以写出这个反函数,但是我们可以用BP神经网络来映射这个反函数m=f-1(d)。

对于地球物理反问题,如果把观测数据当作输入数据,模型参数当作输出数据,事先在模型空间随机产生大量样本进行正演计算,获得对应的观测数据样本,利用它们对BP网络进行训练,则训练好的网络就相当于是地球物理数据方程的反函数。

可以用它进行反演,输入观测数据,网络就会输出它所对应的模型。BP神经网络在能够进行反演之前需要进行学习训练。训练需要大量的样本,产生这些样本需要大量的正演计算,此外在学习训练过程也需要大量的时间。

但是BP神经网络一旦训练完毕,在反演中的计算时间可以忽略。要想使BP神经网络比较好地映射函数关系,需要有全面代表性的样本,但是由于模型空间的无限性,难以获得全面代表性的样本集合。

用这样的样本训练出来的BP网络,只能反映样本所在的较小范围数据空间和较小范围模型空间的函数关系。对于超出它们的观测数据就无法正确反演。

目前BP神经网络在一维反演有较多应用,在二维、三维反演应用较少,原因就是难以产生全面代表性的样本空间。

反向传播算法 为什么 误差 那么定义

自从40年代赫布(D.O.Hebb)提出的学习规则以来,人们相继提出了各种各样的学习算法。

其中以在1986年Rumelhart等提出的误差反向传播法,即BP(errorBackPropagation)法影响最为广泛。直到今天,BP算法仍然是自动控制上最重要、应用最多的有效算法。

是用于多层神经网络训练的著名算法,有理论依据坚实、推导过程严谨、物理概念清楚、通用性强等优点。但是,人们在使用中发现BP算法存在收敛速度缓慢、易陷入局部极小等缺点。

BP算法的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成。

1)正向传播:输入样本->输入层->各隐层(处理)->输出层注1:若输出层实际输出与期望输出(教师信号)不符,则转入2)(误差反向传播过程)。

2)误差反向传播:输出误差(某种形式)->隐层(逐层)->输入层其主要目的是通过将输出误差反传,将误差分摊给各层所有单元,从而获得各层单元的误差信号,进而修正各单元的权值(其过程,是一个权值调整的过程)。

注2:权值调整的过程,也就是网络的学习训练过程(学习也就是这么的由来,权值调整)。

1)初始化2)输入训练样本对,计算各层输出3)计算网络输出误差4)计算各层误差信号5)调整各层权值6)检查网络总误差是否达到精度要求满足,则训练结束;不满足,则返回步骤2。

1)易形成局部极小(属贪婪算法,局部最优)而得不到全局最优;2)训练次数多使得学习效率低下,收敛速度慢(需做大量运算);3)隐节点的选取缺乏理论支持;4)训练时学习新样本有遗忘旧样本趋势。

神经网络算法原理

4.2.1概述人工神经网络的研究与计算机的研究几乎是同步发展的。

1943年心理学家McCulloch和数学家Pitts合作提出了形式神经元的数学模型,20世纪50年代末,Rosenblatt提出了感知器模型,1982年,Hopfiled引入了能量函数的概念提出了神经网络的一种数学模型,1986年,Rumelhart及LeCun等学者提出了多层感知器的反向传播算法等。

神经网络技术在众多研究者的努力下,理论上日趋完善,算法种类不断增加。目前,有关神经网络的理论研究成果很多,出版了不少有关基础理论的著作,并且现在仍是全球非线性科学研究的热点之一。

神经网络是一种通过模拟人的大脑神经结构去实现人脑智能活动功能的信息处理系统,它具有人脑的基本功能,但又不是人脑的真实写照。它是人脑的一种抽象、简化和模拟模型,故称之为人工神经网络(边肇祺,2000)。

人工神经元是神经网络的节点,是神经网络的最重要组成部分之一。目前,有关神经元的模型种类繁多,最常用最简单的模型是由阈值函数、Sigmoid函数构成的模型(图4-3)。

图4-3人工神经元与两种常见的输出函数神经网络学习及识别方法最初是借鉴人脑神经元的学习识别过程提出的。

输入参数好比神经元接收信号,通过一定的权值(相当于刺激神经兴奋的强度)与神经元相连,这一过程有些类似于多元线性回归,但模拟的非线性特征是通过下一步骤体现的,即通过设定一阈值(神经元兴奋极限)来确定神经元的兴奋模式,经输出运算得到输出结果。

经过大量样本进入网络系统学习训练之后,连接输入信号与神经元之间的权值达到稳定并可最大限度地符合已经经过训练的学习样本。

在被确认网络结构的合理性和学习效果的高精度之后,将待预测样本输入参数代入网络,达到参数预测的目的。

4.2.2反向传播算法(BP法)发展到目前为止,神经网络模型不下十几种,如前馈神经网络、感知器、Hopfiled网络、径向基函数网络、反向传播算法(BP法)等,但在储层参数反演方面,目前比较成熟比较流行的网络类型是误差反向传播神经网络(BP-ANN)。

BP网络是在前馈神经网络的基础上发展起来的,始终有一个输入层(它包含的节点对应于每个输入变量)和一个输出层(它包含的节点对应于每个输出值),以及至少有一个具有任意节点数的隐含层(又称中间层)。

在BP-ANN中,相邻层的节点通过一个任意初始权值全部相连,但同一层内各节点间互不相连。

对于BP-ANN,隐含层和输出层节点的基函数必须是连续的、单调递增的,当输入趋于正或负无穷大时,它应该接近于某一固定值,也就是说,基函数为“S”型(Kosko,1992)。

BP-ANN的训练是一个监督学习过程,涉及两个数据集,即训练数据集和监督数据集。

给网络的输入层提供一组输入信息,使其通过网络而在输出层上产生逼近期望输出的过程,称之为网络的学习,或称对网络进行训练,实现这一步骤的方法则称为学习算法。

BP网络的学习过程包括两个阶段:第一个阶段是正向过程,将输入变量通过输入层经隐层逐层计算各单元的输出值;第二阶段是反向传播过程,由输出误差逐层向前算出隐层各单元的误差,并用此误差修正前层权值。

误差信息通过网络反向传播,遵循误差逐步降低的原则来调整权值,直到达到满意的输出为止。

网络经过学习以后,一组合适的、稳定的权值连接权被固定下来,将待预测样本作为输入层参数,网络经过向前传播便可以得到输出结果,这就是网络的预测。

反向传播算法主要步骤如下:首先选定权系数初始值,然后重复下述过程直至收敛(对各样本依次计算)。

(1)从前向后各层计算各单元Oj储层特征研究与预测(2)对输出层计算δj储层特征研究与预测(3)从后向前计算各隐层δj储层特征研究与预测(4)计算并保存各权值修正量储层特征研究与预测(5)修正权值储层特征研究与预测以上算法是对每个样本作权值修正,也可以对各个样本计算δj后求和,按总误差修正权值。

什么叫误差的反向传播,反向传播误差怎么算的相关推荐

  1. 误差反向传播法实现手写数字识别(纯numpy实现)

    前面一篇博客中我们讲解了仅仅使用numpy实现了数值微分法的梯度下降完成手写数字识别,使用数值微分的计算量会非常大,因此耗时也非常久.在这里我们使用另外一种快速计算梯度的方式-误差反向传播法. 代码如 ...

  2. 深度学习入门-误差反向传播法(人工神经网络实现mnist数据集识别)

    文章目录 误差反向传播法 5.1 链式法则与计算图 5.2 计算图代码实践 5.3激活函数层的实现 5.4 简单矩阵求导 5.5 Affine 层的实现 5.6 softmax-with-loss层计 ...

  3. 独家 | 数据科学家指南:梯度下降与反向传播算法

    作者:Richmond Alake 翻译:陈之炎 校对:zrx本文约3300字,建议阅读5分钟 本文旨在为数据科学家提供一些基础知识,以理解在训练神经网络时所需调用的底层函数和方法. 标签:神经网络, ...

  4. 机器学习概念 — 监督学习、无监督学习、半监督学习、强化学习、欠拟合、过拟合、后向传播、损失和优化函数、计算图、正向传播、反向传播

    1. 监督学习和无监督学习 监督学习 ( Supervised Learning ) 和无监督学习 ( Unsupervised Learning ) 是在机器学习中经常被提及的两个重要的学习方法. ...

  5. 机器学习:一步步教你理解反向传播方法

    机器学习:一步步教你理解反向传播方法 时间 2016-09-13 00:35:59  Yong Yuan's blog 原文  http://yongyuan.name/blog/back-propa ...

  6. CNN 反向传播推导

    CNN卷积神经网络推导和实现 本文的论文来自: Notes on Convolutional Neural Networks, Jake Bouvrie. 这个主要是CNN的推导和实现的一些笔记,再看 ...

  7. 05 | 前馈网络与反向传播:模型的自我学习(下)

    1.前馈网络 前馈神经网络(Feedforward Neural Network,FNN),简称前馈网络,它是一种单向的多层结构,也是最简单的神经网络,其简化结构图如下所示: 在这个网络中,蓝色的层是 ...

  8. 机器学习笔记 - 使用python代码实现易于理解的反向传播

    一.反向传播概述 反向传播可以说是神经网络历史上最重要的算法--如果没有有效的反向传播,就不可能将深度学习网络训练到我们今天看到的深度.反向传播可以被认为是现代神经网络和深度学习的基石. 反向传播的最 ...

  9. 浅谈神经网络之链式法则与反向传播算法

    反向传播是训练神经网络最重要的算法,可以这么说,没有反向传播算法就没有深度学习的今天.但是反向传播算法涉及一大堆数据公式概念.所以我们了解导数计算过程以及要介绍的新的复合函数多层求导计算过程. 链式法 ...

  10. 转载:BP(反向传播算法)公式推导及例题解析

    首发于 深度学习与我的那些事 写文章 BP(反向传播算法)公式推导及例题解析 WILL 深度学习搬砖者 ​ 关注他 297 人 赞同了该文章 写在前面:最近赶上<模式识别>课程考试,就把B ...

最新文章

  1. Python 多线程总结(2)— 线程锁、线程池、线程数量、互斥锁、死锁、线程同步
  2. oracle数据迁移常用
  3. mysql 事务 查询 范围加锁_MySQL死锁系列-常见加锁场景分析
  4. 计算机二级c语言题库缩印,2011年9月份计算机二级C语言上机题库(可缩印做小抄)百分百准确...
  5. Win10环境下安装压缩包版本MySQL-8.0.13
  6. Apache ZooKeeper - 线上系统日志清理
  7. 采购订单更改日期的妙用
  8. poj 3487 zoj 1576 稳定婚姻
  9. React 与 可视化
  10. 树形列(无限级联下拉列的曲线版本)
  11. Google Earth KML格式成为开放式国际标准
  12. sed for windows 双引号内部内容的替换
  13. python 命令行解析模块_Python解析命令行读取参数 -- argparse模块
  14. 【原创】VS2010 C++ Debug 出现 SXS: RtlCreateActivati...
  15. (JS)蔚蓝网上书店(课本案例)
  16. 使用腾讯云服务器搭建自己网站应该怎么做
  17. 汽车CAN总线入门,通俗易懂
  18. Linux硬盘格式化
  19. [office]在word中设置分级标题的方法
  20. 融合VOI与VDI、IDV、RDS,实现弹性的应用

热门文章

  1. php调用声卡,声卡转换器的作用是什么
  2. 初识Ozone和Segger J-Link Trace Pro
  3. 默认锁屏壁纸无效问题
  4. DevTools 无法加载源映射
  5. WinISO镜像文件使用简介
  6. iOS经典讲解之Apple Pay开发
  7. jQuery悬浮在线客服代码
  8. 奇迹mu开服教程:服务端的架设及开服注意事项
  9. 点到点(point-to-point) 与 端到端(end to end)
  10. python 循环语句s =2+22+222+2222之和_python基础2