softmax、交叉熵

Softmax是用于分类过程,用来实现多分类的

它把一些输出的神经元映射到(0-1)之间的实数,并且归一化保证和为1,从而使得多分类的概率之和也刚好为1。

Softmax可以分为soft和max,max也就是最大值,假设有两个变量a,b。如果a>b,则max为a,反之为b。那么在分类问题里面,如果只有max,

输出的分类结果只有a或者b,是个非黑即白的结果。但是在现实情况下,我们希望输出的是取到某个分类的概率,或者说,

我们希望分值大的那一项被经常取到,而分值较小的那一项也有一定的概率偶尔被取到,所以我们就应用到了soft的概念,即最后的输出是每个分类被取到的概率


函数定义:

其中,Vi 是分类器前级输出单元的输出。i 表示类别索引,总的类别个数为 C。Si 表示的是当前元素的指数与所有元素指数和的比值。(划重点)
通过这个Softmax函数 就可以将多分类的输出数值转化为相对概率。


补充:实际应用中,使用 Softmax 需要注意数值溢出的问题。因为有指数运算,如果 V 数值很大,经过指数运算后的数值往往可能有溢出的可能。
所以,需要对 V 进行一些数值处理:即 V 中的每个元素减去 V 中的最大值。

交叉熵:
给定一个策略, 交叉熵就是在该策略下猜中颜色所需要的问题的期望值。更普遍的说,交叉熵用来衡量在给定的真实分布下,
使用非真实分布所指定的策略消除系统的不确定性所需要付出成本的大小。交叉的字面意思在于:
真实分布与非真实分布的交叉。给定一个方案, 越优的策略, 最终的交叉熵越低。具有最低的交叉熵的策略就是最优化策略,
也就是上面定义的熵。因此, 在机器学习中, 我们需要最小化交叉熵。
 
交叉熵有时候也被称为对数损失函数
 
 
使用交叉熵做分类问题中的损失函数,可以在一定程度上减少梯度消散。
 
softmax中使用的交叉熵公式如下:

 https://baijiahao.baidu.com/s?id=1618702220267847958&wfr=spider&for=pc

举个例子
通过若干层的计算,最后得到的某个训练样本的向量的分数是[ 2, 3, 4 ],
那么经过softmax函数作用后概率分别就是 [0.0903,0.2447,0.665],
如果这个样本正确的分类是第二个的话,
那么计算出来的偏导就是[0.0903,0.2447-1,0.665]=[0.0903,-0.7553,0.665](划重点)
然后再根据这个进行back propagation就可以了。


 
 
原文地址:https://www.cnblogs.com/h694879357/p/12357003.html