softmax损失函数-交叉熵

softmax常用来进行多分类,假如有一个4x1向量=[5,2,-1,3],softmax的计算过程如下所示
softmax损失函数-交叉熵
文章图片
输入向量 和中间向量t softmax损失函数-交叉熵
文章图片
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):
softmax损失函数-交叉熵
文章图片
公式(2.1)
2、对于连续事件,那么我们只是把求和改为求积分而已(2.2)。
softmax损失函数-交叉熵
文章图片
公式(2.2)
从上两式中可以看出:1、如果,那么AB的Kl散度等于0
2、KL散度不具有对称性,即


交叉熵
那既然我们默认了用KL散度来计算两个分布间的不同,那还要交叉熵做什么?
事实上交叉熵和KL散度的公式非常相近,其实就是KL散度的后半部分(公式2.1):
A与B的KL散度= -A的熵 + A和B的交叉熵
机器学习中,我们常常使用KL散度来评估predict和label之间的差别,但是由于KL散度的前半部分是一个常量,所以我们常常将后半部分的交叉熵作为损失函数,其实二者是一样的
softmax损失函数-交叉熵
文章图片
A和B的交叉熵 =- A的熵+A与B的KL散度softmax损失函数-交叉熵
文章图片
交叉熵公式 softmax损失函数-交叉熵
文章图片
熵公式
此处最重要的观察是,如果 是一个常量,那么 也就是说KL散度和交叉熵在特定条件下等价。
【softmax损失函数-交叉熵】在softmax学习时,我们把真实分布当做A,S(A)就是一个常量。此时最小化交叉熵就是最小化KL散度。


通过学习使非真实分布更接近真实分布,过程中交叉熵变小,所以最小化损失函数使预测的非真实分布更接近真实分布(标签)。
根据上面的例子,在2时,式子值为0,=2时,=1,综上L(,)=,损失函数通过学习变小,则变大,又softmax输出的所有概率和为1,所以理想状态下会趋近于1


下式的,是softmax需要学习的权重和偏移。
训练集的损失函数( ,,... )= (,)
整个训练集损失就是把训练算法对所有训练样本的预测都加起来,再除以样本数。

    推荐阅读