对神经网络有一定了解的同学知道:一般的神经网络的具体实现都是通过矩阵实现的,包括误差反向传导,梯度计算和更新等等,比如 y = w ∗ x + b y=w*x+b y=w∗x+b,这里的所有变量都是矩阵,我们通常会叫 w w w和 b b b为参数矩阵,矩阵相乘首先效率比较高,然后也比较好操作,那么对于矩阵形式的导数该怎么计算?比如 w w w矩阵的具体导数 d w dw dw应该如何计算?
首先我们来看一个只有输入和输出层的网络,我们输入 X X X矩阵大小为 N ∗ D N*D N∗D, N N N为batch的大小,也就是一次性输入的样本数, D D D为输入数据的维度,也就是输入层神经元的个数,输出矩阵 Y Y Y大小为 N ∗ M N*M N∗M, M M M为输出数据的维度,也就是输出层神经元的个数, 可以看成输入数据X经过这个网络的变换,数据维度由 D D D映射到了 M M M维,那么 w w w矩阵的大小自然就是 D ∗ M D*M D∗M