【机器学习之---数学】熵和交叉熵

every blog every motto: You can do more than you think.
https://blog.csdn.net/weixin_39190382?type=blog

0. 前言

熵和交叉熵

1. 熵

概率分布的熵可以被解释为与给定分布中的随机变量相关的不确定性或缺乏可预测性的度量。

我们还可以使用熵来定义数据源的信息内容。例如,假设我们观察到由分布p生成的符号序列 X n ∼ p X_n \sim p Xnp。如果p具有高熵,则很难预测每个观测值Xn的值。因此我们说数据集 D = ( X 1 , … , X n ) D = (X_1,…,X_n) D=(X1,,Xn)具有较高的信息量。相反,如果p是一个熵为0(最小值)的简并分布,那么每个Xn都是相同的,因此D不包含太多信息。

离散随机变量X的熵定义为,
H ( X ) ≜ − ∑ k = 1 K p ( X = k ) l o g 2 p ( X = k ) = − ∑ i = 1 n p ( x i ) l o g 2 p ( x i ) = − E X [ l o g 2 p ( X ) ] \begin{aligned} H(X) &\triangleq -\sum_{k=1}^Kp(X=k)log_2p(X=k) \\ &=-\sum_{i=1}^{n}p(x_i)log_2 p(x_i) \\ &= -E_X[log_2 p(X)] \end{aligned} H(X)k=1Kp(X=k)log2p(X=k)=i=1np(xi)log2p(xi)=EX[log2p(X)]

注意,我们用符号 H ( X ) H(X) H(X)来表示随机变量(rv)与分布p的熵,就像人们用 V [ X ] V[X] V[X]来表示与X相关的分布的方差;我们也可以写成 H ( p ) H(p) H(p) 。通常我们使用log以2为底,在这种情况下,单位称为位(二进制数的简称)。例如,如果 X ∈ { 1 , . . . , 5 } X \in \{1,...,5\} X{1,...,5} 的直方图分布 p = [ 0.25 , 0.25 , 0.2 , 0.15 , 0.15 ] p =[0.25, 0.25, 0.2, 0.15, 0.15] p=[0.25,0.25,0.2,0.15,0.15] ,我们得到 H = 2.29 H = 2.29 H=2.29 bits。如果用log以e为底的对数,单位叫做nats。


具有最大熵的离散分布是均匀分布。对于k元随机变量,当 p ( x = k ) = 1 / k p(x = k) = 1/ k p(x=k)=1/k 时,熵最大;在这种情况下, H ( X ) = l o g 2 K H (X) = log2K H(X)=log2K。如下:

H ( X ) = − ∑ k = 1 K 1 K l o g ( 1 / K ) = − l o g ( 1 / K ) = l o g ( K ) H(X) = -\sum_{k=1}^K \frac{1}{K}log(1/K) = -log(1/K) = log(K) H(X)=k=1KK1log(1/K)=log(1/K)=log(K)

相反,具有最小熵(零)的分布是将其所有质量置于一个状态的任何delta函数。这样的分布没有不确定性。


对于二元随机变量 X ∈ { 0 , 1 } X \in \{0,1\} X{0,1} 的特殊情况,我们可以写成 p ( X = 1 ) = θ p(X = 1) = θ p(X=1)=θ p ( X = 0 ) = 1 − θ p(X = 0) = 1 - θ p(X=0)=1θ 。因此熵就变成了,

H ( X ) = − [ p ( X = 1 ) l o g 2 p ( X = 1 ) + p ( X = 0 ) l o g 2 p ( X = 0 ) ] = − [ θ l o g 2 θ + ( 1 − θ ) l o g 2 ( 1 − θ ) ] \begin{aligned} H(X) &= -[p(X=1)log_2p(X=1) + p(X=0)log_2p(X=0)] \\ &= -[θlog_2θ + (1 - θ)log_2(1 - θ)] \end{aligned} H(X)=[p(X=1)log2p(X=1)+p(X=0)log2p(X=0)]=[θlog2θ+(1θ)log2(1θ)]

这叫 binary entropy function, 可以写成 H ( θ ) H(θ) H(θ),图如下:

1710730393199

2. 相对熵(KL散度)

2.1 概念

考虑一个未知的分布 p ( x ) p(x) p(x),假定用一个 近似的分布 q ( x ) q(x) q(x) 对其进行建模。

如果我们使用 q(x) 来建立一个编码体系,用来把 x 的值传给接收者,那么由于我们使用了q(x)而不是真实分布p(x),平均编码长度比用真实分布p(x)进行编码增加的信息量(单位是 nat )为:
K L ( p ∣ ∣ q ) = − ∫ p ( x ) l o g ( q ( x ) ) d x − ( − ∫ p ( x ) l o g ( p ( x ) ) d x ) = − ∫ p ( x ) l o g ( q ( x ) p ( x ) ) d x = ∫ p ( x ) l o g ( p ( x ) q ( x ) ) d x \begin{aligned} KL(p||q) &= -\int p(x)log(q(x))dx - (-\int p(x)log(p(x))dx) \\ &= -\int p(x)log(\frac{q(x)}{p(x)})dx \\ &= \int p(x)log(\frac{p(x)}{q(x)})dx \\ \end{aligned} KL(p∣∣q)=p(x)log(q(x))dx(p(x)log(p(x))dx)=p(x)log(p(x)q(x))dx=p(x)log(q(x)p(x))dx

这被称为分布p(x)和q(x)之间的相对熵,也被称为KL散度。

上式为连续型随机变量的KL散度,下式为离散型随机变量的KL散度。

K L ( p ∣ ∣ q ) = ∑ p ( x ) l o g ( p ( x ) q ( x ) ) KL(p||q) = \sum p(x)log(\frac{p(x)}{q(x)}) KL(p∣∣q)=p(x)log(q(x)p(x))

2.2 性质

  1. 不对称;

K L ( p ∣ ∣ q ) ≠ K L ( q ∣ ∣ p ) KL(p||q) \neq KL(q||p) KL(p∣∣q)=KL(q∣∣p)
2. 非负,当且仅当p(x) = q(x)时取到等号成立;
K L ( p ∣ ∣ q ) ≥ 0 KL(p||q) \geq 0 KL(p∣∣q)0

2.3 KL散度和最大似然

假 设 数 据 通 过 未 知 分 布 p ( x ) p(x) p(x)生 成, 我 们 想 要 对 p ( x ) p(x) p(x)建 模。 我 们 可 以 试 着 使 用 一 些 参 数 分 布 q ( x ∣ θ ) q(x |\theta) q(xθ)来近似这个分布。 q ( x ∣ θ ) q(x|\theta) q(xθ)由可调节的参数 θ \theta θ控制(例如一个多元高斯分布)。

一种确 定 θ \theta θ的方式是最小化 p ( x ) p(x) p(x) q ( x ∣ θ ) q(x|\theta) q(xθ) 之间关于 θ \theta θ的Kullback-Leibler散度。我们不能直接这么做,因 为我们不知道p(x)。

但是,假设我们已经观察到了服从分布p(x)的有限数量的训练点 x n x_n xn,其 中 n = 1 , . . . , N n = 1,...,N n=1,...,N 。那么,关于p(x)的期望就可以通过这些点的有限加和

K L ( p ∣ ∣ q ) = ∑ n = 1 N p ( x n ) l o g ( p ( x n ) q ( x n ∣ θ ) ) ≃ 1 N ∑ n = 1 N [ l o g p ( x n ) − l o g ( q ( x n ∣ θ ) ) ] \begin{aligned} KL(p||q) &= \sum_{n=1}^N p(x_n)log(\frac{p(x_n)}{q(x_n|\theta)}) \\ &\simeq \frac{1}{N} \sum_{n=1}^N [logp(x_n) - log(q(x_n|\theta)) ] \\ \end{aligned} KL(p∣∣q)=n=1Np(xn)log(q(xnθ)p(xn))N1n=1N[logp(xn)log(q(xnθ))]

公式左侧和 θ \theta θ无关,第一项是使用训练集估计的分布 q ( x ∣ θ ) q(x |\theta) q(xθ)下的 θ \theta θ的负对数 似然函数。

因此我们看到,最小化Kullback-Leibler散度等价于最大化似然函数。

2.4 交叉熵

交叉熵公式:

H ( p , q ) = − ∑ i p ( x i ) l o g q ( x i ) H(p,q) = -\sum_i p(x_i)log q(x_i) H(p,q)=ip(xi)logq(xi)

而我们的KL散度公式:

D K L ( p ∣ ∣ q ) = ∑ i p ( x i ) l o g ( p ( x i ) q ( x i ) ) = ∑ i p ( x i ) l o g p ( x i ) − ∑ i p ( x i ) l o g q ( x i ) = H ( p , q ) − H ( p ) \begin{aligned} D_{KL}(p||q) &= \sum_i p(x_i)log(\frac{p(x_i)}{q(x_i)}) \\ &= \sum_i p(x_i)log p(x_i) - \sum_i p(x_i)log q(x_i) \\ &= H(p,q) - H(p) \end{aligned} DKL(p∣∣q)=ip(xi)log(q(xi)p(xi))=ip(xi)logp(xi)ip(xi)logq(xi)=H(p,q)H(p)

即,交叉熵 = KL散度 + 熵。
H ( p , q ) = D K L ( p ∣ ∣ q ) + H ( p ) H(p,q) = D_{KL}(p||q) + H(p) H(p,q)=DKL(p∣∣q)+H(p)

参考

  1. https://zhuanlan.zhihu.com/p/372835186
  2. https://zhuanlan.zhihu.com/p/39682125
  3. https://zhuanlan.zhihu.com/p/365400000
  4. https://blog.csdn.net/yg2685482622/article/details/108273329
  5. https://zhuanlan.zhihu.com/p/292434104

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

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

相关文章

使用API有效率地管理Dynadot域名,使用API进将其他平台的域名转移至dynadot

关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…

海格里斯助推实体制造业转型升级 “算法定义硬件”解题AIoT市场

随着自动化的发展,电子商务和智能制造推动了自动化立体仓库的快速发展与创新,产生了“密集仓储”的概念。对于一个实体企业来讲,其数智物流转型正在趋向于“去伪存真”,企业追求高ROI与真实经济价值,具有降本增效的业务…

EPSON推出的实时时钟模块RX8130CE功耗低至300nA、从容应对各种使用场景

随着科技的进步和消费者需求的不断变化,笔记本电脑市场继续展现出强劲的发展势头一方面移动性和轻薄性成为主流,另外一方面性能在不断提升,功能也日益丰富。实时时钟模组,作为提供时间和定时功能的单元模块,是笔记本电…

git clone没有权限的解决方法

一般情况 git clone时没有权限,一般是因为在代码库平台上没有配置本地电脑的id_rsa.pub 只要配置上,一般就可以正常下载了。 非一般情况 但是也有即使配置了id_rsa.pub后,仍然无法clone代码的情况。如下 原因 这种情况是因为ssh客户端…

Windows系统部署Net2FTP网站结合内网穿透轻松打造可公网访问个人云盘

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一,特别是智能设备的大面积使用,无论是个人…

力扣Lc21--- 389. 找不同(java版)-2024年3月26日

1.题目描述 2.知识点 &#xff08;1&#xff09;在这段代码中&#xff1a; // 统计字符串s中每个字符的出现次数for (int i 0; i < s.length(); i) {count[s.charAt(i) - a];}对于字符串s “abcd”&#xff1a; 当 i 0&#xff0c;s.charAt(i) ‘a’&#xff0c;ASCII…

Object Detection--Loss Function:从IoU到CIoU

本篇总结Loss Function中的IoU系列代码。 1. IoU 交并集&#xff0c;两个框交集面积除以并集面积。&#xff08;论写写画画的重要性&#xff09;&#xff08;找原文看看&#xff09; """ box1[x1, y1, x2, y2] box2[x1, y1, x2, y2] return iou ""…

政府军工单位落实国产信创要求,怎么进行FTP替代?

信创&#xff0c;全称是“信息技术应用创新”&#xff0c;旨在实现信息技术自主可控&#xff0c;规避外部技术制裁和风险。其产业涉及IT基础设施、基础软件、应用软件、信息安全等方面&#xff0c;主要包括新一代信息技术下的云计算、软件&#xff08;操作系统、中间件、数据库…

政安晨:【Keras机器学习实践要点】(四)—— 顺序模型

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎机器学习 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 介绍 Keras是一个用于构建和训练深度学习模…

Spring事务-两种开启事务管理的方式:基于注解的声明式事务管理、基于编程式的事务管理

Spring事务-两种开启事务管理的方式 1、前期准备2、基于注解的声明式事务管理3、基于编程式的事务管理4、声明式事务失效的情况 例子&#xff1a;假设有一个银行转账的业务&#xff0c;其中涉及到从一个账户转钱到另一个账户。在这个业务中&#xff0c;我们需要保证要么两个账户…

Flask学习(五):session相关流程

流程图如下图所示&#xff1a; 调用相关类如下图所示&#xff1a; 相关代码如下&#xff1a; from flask import Flask, sessionapp Flask(__name__)1. 加密会话数据&#xff1a;在 Flask 中&#xff0c;会话数据存储在客户端的 cookie 中。设置 app.secret_key 可以加密会话…

Qt Design Studio各个组件怎么用?【长期更新】

写在前面&#xff1a;本文长期更新&#xff0c;建议点赞/收藏/关注~ 在Qt Design Studio中&#xff0c;组件类别有&#xff1a; 每一种&#xff0c;都有其特定的用途和适用场景&#xff1a; 1.My Components 使用时机&#xff1a;当你需要重用自定义的设计元素或者特殊功能…