机器学习中使用的交叉熵(cross entropy)透彻分析
从字面分析交叉熵,1是交叉、2是熵(熵与信息量有关);首先交叉熵涉及信息论里面的东西,想要彻底理解交叉熵就要明白此概念跟信息量的关系以及里边的熵怎么理解。
(1)信息量
衡量信息量可以用大小或者多少来形容,就是你传达的信息能别人带来多大的价值感吧,首先我说明天会下雨,这句话的信息量有多少呢?(我也不知道啊,哈哈)但是你说中国疫情现在已经结束了;mei国疫情也已经结束了。显然仅凭直觉,我们可以看出你要传达的第二句话比第一句话的信息量要大,因为中国的疫情我们大家很显然知道已经结束了,这句话发生概率几乎为1,而meiguo刚刚我们观察还处在很严重的阶段,你说他已经结束了这件事发生的概率很小几乎为0,但是你传达给我了一个几乎不会发生的事情发生了。证明我获得了我不知道的信息得到了很大的信息量。
由此我们可以总结出:那么信息量应该和事件发生的概率有关。所以当越不可能的事件发生了,我们获取到的信息量就越大;越可能发生的事件发生了,我们获取到的信息量就越小。因此一个具体事件的信息量应该是随着其发生概率而递减的,且不能为负。
因此衡量信息量大小的公式为:
假设X是一个离散型随机变量,其取值集合为,概率分布函数,则定义事件的信息量为:
PS:之后没有特殊说明的对数都是自然对数,以e为底的。(以常数e为底数的对数叫做自然对数,记作lnN(N>0))
那么为什么是log公式呢?不要着急下边分析:
随着概率增大而减少的函数形式太多了!
如果我们有俩个不相关的事件x和y,那么我们观察到的俩个事件同时发生时获得的信息应该等于观察到的事件各自发生时获得的信息之和,即:
h(x,y) = h(x) + h(y)
由于x,y是俩个不相关的事件,那么满足p(x,y) = p(x)*p(y).
根据上面推导,我们很容易看出h(x)一定与p(x)的对数有关(因为只有对数形式的真数相乘之后,能够对应对数的相加形式,可以试试)。因此我们有信息量公式如下:
下面解决俩个疑问?
(1)为什么有一个负号
其中,负号是为了确保信息一定是正数或者是0,总不能为负数吧!
(2)为什么底数为2
这是因为,我们只需要信息量满足低概率事件x对应于高的信息量。那么对数的选择是任意的。我们只是遵循信息论的普遍传统,使用2作为对数的底!(但是本文中举例讲解的一律是自然对数)
(2)熵
信息熵也被称为熵,用来表示所有信息量的期望。
熵是一种度量,可以用熵的大小度量信息的混乱程度,或者是信息的不确定性。熵越大,信息的不确定性越大。同样,熵也可以用来衡量变量的不确定性。
熵也可以衡量一件事的信息量的大小,因为一件事确定性越大,那它的信息量就越小;反之,一件事不确定性越大它得信息量就越大。
考虑另一个问题,对于某个事件,有n种可能性,每一种可能性都有一个概率p(xi)
这样就可以计算出某一种可能性的信息量。举一个例子,假设你开门,插入钥匙,会有三种可能性,下表列出了每一种可能的概率及其对应的信息量 。
PS:之后没有特殊说明的对数都是自然对数,以e为底的。ln0.6=-0.51
序号 | 事件 | 概率P | 信息量I |
A | 钥匙对的门开了 | 0.6 | |
B | 钥匙错的门没开 | 0.3 | |
C | 钥匙断在里边了 | 0.2 |
我们由上边已经知道了信息量的定义,而熵用来表示所有信息量的期望(期望就是试验中每次可能结果的概率乘以其结果的总和),所以此处的熵就是某一事件的信息量乘以该事件信息量概率的总和,即(信息量的熵为):
其中n代表所有的n种可能性,所以上面的问题结果就是 :
=
=0.826
然而有一类比较特殊的问题,比如投掷硬币只有两种可能,字朝上或花朝上。买彩票只有两种可能,中奖或不中奖。我们称之为0-1分布问题(二项分布的特例),对于这类问题,熵的计算方法可以简化为如下算式:
信息论之父克劳德·香农给出的信息熵的三个性质:
- 单调性,发生概率越高的事件,其携带的信息量越低;
- 非负性,信息熵可以看作为一种广度量,非负性是一种合理的必然;
- 累加性,即多随机事件同时发生存在的总不确定性的量度是可以表示为各事件不确定性的量度的和,这也是广度量的一种体现。
(3)相对熵(KL散度)
相对熵又称KL散度,如果我们对于同一个随机变量 x 有两个单独的概率分布 P(x) 和 Q(x),我们可以使用 KL 散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异。
KL散度的计算公式:
其中n为事件的所有可能性。的值越小,表示P分布和Q分布越接近。
在机器学习中,常常使用P(x)来表示样本的真实分布,Q(x)来表示模型所预测的分布,比如在一个三分类任务中(例如,人车道路分类器),x1,x2,x3分别代表人,车,道路,例如一张人的图片真实分布P(X)=[1,0,0],预测分布Q(X)=[0.7,0.2,0.1],(直观的理解就是如果用P来描述样本,那么就非常完美。而用Q来描述样本,虽然可以大致描述,但是不是那么的完美,信息量不足,需要额外的一些“信息增量”才能达到和P一样完美的描述。如果我们的Q通过反复训练,也能完美的描述样本,那么就不再需要额外的“信息增量”,Q等价于P。即如果用P来描述目标问题,而不是用Q来描述目标问题,得到的信息增量。(同时我们可以反复的训练Q来使Q的分布逼近于P) )计算KL散度:
(4)交叉熵
首先将上述公式拆开我们可以得到:
前者H(p(x))表示信息熵,后者即为交叉熵,KL散度 = 交叉熵 - 信息熵
交叉熵公式表示为:
机器学习中使用的交叉熵(cross entropy)透彻分析相关推荐
- 平均符号熵的计算公式_交叉熵(Cross Entropy)从原理到代码解读
交叉熵(Cross Entropy)是Shannon(香浓)信息论中的一个概念,在深度学习领域中解决分类问题时常用它作为损失函数. 原理部分:要想搞懂交叉熵需要先清楚一些概念,顺序如下:==1.自信息 ...
- 机器学习中交叉熵cross entropy是什么,怎么计算?
项目背景:人体动作识别(分类),CNN或者RNN网络,softmax分类输出,输出为one-hot型标签. loss可以理解为预测输出pred与实际输出Y之间的差距,其中pred和Y均为one-hot ...
- 交叉熵(cross entropy)概念整理
网上写得实在是太乱,整理下: 交叉熵函数: H(p,q)=Ep[−logq]=−∑x∈χp(x)logq(x)①H(p,q)=E_p[-log\ q]=-\sum_{x\in \chi}p(x)log ...
- 【机器学习】 - 激活函数与交叉熵Sigmoid, Softmax, binary_crossentropy, categorican_crossentropy区别
Content: 为什么需要激活函数: 一个神经元在做什么: 激活函数 Sigmoid Softmax 4. 交叉熵损失函数 Binary cross-entropy Categorican cros ...
- 深度学习中的信息论——交叉熵
信息量 可以说就信息量是在将信息量化.首先信息的相对多少是有切实体会的,有的人一句话能包含很多信息,有的人说了等于没说.我们还可以直观地感觉到信息的多少和概率是有关的,概率大的信息也相对低一些.为了量 ...
- 相对熵与交叉熵_详解机器学习中的熵、条件熵、相对熵、交叉熵
目录 信息熵 条件熵 相对熵 交叉熵 总结 一 信息熵 (information entropy) 熵 (entropy) 这一词最初来源于热力学.1948年,克劳德·爱尔伍德·香农将热力学中的熵引 ...
- 解释机器学习中的熵、联合熵、条件熵、相对熵和交叉熵
原文地址:https://www.cnblogs.com/kyrieng/p/8694705.html 1.信息熵 (information entropy) 熵 (entropy) 这一词最初来源于 ...
- 详解机器学习中的熵、条件熵、相对熵、交叉熵
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 目录 信息熵 条件熵 相对熵 交叉熵 总结 一 信息熵 (info ...
- 一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉
关于交叉熵在loss函数中使用的理解 交叉熵(cross entropy)是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距.以前做一些分类问题的时候,没有过多的注意,直接调用现成的库,用起 ...
最新文章
- 权威解释IDEA的“Include in project build”打钩或者不打勾有啥区别?
- Java十大bug之——包冲突
- Spring-beans架构设计原理
- ubuntu16.04下编译安装OpenCV
- test6 3-21 2021省选模拟赛six
- chromedriver@2.41.0 install: `node install.js`安装失败解决;npm安装报错
- Coursera Machine Leaning 课程总结
- 关于HTML静态页面(含自动分页)生成的可行性方案
- Convert.ToString和ToString的区别
- Linux下安装与使用本地的perl模块
- LBP算法 人脸识别特征提取
- 中考计算机表格操作题,【信息技术中考专区】Excel操作题专练(三)
- 无法确认设备和计算机之间的连接,如何解决“爱思助手”无法识别设备或连接超时等故障?...
- 从0开始的appium+Android+python自动抢红包世界生活
- C++跨平台开源库 之三
- html5 数据库 视图,创建视图的sql语句是什么
- 惠普战66键盘win10亮度调节快捷键失灵的解决办法
- 设计模式——Spring注解编程模型
- PowerDesigner 15及破解补丁下载
- 初中生怎样学习编程语言?
热门文章
- 2021年大数据Spark(二十六):SparkSQL数据处理分析
- MySql数据库Update批量更新与批量更新多条记录的不同值实现方法
- 论防止爆T的重要性:N相关孪生素数
- java程序语句是_Java-语言编程
- java jdk 环境变量配置(window 10 系统)
- android.view.InflateException: Binary XML file line #8: Binary XML file line #8: Error inflating cl
- android 字体上添加横线,字体下面添加下划线
- Cocos2d-x3.0 TestCPP文件夹笔记
- 【高精度】被限制的加法
- GDOI2018记录