6.2.2.3softmax输出单元与多项分布
来源:互联网 发布:acrobat for mac 破解 编辑:程序博客网 时间:2024/06/07 09:10
当我们希望表示有n种可能的离散变量的概率分布情况时,softmax函数就隆重登场了。它可以被看为是sigmoid函数的一种推广。
Softmax函数的身影常出没于多分类任务的分类器中,但是也有一种不太常见的应用,就是当我们希望模型从多个不同的的值中进行选择的时候,softmax函数可以被用于模型内部变量的确定。
我们回顾之前的二分类案例,我们希望产生一个数值:
因为这个数值应处于0到1之间,而且我们想要这个数值的对数能够在基于log似然的损失函数的梯度下降算法中有很好的性能,我们选择了预测一个数值z=logP(y=1|x)作为替代。通过指数化与标准化,我们得到了一个受到sigmoid函数控制的伯努利分布。
现在来看看更一般的情况,对于有n个可能的离散变量,我们现在需要得到一个向量y,其中yi=P(y=i|x)。我们不仅要求每一个分量yi处于0到1之间,还要求分量之和为1,这样才是一个有效的概率分布。我们还是以分析伯努利分布的方式来分析多项分布。
首先有一个线性层预测尚未归一化的log概率:
其中,zi=logP(y=i|x)。随后softmax函数将其指数化、归一化就得到了我们希望的y。正式地讲,softmax函数形式如下:
我们希望最大化logP(y=i|x)=log softmax(z)i. 我们之所以将其对数化,原因还是一个:好计算~(因为log可以抵消exp)
6.30的第一项表明输入zi对损失函数有直接的影响,因为该项不会饱和所以我们可以断定基于6.30的梯度下降法能够高效的完成(即使第二项饱和也没有关系哦)。当最大化log似然时,第一项zi会趋于增大,而第二项则使得z的所有分量降低;对于第二项,容易发现如果z的某一个分量远大于其他项,那么第二项就会趋向于那个分量的值;因而在迭代的过程中,算法会对误判的样例进行更强的惩罚!
除了log似然,其他目标函数与softmax并不那么搭,还是因为前边层多次提到的梯度下降速度的问题。为了理解为何其他函数会失效,我们需要仔细审视一下softmax函数本身。
我们先给出结论:类似sigmoid,softmax也有近饱和的问题,在softmax函数中,存在多个输出值,当输入值之间的差别非常大的时候,它的输出值就会近饱和。
好,接下来我们来分析一下这个结论是如何得出的:
经过仔细观察与推导,我们很容易得到一下结论:
这个式子的意思就是如果softmax函数的所有变量同时增加或减少同一个标量的话,函数值是不变的!(是不是很神奇0.0 不放心的同学可以自己推一下,其实就是分子分母同时提取了一个exp(c))
根据上述性质,我们紧接着就会得到如下的式子:
推到这里寓意就很明显了,当输入值之间的差别非常大的时候,它们的输出值几乎不会变化。这与我们上边的结论首尾呼应!而这个结论其实与sigmoid函数饱和状态的一个推广形式!
从神经科学的角度来看是很有意思的,我们可以认为softmax函数为输出单元创建了一种竞争模式:由于softmax的输出值之和为1,因此,如果有一个输出单元的值增大了,那么其他所有单元的值都将会受到抑制!而这与生物皮质神经元之间的侧向抑制现象不谋而合啊!在极端的条件下,这就会演化为一种胜者通吃的模式!(winner-take-all)
- 6.2.2.3softmax输出单元与多项分布
- 多项分布与Direchlet分布
- 二项分布与多项分布
- 概率分布之二项分布与多项分布
- 多项分布
- 多项分布
- 关于Beta分布、二项分布与Dirichlet分布、多项分布的关系
- 关于Beta分布、二项分布与Dirichlet分布、多项分布的关系
- 关于Beta分布、二项分布与Dirichlet分布、多项分布的关系
- 关于Beta分布、二项分布与Dirichlet分布、多项分布的关系
- 概率分布-二项分布、多项分布
- 多项分布 多项式分布
- 二项分布和多项分布
- 二项分布和多项分布
- 概率分布(多项分布,Dirichlet分布)
- 伯努利分布、二项分布、多项分布、Beta分布、Dirichlet分布
- 伯努利分布、二项分布、多项分布、Beta分布、Dirichlet分布
- 离散分布——二项分布、多项分布、超几何分布
- StringBuffer与StringBuilder
- 雪水当量数据(EASE-Grid Data)处理方法
- [Machine Learning]--PMI(Pointwise Mutual Information)
- R语言基础概要
- 上白泽慧音(tarjan求强连通分量)
- 6.2.2.3softmax输出单元与多项分布
- 实验一 Toast 打招呼
- HDU 3998 SequenceL(多次LIS)
- 一句话木马
- 粒子群算法与蚁群算法的异同点
- java学习要点(除C++特性外需要注意的特性)
- springMVC+mybatis环境搭建
- Python实现简单的Web服务器
- SQL总结之数据库备份与还原(MSSQL)