cross-entropy(交叉熵)

熵其实是信息量的期望值,它是一个随机变量的确定性的度量。熵越大,变量的取值越不确定,反之就越确定

参考链接:https://blog.csdn.net/rtygbwwwerr/article/details/50778098

交叉熵是一个在ML领域经常会被提到的名词。在这篇文章里将对这个概念进行详细的分析。

1.什么是信息量?

假设X是一个离散型随机变量,其取值集合为X,概率分布函数为p(x)=Pr(X=x),x∈X,p(x)=Pr(X=x),x∈X,我们定义事件X=x0的信息量为: 
I(x0)=?log(p(x0)),可以理解为,一个事件发生的概率越大,则它所携带的信息量就越小,而当p(x0)=1时,熵将等于0,也就是说该事件的发生不会导致任何信息量的增加。举个例子,小明平时不爱学习,考试经常不及格,而小王是个勤奋学习的好学生,经常得满分,所以我们可以做如下假设: 
事件A:小明考试及格,对应的概率P(xA)=0.1,信息量为I(xA)=?log(0.1)=3.3219
事件B:小王考试及格,对应的概率P(xB)=0.999,信息量为I(xB)=?log(0.999)=0.0014
可以看出,结果非常符合直观:小明及格的可能性很低(十次考试只有一次及格),因此如果某次考试及格了(大家都会说:XXX竟然及格了!),必然会引入较大的信息量,对应的l值也较高。而对于小王而言,考试及格是大概率事件,在事件B发生前,大家普遍认为事件B的发生几乎是确定的,因此当某次考试小王及格这个事件发生时并不会引入太多的信息量,相应的II值也非常的低。

2.什么是熵?

那么什么又是熵呢?还是通过上边的例子来说明,假设小明的考试结果是一个0-1分布XA只有两个取值{0:不及格,1:及格},在某次考试结果公布前,小明的考试结果有多大的不确定度呢?你肯定会说:十有八九不及格!因为根据先验知识,小明及格的概率仅有0.1,90%的可能都是不及格的。怎么来度量这个不确定度?求期望!不错,我们对所有可能结果带来的额外信息量求取均值(期望),其结果不就能够衡量出小明考试成绩的不确定度了吗。 
即: 
HA(x)=?[p(xA)log(p(xA))+(1?p(xA))log(1?p(xA))]=0.4690
对应小王的熵: 
HB(x)=?[p(xB)log(p(xB))+(1?p(xB))log(1?p(xB))]=0.0114
虽然小明考试结果的不确定性较低,毕竟十次有9次都不及格,但是也比不上小王(1000次考试只有一次才可能不及格,结果相当的确定) 
我们再假设一个成绩相对普通的学生小东,他及格的概率是P(xC)=0.5,即及格与否的概率是一样的,对应的熵: 
HC(x)=?[p(xC)log(p(xC))+(1?p(xC))log(1?p(xC))]=1
其熵为1,他的不确定性比前边两位同学要高很多,在成绩公布之前,很难准确猜测出他的考试结果。 
可以看出,熵其实是信息量的期望值,它是一个随机变量的确定性的度量。熵越大,变量的取值越不确定,反之就越确定。

对于一个随机变量X而言,它的所有可能取值的信息量的期望(E[I(x)])就称为熵。 
X的熵定义为: 
H(X)=Eplog(1/p(x))=?∑p(x)logp(x) ,x∈X
如果p(x)是连续型随机变量的pdf,则熵定义为: 
H(X)=?∫p(x)logp(x)dx,x∈X
为了保证有效性,这里约定当p(x)→0时,有p(x)logp(x)→0
当X为0-1分布时,熵与概率p的关系如下图: 
 
可以看出,当两种取值的可能性相等时,不确定度最大(此时没有任何先验知识),这个结论可以推广到多种取值的情况。在图中也可以看出,当p=0或1时,熵为0,即此时X完全确定。 
熵的单位随着公式中log运算的底数而变化,当底数为2时,单位为“比特”(bit),底数为e时,单位为“奈特”。

3.什么是相对熵?

4. 什么是交叉熵?

原文地址:https://www.cnblogs.com/momo072994MLIA/p/9435690.html

时间: 2024-08-29 18:26:47

cross-entropy(交叉熵)的相关文章

最大似然估计 (Maximum Likelihood Estimation), 交叉熵 (Cross Entropy) 与深度神经网络

最近在看深度学习的"花书" (也就是Ian Goodfellow那本了),第五章机器学习基础部分的解释很精华,对比PRML少了很多复杂的推理,比较适合闲暇的时候翻开看看.今天准备写一写很多童鞋们w未必完全理解的最大似然估计的部分. 单纯从原理上来说,最大似然估计并不是一个非常难以理解的东西.最大似然估计不过就是评估模型好坏的方式,它是很多种不同评估方式中的一种.未来准备写一写最大似然估计与它的好朋友们,比如说贝叶斯估计 (Beyasian Estimation), 最大后验估计(Max

Kaldi的交叉熵正则化

xent_regularize, Cross Entropy Regularize nnet3/nnet-discriminative-trainning.cc:109 void NnetDiscriminativeTrainer::ProcessOutputs() 交叉熵正则化,即帧平滑 <解读深度学习:语音识别实践>8.2.3 帧平滑 当正确地进行词图补偿后,进行几次序列鉴别性训练的迭代后,就会很快出现过拟合.即,几次鉴别性训练迭代后,模型计算出的帧准确率(帧的后验概率)显著变差(比原模型

2016.3.24 交叉熵

交叉熵 俗话说,千里之行,始于足下,在我踢球的时候,教练总是让我们练习基本功,其实感觉基本功才是重点,如果基本功不好,那么再怎么厉害的战术都不能够执行出来,基本功是发挥的基本和关键,对于网络来说,基本的感觉或者说基本的对于网络的数学感觉也是基本功. 那么对于一个简单的feedforward的普通的全链接的神经网络什么是基本功呢?我认为首先需要对激活函数有一个感觉,尤其是对于sigmoid,这是非线性的一个里程碑式的函数.对于这个重要问题,一定要深入理解各项基本特性.简单描述一下,这个函数再0附近

卷积神经网络系列之softmax,softmax loss和cross entropy的讲解

我们知道卷积神经网络(CNN)在图像领域的应用已经非常广泛了,一般一个CNN网络主要包含卷积层,池化层(pooling),全连接层,损失层等.虽然现在已经开源了很多深度学习框架(比如MxNet,Caffe等),训练一个模型变得非常简单,但是你对这些层具体是怎么实现的了解吗?你对softmax,softmax loss,cross entropy了解吗?相信很多人不一定清楚.虽然网上的资料很多,但是质量参差不齐,常常看得眼花缭乱.为了让大家少走弯路,特地整理了下这些知识点的来龙去脉,希望不仅帮助自

交叉熵 相关链接

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

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

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

深度学习中交叉熵和KL散度和最大似然估计之间的关系

机器学习的面试题中经常会被问到交叉熵(cross entropy)和最大似然估计(MLE)或者KL散度有什么关系,查了一些资料发现优化这3个东西其实是等价的. 熵和交叉熵 提到交叉熵就需要了解下信息论中熵的定义.信息论认为: 确定的事件没有信息,随机事件包含最多的信息. 事件信息的定义为:\(I(x)=-log(P(x))\):而熵就是描述信息量:\(H(x)=E_{x\sim P}[I(x)]\),也就是\(H(x)=E_{x\sim P}[-log(P(x))]=-\Sigma_xP(x)l

[转] 理解交叉熵在损失函数中的意义

转自:https://blog.csdn.net/tsyccnh/article/details/79163834 关于交叉熵在loss函数中使用的理解交叉熵(cross entropy)是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距.以前做一些分类问题的时候,没有过多的注意,直接调用现成的库,用起来也比较方便.最近开始研究起对抗生成网络(GANs),用到了交叉熵,发现自己对交叉熵的理解有些模糊,不够深入.遂花了几天的时间从头梳理了一下相关知识点,才算透彻的理解了,特地记录下来,以

直观理解为什么分类问题用交叉熵损失而不用均方误差损失?

目录 交叉熵损失与均方误差损失 损失函数角度 softmax反向传播角度 参考 博客:blog.shinelee.me | 博客园 | CSDN 交叉熵损失与均方误差损失 常规分类网络最后的softmax层如下图所示,传统机器学习方法以此类比, 一共有\(K\)类,令网络的输出为\([\hat{y}_1,\dots, \hat{y}_K]\),对应每个类别的概率,令label为 \([y_1, \dots, y_K]\).对某个属于\(p\)类的样本,其label中\(y_p=1\),\(y_1

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

1.MSE(均方误差) MSE是指真实值与预测值(估计值)差平方的期望,计算公式如下: MSE = 1/m (Σ(ym-y'm)2),所得结果越大,表明预测效果越差,即y和y'相差越大 y = tf.constant([1,2,3,0,2]) y = tf.one_hot(y,depth=4) y = tf.cast(y,dtype=tf.float32) out = tf.random.normal([5,4]) # MSE标准定义方式 loss1 = tf.reduce_mean(tf.sq