向量,矩阵,张量求导法则

向量,矩阵,张量求导

参考:http://cs231n.stanford.edu/vecDerivs.pdf

向量对向量求导

如何对 y = Wx 求导?其中:

  • y: {C\times1}
  • W: {C\times D}
  • x: {D\times 1}

可以先通过计算一种特例,比如 \frac{\partial{y_7}}{\partial{x_3}} 来更好地理解, y_7 可以写成
y_7 = \sum_{j=1}^{D}W_{7,j} x_j =W_{7,1}x_1 + W_{7,2}x_2 + W_{7,3}x_3+\cdots
所以\frac{\partial{y_7}}{\partial{x_3}}=W_{7,3}。进而,\frac{\partial{y}}{\partial{x}} = W

PS: 标量对向量求导的维度为 1*n; 向量对标量求导的维度为 n*1;

向量对矩阵求导

y = xW, 如何求\frac{\partial{y}}{\partial{W}}?其中:

  • y: {1\times C}
  • W: {D\times C}
  • x: {1\times D}

依然先计算特例:\frac{\partial{y_3}}{\partial{W_{78}}}, 首先
y_3 = x_1 W_{13} + x_2W_{23} + \dots + x_D W_{D3}
所以可以看到\frac{\partial{y_3}}{\partial{W_{78}}}=0,进一步又发现
\frac{\partial{y_j}}{\partial{W_{ij}}} = x_i
于是令 F_{i,j,k}=\frac{\partial{y_i}}{\partial{W_{jk}}},有
F_{i,j,i} = x_j
张量 F 的其余项均为0,因此可以定义一个二维矩阵 G_{i,j} = F_{i,j,i} 来表示 \frac{\partial{y}}{\partial{W}}的结果。


PS:Representing the important part of derivative arrays in a compact way is critical to efficient implementations of neural networks.

矩阵对矩阵求导

Y=XW, 如何求\frac{\partial{Y_{a,b}}}{\partial{X_{c,d}}}?其中:

  • Y: {n\times C}
  • W: {D\times C}
  • x: {n\times D}

依然进行展开:
Y_{i,j} = \sum_{k=1}^D X_{i,k}W_{k,j}
于是有
\frac{\partial{Y_{i,j}}}{\partial{X_{i,k}}} = W_{k,j} \tag{1}
因此
\frac{\partial{Y_{a,b}}}{\partial{X_{c,d}}} = \begin{cases} W_{d,b}, \qquad \text{when}\ a=c\\ 0, \qquad \text{when}\ a\neq c \end{cases}
可以发现

  1. 实际上 \frac{\partial{Y_{a,b}}}{\partial{X_{c,d}}}所有的结果都包含在 W 中。
  2. \frac{\partial{Y_{i,j}}}{\partial{X_{i,k}}}X,Y 的行索引没有关系。
  3. In fact, the matrix W holds all of these partials as it is–we just have to remember to index into it according to Equation 1 to obtain the specific partial derivative that we want.

使用链式法则

y=Vm, 其中 m=Wx, 求 \frac{\partial{y}}{\partial{x}}?

依然先从特例开始:
\begin{aligned} \frac{\partial{y_i}}{\partial{x_j}} &= \frac{\partial{y_i}}{\partial{m}}\frac{\partial{m}}{\partial{x_j}} \\ &= \sum_{k=1}^M \frac{\partial{y_i}}{\partial{m_k}}\frac{\partial{m_k}}{\partial{x_j}} \\ &= \sum_{k=1}^M V_{i,k}W_{k,j} \\ &= V_{i,:}W_{:,j} \end{aligned}
因此
\frac{\partial{y}}{\partial{x}} = VW

总结

  1. 为了求得最终的导数结果,往往需要先求中间的结果,例如先求\frac{\partial{y_i}}{\partial{x_j}}, 再求\frac{\partial{y}}{\partial{x}}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容