【问题标题】:Understanding Leaky ReLU Derivative with Notation用符号理解 Leaky ReLU 导数
【发布时间】:2021-01-15 23:23:10
【问题描述】:

我无法理解如何执行 Leaky ReLU 的反向传播。

我已阅读其他帖子,但由于缺少符号(不确定是什么),我仍然不太确定我是否理解。

如果我有 dA,或者当前层的激活,以及来自前向传播的缓存值 Z,这就是正确的实现:

def leaky_relu_backward(dA, cache):
    """
    The backward propagation for a single leaky RELU unit.
    Arguments:
    dA - post-activation gradient
    cache - 'Z' where we store for computing backward propagation efficiently
    Returns:
    dZ - Gradient of the cost with respect to Z
    """
    Z = cache
    # just converting dz to a correct object.
    dZ = np.array(dA, copy=True)
    # When z <= 0, we should set dz to .01 
    dZ[Z <= 0] = .01
    return dZ

或者还有更多吗?在这篇文章中:How to implement the derivative of Leaky Relu in python? 答案显示在 return 语句上发生了乘法。不知道我是否需要。

【问题讨论】:

    标签: python machine-learning


    【解决方案1】:

    您缺少链式法则。对于 Leaky ReLU,激活是

    A = Z if Z > 0 else Z * 0.01
    

    这意味着:

    dA/dZ = 1 if Z > 0 else 0.01
    

    但是要计算损失 L,我们有:

    dL/dZ = dL/dA * dA/dZ
    

    其中dL/dZ 是您的dZdL/dA 是您的dA

    【讨论】:

    • 不应该dA 只是1 if Z &gt; 0 else 0.01dz 这里是什么?
    • @Countour-Integral 是 dA/dZ,而不是 dL/dA。让我编辑答案,让它更清楚。
    • 现在更有意义了。
    • 也许这超出了范围,但是计算 dA/dZ 和计算损失有什么区别? dL/dA 与反向传播不同吗?我认为这让我感到困惑。
    • @lazylama 您的最终目标是计算 dL/dW,其中 L 是损失,W 是权重。这个梯度值可以解释为方向 L 随着 W 的变化而变化。然后,使用梯度下降,您可以更改权重以减少损失值。 dA/dZ 本身并没有给我们带来任何有趣的东西,而只是从 dL 到 dW 的链式规则的中间部分。
    猜你喜欢
    • 2018-06-14
    • 2019-10-10
    • 2021-08-23
    • 2019-01-30
    • 1970-01-01
    • 2021-01-20
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多