softmax输出向量的计算过程以及log_softmax的优势

说明:本文部分文本参考知乎博主chuang的一篇文章

  • softmax

  • 计算过程如图所示:
    softmax输出向量的计算过程以及log_softmax的优势_第1张图片

  • logsoftmax
    而logsoftmax无非是在softmax的结果至上进行log操作,即log(yi),输出结果均为负数;
    值域范围在(0, 1)之间如图所示:(随便画的有点丑)
    softmax输出向量的计算过程以及log_softmax的优势_第2张图片

  • 重点:

  • log_softmax能够解决函数overflow和underflow,加快运算速度,提高数据稳定性。

softmax输出向量的计算过程以及log_softmax的优势_第3张图片

如上图所示:

  • softmax会进行指数操作,当上一层的输出,也就是softmax的输入比较大的时候, 可能就会产生overflow。比如上图中,z1、z2、z3取值很大的时候,超出了float能表示的范围。
  • 同理当输入为负数且绝对值也很大的时候,会出现分母会变得极大,有可能四舍五入为0,导致下溢出。
  • 尽管在数学表示式上是对softmax在取对数的情况。但是在实操中是通过
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    来实现,其中在这里插入图片描述即 M为所有概率分布中最大的值。

  • 可以解决这个问题,在加快运算速度的同时,可以保持数值的稳定性

你可能感兴趣的:(softmax,log_softmax)