softmax损失函数-交叉熵

softmax常用来进行多分类,假如有一个4x1向量=[5,2,-1,3],softmax的计算过程如下所示

softmax损失函数-交叉熵_第1张图片
输入向量 和中间向量t
softmax损失函数-交叉熵_第2张图片
softmax输出向量,结果的所有元素和为1


下式中是标签,是输出预测值。假设=[0,1,0,0],=[0.3,0.4,0.1,0.2]

单个训练样本损失函数(,)  =  —

此损失函数本质上是交叉熵



酷文章:交叉熵


KL散度(相对熵)

说交叉熵之前,先引出KL散度,KL散度用于衡量对于同一个随机变量x的两个分布p(x)和q(x)之间的差异。 KL散度的值越小表示两个分布越接近。

1、对于离散事件我们可以定义事件A和B的差别为(2.1): 

公式(2.1)

2、对于连续事件,那么我们只是把求和改为求积分而已(2.2)。

公式(2.2)

从上两式中可以看出:1、如果,那么AB的Kl散度等于0

                                    2、KL散度不具有对称性,即


交叉熵

那既然我们默认了用KL散度来计算两个分布间的不同,那还要交叉熵做什么?

事实上交叉熵和KL散度的公式非常相近,其实就是KL散度的后半部分(公式2.1):

    A与B的KL散度= -A的熵 + A和B的交叉熵

机器学习中,我们常常使用KL散度来评估predict和label之间的差别,但是由于KL散度的前半部分是一个常量,所以我们常常将后半部分的交叉熵作为损失函数,其实二者是一样的

 A和B的交叉熵 =- A的熵+A与B的KL散度 
交叉熵公式
熵公式

此处最重要的观察是,如果 是一个常量,那么 也就是说KL散度和交叉熵在特定条件下等价。

在softmax学习时,我们把真实分布当做A,S(A)就是一个常量。此时最小化交叉熵就是最小化KL散度。



通过学习使非真实分布更接近真实分布,过程中交叉熵变小,所以最小化损失函数使预测的非真实分布更接近真实分布(标签)。

根据上面的例子,在2时,式子值为0,=2时,=1,综上L(,)=,损失函数通过学习变小,则变大,又softmax输出的所有概率和为1,所以理想状态下会趋近于1


下式的,是softmax需要学习的权重和偏移。

训练集的损失函数( ,,... )= (,)

整个训练集损失就是把训练算法对所有训练样本的预测都加起来,再除以样本数。

你可能感兴趣的:(softmax损失函数-交叉熵)