批量计算 BCE 反向传播中的 dx

Calculating dx In BCE Backpropagation With Batches

我正在尝试使用批处理从头开始反向传播,但在计算 dx 时遇到问题。首先,我想从定义变量开始,以避免混淆:

a - The activation value calculated by passing z through an activation function

z - The value before the activation function of the layer

x - The inputs into the layer

w - The weights that connect the inputs to the output nodes

da - The derivative of a

dz - The derivative of z

dx - The derivative of x

我知道这是x的导数:

dx = w.T*dz
Note: * means dot and .T means transpose

下面我来介绍一下这个问题。假设我有一个包含 2 个输入、3 个输出节点和 5 个批量大小的神经网络。我将如何计算 dx?在这种情况下,权重在转置之前的形状为 (z, x) 或 (3, 2),而 dz 的形状为 (z, batches) 或 (3, 5)。如果我使用上面的公式,我会得到 (x, batches) 或 (2, 5) 的形状。在使用上面的公式得到 dx(导致形状为 (2, 1))之后,我是否会对最后一个维度求和?下面是使用虚构值表示的点积:

     w.T          *          dz            =        dx
                      [[1, 2, 3, 4, 5],
[[1,  0.5, 1],    *    [1, 2, 3, 4, 5],    =   [[2.5,  5,  7.5,  10,  12.5],
 [-1, -1,  -0.5]       [1, 2, 3, 4, 5]]         [-2.5, -5, -7.5, -10, -12.5]] 

你做对了一切。在反向传播中,X 始终需要与 dX 具有相同的维度。如果 X 是形状 (2,5) 的中间结果,则梯度也具有形状 (2,5)。通过这种方式,您可以更新矩阵 X。现在,在您的情况下,矩阵 X 是输入矩阵,您永远不会更新它。你只需要更新W.

如果 X 是隐藏层的结果,那么您对反向传播梯度的计算是正确的。