专栏名称: 机器学习研究会
机器学习研究会是北京大学大数据与机器学习创新中心旗下的学生组织,旨在构建一个机器学习从事者交流的平台。除了及时分享领域资讯外,协会还会举办各种业界巨头/学术神牛讲座、学术大牛沙龙分享会、real data 创新竞赛等活动。
目录
相关文章推荐
黄建同学  ·  学习-20250205192620 ·  2 天前  
爱可可-爱生活  ·  【Let's Build a Simple ... ·  2 天前  
爱可可-爱生活  ·  【Claude和o3 ... ·  2 天前  
爱可可-爱生活  ·  【Python项目结构优化小技巧】想让Pyt ... ·  2 天前  
新智元  ·  潞晨华为联手放大招!DeepSeek-R1推 ... ·  3 天前  
51好读  ›  专栏  ›  机器学习研究会

干货|softmax函数计算时候为什么要减去一个最大值?

机器学习研究会  · 公众号  · AI  · 2017-09-17 22:28

正文

softmax回顾


首先我们给出softma层的回顾。


softmax用于多分类过程中 ,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类!

假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的softmax值就是


更形象的如下图表示:



softmax直白来说就是将原来输出是3,1,-3通过softmax函数一作用,就映射成为(0,1)的值为(0.88,0.12,0),而这些值的累和为1(满足概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标!


2

存在问题



当我们运算比较小的值的时候是不会有什么问题的,但是如果运算的值比较大的时候 ,比 如  很大或很小的时候,朴素的直接计算会上溢出或下溢出,从而导致严重问题。


举个例子,对于[3,1,-3],直接计算是可行的,我们可以得到(0.88,0.12,0)。


但对于[1000,1000,1000],却并不可行,我们会得到 inf( 这也是深度学习训练过程常见的一个错误,看了本文之后,以后出现inf的时候,至少可以考虑softmax运算的上溢和下溢 ) ;对于[-1000,-999,-1000],还是不行,我们会得到-inf。


这是因为你的浮点数只有64位,在计算指数函数的环节,exp{1000} =inf,会发生上溢出;exp{-1000} =0,会发生下溢出。


3







请到「今天看啥」查看全文