来自一位数学家的神经网络卷积反向传播研究

来自一位数学家的神经网络卷积反向传播研究

对于我们这些在数据科学/机器学习社区从事数学严谨的人,找到我们遇到的一些算法/公式的证明可能会令人沮丧。特别是我记得在网上没有成功,所以我认为在这里解释它是有道理的。

这篇文章将关注神经网络卷积层内的反向传播,以及如何计算权重、偏差和输入的梯度. 关于以下证明中的符号,我通常在下标中使用“h”表示像素的“高度”[垂直]坐标,“w”表示“宽度”[横向]坐标(我将使用“b ”和“a”)。图像 I 的左上角像素将表示为 I[0, 0]。同样,内核 K 的左上角像素将表示为 K[0, 0](我知道这与可能更流行的约定相冲突,其中中心像素的坐标为 [0, 0],尽管我的约定对齐将数组是如何存储在计算机内存中的,所以用代码来实现会更自然)。对于 I 和 K,将需要更多坐标来说明批次中的通道和图像编号。让我们开始。

介绍

我们将互相关(我通常称之为相关)定义为我们大多数人都熟悉的“滑动核”图;然而,将这种卷积称为卷积是一个误称,因为这需要内核在滑动之前翻转 180 度。

来自一位数学家的神经网络卷积反向传播研究

“w”索引输出相关性,即与批次I中图像“w”的相关性,“z”索引A的通道,“y”和“x”分别索引高度和宽度坐标。“k”索引 I 的通道[它们的数量不必与 A 相同,尽管它们确实需要与 K 的数量相同]。“z”、“k”索引内核和通道,“b”、“a”分别索引 K 的高度和宽度坐标。观察到批次 K 中的内核数决定了 A 中的通道数。

我假设读者熟悉诸如步幅和扩张之类的概念,尽管谷歌搜索实际上可以在这种情况下为那些需要复习的人提供帮助。我没有说上述相关性对“y”、“x”的哪些值有效,尽管很容易证明 A 的空间维度为

来自一位数学家的神经网络卷积反向传播研究


来自一位数学家的神经网络卷积反向传播研究

在括号中,因为它有一个与其值相关联的特殊对象,它是膨胀内核的高度,如果我们用零“代替膨胀”,对于宽度类似物也是如此。

关于内核 K 的损失梯度

让我们 [重新] 定义 A 以包括偏差 E,这是一个给内核批次中每个内核的常数,因此 A 现在代表当前层的输出。

来自一位数学家的神经网络卷积反向传播研究

我将使用以下符号来表示上游损失梯度中的一个像素,即损失相对于当前层的输出(互相关)的梯度:

来自一位数学家的神经网络卷积反向传播研究

回想一下,上游梯度必须与当前层的输出具有相同的维度,所以上面的定义很好。

来自一位数学家的神经网络卷积反向传播研究

来自一位数学家的神经网络卷积反向传播研究

为了得到上述,我们简单地取 A 的一个像素(即 A[w, z, y, x] )关于 K[z_0, k_0, b_0, a_0] 的导数,这给了我们后面的系数那个特定的像素。由于所有索引,上述方程可能需要一些时间来阅读,但最终应该意识到刚刚计算的导数的简单性。另外,请注意,由于我们关心的是关于 K 的通道 z_0 中的像素的梯度,因此删除了对 A 的 D 通道求和。重新排列最后一个表达式给了我们

来自一位数学家的神经网络卷积反向传播研究

但要意识到这只是一个互相关的公式,其中内核是一个张量,由上游 [batch] 梯度的每个 z_0 通道组成,“图像”作为实际图像 I, 尽管现在的步幅由前面给出前一个步幅给出的膨胀和膨胀。

关于图像 I 的损失梯度

我们做出了关键的观察,即上述计算的简单性源于我们对滤波器求导的对象是操作中的内核。然而,图像不是内核,所以我们没有那么奢侈。因此,我们尝试重新编写当前层输出的公式,以将图像表示为某些操作的内核。

互相关开关引理:

来自一位数学家的神经网络卷积反向传播研究

这个想法很简单;为了将互相关表示为以 I 作为内核的类似操作,我们滑动 I 而不是 K,但是为了实现这样的操作,我们必须适当地将 K 补零,因为 I 的空间维度大于 K 的空间维度。让我们现在证明这个定理。

来自一位数学家的神经网络卷积反向传播研究

来自一位数学家的神经网络卷积反向传播研究

操纵上限揭示了一个熟悉的术语:

来自一位数学家的神经网络卷积反向传播研究

来自一位数学家的神经网络卷积反向传播研究

我们可以通过考虑内核为零的位置来更改上限:

来自一位数学家的神经网络卷积反向传播研究

同样,我们也改变下限:

来自一位数学家的神经网络卷积反向传播研究

现在我们重新安排,

来自一位数学家的神经网络卷积反向传播研究

现在我们有能力找到关于图像的梯度。根据链式法则:

来自一位数学家的神经网络卷积反向传播研究

我们记得的地方

来自一位数学家的神经网络卷积反向传播研究

我们通过开关引理设置 A':

来自一位数学家的神经网络卷积反向传播研究

来自一位数学家的神经网络卷积反向传播研究

我们可以在这里停下来,尽管用 K 作为内核来表达结果会很好。

来自一位数学家的神经网络卷积反向传播研究

来自一位数学家的神经网络卷积反向传播研究

我们可以简化扩张的上游梯度的维度:

来自一位数学家的神经网络卷积反向传播研究

来自一位数学家的神经网络卷积反向传播研究

我们还看到扩张梯度的维度出现在内核项中,但我们希望它们出现在上游梯度项中,以获得有用的结果。

来自一位数学家的神经网络卷积反向传播研究

由于替换,上游梯度项已“翻转”。正式地做如下定义:

来自一位数学家的神经网络卷积反向传播研究

我们获得

来自一位数学家的神经网络卷积反向传播研究

开关引理现在适用。

来自一位数学家的神经网络卷积反向传播研究

由开关引理:

来自一位数学家的神经网络卷积反向传播研究

我们取消翻转上游梯度项:

来自一位数学家的神经网络卷积反向传播研究

我们现在看到内核的维度出现在上游梯度中,但我们希望它们出现在内核项中:

来自一位数学家的神经网络卷积反向传播研究

注意内核项为零[和非零]的位置,我们可以根据定义更改限制并替换为扩张的内核:

来自一位数学家的神经网络卷积反向传播研究

简化给出

来自一位数学家的神经网络卷积反向传播研究

将下限添加到项以用零替换下限给出:

来自一位数学家的神经网络卷积反向传播研究

我们做一个观察。

来自一位数学家的神经网络卷积反向传播研究

我们获得

来自一位数学家的神经网络卷积反向传播研究

这个结果还有待解释。

来自一位数学家的神经网络卷积反向传播研究

来自一位数学家的神经网络卷积反向传播研究

来自一位数学家的神经网络卷积反向传播研究

关于偏差 E 的损失梯度

来自一位数学家的神经网络卷积反向传播研究

所以梯度只是批次中每个上游梯度的第 z^th 通道中所有元素的总和。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章