机器学习 | 为什么softmax函数需要减去一个max值

背景:在softmax函数对vector值进行计算,转换为[0, 1]区间的概率值的时候,往往会先对vector中每个元素减去一个max(vector)值。本文主要记录下对神经网络学习中,关于softmax函数计算的track背后的原因。


  1. Softmax函数介绍
    首先来看一下softmax函数的公式:


    可以看到,softmax函数对vector处理的主要目的就是将vector的所有value处理到[0, 1]之间的类概率值。那么,为什么叫softmax呢?根据CS224n的说法,主要是因为softmax函数的效果是能够让vector中最大的数被取到的概率非常大,同时又不至于像max函数那么极端使得取到其他数的概率为0,所以叫softmax。
  2. 为什么要减去max
    那么为什么要对每一个x减去一个max值呢?从需求上来说,如果x的值没有限制的情况下,当x线性增长,e指数函数下的x就呈现指数增长,一个较大的x(比如1000)就会导致程序的数值溢出,导致程序error。所以需求上来说,如果能够将所有的x数值控制在0及0以下,则不会出现这样的情况,这也是为什么不用min而采用max的原因。

  3. 数学上如何保证正确性?
    正确性的关键就是要证明:softmax(x)=softmax(x+c)


    上面就是简单的数学推导过程,不难发现,对任意常数c来说,都不会影响softmax的结果。所以只要把常数c设置为-max就可以实现上面的优化效果。



作者:AxsPlayer
链接:https://www.jianshu.com/p/afa0ac6b7201
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

发布了296 篇原创文章 · 获赞 219 · 访问量 54万+

猜你喜欢

转载自blog.csdn.net/qq_36387683/article/details/103370489