[机器学习]理解熵,交叉熵和交叉熵的应用
一 信息量
信息论当中的熵指的是信息量的混乱程度,也可以理解成信息量的大小。
举个简单的例子,以下两个句子,哪一个句子的信息量更大呢?
- 我今天没中彩票
- 我今天中彩票了
从文本上来看,这两句话的字数一致,描述的事件也基本一致,但是显然第二句话的信息量要比第一句大得多,原因也很简单,因为中彩票的概率要比不中彩票低得多。一个低概率的结果与一个高概率的结果相比,低概率的结果带来的信息量更大。
我们用对数函数来量化一个事件的信息量:
因为一个事件发生的概率取值范围在0到1之间,所以log(p(X))的范围是负无穷到0,我们加一个负号将它变成正值。画成函数大概是下面这个样子:
二 信息熵
现在我知道一个事件产生某个结果的自信息,我想知道这个事件平均带来多少自信息。对自信息s进行加权平均是很直观的。现在的问题是选择什么权重?因为我知道每个结果的概率,所以用概率作为权重是有意义的,因为这是每个结果应该发生的概率
我们上面的公式定义的是信息量,但是这里有一个问题,我们定义的只是事件X的一种结果的信息量。对于一个事件来说,它可能的结果可能不止一种。我们希望定义整个事件的信息量,其实也很好办,我们算下整个事件信息量的期望即可,这个期望就是信息熵。
期望的公式我们应该都还记得:
套入信息量的公式可以得到信息熵H(x):
对于某个事件,有n种可能性,每一种可能性都有一个概率p(xi) ,这样就可以计算出某一种可能性的信息量。举一个例子,假设你拿出了你的电脑,按下开关,会有三种可能性,下表列出了每一种可能的概率及其对应的信息量。
所以上面的问题结果就是 :
三 交叉熵
现在,如果每个结果的实际概率为 pi 却有人将概率估计为 qi怎么办。在这种情况下,每个事件都将以pi的概率发生,但是公式里的自信息就要改成qi(因为人们以为结果的概率是qi)。现在,在这种情况下,加权平均自信息就变为了交叉熵c,它可以写成:
交叉熵总是大于熵,并且仅在以下情况下才与熵相同 pi = qi,你可以观看 https://www.desmos.com/calculator/zytm2sf56e 的插图来帮助理解
交叉熵损失
紫色线代表蓝色曲线下的面积,估计概率分布(橙色线),实际概率分布(红色线)
在上面我提到的图中,你会注意到,随着估计的概率分布偏离实际/期望的概率分布,交叉熵增加,反之亦然。因此,我们可以说,最小化交叉熵将使我们更接近实际/期望的分布,这就是我们想要的。这就是为什么我们尝试降低交叉熵,以使我们的预测概率分布最终接近实际分布的原因。因此,我们得到交叉熵损失的公式为:
在只有两个类的二分类问题的情况下,我们将其命名为二分类交叉熵损失,以上公式变为:
从期望角度上理解来说,信息熵计算的是log(p)在p上的期望,交叉熵则是log(q)在p上的期望;换句话说,信息熵为事件的信息量关于其事件发生的概率分布的期望值,那么交叉熵可以认为是事件的信息量关于真实概率分布的期望值
四 交叉熵的应用
1.为什么要用交叉熵做loss函数?
在线性回归问题中,常常使用MSE(Mean Squared Error)作为loss函数,比如:
这里的m表示m个样本的,loss为m个样本的loss均值。
MSE在线性回归问题中比较好用,那么在逻辑分类问题中还是如此么?
2.交叉熵在单分类问题中的使用
这里的单类别是指,每一张图像样本只能有一个类别,比如只能是狗或只能是猫。
交叉熵在单分类问题上基本是标配的方法
上式为一张样本的loss计算方法,n代表着n种类别。
举例说明,比如有如下样本
对应一个batch的loss就是
m为当前batch的样本数
3.交叉熵在多分类问题中的使用
这里的多类别是指,每一张图像样本可以有多个类别,比如同时包含一只猫和一只狗
和单分类问题的标签不同,多分类的标签是n-hot。
有一张图,即有青蛙,又有老鼠,所以是一个多分类问题
值得注意的是,这里的Pred不再是通过softmax计算的了,这里采用的是sigmoid。将每一个节点的输出归一化到[0,1]之间。所有Pred值的和也不再为1。换句话说,就是每一个Label都是独立分布的,相互之间没有影响。所以交叉熵在这里是单独对每一个节点进行计算,每一个节点只有两种可能值,所以是一个二项分布。前面说过对于二项分布这种特殊的分布,熵的计算可以进行简化。
同样的,交叉熵的计算也可以简化,即
注意,上式只是针对一个节点的计算公式。这一点一定要和单分类loss区分开来。
例子中可以计算为:
单张样本的loss即为loss=loss猫+loss蛙+loss鼠
每一个batch的loss就是:
m为当前batch中的样本量,n为类别数。
单分类时,每张图片的损失是一个交叉熵,交叉熵针对的是所有类别(所有类别概率和是1)。 多分类时,每张图片的损失是N个交叉熵之和(N为类别数),交叉熵针对的是单个类别(单个类别概率和是1)。
[机器学习]理解熵,交叉熵和交叉熵的应用相关推荐
- 熵、相对熵、交叉熵等理解
** 信息量 ** 假设我们听到了两件事,分别如下: 事件A:巴西队进入了2018世界杯决赛圈. 事件B:中国队进入了2018世界杯决赛圈. 仅凭直觉来说,显而易见事件B的信息量比事件A的信息量要大. ...
- 【交叉熵损失函数】关于交叉熵损失函数的一些理解
目录 0. 前言 1.损失函数(Loss Function) 1.1 损失项 1.2 正则化项 2. 交叉熵损失函数 2.1 softmax 2.2 交叉熵 0. 前言 有段时间没写博客了,前段时间主 ...
- LESSON 10.110.210.3 SSE与二分类交叉熵损失函数二分类交叉熵损失函数的pytorch实现多分类交叉熵损失函数
在之前的课程中,我们已经完成了从0建立深层神经网络,并完成正向传播的全过程.本节课开始,我们将以分类深层神经网络为例,为大家展示神经网络的学习和训练过程.在介绍PyTorch的基本工具AutoGrad ...
- 平均符号熵的计算公式_交叉熵(Cross Entropy)从原理到代码解读
交叉熵(Cross Entropy)是Shannon(香浓)信息论中的一个概念,在深度学习领域中解决分类问题时常用它作为损失函数. 原理部分:要想搞懂交叉熵需要先清楚一些概念,顺序如下:==1.自信息 ...
- 熵、联和熵与条件熵、交叉熵与相对熵是什么呢?来这里有详细解读!
熵是一个很常见的名词,在物理上有重要的评估意义,自然语言处理的预备知识中,熵作为信息论的基本和重点知识,在这里我来记录一下学习的总结,并以此与大家分享. 信息论基本知识 1.熵 2.联和熵与条件熵 3 ...
- 信息论复习笔记(1):信息熵、条件熵,联合熵,互信息、交叉熵,相对熵
文章目录 1.1 信息和信息的测量 1.1.1 什么是信息 1.1.1 信息怎么表示 1.2 信息熵 1.3 条件熵和联合熵 The Chain Rule (Relationship between ...
- 熵、联合熵、相对熵、交叉熵、JS散度、互信息、条件熵
封面镇楼 目录 一.熵 二.联合熵 三.相对熵(KL散度) 四.交叉熵 五.JS散度 六.互信息 七.条件熵 八.总结 一.熵 对于离散型随机变量,当它服从均匀分布时,熵有极大值.取某一个值的概率为1 ...
- 熵、条件熵、联合熵、互信息的理解
熵 在信息论中,熵(entropy)是表示随机变量不确定性的度量,如果一个事件是必然发生的,那么他的不确定度为0,不包含信息.假设 X X X是一个取有限个值的离散随机变量,其概率分布为: P ( X ...
- kl距离 java_信息量、熵、最大熵、联合熵、条件熵、相对熵、互信息。
一直就对机器学习中各种XX熵的概念比较模糊,现在总结一下自己的学习心得. 信息量 先说一下信息量的概念,其实熵就是信息量的集合. 摘抄个例子: 英文有26个字母,假设每个字母出现的概率是一样的,每个字 ...
- 【熵与特征提取】从近似熵,到样本熵,到模糊熵,再到排列熵,究竟实现了什么?(第一篇)——近似熵及其MATLAB实现
在特征提取领域,近似熵.样本熵.排列熵和模糊熵是比较经常出现的概念. 首先一句话总结一下:这几个熵值都是用来表征信号序列复杂程度的无量纲指标,熵值越大代表信号复杂度越大.信号复杂程度的表征在机械设备状 ...
最新文章
- centos7上开启单用户模式
- Jon Person教你如何用.NET/.NETCF写GPS应用程序。
- 寄存器分配图着色_富士苹果促进着色技术八大要点!是时候看看了!
- #define | enum(enumerator)
- leetcode 81. 搜索旋转排序数组 II(二分查找)
- 程序员如何学习更好的知识_如何保持学习并成为更好的程序员
- Mac安装metasploit-framework【亲测有用】
- java 中反射的使用_java中反射的基本使用
- python如何导入hotp库_Google Authenticator在Python中的实现
- hashmap扩容_原创 | 我说我了解集合类,面试官竟然问我为啥HashMap的负载因子不设置成1!?
- EXCEL制作行政区地图,小O地图EXCEL版发布新版本
- STM32基础8--通用定时器(PWM控制LED)
- win10如何扩大c盘空间【系统天地】
- Unity3D学习——使用PUN写一个聊天功能
- UNIX网络编程---守护进程和inetd超级服务器(十三)
- MOOC 哈工大苏小红C语言 第七周练兵区——编程题
- SKlearn中的函数学习总结(持续更新)
- 最简单DIY基于ESP8266的智能彩灯②(在网页用按键和滑动条控制RGB灯)
- 洛谷 P2350 [HAOI2012]外星人(素因子分解,欧拉函数)
- IDEA全局搜索快捷键(ctrl+shift+F)失效修复
热门文章
- 腾讯 Omi 团队发布 mps - 原生小程序插上 JSX 、Less 和 Cloud 的翅膀
- Jmeter中使用循环如何保证数据不重复
- CoreOS上的Fleet,第二部分
- 2.平凡之路-初识MyBatis
- LoRa创始成员“叛逃” NB-IoT要一统物联网?
- Oracle工具之--ASM与文件系统及跨网络传输文件
- ListBox实现拖拽排序功能
- Redhat安装tftp的方法
- Video : 将使用AD认证的SharePoint网站配置为表单方式登录
- taskspawn函数 linux,vxworks的启动任务taskSpawn