神经网络矩阵分析

这是一个副标题

用矩阵推导网络。

符号定义

  1. 使用小写字母\(x\)表示标量,粗体小写字母\(\boldsymbol{x}\)表示向量,注意向量可能为行向量或者列向量,大写字母\(X\)表示矩阵。
  2. \(\sigma\)逐元素sigmoid函数:\(\sigma(z)=\frac{1}{1+\mathrm{e}^{-z}}\)
  3. \(\boldsymbol{1}\)为列向量,\(\boldsymbol{1}=(1, 1, 1 \cdots 1, 1, 1)^{T}\),非指示函数。
  4. \(exp(\boldsymbol{a})\)表示逐元素求指数。
  5. \(log(\boldsymbol{a})\)表示逐元素求自然对数。

符号含义

  1. 列向量\(\boldsymbol{x}=\left(x_{1}, x_{2}, x_{3} \cdots x_{n-2}, x_{n-1}, x_{n}\right)^{T}\)代表一个输入样本,具有\(n\)个特征值。
  2. 设列向量\(\boldsymbol{z}=\left(z_{1}, z_{2}, z_{3} \cdots z_{n-2}, z_{n-1}, z_{n}\right)^{T}\)
    \(\sigma(\boldsymbol{z}) = \left(\sigma(z_{1}), \sigma(z_{2}), \sigma(z_{3}) \cdots \sigma(z_{n-2}), \sigma(z_{n-1}), \sigma(z_{n})\right)\)
  3. 设列向量\(\boldsymbol{a}=\left(a_{1}, a_{2}, a_{3} \cdots a_{n-2}, a_{n-1}, a_{n}\right)^{T}\)\(\operatorname{softmax}(\boldsymbol{a})=\frac{\exp (\boldsymbol{a})}{\mathbf{1}^{T} \exp (\boldsymbol{a})}\),分母为行向量乘以列向量为标量,分子为列向量,所以结果仍为列向量

运算法则

矩阵运算法则

  1. 对尺寸相同的矩阵\(A, B\)\(\operatorname{tr}\left(A^{T} B\right)=\sum_{i, j} A_{i j} B_{i j}\)

矩阵微分运算符法则

  1. 加减法、矩阵乘法、转置、求迹。 \[ d(X \pm Y)=d X \pm d Y \] \[ d(X Y)=(d X) Y+X d Y \] \[ d\left(X^{T}\right)=(d X)^{T} \] \[ d \operatorname{tr}(X)=\operatorname{tr}(d X) \]
  2. 求逆。 \[ d X^{-1}=-X^{-1} d X X^{-1} \] 此式可以在 $ X X^{-1}=I $ 两侧求微分来证明。
  3. 行列式。

理解

  1. 定义:标量f对矩阵 \(X\) 的导数, 定义为 \(\frac{\partial f}{\partial X}=\left[\frac{\partial f}{\partial X_{i j}}\right]\),即f对X逐元素求导排成与X尺寸相同的矩阵。

  2. 将矩阵导数与微分建立联系:\(d f=\sum_{i=1}^{m} \sum_{j=1}^{n} \frac{\partial f}{\partial X_{i j}} d X_{i j}=\operatorname{tr}\left(\frac{\partial f^{T}}{\partial X} d X\right)\)

    理解:
    1. 微分算子\(d\)作用于矩阵\(X\),表示为逐元素作用。
    2. 第一个等号是全微分公式,第二个等号表达了矩阵导数与微分的联系。
    3. \(tr()\)代表迹(trace)是方阵对角线元素之和。
    4. 举例:设\(X=\left[\begin{array}{l}X_{0_0}, X_{01} \\\\ X_{10}, X_{11}\end{array}\right]\), \(d X=\left[\begin{array}{l}dX_{00}, dX_{01} \\\\ dX_{10}, dX_{11}\end{array}\right]\)\(\frac{d f}{d X}=\left[\begin{array}{ll}\frac{\partial f}{\partial X_{00}}, \frac{\partial f}{\partial X_{01}} \\\\ \frac{\partial f}{\partial X_{10}}, \frac{\partial f}{\partial X_{11}}\end{array}\right]\)\(\operatorname{tr}\left(\frac{\partial f^{T}}{\partial X} d X\right)=\operatorname{tr}\left(\left[\begin{array}{ll}\frac{\partial f}{\partial X_{00}}, \frac{\partial f}{\partial X_{10}} \\\\ \frac{\partial f}{\partial X_{01}}, \frac{\partial f}{\partial X_{11}}\end{array}\right]\left[\begin{array}{l}dX_{00}, dX_{01} \\\\ dX_{10}, dX_{11}\end{array}\right]\right)\)

思考

  1. 样本特征值排列为列向量,方便统一形式为权重参数\(W\)放在\(\boldsymbol{x}\)前,进行乘积。

全连接网络

\[ l=-\boldsymbol{y}^{T} \log \operatorname{softmax}\left(W_{2} \sigma\left(W_{1} \boldsymbol{x}\right)\right) \]

符号说明

  1. \(l\)为损失函数。
  2. \(\boldsymbol{x}\)为单样本,则\(l\)只包含一个样本的损失函数。
  3. 分类网络类别数为\(m\)\(\boldsymbol{y}\) 是除一个元素为1外其它元素为 0 的的 \(m \times 1\) 列向量, \(W_{2}\)\(m \times p\) 矩阵, \(W_{1}\)\(p \times n\) 矩阵, \(\boldsymbol{x}\)\(n \times 1\) 列向量, \(l\) 是标量

推导 \(\frac{\partial l}{\partial W_{1}}\)\(\frac{\partial l}{\partial W_{2}}\)

定义:\(\boldsymbol{a_{1}}=W_{1}\boldsymbol{x}\)\(\boldsymbol{h_{1}}=\sigma\left(\boldsymbol{a_{1}}\right)\)\(\boldsymbol{a_{2}}=W_{2}\boldsymbol{h_{1}}\),则 \(l=-\boldsymbol{y}^{T} \log \operatorname{softmax}\left(\boldsymbol{a}_{2}\right)\)

已知 \(\frac{\partial l}{\partial \boldsymbol{a_{2}}}=\operatorname{softmax}\left(\boldsymbol{a}_{2}\right)-\boldsymbol{y}\)

推导结果: \[ \frac{\partial l}{\partial W_{2}}=\frac{\partial l}{\partial \boldsymbol{a_{2}}} \boldsymbol{h_{1}}^{T} \] \[ \frac{\partial l}{\partial W_{1}}=\frac{\partial l}{\partial \boldsymbol{a}_{1}} \boldsymbol{x}^{T} \]

推广到多个样本

使用矩阵来表示N个样本,以简化形式。

定义:\(X=\left[\boldsymbol{x_{1}}, \cdots, \boldsymbol{x_{N}}\right]\)\(A_{1}=\left[\boldsymbol{a_{1,1}}, \cdots \boldsymbol{a_{1, N}}\right]=W_{1} X+\boldsymbol{b_{1}} \mathbf{1}^{T}, \quad H_{1}=\left[\boldsymbol{h_{1,1}}, \cdots, \boldsymbol{h}_{1, N}\right]=\sigma\left(A_{1}\right) \text {, }\)\(A_{2}=\left[\boldsymbol{a_{2,1}}, \cdots, \boldsymbol{a_{2, N}}\right]=W_{2} H_{1}+\boldsymbol{b_{2}} \mathbf{1}^{T}\), 注意这里使用全1向量来扩展维度。

推导结果: \[ \frac{\partial l}{\partial W_{1}}=\frac{\partial l}{\partial A_{1}} X^{T}, \quad \frac{\partial l}{\partial \boldsymbol{b}_{1}}=\frac{\partial l}{\partial A_{1}} \mathbf{1} \] \[ \frac{\partial l}{\partial W_{2}}=\frac{\partial l}{\partial A_{2}} H_{1}^{T}, \quad \frac{\partial l}{\partial \boldsymbol{b}_{2}}=\frac{\partial l}{\partial A_{2}} \mathbf{1} \]

参考

神经网络的一些公式总结
矩阵求导术(上)
矩阵求导术(下)

更新记录

调整格式和排版。 —— 2022.07.19

使用 pandoc 渲染,对公式展示更友好。 —— 2022.08.27

comments powered by Disqus
Built with Hugo
主题 StackJimmy 设计