标量导数
亚导数
这里的 ∂ \partial ∂不是二阶偏导数里面的那个符号,而是亚导数,仅仅是符号相同而已
梯度
这里橙色矩形的长宽比例就代表了是标量还是向量还是矩阵
要注意列向量对标量的导数还是列向量,而标量对列向量的导数变成了行向量,也就是等价于转置操作
向量对向量的导数就张成了矩阵
这里可能不太好理解,结合下面的几张图理解一下
标量对列向量的导数
上面的样例可以自己动手写一写看看为什么,还是比较简单的
列向量对标量的导数
分子布局: 分子为 y 或者分母为 xT (即,分子为列向量或者分母为行向量)
分母布局: 分子为 yT 或者分母为 x (即,分子为行向量或者分母为列向量)
这里简单的理解也就是在标量和求导后的向量是同形状的前提下,标量在哪里就是什么布局,如上图y在分子的位置因此叫做分子布局
向量对向量的导数
可以看做 ∂ y ∂ x \frac{\partial \bold y}{\partial x} ∂x∂y 向右张成的矩阵,也就是对xi的多次操作并合成的矩阵
或者可以看做 ∂ y ∂ x \frac{\partial y}{\partial \bold x} ∂x∂y 向下张成的矩阵
注意看上面两个公式中的加粗,加粗字体为向量
0 \bm0 0和 I \bm I I是全0矩阵和单位矩阵
扩展到矩阵对矩阵的导数
由图可以总结出:
向量(矩阵)做分子时:shape不变
向量(矩阵)做分母时:shape转置
以上所有的矩阵操作理解即可,在pytorch/mxnet/tensorflow中都有相应的API实现,并不用我们手算,但是最好了解一下输入张量的形状以及输出张量的形状