Computational Graph(计算图)

李宏毅深度学习笔记
https://www.bilibili.com/video/av9770302

是什么

一种描述方程的“语言”
既然是图,则有节点(变量),边(操作(简单函数))
在这里插入图片描述

怎么用

结合链式法则可以对给定计算图表示微分
在这里插入图片描述

示例:
在这里插入图片描述

例如计算e对b的偏微分(等于图中从b到e的所有路径的微分和)
1.计算出图中所有边表示的微分
例如:图中从下至上看,因为c=a+b,因此c对a的偏微分等于1,同理c对b的偏微分等于1
2.对于每条从b到e的路径:所有边的微分相乘求得该路径上的微分(a,b点上的输入值为1)
3.将从b到e所有路径的微分相加

当需要求多个变量的偏微分时,反向的模式(从根开始)更有效率
计算方法一样【本质是一样的,可以理解成,链式法则相乘的部分顺序颠倒】
在这里插入图片描述

注意:
如果相同的参数分布在不同的节点上:
在这里插入图片描述
在计算每条边上的偏微分时,若遇到两个相同变量,先把它看成不同的变量求微分


backpropagation以往理解方法:

在这里插入图片描述
C:cost function
w i j l w_{ij}^{l} wijl: l -1层的第j个节点 与 l层的第i个节点 的连接权重
z i l z_{i}^{l} zil:第l层的输入
a j l − 1 a_{j}^{l-1} ajl1:第l-1层的输出

首先注意图中链式求解的公式的顺序的是反着写的(对应前向与后向两个传播过程)

从第一个小红框可以知道:z对w的偏微分值有两种情况,如果是第一层则值为输入,如果是其他层则为前一层的输出(大红框给出了两种情况下具体的求法)

在这里插入图片描述

将原来的整个网络结构逆转,将cost function 对输出值y求偏微分组成的向量作为网络的输入
乘上激活函数的微分值(放大的倍率)
乘上w的转置


backpropagation 用Computational Graph 理解:

用计算图表示出来:
在这里插入图片描述

反向计算:

  1. 首先求C对y的偏微分(若C为交叉熵,处理分类问题):
    在这里插入图片描述

利用one-hot对标准值y帽进行编码,则可知在单分类问题中,y帽只有r位置为1,其他位置为0,所以化简以后的交叉熵函数如图所示,偏微分值也只有在i=r时才可求,i不等于r时都为0

  1. 接着求y对 z 2 z^{2} z2的偏微分:
    在这里插入图片描述

因为激活函数不改变输入矩阵的维度,因此y对 z 2 z^{2} z2的偏微分是个方形的雅克比矩阵
当i不等于j时, y i y_{i} yi并不是由 z j z_{j} zj求得因此偏微分为0;
当i=j时,若激活函数是sigmoid,则偏微分是x取 z j z_{j} zj时,sigmoid曲线的切线斜率;
因此最后是一个对角阵

但如果激活函数是softmax则不是对角阵,因为softmax定义计算每个y的时候整个z都要参与

  1. 接下来求 z 2 z^{2} z2 a 1 a^{1} a1的偏微分:
    在这里插入图片描述

  2. 再求 z 2 z^{2} z2 w 2 w^{2} w2的偏微分:
    在这里插入图片描述

这里把w从二维拉成一维,jk表示w中(j-1)*n行k列的值,因此i=j时,对于w来说只确定了一维(行),而对于w中的第k列来说,在求z的过程中,不论是哪一行的第k列的值都是与a中的第k个值相乘,因此对 z 2 z^{2} z2 w 2 w^{2} w2求偏微分,值为 a k a^{k} ak(是一个tensor)

tensor(张量):同一个张量里元素的类型是保持一样的

  1. 如果求C对w的偏微分:
    在这里插入图片描述

从C到 w 1 w_{1} w1路径上所有的偏微分项乘起来即可,矩阵相乘得到的结果的行与第一个矩阵的行相同,而由上面提到的第1点可知,第一个矩阵是C对y求偏微分的结果,只有一行,因此最终结果也是一行,如图右上角所示。


补充:

雅可比矩阵矩阵(矩阵的偏微分求解方法):得到的矩阵行由y决定,列由x决定
在这里插入图片描述

偏增量:x增加时f(x,y)增量或y增加时f(x,y)增量
偏微分:在 Δ x \Delta x Δx趋进于0时偏增量的线性主要部分
Δ z = f x ( x , y ) Δ x + o ( Δ x ) \Delta z=f_x(x,y)\Delta x+o(\Delta x) Δz=fxx,yΔx+o(Δx)
右边等式第一项就是线性主要部分,就叫做在(x,y)点对x的偏微分
这个等式也给出了求偏微分的方法,就是用求x的偏导数求偏微分

  • 9
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值