神经网络中用反向传播求偏导数的思想就相当于复合函数求偏导。


从头说起,在学生时代我们要求下面式子中,函数 e ( a , b ) e(a,b) e(a,b)对a和b的偏导数:
e = ( a + b ) ∗ ( b + 1 ) e=(a+b)*(b+1) e=(a+b)∗(b+1)

∂ e ∂ a = ? \frac{\partial e}{\partial a}=? ∂a∂e​=?

∂ e ∂ b = ? \frac{\partial e}{\partial b}=? ∂b∂e​=?

传统的求偏导方法就是用解析式直接求偏导即可。

但如果随着函数复合的层数增多,对应的就是神经网络的层数增多,总体的解析式也会变得极其复杂,这个时候想一步求出偏导数是不可能的,只能通过反向传播法来求偏导数。


反向传播的核心就是计算图,其数学原理就是链式法则求偏导数

e = ( a + b ) ∗ ( b + 1 ) e=(a+b)*(b+1) e=(a+b)∗(b+1)的计算图如下表示,对应的就相当于神经网络图,每个节点都是原式中的一个小小的原子操作,也就是加减乘除等操作,对应的就相当于神经网络中每个结点的计算:

从结点a和结点b开始,顺着箭头计算,直到算出结果e,这就是前馈计算的过程,也就是前向传播计算。


其实,我们在前馈计算的过程中,完全可以计算每个中间结点对上一个节点的偏导数。

比如在前馈计算c=a+b时,我们可以顺道算出 ∂ c ∂ a \frac{\partial c}{\partial a} ∂a∂c​和 ∂ c ∂ b \frac{\partial c}{\partial b} ∂b∂c​;

在计算d=b+1时,逆着箭头计算出 ∂ d ∂ b \frac{\partial d}{\partial b} ∂b∂d​( ∂ d ∂ 1 = 0 \frac{\partial d}{\partial 1}=0 ∂1∂d​=0,所以可以省略);

在计算e=c*d时,逆着指向它的两个箭头计算出 ∂ e ∂ c \frac{\partial e}{\partial c} ∂c∂e​和 ∂ e ∂ d \frac{\partial e}{\partial d} ∂d∂e​。

最后,根据数学上的链式法则求偏导:

链式法则:路径上的偏导数做乘法,不同路径上的做加法。比如,从a到e的路径只有一条,其路径上的所有偏导数做乘法;从b到e上的路径有两条,每条路径上的偏导数做乘法,最后不同路径的结果做加法。如下所示:

∂ e ∂ a = ∂ e ∂ c ⋅ ∂ c ∂ a \frac{\partial e}{\partial a}=\frac{\partial e}{\partial c}·\frac{\partial c}{\partial a} ∂a∂e​=∂c∂e​⋅∂a∂c​

∂ e ∂ b = ∂ e ∂ c ⋅ ∂ c ∂ b + ∂ e ∂ d ⋅ ∂ d ∂ b \frac{\partial e}{\partial b}=\frac{\partial e}{\partial c}·\frac{\partial c}{\partial b}+\frac{\partial e}{\partial d}·\frac{\partial d}{\partial b} ∂b∂e​=∂c∂e​⋅∂b∂c​+∂d∂e​⋅∂b∂d​


至此,仅需在前馈计算的过程中,我们就能顺道求出复合函数e(a,b)的偏导数。


后续就是做函数优化等等了。

反向传播求偏导原理简单理解相关推荐

  1. BP反向传播算法的思考和直观理解 -卷积小白的随机世界

    https://www.toutiao.com/a6690831921246634504/ 2019-05-14 18:47:24 本篇文章,本来计划再进一步完善对CNN卷积神经网络的理解,但在对卷积 ...

  2. 梯度的直观理解_BP反向传播算法的思考和直观理解 -卷积小白的随机世界

    本篇文章,本来计划再进一步完善对CNN卷积神经网络的理解,但在对卷积层反向传播算法的理解中,越发觉得之前对于BP反向传播算法的理解是不到位的.小白近日觉得,对于深度神经网络,"反向传播&qu ...

  3. python求偏导_python实现点位精度评定

    点位精度评定,主要是评定点位数据得l离散度.评定主要是一系列得数学值.在python的numpy中有一些列的函数可以用来实现这一系列的评估值. 1.期望 期望表示一点点位最可能出现的位置.一般情况下期 ...

  4. 用Python对数学函数进行求值、求偏导

    from sympy import *# x = Symbol("x") # y = diff(x**3+x, x) # print(y) # result = y.subs('x ...

  5. 1.4 torch_向量/矩阵求偏导

    文章目录 函数微分 标量/向量函数求偏导 矩阵函数求偏导 函数微分 标量/向量函数求偏导 矩阵函数求偏导

  6. 有限差分——图像求偏导

    对函数求偏导,离散化的方法--有限差分

  7. python中用sympy对变量求偏导

    用sympy 求偏导 import numpy as np import pandas as pd import sympy as sytheta, n, k = sy.symbols('theta, ...

  8. 【李代数求偏导】SLAM中李代数SE3求偏导左扰动模型和右扰动模型的区别

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 结论 1.左扰动模型: 2.右扰动模型: 2.1右扰动+右乘更新 2.2右扰动+左乘更新 3.将T展开后求偏导(具体看 ...

  9. 看懂SoftMax回归算法之代价函数求偏导的数学推导——机器学习笔记(12)

    1.学习背景 这两天学习softmax逻辑回归算法,然后卡在了其代价函数求偏导处,"百科"中说,softmax的代价函数如下: 经过求导,得到梯度公式如下: 作为一个准数学专业毕业 ...

最新文章

  1. 《javaScript100例|01》超级经典一套鼠标控制左右滚动图片带自动翻滚
  2. 你认为已经过时的C语言,是如何影响500万程序员的?...
  3. FreeSql (八)插入数据时指定列
  4. 开启防火墙并添加出入站规则
  5. 引入方式之外部样式表(CSS、HTML)
  6. mysql每10万条数据分区_WebGIS项目中利用mysql控制点库进行千万条数据坐标转换时的分表分区优化方案...
  7. 云原生是一个时代下践行者们的故事
  8. You can't specify target table 'sdb_goods' for update in FROM clause
  9. NMF非负矩阵分解算法(Non-negative Matrix Factorization)
  10. opencv(二)图像像素提取及操作
  11. GitLab上传文件教程
  12. STM32CubeIDE XiP 和 BootROM介绍, XiP外部内存QSPI FLASH执行用户代码
  13. 修改host访问远景论坛
  14. 批量替换一个文件中的文件名,例如将文件夹中s**_abnormal.jpg文件修改为s**_abnor.jpg
  15. 第 218 场周赛阿里巴巴专场(只做出了前三道)设计 Goal 解析器+K 和数对的最大数目+连接连续二进制数字
  16. 20190507-学习dubbo有感于梁飞
  17. 转行互联网运营是个坑
  18. Windows Thin PC体验 语言包更改(win 7 included)
  19. Pandas Cut 与dataframe随机抽取(sample)替换(replace)应用案例
  20. 网络云存储技术Windows server 2012 (项目十一 NAS服务器磁盘配额的配置与管理)

热门文章

  1. outlook显示无法连接发送服务器地址,为什么outlook无法连接发送(pop3)电子邮件服...
  2. Mac使用终端上传ipa到App Store Connect
  3. Transact-SQL 语法元素之数据类型
  4. 普普通通的导航条练习
  5. Blog外挂之:热门文章与导航栏
  6. 普通话水平测试录音软件,普通话水平测试50篇示范录音
  7. Windows10 在睡眠或休眠状态下自动唤醒
  8. cadence导出bom清单_OrCAD Capture CIS 16.6 导出BOM
  9. 微信小程序使用微信公众号的模板消息进行消息推送开发流程
  10. excel数据表单_新的改进的Excel数据输入表单