什么是交叉熵啊?| 小白深度学习入门
大家在学习深度学习的过程中,都会碰到cross-entropy这个词,中文叫“交叉熵”,多么高大上的名词!
然而这个“熵”到底是干啥用的,实际上很多人包括我,在一开始都没好好琢磨过。
在面试算法工程师的过程中,经常会问道这样的问题:“什么是熵?”
信息熵?
热力学那个先不说,这里准确的说是“信息熵”。而要知道什么是信息熵,我们得知道什么是信息。
网上的“太阳从东边升起来”的例子大家应该都看过了。我们说,这是一句毫无信息量的话,因为他没有消除任何不确定性。
前女友对你说“我结婚了”,这句话包含了信息量,去除了不确定性。但如果前女友和你说“我是女的”,这句话就毫无信息量,这就是废话。
信息熵,泛泛的说是用来衡量一段信息的信息量大小的。
这个定义我之前也不理解,直到我看见一个说法,突然茅塞顿开:信息熵是用来衡量表达一个随机变量需要的最少的比特位数。
在信息论的世界里,我们追求的是用最经济实惠的方法表达信息(“好话不说二遍”嘛)。
对一个不确定的信息(随机变量)来说,怎么最经济实惠的表达它呢,即如何用最少的比特位表达?
你肯定是看这个随机变量的各个可能的值,概率最大的值,你就用最短的位数去表达,概率越小,你就用越长的位。
而表达位数的期望值,即表达这个随机变量用的比特位数的平均值,就是该随机变量的信息熵。
如果上文看着还是绕,我们做这样一个解释:
假设有两艘军舰在海上航行,它们相隔一定的距离,然后也非常落后没有其他通信手段,两艘军舰相约每隔一分钟就用闪探照灯的方法互相确认一下有没有在附近发现敌人,现在船长让你来具体设计这个方法,你怎么设计呢?
因为大多数时间海上是没敌人的,所以为了节省时间,为了不频繁闪灯被敌人发现,你肯定倾向于用最简单的方式来表示绝大部分时间的情况,比如说只闪一下,而等到真正敌人出现的时候,你再连续的闪烁。
舰娘之间、阿不是,军舰之间如何沟通?
明白了以上道理,信息熵的公式也不难推导出了:
其中x是随机变量,p是x的概率分布函数,logp(1/xi)是该概率下需要的比特位(为啥?香农定理,背就对了)。
从定义我们可以看得出来,对一个随机变量来说,如果它的信息熵越大,一般表示这个随机变量取值越多,概率分布越均匀,“混乱程度”就越高;如果信息熵越小则反之,就像刚才军舰探照灯的例子,因为很可能大部分时间这个随机变量都是一个值。
交叉熵?
终于到正题了,前边咱们费这么大劲说了信息熵。懂了信息熵,交叉熵就简单啦。
从上边的公式我们可以得到一个很简单的结论,就是一个随机变量的信息熵只取决于它的概率分布。
既然是概率分布,肯定就分真假,有真实分布(就是随机变量真正的分布),也有因为各种原因导致的非真实分布(比如样本太小啦,数数没数对,或者深度学习中网络没训练好的时候算出来的概率分布)。
那咱们怎么衡量非真实分布和真实分布的差别呢?这时候就轮到交叉熵的出场了:
这个公式是不是看着眼熟多了?这不就是深度学习里的loss function嘛!
其中p和q就是真实分布和非真实分布。如果随机变量的真实分布和非真实分布的交叉熵越小,那表明他们的分布越接近。
咦,这不正适合当深度学习的损失函数嘛!
实际上我们通过形式也很容易看出,大部分深度学习的损失函数就长这个样子,p就是y(就是1或者0),而q就是y帽(就是网络算出来的概率),换了个马甲而已。
好,关于交叉熵咱们聊到这里,下期再见。
“众智汇”愿景
尽职尽才,允公允能 —— 本社群不定期举行线上分享,组织群友分享知识、经验、资源,以达到让我们每个人的职业生涯得到最大程度的发展的目的。
欢迎扫面下列二维码关注“悦思悦读”公众微信号
什么是交叉熵啊?| 小白深度学习入门相关推荐
- 什么是生成对抗网络(GAN)| 小白深度学习入门
小白深度学习入门系列 1. 直观理解深度学习基本概念 2. 白话详解ROC和AUC 3. 什么是交叉熵 4. 神经网络的构成.训练和算法 5. 深度学习的兴起:从NN到DNN 6. 异军突起的激活函数 ...
- 什么是Transformer?| 小白深度学习入门
小白深度学习入门系列 1. 直观理解深度学习基本概念 2. 白话详解ROC和AUC 3. 什么是交叉熵 4. 神经网络的构成.训练和算法 5. 深度学习的兴起:从NN到DNN 6. 异军突起的激活函数 ...
- 白话详解ROCAUC | 小白深度学习入门
搞机器学习的人一定频繁的听到ROC,AUC或者AUC-ROC,但这个概念又不向准确率召回率那么直观容易理解,给我带来了小小的困扰,这里就系统的学习下这两个概念. ROC ROC即Receiver Op ...
- 深度学习入门,一文讲解神经网络的构成、训练和算法
小白深度学习入门系列 神经网络的构成.训练和算法 什么是神经网络 人工神经网络(Artificial Neural Network,ANN),简称神经网络(Neural Network,NN),是一种 ...
- 小白深度学习入坑指南
小白深度学习入坑指南 小白深度学习入坑指南 写博客的初衷适合的人群 理论篇 说明 数学 CV ML DL 优化 实践篇 linux python 深度学习框架 框架学习 硬件配置 软件环境配置 常见的 ...
- 深度学习入门-误差反向传播法(人工神经网络实现mnist数据集识别)
文章目录 误差反向传播法 5.1 链式法则与计算图 5.2 计算图代码实践 5.3激活函数层的实现 5.4 简单矩阵求导 5.5 Affine 层的实现 5.6 softmax-with-loss层计 ...
- 【AI参赛经验】深度学习入门指南:从零开始TinyMind汉字书法识别——by:Link
各位人工智能爱好者,大家好! 由TinyMind发起的#第一届汉字书法识别挑战赛#正在火热进行中,比赛才开始3周,已有数只黑马冲进榜单.目前TOP54全部为90分以上!可谓竞争激烈,高手如林.不是比赛 ...
- 深度学习入门笔记系列 ( 二 )——基于 tensorflow 的一些深度学习基础知识
本系列将分为 8 篇 .今天是第二篇 .主要讲讲 TensorFlow 框架的特点和此系列笔记中涉及到的入门概念 . 1.Tensor .Flow .Session .Graphs TensorFlo ...
- 深度学习入门笔记(六):误差反向传播算法
专栏--深度学习入门笔记 推荐文章 深度学习入门笔记(一):机器学习基础 深度学习入门笔记(二):神经网络基础 深度学习入门笔记(三):感知机 深度学习入门笔记(四):神经网络 深度学习入门笔记(五) ...
最新文章
- 二、SpringMVC的常用注解——1-@Controller
- Go语言基础之基本数据类型
- OpenCASCADE:函数机制的使用
- Linux 下的 AddressSanitizer
- 分治 —— 简单分治
- php报错致命错误203,Centos7 下安装PHP7 phpredis扩展报错解决办法 致命错误:ext/standard/php_smart_str.h...
- 如何保证http传输安全性
- Xception: Deep Learning with Depthwise Separable Convolutions
- redis实现分页排序
- linux Sprintf中文乱码,Linux下printf、fprintf、sprintf的区别
- 重学前端学习笔记(四十一)--CSS的颜色
- 单片机软件开发心得体会
- unity 接入谷歌广告
- 人艰不拆,一句话毁掉小清新!
- 软件Craft.io指导
- VPS常用网络测试工具
- LT2611UXC-LVDS转HDMI2.0转换芯片
- 被讨厌的勇气:人际关系论
- 【论文写作】如何画出好看的图表
- C++多态——静态多态与动态多态
热门文章
- 使用io流一行一行读取txt文件
- 【picoCTF2022】Web部分
- 【Paper】A Comparative Evaluation of Unsupervised Anomaly Detection Algorithms for Multivariate Data
- J2EE学习篇之--JQuery技术详解
- HDU3085 Nightmare Ⅱ
- 阿里云服务器能做什么呢?
- 微信小程序利用canvas画出根据文字自适应的边框
- 单目标应用:基于北方苍鹰优化算法NGO的概率神经网络PNN数据分类(提供MATLAB代码)
- ESP8266 RTOS SDK学习之 UDP
- 202106C语言二级真题