矩阵微积分导数与神经网络中的数据流
1. 矩阵微积分导数示例
在深度学习中,我们经常会遇到各种导数计算,下面通过一些具体例子来进行说明。
1.1 逐元素运算的导数
逐元素运算包括向量相加等操作。考虑两个向量逐元素相加的情况,设(f = a + b),那么(\frac{\partial f}{\partial a})(即(f)的雅可比矩阵)是什么样的呢?根据定义,由于(f_0)只依赖于(a_0),(f_1)只依赖于(a_1),以此类推,所以当(i \neq j)时,所有的导数(\frac{\partial f_i}{\partial a_j})都为零。这就消除了矩阵的所有非对角元素,只剩下对角元素,因为对于所有的(i),(\frac{\partial f_i}{\partial a_i} = 1),所以(\frac{\partial f}{\partial a} = I)。同理,(\frac{\partial f}{\partial b} = I)。如果将加法改为减法,即(f = a - b),则(\frac{\partial f}{\partial a} = I),而(\frac{\partial f}{\partial b} = -I)。
若操作是(a)和(b)的逐元素乘法,即(f = a \otimes b),则会得到特定的结果,这里(\text{diag}(x))表示将向量(x)的(n)个元素放在一个(n \times n)矩阵的对角线上,其余位置为零。
1.2 激活函数的导数
在前馈网络的隐藏层中,对于单个节点,我们需要求出其权重和偏置值的导数。节点的输入是前一层的输出(x)与权重(w)逐元素相乘,再加上