谈谈交叉熵损失函数

一.交叉熵损失函数形式

现在给出三种交叉熵损失函数的形式,来思考下分别表示的的什么含义。

--式子1

--式子2

--式子3

解释下符号,m为样本的个数,C为类别个数。上面三个式子都可以作为神经网络的损失函数作为训练,那么区别是什么?

■1》式子1,用于那些类别之间互斥(如:一张图片中只能保护猫或者狗的其中一个)的单任务分类中。连接的 softmax层之后的概率分布。

tensorflow中的函数为:  tf.nn.softmax_cross_entropy_with_logits

■2》式子2,用于那些类别之间不存在互斥关系(如:一张图片中可有猫和狗两种以上的类别同时存在)的多任务学习分类中。最后一层的每个节点不在是softmax函数的输出了,而是sigmoid。把每个节点当成一个完整的分布,而式子1是所有节点组合程一个完整分布。

tensorflow中的函数为:tf.nn.sigmoid_cross_entropy_with_logits

■3》式子3,用于最后一层只有一个节点的二分类任务

二.交叉熵损失意义

要解释交叉熵损失函数的意义,我认为应该从熵的根源说起。这里我不介绍熵作者呀,来源呀什么的不再介绍了(主要是懒),哈哈!)这里讲的顺序是:信息量--》信息熵--》交叉熵

1.信息量

意义:

如果一个事件发生的概率为p,那么获知该信息发生能给到我们 的信息量(可以理解为意外程度)

例子:巴西跟中国乒乓球比赛,历史上交手64次,其中中国获胜63次,那么63/64是赛前普遍认为中国队获胜的概率,那么这次中国获胜的信息量有多大?

如果这次是巴西获胜,那么带给我们的信息量为:

单位:bit

如果一件事件的发生概率为:100%,带给我们的信息量为:0

通俗点讲就是,如果一件事情,本身发生的概率很大,如果再次发生,我们并没有觉得有什么好奇的。但是一件发生概率很小的事情发生了,我们就会非常惊讶,它能给到我们的信息就越有价值。例如:太阳每天都是从东边出来,这个概率几乎是1,所以我们都其以为常,没什么好惊讶的,但是某天太阳从西边出来了,这个时候,打破了我们的常识,这个概率非常小的事件居然发生了,我们就会非常惊讶,它给我们信息量是非常大的,也许我们可以根据这个现象发现一种新的东西。

2.信息熵

意义:

用来做信息的杂乱程度的量化描述。

定义:

1.中国队获胜概率: 63/64,巴西获胜概率:1/64,那么信息熵为:

2.中国队获胜概率: 1/2,巴西获胜概率:1/2,那么信息熵为:

3.中国队获胜概率: 1,巴西获胜概率:0,那么信息熵为:

结论:

信息越确定,越单一,信息熵就越小,

信息越不确定,越混乱,信息熵就越大。

注意:这里的log以2为底,实际上可以与e,10等其他为底,主要对比的时候统一就好。从计算机角度来看,计算机只有0,1两位,用2比较符合。

3.交叉熵

意义:

衡量真实分布和预测的分布的差异情况

离散形式为:

其中,p(x)为真实概率,q(x)为预测概率

从信息量的角度,如果是真是真实的概率,那么给到我们的信息熵为:

如果是预测分布,改到我们信息熵(可以简单理解为信息量)为:

信息熵的差异为:

这也叫:K-L散度

可以看出,只有当q(x)=p(x)时候差异为:0

K-L散度始终是>=0,但是不知道怎么证明(我还没推导出来惭愧,以后推导出来再补充,如果有读者推出来,麻烦评论,非常感谢!)

问题:

为什么大多数情况,我们都用交叉熵而不是K-L散度作为损失函数?

我来分析下:仔细观察k-l散度,如果是多分类时候,one-hot形式【0,1,0,0】,那么把p(x)=0,1,0,0,带入K-L散度函数,那么其实跟交叉熵形式是一样的。

例如:在多一个4分类任务时候,计算其中一个样本的第2个类别损失,其one-hot形式,【0,1,0,1】,模型预测出来的概率分布为:【0.1,0.6,0.2,0.1】

那么如果是K-L散度作为损失,那么:

实际就是:-p(x)*log(q(x))

这下明白了吧。

参考:

1.https://en.wikipedia.org/wiki/Kullback–Leibler_divergence

2.https://www.reddit.com/r/MachineLearning/comments/4mebvf/why_train_with_crossentropy_instead_of_kl/

3.书籍《白话大数据》第六章信息论

原文地址:https://www.cnblogs.com/aijianiula/p/9460842.html

时间: 2024-10-06 23:11:27

谈谈交叉熵损失函数的相关文章

均方误差和交叉熵损失函数比较

一.前言 在做神经网络的训练学习过程中,一开始,经常是喜欢用二次代价函数来做损失函数,因为比较通俗易懂,后面在大部分的项目实践中却很少用到二次代价函数作为损失函数,而是用交叉熵作为损失函数.为什么?一直在思考这个问题,这两者有什么区别,那个更好?下面通过数学的角度来解释下. 思考:我们希望我们损失函数能够做到,当我们预测的值跟目标值越远时,在修改参数时候,减去一个更大的值,做到更加快速的下降. 二.两种代价函数的表达式 二次代价损失函数: 交叉熵损失函数: 针对二分类来说,其中: ai第Xi个样

交叉熵损失函数

交叉熵损失是分类任务中的常用损失函数,但是是否注意到二分类与多分类情况下的交叉熵形式上的不同呢? 两种形式 这两个都是交叉熵损失函数,但是看起来长的却有天壤之别.为什么同是交叉熵损失函数,长的却不一样? 因为这两个交叉熵损失函数对应不同的最后一层的输出:第一个对应的最后一层是softmax,第二个对应的最后一层是sigmoid 先来看下信息论中交叉熵的形式 交叉熵是用来描述两个分布的距离的,神经网络训练的目的就是使 g(x) 逼近 p(x). softmax层的交叉熵 (x)是什么呢?就是最后一

大白话5分钟带你走进人工智能-第十八节逻辑回归之交叉熵损失函数梯度求解过程(3)

                                               第十八节逻辑回归之交叉熵损失函数梯度求解过程(3) 上一节中,我们讲解了交叉熵损失函数的概念,目标是要找到使得损失函数最小的那组θ,也就是l(θ)最大,即预测出来的结果在训练集上全部正确的概率最大.那我们怎么样找到我们的最优解呢?上节中提出用梯度下降法求解,本节的话我们对其具体细节展开. 先来看下我们用梯度下降求解最优解,想要通过梯度下降优化L(θ)到最小值需要几步? 第一步,随机产生w,随机到0附近会

softmax交叉熵损失函数求导

来源:https://www.jianshu.com/p/c02a1fbffad6 简单易懂的softmax交叉熵损失函数求导 来写一个softmax求导的推导过程,不仅可以给自己理清思路,还可以造福大众,岂不美哉~ softmax经常被添加在分类任务的神经网络中的输出层,神经网络的反向传播中关键的步骤就是求导,从这个过程也可以更深刻地理解反向传播的过程,还可以对梯度传播的问题有更多的思考. softmax 函数 softmax(柔性最大值)函数,一般在神经网络中, softmax可以作为分类任

吴裕雄--天生自然 pythonTensorFlow自然语言处理:交叉熵损失函数

import tensorflow as tf # 1. sparse_softmax_cross_entropy_with_logits样例. # 假设词汇表的大小为3, 语料包含两个单词"2 0" word_labels = tf.constant([2, 0]) # 假设模型对两个单词预测时,产生的logit分别是[2.0, -1.0, 3.0]和[1.0, 0.0, -0.5] predict_logits = tf.constant([[2.0, -1.0, 3.0], [1

交叉熵损失函数来源及求导推导

记录一下,方便复习 总结: 原文地址:https://www.cnblogs.com/zhibei/p/12334238.html

交叉熵

http://www.cnblogs.com/ljy2013/p/6432269.html 作者:Noriko Oshima链接:https://www.zhihu.com/question/41252833/answer/108777563来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 熵的本质是香农信息量()的期望. 现有关于样本集的2个概率分布p和q,其中p为真实分布,q非真实分布.按照真实分布p来衡量识别一个样本的所需要的编码长度的期望(即平均编码长度)为

如何通俗的解释交叉熵与相对熵

[From] https://www.zhihu.com/question/41252833/answer/108777563 熵的本质是香农信息量()的期望. 现有关于样本集的2个概率分布p和q,其中p为真实分布,q非真实分布.按照真实分布p来衡量识别一个样本的所需要的编码长度的期望(即平均编码长度)为:H(p)=.如果使用错误分布q来表示来自真实分布p的平均编码长度,则应该是:H(p,q)=.因为用q来编码的样本来自分布p,所以期望H(p,q)中概率是p(i).H(p,q)我们称之为"交叉熵

交叉熵 相关链接

TensorFlow四种Cross Entropy算法实现和应用 对比两个函数tf.nn.softmax_cross_entropy_with_logits和tf.nn.sparse_softmax_cross_entropy_with_logits 从神经网络视角看均方误差与交叉熵作为损失函数时的共同点 交叉熵代价函数 交叉熵代价函数(损失函数)及其求导推导 简单易懂的softmax交叉熵损失函数求导 如何通俗的解释交叉熵与相对熵? https://www.cnblogs.com/virede