深度神经网络训练中的反向传播详解
1. Softmax与交叉熵损失的反向传播
Softmax函数将k个实值预测 $v_1 \cdots v_k$ 转换为输出概率 $o_1 \cdots o_k$,其关系如下:
[o_i = \frac{\exp(v_i)}{\sum_{j=1}^{k} \exp(v_j)} \quad \forall i \in {1, \cdots, k}]
若使用链式法则对损失 $L$ 关于 $v_1 \cdots v_k$ 进行反向传播,需要计算 $\frac{\partial L}{\partial o_i}$ 和 $\frac{\partial o_i}{\partial v_j}$。当考虑以下两个事实时,Softmax的反向传播会大大简化:
- Softmax几乎总是用于输出层。
- Softmax几乎总是与交叉熵损失配对。设 $y_1 \cdots y_k \in {0, 1}$ 是k个互斥类别的独热编码(观测)输出,则交叉熵损失定义为:
[L = -\sum_{i=1}^{k} y_i \log(o_i)]
关键在于,在Softmax的情况下,$\frac{\partial L}{\partial v_i}$ 有一个特别简单的形式:
[\frac{\partial L}{\partial v_i} = \sum_{j=1}^{k} \frac{\partial L}{\partial o_j} \cdot \frac{\partial o_j}{\partial v_i} = o_i - y_i]
这里 $\frac{\partial o_j}{\partial v_i}$ 在 $i = j$ 时等于 $o
超级会员免费看
订阅专栏 解锁全文
9万+

被折叠的 条评论
为什么被折叠?



