恩蓝号

导数计算法则,导数计算乐乐课堂

通过上文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}=3times1=3. dadJ​=dvdJ​dadv​=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}=3times1=3. dudJ​=dvdJ​dudv​=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}=3times1 times 2=6. dbdJ​=dvdJ​dudv​dbdu​=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. dudJ​→du,dadJ​→da. 同时,这样写也避开了中间变量。

四、总结 一个计算流程图,正向计算成本函数 J J J,需要优化的函数在计算一系列导数时,最有效的办法是反向(从右到左计算),跟着红色箭头走,层层递进求导(链式)

免责声明:文章源自网络,版权归原作者所有,如有侵犯联系删除。

当前位置:首页 > 编程知识 » 2023-03-03 12:07:59

猜你喜欢


华数杯c题思路,导数压轴题思路

思路分享 2021数维杯思路 获取更多思路 ① 公众号(学长建模)发布,由于公众号只能一天更新一次思路,学长在发布第一版思路后,还会检查和...

像二阶导数,二阶导数的像

二阶导数(差分)就是像素附近的梯度的变化量。梯度就是带方向的一阶差分。如果灰阶是均匀地由暗到亮(如 [10 20 30 40... ]),则...