反向传播(Back Propagation)

通常在设计好一个神经网络后,参数的数量可能会达到百万级别。而我们利用梯度下降去跟新参数的过程如(1)。但是在计算百万级别的参数时,需要一种有效计算梯度的方法,这种方法就是反向传播(简称BP), 因此BP并不是一种新的算法,使用BP就是能够使计算梯度时更加有效率。

其中θ为神经网络的参数,为梯度。

链式法则

设有两个函数为y=g(x),z=h(y),那么要计算z对x导数,则计算过程如(2)

设有三个函数为x=g(s),y=h(s),z=k(x,y),那么要计算z对x导数,则计算过程如(3)

BP计算过程

假定我们设计的神经网络结构如图1-1所示,其中yj神经网络为输出值,dh为隐藏层神经元的输出值,xi为输入值,bj、mh分别是隐藏层和输出层神经元的偏置;

图1-1 神经网络结构

设神经网络的损失函数为L(θ)(L(θ)具体的结构根据实际情况来确定,θ表示所有参数);wjh的更新形式为

由于wjh是通过影响,继而影响yj,最终影响L(θ)。因此wjh的更新计算可以通过(2)的链式法则进行展开。

其中,需要在确定激活函数和损失函数的具体结果后才就可以进行微分。而则可以在神经网络前向传播的过程中就可以计算,因此这一项的计算是自下向上,因此也称作forward pass

类比于wjh的更新情况,bj的更新计算为

再计算vhi的的更新情况,跟wjh的更新情况没有太大差别。vhi通过影响输入,继而影响dh,dh通过影响所有的输出层神经元的输入,继而影响输出值Y={y1,y2,...yl},最终影响L(θ),因此需要运用(3)进行链式法则展开

其中(8)中的跟计算的部分项相同。因此,要计算下层参数的微积分,就需要计算上层参数的微积分。整个参数的更新计算自上向下,这个计算过程也称作backward pass

参考资料

[1]机器学习-李宏毅

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

反向传播(Back Propagation)的更多相关文章

  1. 神经网络中误差反向传播(back propagation)算法的工作原理

    注意:版权所有,转载需注明出处. 神经网络,从大学时候就知道,后面上课的时候老师也讲过,但是感觉从来没有真正掌握,总是似是而非,比较模糊,好像懂,其实并不懂. 在开始推导之前,需要先做一些准备工作,推 ...

  2. 前馈神经网络-反向传播(Back Propagation)公式推导走读

        构造:输入神经元个数等于输入向量维度,输出神经元个数等于输出向量维度.(x1=(1,2,3),则需要三个输入神经元)   一 前向后传播   隐层:

  3. 前向传播算法(Forward propagation)与反向传播算法(Back propagation)

    虽然学深度学习有一段时间了,但是对于一些算法的具体实现还是模糊不清,用了很久也不是很了解.因此特意先对深度学习中的相关基础概念做一下总结.先看看前向传播算法(Forward propagation)与 ...

  4. 吴恩达深度学习 反向传播(Back Propagation)公式推导技巧

    由于之前看的深度学习的知识都比较零散,补一下吴老师的课程希望能对这块有一个比较完整的认识.课程分为5个部分(粗体部分为已经看过的): 神经网络和深度学习 改善深层神经网络:超参数调试.正则化以及优化 ...

  5. Deep Learning 学习笔记(7):神经网络的求解 与 反向传播算法(Back Propagation)

    反向传播算法(Back Propagation): 引言: 在逻辑回归中,我们使用梯度下降法求参数方程的最优解. 这种方法在神经网络中并不能直接使用, 因为神经网络有多层参数(最少两层),(?为何不能 ...

  6. BP(back propagation)反向传播

    转自:http://www.zhihu.com/question/27239198/answer/89853077 机器学习可以看做是数理统计的一个应用,在数理统计中一个常见的任务就是拟合,也就是给定 ...

  7. 再谈反向传播(Back Propagation)

    此前写过一篇<BP算法基本原理推导----<机器学习>笔记>,但是感觉满纸公式,而且没有讲到BP算法的精妙之处,所以找了一些资料,加上自己的理解,再来谈一下BP.如有什么疏漏或 ...

  8. Backpropagation反向传播算法(BP算法)

    1.Summary: Apply the chain rule to compute the gradient of the loss function with respect to the inp ...

  9. 深度神经网络(DNN)反向传播算法(BP)

    在深度神经网络(DNN)模型与前向传播算法中,我们对DNN的模型和前向传播算法做了总结,这里我们更进一步,对DNN的反向传播算法(Back Propagation,BP)做一个总结. 1. DNN反向 ...

随机推荐

  1. 如果不空null并且不是空字符串才去修改这个值,但这样写只能针对字符串(String)类型,如果是Integer类型的话就会有问题了。 int i = 0; i!=''。 mybatis中会返回tr

    mybatis 参数为Integer型数据并赋值0时,有这样一个问题: mybatis.xml中有if判断条件判断参数不为空时,赋值为0的Integer参数被mybatis判断为空,因此不执行< ...

  2. javaScript编写9*9口诀

    学习html+css+javaScript<!DOCTYPE html> <html> <head> <title>chaoba</title&g ...

  3. PHP设计模式之代理模式

    代理模式定义 为其他对象提供一种代理,以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介作用. 代理模式使用场景 当需要隐藏一 ...

  4. introJs用法及在webkit内核浏览器的一个报错

    1.用法 很简单的用法,引入js,引入css,再执行introJs().start();就可以了(备注:introJs会自动去抓取含有data-intro的dom在introJs源码中_introFo ...

  5. NIO基础操作

    原文链接http://zhhll.icu/2020/05/18/java%E5%9F%BA%E7%A1%80/IO/NIO%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C/ N ...

  6. Eslint提示const关键字被保留

    如果在使用eslint的时候提示: error Parsing error: The keyword 'const' is reserved 有可能是因为eslint默认审查的es5,需要明确让他审查 ...

  7. .netcore 急速接入第三方登录,不看后悔

    新年新气象,趁着新年的喜庆,肝了十来天,终于发了第一版,希望大家喜欢. 如果有不喜欢看文字的童鞋,可以直接看下面的地址体验一下: https://oauthlogin.net/ 前言 此次带来得这个小 ...

  8. 【LeetCode】365.水壶问题

    题目描述 解题思路 思路一:裴蜀定理-数学法 由题意,每次操作只会让桶里的水总量增加x或y,或者减少x或y,即会给水的总量带来x或y的变化量,转为数字描述即为:找到一对整数a,b使得下式成立: ax+ ...

  9. 如何在 Vite 中使用 Element UI + Vue 3

    在上篇文章<2021新年 Vue3.0 + Element UI 尝鲜小记>里,我们尝试使用了 Vue CLI 创建 Vue 3 + Element UI 的项目,而 Vue CLI 实际 ...

  10. 【Spring】Spring中的Bean - 4、Bean的生命周期

    Bean的生命周期 简单记录-Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)-Spring中的Bean 了解Spring中Bean的生命周期有何意义? 了解Sp ...