1. 前向传播
- 一张图像经过层层计算,在softmax之前得到z1,z2,…
- 经过softmax变成,pj是softmax的输出p1=ez1/(ez1+ez2+...),p2=ez2/(ez1+ez2+...),...... p1=e^{z1}/(e^{z1}+e^{z2}+...), p2=e^{z2}/(e^{z1}+e^{z2}+...), ...... p1=ez1/(ez1+ez2+...),p2=ez2/(ez1+ez2+...),......
- softmax常常使用交叉熵计算loss,如下图
2. 反向传播
- groundtruth对应的zj和非groundtruth的zj分开计算
- groundtruth对应的zj
- 非groundtruth对应的zj
- 所以groundtruth对应的zj反向传播的梯度是pj-1,非groundtruth对应的zj反向传播的梯度是pj
3.指数的上溢和对数的下溢
- z1,z2,…中出现1000以上很常见,此时指数就会向上溢出。所以求指数前先减去他们的最大值,结果是一样的,本质就是分子分母同时除以一个常数
- 求交叉熵损失的时候,softmax的值非常小,比如10的-1000次也是可能的,此时就出现向下溢出。所以将公式变换以下: