反向传播算法(Backpropagation)是目前用来训练人工神经网络(Artificial Neural Network,ANN)的最常用且最有效的算法。其主要思想是:
(1)将训练集数据输入到ANN的输入层,经过隐藏层,最后达到输出层并输出结果,这是ANN的前向传播过程;
(2)由于ANN的输出结果与实际结果有误差,则计算估计值与实际值之间的误差,并将该误差从输出层向隐藏层反向传播,直至传播到输入层;
(3)在反向传播的过程中,根据误差调整各种参数的值;不断迭代上述过程,直至收敛。
        反向传播算法的思想比较容易理解,但具体的公式则要一步步推导,因此本文着重介绍公式的推导过程。

1. 变量定义

        上图是一个三层人工神经网络,layer1至layer3分别是输入层、隐藏层和输出层。如图,先定义一些变量:
        表示第个神经元连接到第层的第个神经元的权重;
表示第层的第个神经元的偏置;
        表示第层的第个神经元的输入,即
        表示第个神经元的输出,即
        其中表示激活函数。

2. 代价函数

        代价函数被用来计算ANN输出值与实际值之间的误差。常用的代价函数是二次代价函数(Quadratic cost function):
        其中,表示实际的分类,表示预测的输出,表示神经网络的最大层数。

3. 公式及其推导

        本节将介绍反向传播算法用到的4个公式,并进行推导。如果不想了解公式推导过程,请直接看第4节的算法步骤。
        首先,将第个神经元中产生的错误(即实际值与预测值之间的误差)定义为:
        本文将以一个输入样本为例进行说明,此时代价函数表示为:
公式1(计算最后一层神经网络产生的错误):

        其中,表示Hadamard乘积,用于矩阵或向量之间点对点的乘法运算。公式1的推导过程如下:
公式2(由后往前,计算每一层神经网络产生的错误):

        推导过程:
公式3(计算权重的梯度):

        推导过程:
公式4(计算偏置的梯度):

        推导过程:

4. 反向传播算法伪代码

  • 输入训练集

  • 对于训练集中的每个样本x,设置输入层(Input layer)对应的激活值

    • 前向传播:
, 
  • 计算输出层产生的错误:
  • 反向传播错误:
  • 使用梯度下降(gradient descent),训练参数:

 

深入浅出BP神经网络(反向传播算法)相关推荐

  1. BP神经网络(反向传播算法原理、推导过程、计算步骤)

    BP神经网络 1.反向传播算法的原理 2.反向传播算法参数学习的推导 3.反向传播算法参数更新案例 3.1 反向传播的具体计算步骤 3.1.1 计算输出层的误差 3.1.2 计算隐藏层误差 3.1.3 ...

  2. 神经网络训练中的Tricks之高效BP(反向传播算法)

    神经网络训练中的Tricks之高效BP(反向传播算法) zouxy09@qq.com http://blog.csdn.net/zouxy09 Tricks!这是一个让人听了充满神秘和好奇的词.对于我 ...

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

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

  4. 【机器学习笔记】神经网络反向传播算法 推导

    神经网络反向传播算法 推导 (一) 概念及基本思想 (二)信息的前向传播 (三)误差反向传播 (1)输出层的权重参数更新 (2)隐藏层的权重参数更新 (3)输出层与隐藏层的偏置参数更新 (4)反向传播 ...

  5. 神经网络之BP(反向传播算法)的原理介绍

    反向传播是人工神经网络中的一个重要算法,这个方法可以对网络中所有权重计算损失函数的梯度,然后这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数. 反向传播算法的原理 我们先直观的看一下反向传播的 ...

  6. BP神经网络反向传播手动推导

    BP神经网络过程: 基本思想 BP算法是一个迭代算法,它的基本思想如下: 将训练集数据输入到神经网络的输入层,经过隐藏层,最后达到输出层并输出结果,这就是前向传播过程. 由于神经网络的输出结果与实际结 ...

  7. 反向传播算法的理论基础,神经网络反向传播算法

    1.如何理解神经网络里面的反向传播算法 反向传播算法(Backpropagation)是目前用来训练人工神经网络(Artificial Neural Network,ANN)的最常用且最有效的算法.其 ...

  8. 吴恩达机器学习:神经网络 | 反向传播算法

    上一周我们学习了 神经网络 | 多分类问题.我们分别使用 逻辑回归 和 神经网络 来解决多分类问题,并了解到在特征数非常多的情况下,神经网络是更为有效的方法.这周的课程会给出训练 神经网络 所使用的 ...

  9. 神经网络-反向传播算法

    一.前言 这是一场以误差(Error)为主导的反向传播(Back Propagation)运动,旨在得到最优的全局参数矩阵,进而将多层神经网络应用到分类或者回归任务中去. 前向传递输入信号直至输出产生 ...

  10. 神经网络反向传播算法原理笔记

    神经网络是一种是基于生物学中神经网络的基本原理,在理解和抽象了人脑结构和外界刺激响应机制后,以网络拓扑知识为理论基础,模拟人脑的神经系统对复杂信息的处理机制的一种数学模型.该模型以并行分布的处理能力. ...

最新文章

  1. Android Linux下的常用命令行
  2. .NET微服务架构及API网关
  3. (译)Objective-C的动态特性
  4. XLNet再次超越BERT,技术发展太快,如何才能跟得上节奏?
  5. 桌面支持--打印机任务取消不了
  6. [数据库]14个数据库的设计技巧
  7. 哪个相机可以拍gif动图_入门级微单相机哪家强?索尼微单A6400评测来了!
  8. 相对定位(HTML、CSS)
  9. Flex初学者群(54200135)共享资料清单-----2008.1.24
  10. Spring 菜鸟教程 异常 集锦
  11. ati显卡驱动安装linux,在debian下安装ati显卡驱动教程
  12. 谈谈如何提升工作效率,需要从这4方面入手!
  13. Unicode和GB2312编码表
  14. 戴尔服务器安装linux不能识别硬盘,戴尔服务器重装系统找不到硬盘怎么办.
  15. JavaSE笔记 30天学Java打卡 Day03
  16. pythonstdin_Python读取stdin方法实例
  17. c51语言转换ASCII码,数据转换:C51数字转字符最快速的方法 ASCII转换
  18. 【重磅】61篇NIPS2019深度强化学习论文及部分解读
  19. 函数最值题目及答案_高一函数题目及答案解析
  20. RabbitMQ Topic模式

热门文章

  1. 前端知识体系及修炼攻略
  2. Skyfire-在移动设备上体验silverlight的效果
  3. QT添加资源和样式表(设计窗口背景图)
  4. [bzoj2878][Noi2012]迷失游乐园(基环树dp)
  5. Centos下磁盘管理的常用命令记录(如查找大文件)
  6. sql server 2016新特性 查询存储(Query Store)的性能影响
  7. mongodb update操作
  8. 十九、python沉淀之路--装饰器
  9. 使用纯生js实现图片轮换
  10. pymongo根据ObjectId 查找文档记录