【AIGC】信息量、熵、交叉熵、KL散度、二值交叉熵(Binary Cross-Entropy,BCE)

本文详细的推导了二值交叉熵(BCE)和二值交叉熵损失函数(BCE Loss)之间的关系。

一、 理论基础

A : = f ( ⋅ ) A:=f(\cdot) A:=f() 表示 A A A定义为 f ( ⋅ ) f(\cdot) f(),这是人们为了某些目的而将 A A A定义成 f ( ⋅ ) f(\cdot) f()的,有意义的定义往往能揭示一些规律。

1. 信息量

对于事件 x x x,假设它的信息量表示为 I ( x ) I(x) I(x),它发生的概率表示为 p ( x ) p(x) p(x)

基于我们的常识可以知道:

  1. 一个事件 x i x_i xi发生的概率越小,它包含的信息量 I ( x i ) I(x_i) I(xi)应该越大 = > I =>I =>I应该和 p p p成反比 = > => => I I I 1 p \frac{1}{p} p1成正比
  2. 两个事件 x i , x j x_i, x_j xi,xj的信息量 I ( x i ) + I ( x j ) I(x_i)+I(x_j) I(xi)+I(xj)相加,应该和这两个事件同时发生有关(注意:两个事件同时发生的概率等于两个事件的概率之积 p ( x i ) p ( x j ) p(x_i)p(x_j) p(xi)p(xj) = > I =>I =>I应该能把加法转换为乘法 = > => =>可用 l o g log log实现

基于上面两个性质,可以有 I ( x ) : = l o g 1 p ( x ) I(x):=log\frac{1}{p(x)} I(x):=logp(x)1 ,log的底取任何>1的值其实都没关系,但为了让它更有意义,通常取 2 2 2为底,因为这样,就能使得抛硬币正面朝上这样只有 1 2 \frac{1}{2} 21 概率的事件的信息量刚好为1,并且可以赋予其"比特"的单位(注意,单位也是定义的,人们会把一些有意义的事情给上单位)。所以说,抛硬币正面朝上的信息量为1比特。

所以,最终定义信息量为:
I ( x ) : = l o g 2 1 p ( x ) = − l o g 2 p ( x ) I(x):=log_2\frac{1}{p(x)}=-log_2p(x) I(x):=log2p(x)1=log2p(x)

2. 熵(也叫香农熵)

熵这个概念是针对一个事件集合 X X X而定义的(即有一系列事件 x ∈ X x \in X xX),

熵定义为这些事件携带信息量的平均值(也叫期望)。所以有:
H ( p ( x ) ) : = ∑ x ∈ X p ( x ) I ( x ) = − ∑ x ∈ X p ( x ) l o g 2 p ( x ) H(p(x)):=\sum_{x\in X}p(x)I(x)=-\sum_{x\in X}p(x)log_2p(x) H(p(x)):=xXp(x)I(x)=xXp(x)log2p(x)
或简写版:
H ( p ) : = ∑ p x I x = − ∑ p x l o g 2 p x H(p):=\sum p_xI_x=-\sum p_xlog_2p_x H(p):=pxIx=pxlog2px
这样,熵越大,表示这个系统包含的信息越多,系统越不稳定。

熵越小,表示这个系统包含的信息越少,系统越稳定。

在这里插入图片描述
如上图所示,中国和法国比赛悬念比较小,所以信息量少,结果比较稳定。(虽然中国赢了有更大的信息量,但发生的概率太小,整体基本上是法国赢)

而德国对荷兰的比赛则55开,比较不稳定,谁最终夺冠是个信息量很大的事。

所以德国VS荷兰这个系统的熵>法国VS中国的熵

3. 交叉熵

对于事件 x x x
假设它发生的真实概率(ground truth probability)表示为 p ( x ) p(x) p(x)
假设它的观测概率为 q ( x ) q(x) q(x)(即通过多次试验得到的概率或者通过算法预测出来的概率)

则交叉熵定义为:
H ( p ( x ) , q ( x ) ) : = ∑ x ∈ X p ( x ) I q ( x ) = − ∑ x ∈ X p ( x ) l o g 2 q ( x ) H(p(x),q(x)):=\sum_{x\in X}p(x)I^q(x)=-\sum_{x\in X}p(x)log_2q(x) H(p(x),q(x)):=xXp(x)Iq(x)=xXp(x)log2q(x)
或简写版:
H ( p , q ) : = ∑ p x I x q = − ∑ p x l o g 2 q x H(p,q):=\sum p_xI^q_x=-\sum p_xlog_2q_x H(p,q):=pxIxq=pxlog2qx

I q ( x ) I^q(x) Iq(x)表示以 q q q为概率的信息量。

举个例子:
假设抛硬币正面为 h h h,反面为 t t t。我们知道真实概率 p ( h ) = p ( t ) = 0.5 p(h)=p(t)=0.5 p(h)=p(t)=0.5
现在有两枚硬币,由于粘了不同程度的泥土导致抛出的概率不一样。通过实验,得到:
在这里插入图片描述
这里,我们就可以看出一点点门道了,即观测概率 q q q越接近真实概率 p p p。交叉熵相对越小。而这个结论是可以被证明的(见后面的KL散度)。
简化版

4. KL散度(或相对熵)

KL散度定义为交叉熵和香农熵的差。
D ( p ( x ) ∣ ∣ q ( x ) ) = H ( p ( x ) , q ( x ) ) − H ( p ( x ) ) = ∑ x ∈ X p ( x ) I q ( x ) − ∑ x ∈ X p ( x ) I ( x ) = ∑ x ∈ X p ( x ) l o g 2 1 q ( x ) − ∑ x ∈ X p ( x ) l o g 2 1 p ( x ) = ∑ x ∈ X p ( x ) l o g 2 p ( x ) q ( x ) \begin{aligned} D(p(x)||q(x))=H(p(x),q(x))-H(p(x))&=\sum_{x\in X}p(x)I^q(x)-\sum_{x\in X}p(x)I(x)\\ &=\sum_{x\in X}p(x)log_2\frac{1}{q(x)}-\sum_{x\in X}p(x)log_2\frac{1}{p(x)}\\ &=\sum_{x\in X}p(x)log_2\frac{p(x)}{q(x)} \end{aligned} D(p(x)∣∣q(x))=H(p(x),q(x))H(p(x))=xXp(x)Iq(x)xXp(x)I(x)=xXp(x)log2q(x)1xXp(x)log2p(x)1=xXp(x)log2q(x)p(x)
简写版:
D ( p ∣ ∣ q ) = H ( p , q ) − H ( p ) = ∑ p x I x q − ∑ p x I x = ∑ p x l o g 2 1 q x − ∑ p x l o g 2 1 p x = ∑ p x l o g 2 p x q x \begin{aligned} D(p||q)=H(p,q)-H(p)&=\sum p_xI^q_x-\sum p_xI_x\\ &=\sum p_xlog_2\frac{1}{q_x}-\sum p_xlog_2\frac{1}{p_x}\\ &=\sum p_xlog_2\frac{p_x}{q_x} \end{aligned} D(p∣∣q)=H(p,q)H(p)=pxIxqpxIx=pxlog2qx1pxlog2px1=pxlog2qxpx

性质1:

D ( p ∣ ∣ q ) ≥ 0 D(p||q)\ge 0 D(p∣∣q)0 当且仅当 q = p q=p q=p时等号成立。
证明:吉布斯不等式

性质2:

D ( p ∣ ∣ q ) ≠ D ( q ∣ ∣ p ) D(p||q)\neq D(q||p) D(p∣∣q)=D(q∣∣p)

性质3:

由于 H ( p ) H(p) H(p)是个常量,q是一个变量,通常可表示为函数 f ( θ ) f(\theta) f(θ),所以通过选取不同 q θ q_\theta qθ(简便起见,这么写,不代表 θ \theta θ是事件)最小化 D ( p ∣ ∣ q θ ) D(p||q_\theta) D(p∣∣qθ)等价于最小化 H ( p , q θ ) H(p,q_\theta) H(p,qθ),即:
▽ θ D ( p ∣ ∣ q θ ) = ▽ θ H ( p , q θ ) − ▽ θ H ( p ) = ▽ θ H ( p , q θ ) \triangledown_\theta D(p||q_\theta)=\triangledown_\theta H(p,q_\theta)-\triangledown_\theta H(p)=\triangledown_\theta H(p,q_\theta) θD(p∣∣qθ)=θH(p,qθ)θH(p)=θH(p,qθ)

关于事件空间的误解

(注意,很多教程没有讲清楚事件空间和采样试验(见下一节) 的区别,这里拉出来强调下。)

事件空间是指 X X X,即事件 x x x的可取值的集合。

由于观测值样本空间只能是真实值样本空间的子集,所以不存在有些教程里说的要确定取值的问题。比如下面:

当观测值和真实值一样时:
在这里插入图片描述
如果观测数更多:
在这里插入图片描述
如果观测数更少:
在这里插入图片描述

总是取事件空间更大的值。(注意上面的图在事件空间体现这块是有问题的,横轴表示事件空间。不可能出现观测值在真实值中不存在的情况,比如第一幅图,真实值只有1,它却观测到了0.4或者0.8;最后一幅图,观测到的是1,真实值从图上看又没有1。)

实际上根据公式 x ∈ X x\in X xX这里的 X X X指的是真实事件空间。对于 p p p不存在的情况 i i i p i p_i pi取0,对于 q q q不存在的情况 j j j q j q_j qj取0代入公式即可,不必要关注所谓的取大取小的问题。

5. 二值交叉熵(Binary Cross-Entropy,BCE)和BCE损失函数

二值交叉熵是交叉熵的一种特殊情况,即真实样本空间只有两个取值,一般来说是 [ 0 , 1 ] [0,1] [0,1]。有 p ( 0 ) + p ( 1 ) = 1 , q ( 0 ) + q ( 1 ) = 1 p(0)+p(1)=1,q(0)+q(1)=1 p(0)+p(1)=1,q(0)+q(1)=1
H ( p ( x ) , q ( x ) ) = ∑ x ∈ [ 0 , 1 ] p ( x ) I q ( x ) = p ( 0 ) I q ( 0 ) + p ( 1 ) I q ( 1 ) = − ( p ( 0 ) l o g 2 q ( 0 ) + ( 1 − p ( 0 ) ) l o g x ( 1 − q ( 0 ) ) ) 或 = − ( ( 1 − p ( 1 ) ) l o g x ( 1 − q ( 1 ) ) + p ( 1 ) l o g 2 q ( 1 ) ) = − ( p ( x ) l o g 2 q ( x ) + ( 1 − p ( x ) ) l o g x ( 1 − q ( x ) ) ) \begin{aligned} H(p(x),q(x))=\sum_{x\in [0,1]}p(x)I^q(x)&=p(0)I^q(0)+p(1)I^q(1)\\ &=-(p(0)log_2q(0)+(1-p(0))log_x(1-q(0)))或=-((1-p(1))log_x(1-q(1))+p(1)log_2q(1))\\ &=-(p(x)log_2q(x)+(1-p(x))log_x(1-q(x))) \end{aligned} H(p(x),q(x))=x[0,1]p(x)Iq(x)=p(0)Iq(0)+p(1)Iq(1)=(p(0)log2q(0)+(1p(0))logx(1q(0)))=((1p(1))logx(1q(1))+p(1)log2q(1))=(p(x)log2q(x)+(1p(x))logx(1q(x)))
其中x可取0或者1。

或简写版:
H ( p , q ) = − ( p x l o g 2 q x + ( 1 − p x ) l o g 2 ( 1 − q x ) ) H(p,q)=-(p_xlog_2q_x+(1-p_x)log_2(1-q_x)) H(p,q)=(pxlog2qx+(1px)log2(1qx))
其中 x x x可取 0 0 0 1 1 1

有两点要注意:

  1. H中的累加符号没有了
  2. 也就是说,我们可以只关注一种结果,0或者1。

为什么我们在其他文献或者教材里看到的BCE是长下面这样呢?
1 N ∑ i = 0 N ( y i l o g 2 y ^ i + ( 1 − y i ) l o g 2 ( 1 − y ^ i ) ) \frac{1}{N}\sum_{i=0}^N(y_ilog_2\hat{y}_i+(1-y_i)log_2(1-\hat{y}_i)) N1i=0N(yilog2y^i+(1yi)log2(1y^i))
其中: N N N为采样数, y i y_i yi为真实标签(0或1), y ^ i \hat{y}_i y^i为预测概率。

事实上,严格的来说,上面的公式并不是交叉熵,而是基于交叉熵构造的BCE损失函数 q ( x ) q(x) q(x)这个观测值或者预测值是由未知变量的函数决定的(比如sigmoid函数 q ( x ) ( θ ) = 1 1 + e − θ x ^ q(x)(\theta)=\frac{1}{1+e^{-\theta \hat{x}}} q(x)(θ)=1+eθx^1),假设做了N次实验,那么损失函数定义为:
L o s s ( θ ) : = 1 N ∑ i = 0 N H ( p i ( x ) , q i ( x ) ) = 1 N ∑ i = 0 N H ( p i ( x ) , q i ( x ) ( θ ) ) Loss(\theta):=\frac{1}{N}\sum_{i=0}^NH(p_i(x),q_i(x))=\frac{1}{N}\sum_{i=0}^NH(p_i(x),q_i(x)(\theta)) Loss(θ):=N1i=0NH(pi(x),qi(x))=N1i=0NH(pi(x),qi(x)(θ))
代入BCE公式得:
L o s s ( θ ) = − 1 N ∑ i = 0 N ( p i ( x ) l o g 2 q i ( x ) ( θ ) + ( 1 − p i ( x ) ) l o g x ( 1 − q i ( x ) ( θ ) ) ) Loss(\theta)=-\frac{1}{N}\sum_{i=0}^N(p_i(x)log_2q_i(x)(\theta)+(1-p_i(x))log_x(1-q_i(x)(\theta))) Loss(θ)=N1i=0N(pi(x)log2qi(x)(θ)+(1pi(x))logx(1qi(x)(θ)))

注意这里的 i i i代表的事每次实验。举个例子,假设下面有N张照片,我们预测它是不是猫。即x=1表示是猫,x=0表示不是猫。那么i就表示第i张照片。注意每个 x i x_i xi都有两个取值。

在这里插入图片描述

由第4节的性质3可知,最小化上面的损失函数,其实就是最小化每一个KL散度 ▽ θ D ( p i ∣ ∣ q i ( θ ) ) \triangledown_\theta D(p_i||q_i(\theta)) θD(pi∣∣qi(θ))
即设计这么个损失函数就是为了找最好的 θ \theta θ使得 q i ( θ ) q_i(\theta) qi(θ)在每个测试点上都能拟合真实的 p i p_i pi

现在只剩下疑问:原公式中只有概率,标签怎么出现到公式里的?

首先,我们要明确这里的真实事件空间是什么。

如果我们把事件定义成"a=它是1”,“b=它是0”,
类比“h=抛硬币正面朝上”和"t=抛硬币反面朝上", p ( h ) = p ( t ) = 0.5 p(h)=p(t)=0.5 p(h)=p(t)=0.5
那么对于一张照片,它是不是猫,真实概率要么是100%要么是0%。

所以 p ( a ) = 100 % = 1 p(a)=100\%=1 p(a)=100%=1或者 p ( a ) = 0 % = 0 p(a)=0\%=0 p(a)=0%=0刚好和标签0,1对应上

那么,
H ( p ( x ) , q ( x ) ) = − ( p ( x ) l o g 2 q ( x ) + ( 1 − p ( x ) ) l o g x ( 1 − q ( x ) ) ) = − ( x l o g 2 q ( x ) + ( 1 − x ) l o g x ( 1 − q ( x ) ) ) \begin{aligned} H(p(x),q(x))&=-(p(x)log_2q(x)+(1-p(x))log_x(1-q(x)))\\ &=-(xlog_2q(x)+(1-x)log_x(1-q(x))) \end{aligned} H(p(x),q(x))=(p(x)log2q(x)+(1p(x))logx(1q(x)))=(xlog2q(x)+(1x)logx(1q(x)))
x x x 1 1 1 0 0 0,即对应图片是不是猫的真实标签。

这样,标签的值就写进公式了。

即:
L o s s ( θ ) = − 1 N ∑ i = 0 N ( p i ( x ) l o g 2 q i ( x ) ( θ ) + ( 1 − p i ( x ) ) l o g x ( 1 − q i ( x ) ( θ ) ) ) = − 1 N ∑ i = 0 N ( x i l o g 2 q i ( x ) ( θ ) + ( 1 − x i ) l o g 2 ( 1 − q i ( x ) ( θ ) ) ) \begin{aligned} Loss(\theta)&=-\frac{1}{N}\sum_{i=0}^N(p_i(x)log_2q_i(x)(\theta)+(1-p_i(x))log_x(1-q_i(x)(\theta)))\\ &=-\frac{1}{N}\sum_{i=0}^N(x_ilog_2q_i(x)(\theta)+(1-x_i)log_2(1-q_i(x)(\theta))) \end{aligned} Loss(θ)=N1i=0N(pi(x)log2qi(x)(θ)+(1pi(x))logx(1qi(x)(θ)))=N1i=0N(xilog2qi(x)(θ)+(1xi)log2(1qi(x)(θ)))

或简写版
L o s s ( θ ) = = − 1 N ∑ i = 0 N ( x i l o g 2 q x i ( θ ) + ( 1 − x i ) l o g 2 ( 1 − q x i ( θ ) ) ) \begin{aligned} Loss(\theta)&= &=-\frac{1}{N}\sum_{i=0}^N(x_ilog_2q_{x_i}(\theta)+(1-x_i)log_2(1-q_{x_i}(\theta))) \end{aligned} Loss(θ)==N1i=0N(xilog2qxi(θ)+(1xi)log2(1qxi(θ)))

参考

可视化理解Binary Cross-Entropy
【10分钟】了解香农熵,交叉熵和KL散度
打包理解“信息量”、“比特”、“熵”、“KL散度”
Understanding binary cross-entropy / log loss: a visual explanation
维基百科-Cross Entropy
个视频彻底搞懂交叉熵、信息熵、相对熵、KL散度、交叉熵损失、交叉熵

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/212386.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爱创科技总裁谢朝晖荣获“推动医药健康产业高质量发展人物”

中国医药市场规模已经成为全球第二大医药市场,仅次于美国。近年来,随着中国经济的持续增长和人民生活水平的提高,医药市场需求不断扩大。政府对医疗卫生事业的投入也在不断加大,为医药行业的发展创造了良好的政策环境。为推动医药…

从入门到精通:JMeter接口测试全流程详解!

利用Jmeter做接口测试怎么做呢?过程真的是超级简单。 明白了原理以后,把零碎的知识点填充进去就可以了。所以在学习的过程中,不管学什么,我一直都强调的是要循序渐进,和明白原理和逻辑。这篇文章就来介绍一下如何利用…

华为昇腾开发板共享Windows网络上网的方法

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 具体参考文章:linux(内网)通过window 上网。具体是两步:一是在windows上设置internet连接共享。二是打开Atlas 200I D…

YOLO目标检测——垃圾检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用:智能化垃圾分类系统、垃圾回收和处理领域的优化管理等方面数据集说明:垃圾分类检测数据集,真实场景的高质量图片数据,数据场景丰富,含报纸、蛋壳、矿泉水瓶、电池、拉链顶罐、塑料餐盒、纸质药盒、香蕉皮…

Confluence Server Webwork 预身份验证 OGNL 注入 (CVE-2021-26084)

漏洞描述 Confluence 是由澳大利亚软件公司 Atlassian 开发的基于 Web 的企业 wiki。 存在一个 OGNL 注入漏洞,允许未经身份验证的攻击者在 Confluence Server 或 Data Center 实例上执行任意代码。 漏洞环境及利用 搭建docker环境 Confluence搭建见前文 Atlas…

穿山甲SDK 集成·android接入广告·app流量变现

接入穿山甲SDK的app 数独训练APP 广告接入示例: Android 个人开发者如何接入广告SDK,实现app流量变现 接入穿山甲SDK app示例: android 数独小游戏 经典数独休闲益智 随着移动互联网的快速发展,广告成为了许多应用开发者获取收益的主要方…

OpenStack云计算平台-Dashboard(图形化)

目录 一、安装和配置 1、安全并配置组件 2、完成安装 ​二、验证操作 一、安装和配置 1、安全并配置组件 安装软件包: yum install openstack-dashboard 编辑文件 vim /etc/openstack-dashboard/local_settings vim /etc/httpd/conf.d/openstack-dashboard.…

【目标检测】保姆级别教程从零开始实现基于Yolov8的一次性筷子计数

前言 一,环境配置 一,虚拟环境创建 二,安装资源包 前言 最近事情比较少,无意间刷到群聊里分享的基于百度飞浆平台的一次性筷子检测,感觉很有意思,恰巧自己最近在学习Yolov8,于是看看能不能复…

STM32F103C8T6第6天:adc、iic、spi、温湿度dht11在lcd1602显示

1. ADC介绍 ADC是什么? Analog-to-Digital Converter,指模拟/数字转换器 ADC的性能指标 量程:能测量的电压范围分辨率:ADC能辨别的最小模拟量,通常以输出二进制数的位数表示,比如:8、10、1…

【MISRA-C 2012】浓缩版解读

文章目录 1、前言2、简介2.1、如何看待MISRA-C 20122.2、准则(guidelines)里面的指示(Directive)和规则(Rule)2.3、准则(guidelines)的级别(Category) 3、若干重要的Directive和Rule3.1、指示(Directive)Dir 2.1(必要) 所有的源文件编译过程不得有编译错…

【医学图像处理】超详细!PET图像批量预处理

目录 一、单个PET图像预处理1、使用[MRIConvert](https://pan.baidu.com/s/1cn3kgeVRir8HvP6HHm0M0Q?pwd5rt5)处理DCM2、MRI和PET数据预处理过程1) 打开matlab命令行输入spm pet,打开SMP12,界面如下2) Realign,只需要…

每日一练 | 华为认证真题练习Day136

1、OSI参考模型从高层到低层分别是? A. 应用层、会话层、表示层、传输层、网络层、数据链路层、物理层 B. 应用层、传输层、网络层、数据链路层、物理层 C. 应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 D. 应用层、表示层、会话层、网络层、传…