一文读懂交叉熵(Cross-Entropy)和相对熵(Relative-Entropy)
提到机器学习,就不得不提损失函数,提到损失函数,就不得不提交叉熵。
本文章将对这个概念进行详细的分析。
1、信息量
信息量是对事件发生概率的度量,一个事件发生的概率越低,则这个事件包含的信息量越大,这跟我们直观上的认知也是吻合的,越稀奇新闻包含的信息量越大,因为这种新闻出现的概率低。
举个例子,大家都知道猪会跑,但是猪会不会飞就不一定了,毕竟猪在风口上,也能飞上天(手动滑稽)。为了便于理解,我们分别用随机变量 X X X和 Y Y Y来表示猪会不会跑和会不会飞,下标 0 0 0 代表不会, 1 1 1 代表会,且认为 p ( x 1 ) = 0.9 p(x_1)=0.9 p(x1)=0.9, p ( y 1 ) = 0.4 p(y_1)=0.4 p(y1)=0.4,则:
猪会跑: p ( x 1 ) = 0.9 p(x_1)=0.9 p(x1)=0.9,信息量 I ( x 1 ) = − l o g ( 0.9 ) = 0.15 I(x_1)=-log(0.9)=0.15 I(x1)=−log(0.9)=0.15
猪会飞: p ( y 1 ) = 0.4 p(y_1)=0.4 p(y1)=0.4,信息量 I ( y 1 ) = − l o g ( 0.4 ) = 1.32 I(y_1)=-log(0.4)=1.32 I(y1)=−log(0.4)=1.32
显然,猪会飞更稀奇,带给我们的信息量越大。
对于随机变量 X X X,事件 X = x 0 X=x_0 X=x0 的信息量定义为:
I ( x 0 ) = l o g ( 1 p ( x 0 ) ) = − l o g ( p ( x 0 ) ) I(x_0)=log(\frac{1}{p(x_0)})=-log(p(x_0)) I(x0)=log(p(x0)1)=−log(p(x0))
其中p(x_0)为事件 X=x_0发生的概率。
2、熵
熵是一种对不确定性的方法,对于存在不确定性的系统,熵越大表示该系统的不确定性越大,熵为0表示没有任何不确定性。
同样以猪会不会跑,会不会飞为例,刚出生的小猪,以后会不会跑是存在一定不确定性(万一从小自闭,就不会跑了),如何度量这个不确定度,求期望,我们对所有可能结果带来的信息量求期望,其结果就能够衡量出此问题的不确定度了:
H ( X ) = − ( p ( x 0 ) l o g ( p ( x 0 ) ) + ( p ( x 1 ) ) l o g ( p ( x 1 ) ) ) = − ( 0.1 l o g ( 0.1 ) + 0.9 l o g ( 0.9 ) ) = 0.47 H ( Y ) = − ( p ( y 0 ) l o g ( p ( y 0 ) ) + ( p ( y 1 ) ) l o g ( p ( y 1 ) ) ) = − ( 0.6 l o g ( 0.6 ) + 0.4 l o g ( 0.4 ) ) = 0.97 \begin{aligned} H(X)&=−(p(x_0)log(p(x_0))+(p(x_1))log(p(x_1))) \\ &=-(0.1log(0.1)+0.9log(0.9) ) \\ &=0.47 \\ H(Y)&=−(p(y_0)log(p(y_0))+(p(y_1))log(p(y_1))) \\ &=-(0.6log(0.6)+0.4log(0.4) ) \\ &=0.97 \end{aligned} H(X)H(Y)=−(p(x0)log(p(x0))+(p(x1))log(p(x1)))=−(0.1log(0.1)+0.9log(0.9))=0.47=−(p(y0)log(p(y0))+(p(y1))log(p(y1)))=−(0.6log(0.6)+0.4log(0.4))=0.97
可见,猪会不会跑的不确定性较低,会不会飞的不确定性较高。
对于一个离散随机变量 X X X,它的所有可能取值的信息量的期望 E ( I ( x ) ) E(I(x)) E(I(x)) 就称为熵
H ( X ) = E ( I ( x ) ) = ∑ x ∈ X p ( x ) I ( x ) = ∑ x ∈ X p ( x ) ( − l o g ( p ( x ) ) ) = − ∑ x ∈ X p ( x ) l o g ( p ( x ) ) \begin{aligned} H(X)=E(I(x)) &=∑_{x∈X}p(x)I(x) \\ &=∑_{x∈X}p(x)(-log(p(x)))\\ & =−∑_{x∈X}p(x)log(p(x)) \end{aligned} H(X)=E(I(x))=x∈X∑p(x)I(x)=x∈X∑p(x)(−log(p(x)))=−x∈X∑p(x)log(p(x))
同理连续随机变量为:
H ( X ) = E ( I ( x ) ) = ∫ x ∈ X p ( x ) I ( x ) d x = ∫ x ∈ X p ( x ) ( − l o g ( p ( x ) ) ) d x = − ∫ x ∈ X p ( x ) l o g ( p ( x ) ) d x \begin{aligned} H(X)=E(I(x)) &=∫_{x∈X}p(x)I(x)dx \\ &=∫_{x∈X}p(x)(-log(p(x)))dx\\ & =−∫_{x∈X}p(x)log(p(x))dx \end{aligned} H(X)=E(I(x))=∫x∈Xp(x)I(x)dx=∫x∈Xp(x)(−log(p(x)))dx=−∫x∈Xp(x)log(p(x))dx
3、交叉熵
在机器学习中,每个训练集都存在一个真实的概率分布,也叫真实分布,我们的机器学习算法就是要拟合出一个概率分布,这个分布越接近真实分布越好。而根据真实分布,我们能够找到一个最优策略,以最小的代价消除系统的不确定性,而这个代价大小就是信息熵,需要注意的是,熵衡量了系统的不确定性,而我们要消除这个不确定性,所要付出的【最小努力】(猜题次数、编码长度等)的大小就是信息熵。
对于真是分布 P P P和预测分布 Q Q Q,它们的交叉熵定义如下:
C E H ( p , q ) = ∑ x ∈ X p ( x ) l o g 1 q ( x ) = − ∑ x ∈ X p ( x ) l o g q ( x ) CEH(p,q) =∑_{x∈X}p(x)log\frac{1}{q(x)}=−∑_{x∈X}p(x)logq(x) CEH(p,q)=x∈X∑p(x)logq(x)1=−x∈X∑p(x)logq(x)
即,在分布 P P P 的概率曲线下, Q Q Q 携带的信息量,且这个信息量要大于 P P P 的熵 H ( P ) H(P) H(P),这是因为,P为真是分布,在真实情况下,P是最可能发生的,即,在 p ( x ) p(x) p(x)下, I ( q ( x ) ) > = I ( p ( x ) ) I(q(x))>=I(p(x)) I(q(x))>=I(p(x))。
因此,交叉熵越低越好,最低的交叉熵也就是使用了真实分布所计算出来的信息熵,因为此时 p x p_x px = q x q_x qx,交叉熵 = 信息熵。
特别的,当P和Q服从两点分布时,也就是二分类问题下:
C E H ( p , q ) = − ∑ x ∈ X p ( x ) l o g q ( x ) = − ( P p ( x = 1 ) l o g P q ( x = 1 ) + P p ( x = 0 ) l o g P q ( x = 0 ) ) = − [ p l o g q + ( 1 − p ) l o g ( 1 − q ) ] \begin{aligned} CEH(p,q) &=−∑_{x∈X}p(x)logq(x) \\ &=−(P_p(x=1)logP_q(x=1)+P_p(x=0)logP_q(x=0))\\ &=−[plogq+(1−p)log(1−q)] \end{aligned} CEH(p,q)=−x∈X∑p(x)logq(x)=−(Pp(x=1)logPq(x=1)+Pp(x=0)logPq(x=0))=−[plogq+(1−p)log(1−q)]
将 p p p替换成 y y y, q q q替换成 y ^ \hat{y} y^
L = − [ y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) ] L=−[ylog \hat{y}+(1−y)log (1−\hat{y})] L=−[ylogy^+(1−y)log(1−y^)]
是不是很眼熟?
4、相对熵
相对熵与交叉熵容易搞混,二者联系紧密,但又有所区别。
相对熵(relative entropy)又称为KL散度(Kullback–Leibler divergence,简称KLD),信息散度(information divergence),信息增益(information gain)。
KL散度是两个概率分布P和Q差别的非对称性的度量。 简单来说,相对熵用来衡量两个取值为正的函数或概率分布之间的差异,即
K L ( p ∣ ∣ q ) = ∑ x ∈ X p ( x ) ∗ log p ( x ) q ( x ) = ∑ x ∈ X ( p ( x ) l o g p ( x ) − p ( x ) l o g q ( x ) ) = − ∑ x ∈ X p ( x ) l o g q ( x ) − ( − ∑ x ∈ X p ( x ) l o g p ( x ) ) = C E H ( p , q ) − H ( p ) \begin{aligned} KL(p||q) &= \sum_{ x \in X} p(x) * \log \frac{p(x)}{q(x)} \\ &=∑_{x∈X}(p(x)logp(x)−p(x)logq(x)) \\ &=−∑_{x∈X}p(x)logq(x) - (-∑_{x∈X}p(x)logp(x))\\ &= CEH(p, q) - H(p) \end{aligned} KL(p∣∣q)=x∈X∑p(x)∗logq(x)p(x)=x∈X∑(p(x)logp(x)−p(x)logq(x))=−x∈X∑p(x)logq(x)−(−x∈X∑p(x)logp(x))=CEH(p,q)−H(p)
相对熵和交叉熵区别在于,交叉熵中P、Q是有真实分布和预测分布的说法的,相对熵没有,且交叉熵代表的是由Q到P的最优策略。
假设我们想知道某个策略和最优策略之间的差异,我们就可以用相对熵来衡量这两者之间的差异。即,相对熵 = 某个策略的交叉熵 - 信息熵(根据系统真实分布计算而得的信息熵,为最优策略)。
参考链接
https://www.zhihu.com/question/41252833
https://www.jianshu.com/p/92220ab37ea3
https://blog.csdn.net/rtygbwwwerr/article/details/50778098
https://en.wikipedia.org/wiki/Kraft–McMillan_inequality
一文读懂交叉熵(Cross-Entropy)和相对熵(Relative-Entropy)相关推荐
- 一文读懂交叉熵和最大似然的关系及在人脸识别中的应用
目录 一.信息论 1.信息量 2.信息熵 3. 相对熵(KL散度) 4.交叉熵 二.最大似然 1.概念 2.最大似然的求解 三.交叉熵和最大似然在人脸识别中的应用 四.insightface中的los ...
- 一文读懂交叉熵损失函数
进行二分类或多分类问题时,在众多损失函数中交叉熵损失函数较为常用. 下面的内容将以这三个问题来展开 什么是交叉熵损失 以图片分类问题为例,理解交叉熵损失函数 从0开始实现交叉熵损失函数 1,什么是交叉 ...
- dice系数 交叉熵_一文搞懂交叉熵损失
本文从信息论和最大似然估计得角度推导交叉熵作为分类损失函数的依据. 从熵来看交叉熵损失 信息量 信息量来衡量一个事件的不确定性,一个事件发生的概率越大,不确定性越小,则其携带的信息量就越小. 设\(X ...
- 一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉
关于交叉熵在loss函数中使用的理解 交叉熵(cross entropy)是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距.以前做一些分类问题的时候,没有过多的注意,直接调用现成的库,用起 ...
- 平均符号熵的计算公式_交叉熵(Cross Entropy)从原理到代码解读
交叉熵(Cross Entropy)是Shannon(香浓)信息论中的一个概念,在深度学习领域中解决分类问题时常用它作为损失函数. 原理部分:要想搞懂交叉熵需要先清楚一些概念,顺序如下:==1.自信息 ...
- 一文读懂BERT(原理篇)
一文读懂BERT(原理篇) 2018年的10月11日,Google发布的论文<Pre-training of Deep Bidirectional Transformers for Langua ...
- 【深度学习】一文读懂机器学习常用损失函数(Loss Function)
[深度学习]一文读懂机器学习常用损失函数(Loss Function) 最近太忙已经好久没有写博客了,今天整理分享一篇关于损失函数的文章吧,以前对损失函数的理解不够深入,没有真正理解每个损失函数的特点 ...
- 一文读懂EfficientDet
一文读懂EfficientDet. 今年年初Google Brain团队在 CVPR 2020 上发布了 EfficientDet目标检测模型, EfficientDet是一系列可扩展的高效的目标检测 ...
- 一文读懂你该了解的5G知识:现在别买5G手机
来源: 腾讯科技 2019年是中国全力布局5G的一年:三大运营商纷纷搭建基站,手机厂商发布5G手机,部分城市已经开启了5G测试--在电信日这天,腾讯科技联合知乎推出重磅策划,聚焦和5G相关的小知识,精 ...
最新文章
- Android 超高仿微信图片选择器 图片该这么加载
- .NET代码混淆学习和解决视频批量转换中.wmv转换出错问题
- 牛客小白月赛12 F	华华开始学信息学 (分块+树状数组)
- CF932E-Team Work【斯特林数,组合数学】
- python实现非对称加密算法_Python3非对称加密算法RSA实例详解
- Android ble covana,Android BLE低功耗蓝牙开发
- 我搭的神经网络不work该怎么办!看看这11条新手最容易犯的错误
- MySQL--备份还原常用命令
- 控制台版单机双人五子棋游戏(Java版)---新人小白
- xftp无法显示远程文件夹
- 【线代】线性方程组求解概念:齐次/非齐次方程的解?非零解、无穷多解、求解、求通解、方程有解时求全部解,是什么意思?
- PHP 把ofd格式文件转PDF,打开OFD格式文件及将OFD格式文件转换成PDF文件
- python常用工具类
- 微信企业号和企业微信消息发送区别
- 关于AHB-RAM的一些内容1
- session 生命周期,cookie详解
- android AP热点(wifi热点)开发
- 【STC头文件】STC8系列之STC8G头文件寄存器注释
- DIY搭建黑群晖(XPEnology)备忘记载
- 唱好铁血丹心谐音正规_铁血丹心 谐音
热门文章
- 阿里云旺自定义消息和首次打开聊天界面自动发送消息的实现
- flex布局占四分之一_云现在占IT支出的四分之一,并且还在快速增长
- 详细讲解ExpandableListView显示和查询仿QQ分组列表用户信息
- 九连环游戏算法递归实现
- Aigtek—浅谈线束测试仪的重要性
- 你还在为找工作发愁嘛?最新前端高频面试题(适合应届生),拿走不谢!
- rtsp转rtmp php,Rtsp转RTMP之按需转发模式
- 关于人生,理想和抉择的对话
- layui数据表格数据绑定加分页代码
- 安卓 c语言宝典,C语言宝典app下载-C语言宝典下载v1.8.0-西西软件下载