昨天推导了一下交叉熵的反向传播梯度,今天再来推导一下层归一化(LayerNorm),这是一种常见的归一化方法。
前向传播
假设待归一化的







这里的极小量


反向传播
假设损失函数






令


两个参数的梯度非常简单:

对输入

![\frac{\partial{\mathcal{L}}}{\partial{x_i}} = \frac{1}{\sigma} \cdot \left[\frac{\partial{\mathcal{L}}}{\partial{y_i}} \cdot w_i - \frac{1}{m}\cdot \left( \sum_j {\frac{\partial{\mathcal{L}}}{\partial{y_j}} \cdot w_j} + \hat x_i \cdot \sum_j {\frac{\partial{\mathcal{L}}}{\partial{y_j}} \cdot w_j \cdot \hat x_j}\right)\right] \\](https://i-blog.csdnimg.cn/blog_migrate/abac8fc820225bb4d6d8d6c77e7c02e4.png)
推导过程
对输入


这里只需要计算最后一项就行了:

其中



代入可以得到:

最后带入梯度

![\begin{aligned} \frac{\partial{\mathcal{L}}}{\partial{x_i}} &= \sum_j {\frac{\partial{\mathcal{L}}}{\partial{y_j}} \cdot w_j \cdot \frac{\partial{\mathcal{\hat x_j}}}{\partial{x_i}}} \\\ &= \sum_j {\frac{\partial{\mathcal{L}}}{\partial{y_j}} \cdot w_j \cdot \left(\sigma^{-1} \cdot \delta_{ij} - \frac{1}{m} \cdot \sigma^{-1} - \frac{1}{m} \cdot \sigma^{-1} \cdot {\hat x_i} \cdot {\hat x_j}\right)} \\\ &= \frac{1}{\sigma} \cdot \frac{\partial{\mathcal{L}}}{\partial{y_i}} \cdot w_i - \frac{1}{m \sigma} \cdot \sum_j {\frac{\partial{\mathcal{L}}}{\partial{y_j}} \cdot w_j} - \frac{\hat x_i}{m \sigma} \cdot \sum_j {\frac{\partial{\mathcal{L}}}{\partial{y_j}} \cdot w_j \cdot \hat x_j} \\\ &= \frac{1}{\sigma} \cdot \left[\frac{\partial{\mathcal{L}}}{\partial{y_i}} \cdot w_i - \frac{1}{m}\cdot \left( \sum_j {\frac{\partial{\mathcal{L}}}{\partial{y_j}} \cdot w_j} + \hat x_i \cdot \sum_j {\frac{\partial{\mathcal{L}}}{\partial{y_j}} \cdot w_j \cdot \hat x_j}\right)\right] \end{aligned} \\](https://i-blog.csdnimg.cn/blog_migrate/30056f6d25292aa861be33fe33350c83.png)
均值和标准差的梯度
均值的梯度为:

标准差的计算公式可以写成
![\sigma = \left[\mu(x^2) - \mu^2(x)\right]^{\frac{1}{2}}](https://i-blog.csdnimg.cn/blog_migrate/558847ab3092109f6da21bc83c2ebdb5.png)
![\begin{aligned} \frac{\partial \sigma}{\partial x_i} &= \frac{\partial}{\partial x_i} \left[\mu(x^2) - \mu^2(x)\right]^{\frac{1}{2}} \\\ &= \frac{1}{2} \cdot \left[\mu(x^2) - \mu^2(x)\right]^{-\frac{1}{2}} \cdot \left(\frac{2}{m} \cdot x_i - \frac{2}{m} \cdot \mu \right) \\\ &= \frac{1}{m} \cdot \sigma^{-1} \cdot (x_i - \mu) \end{aligned} \\](https://i-blog.csdnimg.cn/blog_migrate/3bfd0b1b7294510c96ececed4cf2bf12.png)
昨天推导了一下交叉熵的反向传播梯度,今天再来推导一下层归一化(LayerNorm),这是一种常见的归一化方法。
假设待归一化的
这里的极小量
假设损失函数
令
两个参数的梯度非常简单:
对输入
对输入
这里只需要计算最后一项就行了:
其中
代入可以得到:
最后带入梯度
均值的梯度为:
标准差的计算公式可以写成