用矩阵推导网络。
符号定义
- 使用小写字母\(x\)表示标量,粗体小写字母\(\boldsymbol{x}\)表示向量,注意向量可能为行向量或者列向量,大写字母\(X\)表示矩阵。
- \(\sigma\)为逐元素sigmoid函数:\(\sigma(z)=\frac{1}{1+\mathrm{e}^{-z}}\)。
- \(\boldsymbol{1}\)为列向量,\(\boldsymbol{1}=(1, 1, 1 \cdots 1, 1, 1)^{T}\),非指示函数。
- \(exp(\boldsymbol{a})\)表示逐元素求指数。
- \(log(\boldsymbol{a})\)表示逐元素求自然对数。
符号含义
- 列向量\(\boldsymbol{x}=\left(x_{1}, x_{2}, x_{3} \cdots x_{n-2}, x_{n-1}, x_{n}\right)^{T}\)代表一个输入样本,具有\(n\)个特征值。
- 设列向量\(\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)\) - 设列向量\(\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})}\),分母为行向量乘以列向量为标量,分子为列向量,所以结果仍为列向量。
运算法则
矩阵运算法则
- 对尺寸相同的矩阵\(A, B\),\(\operatorname{tr}\left(A^{T} B\right)=\sum_{i, j} A_{i j} B_{i j}\)。
矩阵微分运算符法则
- 加减法、矩阵乘法、转置、求迹。 \[ 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) \]
- 求逆。 \[ d X^{-1}=-X^{-1} d X X^{-1} \] 此式可以在 $ X X^{-1}=I $ 两侧求微分来证明。
- 行列式。
理解
定义:标量f对矩阵 \(X\) 的导数, 定义为 \(\frac{\partial f}{\partial X}=\left[\frac{\partial f}{\partial X_{i j}}\right]\),即f对X逐元素求导排成与X尺寸相同的矩阵。
将矩阵导数与微分建立联系:\(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)\)。
理解:
- 微分算子\(d\)作用于矩阵\(X\),表示为逐元素作用。
- 第一个等号是全微分公式,第二个等号表达了矩阵导数与微分的联系。
- \(tr()\)代表迹(trace)是方阵对角线元素之和。
- 举例:设\(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)\)
思考
- 样本特征值排列为列向量,方便统一形式为权重参数\(W\)放在\(\boldsymbol{x}\)前,进行乘积。
全连接网络
\[ l=-\boldsymbol{y}^{T} \log \operatorname{softmax}\left(W_{2} \sigma\left(W_{1} \boldsymbol{x}\right)\right) \]
符号说明
- \(l\)为损失函数。
- \(\boldsymbol{x}\)为单样本,则\(l\)只包含一个样本的损失函数。
- 分类网络类别数为\(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