美文网首页
2019-11-04 反向传播 链式法则 局部梯度

2019-11-04 反向传播 链式法则 局部梯度

作者: 霍尔元件 | 来源:发表于2019-11-04 16:49 被阅读0次

发下cs231n关于反向传播的讲解特别好,尤其是代码实现部分。一个复杂的式子的导数可能很复杂,但是利用链式法则就可以将问题分解为一个又一个局部梯度的堆叠(staged)

x = 3 # example values
y = -4

# forward pass
sigy = 1.0 / (1 + math.exp(-y)) # sigmoid in numerator   #(1)
num = x + sigy # numerator                               #(2)
sigx = 1.0 / (1 + math.exp(-x)) # sigmoid in denominator #(3)
xpy = x + y                                              #(4)
xpysqr = xpy**2                                          #(5)
den = sigx + xpysqr # denominator                        #(6)
invden = 1.0 / den                                       #(7)
f = num * invden # done!                                 #(8)

# backprop f = num * invden
dnum = invden # gradient on numerator                             #(8)
dinvden = num                                                     #(8)
# backprop invden = 1.0 / den 
dden = (-1.0 / (den**2)) * dinvden                                #(7)
# backprop den = sigx + xpysqr
dsigx = (1) * dden                                                #(6)
dxpysqr = (1) * dden                                              #(6)
# backprop xpysqr = xpy**2
dxpy = (2 * xpy) * dxpysqr                                        #(5)
# backprop xpy = x + y
dx = (1) * dxpy                                                   #(4)
dy = (1) * dxpy                                                   #(4)
# backprop sigx = 1.0 / (1 + math.exp(-x))
dx += ((1 - sigx) * sigx) * dsigx # Notice += !! See notes below  #(3)
# backprop num = x + sigy
dx += (1) * dnum                                                  #(2)
dsigy = (1) * dnum                                                #(2)
# backprop sigy = 1.0 / (1 + math.exp(-y))
dy += ((1 - sigy) * sigy) * dsigy                                 #(1)

我们对前向传播时产生每个变量(sigy, num, sigx, xpy, xpysqr, den, invden)进行回传。我们会有同样数量的变量,但是都以d开头,用来存储对应变量的梯度。注意在反向传播的每一小块中都将包含了表达式的局部梯度,然后根据使用链式法则乘以上游梯度。

当前梯度 = 局部梯度 * 上游梯度

讨论了分段计算在反向传播的实现中的重要性。应该将函数分成不同的模块,这样计算局部梯度相对容易,然后基于链式法则将其“链”起来。重要的是,不需要把这些表达式写在纸上然后演算它的完整求导公式,因为实际上并不需要关于输入变量的梯度的数学公式。只需要将表达式分成不同的可以求导的模块(模块可以是矩阵向量的乘法操作,或者取最大值操作,或者加法操作等),然后在反向传播中一步一步地计算梯度。

相关文章

  • 梯度下降与反向传播

    链式法则 梯度下降与反向传播(含过程推导及证明)

  • 2019-11-04 反向传播 链式法则 局部梯度

    发下cs231n关于反向传播的讲解特别好,尤其是代码实现部分。一个复杂的式子的导数可能很复杂,但是利用链式法则就可...

  • 什么是梯度消失或爆炸?

    什么是梯度消失或爆炸 根据反向传播算法和链式法则, 梯度的计算可以简化为以下公式: 其中sigmoid的导数值域是...

  • Lecture_backpropagation

    简介 本节将帮助读者对反向传播形成直观而专业的理解。反向传播是利用链式法则递归计算表达式的梯度的方法。 简单表达式...

  • 什么是梯度消失或爆炸

    根据反向传播算法和链式法则, 梯度的计算可以简化为以下公式: 其中sigmoid的导数值域是固定的, 在[0, 0...

  • 笔记6-Deep learning and backpropag

    优化算法:梯度下降,反向传播(BP)是梯度下降实现方法之一。

  • 机器学习分享——反向传播算法推导

    反向传播(英语:Backpropagation,缩写为BP)是“误差反向传播”的简称,是一种与最优化方法(如梯度下...

  • 反向传播

    反向传播(英語:Backpropagation,缩写为BP)是“误差反向传播”的简称,是一种与最优化方法(如梯度下...

  • 6.计算图&反向传播(Computational Gra

    6.1 Introduction 简介 反向传播算法:一个有效率的计算梯度的方法 前提:前馈网络的反向传播http...

  • 2019-01-12-DL500问第三章

    梯度消失? 梯度爆炸 权重矩阵的退化? 前向传播 反向传播 超参数 常见设 置超参数的做法有: 猜测和检查:根据经...

网友评论

      本文标题:2019-11-04 反向传播 链式法则 局部梯度

      本文链接:https://www.haomeiwen.com/subject/almdbctx.html