“对每个单独的参数进行梯度检查几个维度”是什么意思?

数据挖掘 神经网络 深度学习 优化 cs231n
2022-03-07 02:52:01

在 cs231n 的讲义中,在讨论用数值梯度检查分析梯度时,该段落说:

只检查几个维度。在实践中,梯度可以有数百万个参数。在这些情况下,只有检查梯度的一些维度并假设其他维度是正确的才实用。

注意:需要注意的一个问题是确保对每个单独参数的几个维度进行梯度检查。在某些应用中,人们为了方便将参数组合成一个大参数向量。例如,在这些情况下,偏差只能从整个向量中占用少量参数,因此重要的是不要随机采样,而是要考虑到这一点并检查所有参数是否接收到正确的梯度。

我知道只检查几个尺寸,但小心后的部分是什么意思。我无法理解那个警告。有人可以解释一下吗?

1个回答

正如您可能知道的那样,仅当不包含批归一化层时,CNN 才会使用偏差,因为这会自动将一种偏差添加到激活输出中。

所以,这就是我的理解:

让我们假设一个 CNN 层(没有批量规范)有 50 个内核,每个内核的大小为 5 x 5。因此,总权重更新将为 5 x 5 x 50 = 1250,总偏差更新将为 50(每个内核的偏差)。

对于部分“......人们为了方便将参数组合成一个大参数向量。例如,在这些情况下,偏差只能从整个向量中占据一小部分参数......”:-

  • 如果您将所有这些参数合并到一个向量中并随机采样参数以检查梯度,您最终可能会检查很少或没有梯度更新的偏差,因为它们在该向量中所占的比例非常小(只有 50 个1300)。

对于“需要注意的一个问题是确保对每个单独参数的几个维度进行梯度检查......”部分: -

  • 另一方面,您可以选择一些内核并仅使用这些内核的所有参数(权重和偏差)来检查梯度,因此在这种情况下,您肯定会检查一些偏差的梯度,他们说这是一种很好的方法梯度检查。