目录
一、Softmax
二、LogSoftmax
三、Modified softmax-A-softmax
四、L-softmax
前言
在机器学习尤其是深度学习领域中,经常需要把一些输入映射到0-1之间的概率值。这个时候最先想到的就是sigmoid和softmax了,softmax是二分类函数sigmoid在多分类上的推广,目的就是将多分类结果以概率的形式展现出来。在数学,尤其是概率论和相关领域中,softmax函数又称归一化指数函数,是逻辑函数的一种推广。Softmax函数实际上是有限项离散概率分布的梯度对数归一化。因此,Softmax函数在包括 多项逻辑回归,多项线性判别分析,朴素贝叶斯分类器和人工神经网络等的多种基于概率的多分类问题方法中都有着广泛应用。
softmax function is a generalization of the logistic function that maps a length-p vector of real values to a length-K vector of values.
一、Softmax
softmax具有良好的数学性质,可以从以下几个方面思考softmax函数:
1、softmax是sigmoid函数在多分类输出上的推广,考虑sigmoid函数的物理意义:
𝑦=11+𝑒−𝑧,𝑧=𝑤𝑥+𝑏
𝑙𝑛𝑦1−𝑦=𝑤𝑥+𝑏
等式左边被称为“对数几率”logits,其中 𝑦1−𝑦 表示了事件发生与不发生的比例,具有良好的物理意义。而对于softmax而言,在二分类情况下与sigmoid函数等价,他是sigmoid函数在多分类上扩展,具体形式:
𝑠𝑜𝑓𝑡𝑚𝑎𝑥(𝑥)=𝑒𝑥𝑖∑𝑗𝑒𝑥𝑗
对于softmax函数,使用极大似然估计计算需要训练的参数 𝜃 的值,
𝑙𝑜𝑔𝑃(𝑦=𝑖;𝑧)=𝑙𝑜𝑔 𝑠𝑜𝑓𝑡𝑚𝑎𝑥(𝑧)𝑖=𝑧𝑖−𝑙𝑜𝑔∑𝑗𝑒𝑧𝑗
其中第一项表示输入 𝑧𝑖 总是对代价函数有直接贡献,当最大化对数似然时,第一项鼓励𝑧𝑖被推高,而第二项则鼓励所有的 𝑧 被拉低。这也能一定程度上说明为什么softmax对于输出结果出现[0.5, 0.5]的情况,往往会给出一个过于自信的判断。为了对第二项 𝑙𝑜𝑔∑𝑗𝑒𝑧𝑗 有个直观的理解,注意到这一项大致可以近似为 𝑚𝑎𝑥𝑗𝑧𝑗 ,这种近似是基于对任何明显小于𝑚𝑎𝑥𝑗𝑧𝑗的 𝑧𝑘 , 𝑒𝑧𝑘 都是不重要的,能从这种近似中看出,负对数似然代价函数总是强烈地惩罚最活跃的不确定项。如果正确答案已经具有了softmax的最大输入,那么 −𝑧𝑖 和 𝑙𝑜𝑔∑𝑗𝑒𝑧𝑗≈𝑚𝑎𝑥𝑗𝑧𝑗=𝑧𝑗 项大致低效,这个样本对整体训练代价的贡献很小,这个代价主要有未被正确分类的样本产生。
通常情况下,对于和交叉熵(极大似然估计)一起使用的softmax函数而言,其导数具有非常简单的形式,只用正确分类的项上输出值-1,其他项保持不变即可。(这个的具体推导,放到损失函数里面再说吧Softmax Loss 的推导及改进 - 知乎 (zhihu.com))
另外,对于softmax来说,存在的第一个问题就是涉及到了指数计算,故对于计算机而言带来的第一个挑战就是内存溢出。因此需要对softmax函数进行改进:
𝑦𝑘=𝑒𝑎𝑘∑𝑖=1𝑛𝑒𝑎𝑖=𝐶𝑒𝑎𝑘𝐶∑𝑖=1𝑛𝑒𝑎𝑖=𝑒𝑎𝑘+𝑙𝑜𝑔𝐶∑𝑖