暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

你知道softmax的这个小细节问题吗?

百面机器学习 2020-05-19
485
点击上方蓝色字关注我们!



问题引入

softmax是一个很有用的东西,在我们的分类问题中经常被用到,大家在构建神经网络以及在学习word2vec的时候都会用到softmax函数,那么实际在使用softmax的过程中有哪些需要注意的呢?看来看好像根据公式直接算就可以了,但是中间还有写细节问题,下面我们一起来看一下。

问题解答

在我们的softmax计算过程中会遇到上溢下溢的问题,这点我们可以从softmax的函数中看到。

可以看到我们的分子和分母都是指数函数,当取值过大时会导致数据溢出,当都很小的时候,分母为0,举个例子,当x=[10000,5000,2000]的时候,超过了计算机所能存储的最大范围,就会发生溢出。当x=[-10000,-1000,-34343]的时候,分母很小很小,基本为0,导致计算结果为nan.

那如何解决呢,只要将x进行变换就可以,将原数组变成x-max(x)。对于x=[10000,5000,2000],则变成x=[0,-5000,-8000],这样分母最少为1,分子不用说没问题也不会溢出。为啥减去一个max(x)就可以呢,我们看如下的公式:

 瞬间是不是明白了。


参考

[1]https://blog.csdn.net/zx1245773445/article/details/86443099

[2]https://zhuanlan.zhihu.com/p/76650708

喜欢就关注一下啦~~~




文章转载自百面机器学习,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论