为什么我推导的反向传播方程与来自 Coursera 的 Andrew Ng 的幻灯片不一致?

人工智能 数学 反向传播 衍生物 麻木的
2021-10-21 13:12:24

我正在使用交叉熵成本函数来计算使用不同变量的导数Z,Wb在不同的情况下。请参考下图进行计算。 在此处输入图像描述

据我所知,我的推导是正确的dZ,dW,dbd一个,但是,如果我提到 Andrew Ng Coursera 的东西,那么我会看到一个额外的1为了dWdb,而没有1dZ. 左侧的 Andrew 幻灯片表示导数,而右侧的幻灯片显示了对应于右侧方程的 NumPy 实现。

在此处输入图像描述 有人可以解释为什么有:

1)1dW[2]db[2]在 Andrew 的 NumPy 表示的幻灯片中

2) 失踪1为了dZ[2]在正常和 NumPy 表示的 Andrew 的幻灯片中。

我是否遗漏了什么或以错误的方式做事?

1个回答

TL;DR:这与 A. Ng 为课程定义反向传播的方式有关。

左栏

这仅针对一个输入示例,因此1因子减为 1,可以省略。他使用小写来表示一个输入示例(例如一个向量dz) 和大写相对于 (mini-)batch (例如矩阵dZ)。

1因素dW,db

在这个反向传播的定义中,他“推迟”乘以1因子直到dW,db而不是“吸收”它dZ[2]. 那就是dZ[2]术语以它没有的方式定义1.

观察,如果你移动1定义中的因素dZ[2]并将其从定义中删除dW,db您仍然会为所有人提供相同的值dW,db.

猜测

这种“延迟”乘法可能与数值稳定性有关。或者只是 A. Ng 做出的风格选择。这也可能防止一个人“意外”乘以1不止一次。