深度学习笔记(三)计算图及其导数运算方法

通过上文logistic regression的讲解知道,正向运算可以计算输出结果,而反向运算可以计算梯度或导数,从而调整参数。
通过简单的运算式引出计算图的组成,从而引出深度学习中前向传播和反向传播的运算方法。

一、计算图与正向传播

假设函数 J ( a , b , c ) = 3 ( a + b c ) . J(a,b,c)=3(a+bc). J(a,b,c)=3(a+bc).按照运算顺序我们令, u = b c , v = a + u , J = 3 v . u=bc,v=a+u,J=3v. u=bc,v=a+u,J=3v.
ps.如果学过高等数学中的多元微积分,那么以下内容均可以类比多元微分学中的链式求导法则(chain rule),于是得到如下图(其实正向计算即分布计算过程):
在这里插入图片描述
分布计算的过程比较容易,交给计算机完成会更加高效,所以这部分略。

二、计算导数与反向传播

在这里插入图片描述
d J d v = 3 , d v d a = 1. \frac{dJ}{dv}=3,\frac{dv}{da}=1. dvdJ=3,dadv=1.

d J d a = d J d v d v d a = 3 × 1 = 3. \frac{dJ}{da}=\frac{dJ}{dv} \frac{dv}{da}=3\times1=3. dadJ=dvdJdadv=3×1=3.

d J d v = 3 , d v d u = 1. \frac{dJ}{dv}=3,\frac{dv}{du}=1. dvdJ=3,dudv=1.

d J d u = d J d v d v d u = 3 × 1 = 3. \frac{dJ}{du}=\frac{dJ}{dv} \frac{dv}{du}=3\times1=3. dudJ=dvdJdudv=3×1=3.

d J d b = d J d v d v d u d u d b = 3 × 1 × 2 = 6. \frac{dJ}{db}=\frac{dJ}{dv} \frac{dv}{du} \frac{du}{db}=3\times1 \times 2=6. dbdJ=dvdJdudvdbdu=3×1×2=6.

三、编程符号规定

求导时, d F i n a l O u t p u t V a r d v a r \frac{dFinalOutputVar}{dvar} dvardFinalOutputVar表示最终输出变量对某个相关变量的导数。编程时,为了方便并统一表示这个求导变量,引入变量名:
d v a r . dvar. dvar.
例如, d J d u → d u , d J d a → d a . \frac{dJ}{du}\to du,\frac{dJ}{da}\to da. dudJdu,dadJda. 同时,这样写也避开了中间变量。

四、总结

  • 一个计算流程图,正向计算成本函数 J J J,需要优化的函数
  • 在计算一系列导数时,最有效的办法是反向(从右到左计算),跟着红色箭头走,层层递进求导(链式)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.zwX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值