当前位置: 代码迷 >> 综合 >> 小白都能看懂的softmax loss
  详细解决方案

小白都能看懂的softmax loss

热度:25   发布时间:2023-12-08 18:08:18.0

1. 前向传播

  • 一张图像经过层层计算,在softmax之前得到z1,z2,…
  • 经过softmax变成,pj是softmax的输出 p 1 = e z 1 / ( e z 1 + e z 2 + . . . ) , p 2 = e z 2 / ( e z 1 + e z 2 + . . . ) , . . . . . . 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次也是可能的,此时就出现向下溢出。所以将公式变换以下:
    在这里插入图片描述
  相关解决方案