KL散度(Kullback-Leibler)

news2024/9/19 9:35:44

文章目录

  • 1. KL 散度的符号表示
  • 2. "||"符号的含义
  • 3. KL 散度的定义
  • 4. 为什么使用"||"符号
  • 5. 直观理解
  • 6. 应用中的理解
  • 7. 举例说明
  • 8. 补充说明

🍃作者介绍:双非本科大四网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发,目前开始人工智能领域相关知识的学习
🦅个人主页:@逐梦苍穹
📕所属专栏:人工智能
🌻gitee地址:xzl的人工智能代码仓库
✈ 您的一键三连,是我创作的最大动力🌹

KL散度用在了"LLaMA2"论文里面,关于论文提到的"PPO"算法,我先展示一下完整公式,感兴趣可以去我的这篇文章看一下:
速通LLaMA2:https://xzl-tech.blog.csdn.net/article/details/142315279

公式:
arg ⁡ max ⁡ π E p ∼ D , g ∼ π [ R ( g ∣ p ) ] = { arg ⁡ max ⁡ π E p ∼ D , g ∼ π [ whiten ( logit ( R s ( g ∣ p ) ) ) − β ∑ x π 0 ( x ∣ g , p ) log ⁡ ( π 0 ( x ∣ g , p ) π ( x ∣ g , p ) ) ] , ( d i s c r e t e , & , if is_safety( p ) or  R s ( g ∣ p ) < 0.15 ) arg ⁡ max ⁡ π E p ∼ D , g ∼ π [ whiten ( logit ( R h ( g ∣ p ) ) ) − β ∑ x π 0 ( x ∣ g , p ) log ⁡ ( π 0 ( x ∣ g , p ) π ( x ∣ g , p ) ) ] , ( d i s c r e t e , & , otherwise ) arg ⁡ max ⁡ π E p ∼ D , g ∼ π [ whiten ( logit ( R s ( g ∣ p ) ) ) − β ∫ π 0 ( x ∣ g , p ) log ⁡ ( π 0 ( x ∣ g , p ) π ( x ∣ g , p ) ) d x ] , ( c o n t i n u o u s , & , if is_safety( p ) or  R s ( g ∣ p ) < 0.15 ) arg ⁡ max ⁡ π E p ∼ D , g ∼ π [ whiten ( logit ( R h ( g ∣ p ) ) ) − β ∫ π 0 ( x ∣ g , p ) log ⁡ ( π 0 ( x ∣ g , p ) π ( x ∣ g , p ) ) d x ] , ( c o n t i n u o u s , & , otherwise ) \arg \max_{\pi} \mathbb{E}_{p \sim D, g \sim \pi}[R(g | p)]= \begin{cases} \arg \max_{\pi} \mathbb{E}_{p \sim D, g \sim \pi} \left[ \text{whiten}(\text{logit}(R_s(g | p))) - \beta \sum_{x} \pi_0(x \mid g, p) \log \left( \frac{\pi_0(x \mid g, p)}{\pi(x \mid g, p)} \right) \right],&(discrete,\&,\text{if is\_safety($p$) or } R_s(g | p) < 0.15 )\\ \arg \max_{\pi} \mathbb{E}_{p \sim D, g \sim \pi} \left[ \text{whiten}(\text{logit}(R_h(g | p))) - \beta \sum_{x} \pi_0(x \mid g, p) \log \left( \frac{\pi_0(x \mid g, p)}{\pi(x \mid g, p)} \right) \right],&(discrete,\&,\text{otherwise}) \\ \arg \max_{\pi} \mathbb{E}_{p \sim D, g \sim \pi} \left[ \text{whiten}(\text{logit}(R_s(g | p))) - \beta \int \pi_0(x \mid g, p) \log \left( \frac{\pi_0(x \mid g, p)}{\pi(x \mid g, p)} \right) dx \right],&(continuous,\&,\text{if is\_safety($p$) or } R_s(g | p) < 0.15)\\ \arg \max_{\pi} \mathbb{E}_{p \sim D, g \sim \pi} \left[ \text{whiten}(\text{logit}(R_h(g | p))) - \beta \int \pi_0(x \mid g, p) \log \left( \frac{\pi_0(x \mid g, p)}{\pi(x \mid g, p)} \right) dx \right],&(continuous,\&,\text{otherwise})\\ \end{cases} argπmaxEpD,gπ[R(gp)]= argmaxπEpD,gπ[whiten(logit(Rs(gp)))βxπ0(xg,p)log(π(xg,p)π0(xg,p))],argmaxπEpD,gπ[whiten(logit(Rh(gp)))βxπ0(xg,p)log(π(xg,p)π0(xg,p))],argmaxπEpD,gπ[whiten(logit(Rs(gp)))βπ0(xg,p)log(π(xg,p)π0(xg,p))dx],argmaxπEpD,gπ[whiten(logit(Rh(gp)))βπ0(xg,p)log(π(xg,p)π0(xg,p))dx],(discrete,&,if is_safety(p) or Rs(gp)<0.15)(discrete,&,otherwise)(continuous,&,if is_safety(p) or Rs(gp)<0.15)(continuous,&,otherwise)


下面详细解释一下 KL 散度公式

1. KL 散度的符号表示

在 KL 散度(Kullback-Leibler 散度)的公式中,通常写作:

D K L ( P ∥ Q ) D_{KL}(P \| Q) DKL(PQ)

这里的"||"是一个符号,用来分隔两个概率分布 P P P Q Q Q,表示计算 P P P相对于 Q Q Q的 KL 散度。

2. "||"符号的含义

  • 表示方向性: KL 散度是非对称的,即 D K L ( P ∥ Q ) ≠ D K L ( Q ∥ P ) D_{KL}(P \| Q) \neq D_{KL}(Q \| P) DKL(PQ)=DKL(QP)。因此,"||"符号表示了从 P P P Q Q Q的方向。
  • 读作: P P P相对于 Q Q Q的 KL 散度"或" P P P关于 Q Q Q的 KL 散度”。
  • 作用: 明确指出哪个分布是“真实”分布(或目标分布),哪个是“近似”分布(或模型分布)。在 D K L ( P ∥ Q ) D_{KL}(P \| Q) DKL(PQ)中, P P P通常被视为真实分布, Q Q Q是近似或模型分布。

3. KL 散度的定义

KL 散度用于衡量两个概率分布之间的差异,其数学定义为:

D K L ( P ∥ Q ) = ∑ x P ( x ) log ⁡ ( P ( x ) Q ( x ) ) D_{KL}(P \| Q) = \sum_{x} P(x) \log \left( \frac{P(x)}{Q(x)} \right) DKL(PQ)=xP(x)log(Q(x)P(x))

或对于连续分布:

D K L ( P ∥ Q ) = ∫ P ( x ) log ⁡ ( P ( x ) Q ( x ) ) d x D_{KL}(P \| Q) = \int P(x) \log \left( \frac{P(x)}{Q(x)} \right) dx DKL(PQ)=P(x)log(Q(x)P(x))dx

在这个公式中:

  • P ( x ) P(x) P(x) 真实分布或目标分布的概率密度函数。
  • Q ( x ) Q(x) Q(x) 近似分布或模型分布的概率密度函数。
  • log ⁡ ( P ( x ) Q ( x ) ) \log \left( \frac{P(x)}{Q(x)} \right) log(Q(x)P(x)) 表示在每个点 x x x上, P ( x ) P(x) P(x)相对于 Q ( x ) Q(x) Q(x)的对数差异。

4. 为什么使用"||"符号

  • 强调非对称性: KL 散度不是对称的,即 D K L ( P ∥ Q ) D_{KL}(P \| Q) DKL(PQ) D K L ( Q ∥ P ) D_{KL}(Q \| P) DKL(QP)一般不相等。因此,用"$| | $"来强调计算的顺序和方向。
  • 区分角色: 在许多应用中, P P P Q Q Q扮演不同的角色。 P P P通常是数据的真实分布,我们希望模型 Q Q Q能够尽可能接近 P P P

5. 直观理解

  • 信息损失: KL 散度可以被看作是使用分布 Q Q Q来近似分布 P P P时所产生的信息损失。
  • 例子: 假设我们有两个概率分布:

D K L ( P ∥ Q ) D_{KL}(P \| Q) DKL(PQ)计算的是如果我们用模型 Q Q Q来近似真实分布 P P P时,所产生的差异或信息损失。

  • P P P:真实的硬币掷投结果分布,硬币是公平的,正反面概率均为 0.5。
  • Q Q Q:我们的模型认为硬币是偏的,正面概率为 0.7,反面概率为 0.3。

6. 应用中的理解

在您提到的公式中:

R ( g ∣ p ) = R ~ c ( g ∣ p ) − β D K L ( π 0 ( g ∣ p ) ∥ π ( g ∣ p ) ) R(g \mid p) = \tilde{R}_c(g \mid p) - \beta D_{KL}(\pi_0(g \mid p) \| \pi(g \mid p)) R(gp)=R~c(gp)βDKL(π0(gp)π(gp))

  • D K L ( π 0 ( g ∣ p ) ∥ π ( g ∣ p ) ) D_{KL}(\pi_0(g \mid p) \| \pi(g \mid p)) DKL(π0(gp)π(gp))
    • π 0 ( g ∣ p ) \pi_0(g \mid p) π0(gp):初始策略或基准分布。
    • π ( g ∣ p ) \pi(g \mid p) π(gp):当前策略或模型分布。
    • “||”:表示我们在计算初始策略相对于当前策略的 KL 散度。
  • 含义: 我们希望新的策略 π \pi π不要偏离初始策略 π 0 \pi_0 π0太多,因此通过 KL 散度来衡量这种偏离程度。

7. 举例说明

假设我们有一个简单的逻辑回归模型,该模型用于根据单个特征 x x x来预测输出 y y y属于类别0或类别1。

模型的参数 p p p为逻辑回归的权重 w w w和偏置 b b b

  • 先验分布 π 0 ( g ∣ p ) \pi_0(g|p) π0(gp): 假设我们有理由相信在没有数据的情况下,权重 w w w应接近0,因此我们将先验分布 π 0 \pi_0 π0设置为均值为0,方差为1的正态分布。
  • 后验分布 π ( g ∣ p ) \pi(g|p) π(gp): 训练数据后,我们更新权重并获得新的分布,假设更新后的权重 w w w均值为1,方差为1。
  • 条件风险函数 R ~ c ( g ∣ p ) \tilde{R}_c(g|p) R~c(gp): 使用二元交叉熵损失。
  • 调节参数 β \beta β: 设为0.1,用以控制正则化强度。

计算步骤:

  • 计算条件风险 R ~ c ( g ∣ p ) \tilde{R}_c(g|p) R~c(gp)
    • 假设单个数据点为 ( x , y ) = ( 2 , 1 ) (x, y) = (2, 1) (x,y)=(2,1)模型预测 y ^ \hat{y} y^的概率为:
      * y ^ = σ ( w ⋅ x + b ) = σ ( 1 ⋅ 2 + 0 ) = σ ( 2 ) \hat{y} = \sigma(w \cdot x + b) = \sigma(1 \cdot 2 + 0) = \sigma(2) y^=σ(wx+b)=σ(12+0)=σ(2)
      • 其中 σ \sigma σ是sigmoid函数。计算 σ ( 2 ) ≈ 0.88 \sigma(2) \approx 0.88 σ(2)0.88
    • 二元交叉熵损失为: − [ y log ⁡ ( y ^ ) + ( 1 − y ) log ⁡ ( 1 − y ^ ) ] = − [ 1 log ⁡ ( 0.88 ) + 0 log ⁡ ( 0.12 ) ] ≈ 0.13 -\left[y \log(\hat{y}) + (1 - y) \log(1 - \hat{y})\right] = -[1 \log(0.88) + 0 \log(0.12)] \approx 0.13 [ylog(y^)+(1y)log(1y^)]=[1log(0.88)+0log(0.12)]0.13
  • 计算KL散度:
    • 对于正态分布的KL散度,公式为: D K L ( N ( μ 0 , σ 0 2 ) ∥ N ( μ , σ 2 ) ) = log ⁡ ( σ σ 0 ) + σ 0 2 + ( μ 0 − μ ) 2 2 σ 2 − 1 2 D_{KL}(N(\mu_0, \sigma_0^2) \| N(\mu, \sigma^2)) = \log\left(\frac{\sigma}{\sigma_0}\right) + \frac{\sigma_0^2 + (\mu_0 - \mu)^2}{2 \sigma^2} - \frac{1}{2} DKL(N(μ0,σ02)N(μ,σ2))=log(σ0σ)+2σ2σ02+(μ0μ)221
    • 将值代入: D K L ( N ( 0 , 1 ) ∥ N ( 1 , 1 ) ) = log ⁡ ( 1 ) + 1 + ( 0 − 1 ) 2 2 ⋅ 1 − 1 2 = 0.5 D_{KL}(N(0, 1) \| N(1, 1)) = \log(1) + \frac{1 + (0 - 1)^2}{2 \cdot 1} - \frac{1}{2} = 0.5 DKL(N(0,1)N(1,1))=log(1)+211+(01)221=0.5
  • 计算总目标函数: R ( g ∣ p ) = 0.13 − 0.1 ⋅ 0.5 = 0.13 − 0.05 = 0.08 R(g|p) = 0.13 - 0.1 \cdot 0.5 = 0.13 - 0.05 = 0.08 R(gp)=0.130.10.5=0.130.05=0.08

小结:

通过这个计算例子,我们可以看到如何结合模型的预测损失和基于先验知识的正则化来形成最终的目标函数,这种方法有助于平衡模型的拟合能力和对先验知识的保留,尤其在数据较少或不完整时非常有用。

8. 补充说明

  • 其他表示方法: 有时,KL 散度也可以写作 D K L ( P   ||   Q ) D_{KL}(P \, \text{||} \, Q) DKL(P||Q) D K L ( P → Q ) D_{KL}(P \rightarrow Q) DKL(PQ),但"|"是最常用的表示方法之一。
  • 注意符号顺序: 在计算 KL 散度时,符号顺序很重要,交换 P P P Q Q Q会得到不同的结果。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 Internet 共享 (ICS) 方式分配ip

设备A使用dhcp的情况下&#xff0c;通过设备B分配ip并共享网络的方法。 启用网络共享&#xff08;ICS&#xff09;并配置 NAT Windows 自带的 Internet Connection Sharing (ICS) 功能可以简化 NAT 设置&#xff0c;允许共享一个网络连接给其他设备。 打开网络设置&#xff1…

力扣之1075.项目员工I

文章目录 1. 1075.项目员工I1.1 题干1.2 准备数据1.3 解法1.4 结果截图 1. 1075.项目员工I 1.1 题干 项目表 Project&#xff1a; -------------------- | Column Name | Type | -------------------- | project_id | int | | employee_id | int | -------------------- 主键…

『小白可入』VSPD虚拟串口工具——从此告别硬件串口调试

一、下载VSPD工具 工具已上传至百度云&#xff0c;在以下地址下载&#xff1a; VSPD下载链接&#xff1a;通过百度网盘分享的文件&#xff1a;我的资源 链接&#xff1a;https://pan.baidu.com/s/1x2eoQYg6erqs__CQgT5j6Q?pwd4211 提取码&#xff1a;4211 二、安装 1.解压后的…

2024年Apple Search Ads(简称:苹果ASA):开展有效活动的秘诀

当谈到为应用程序启动广告活动时&#xff0c;许多人会立即想到Android。然而&#xff0c;这并不总是最好的选择&#xff0c;因为iOS设备在多个国家和地区占据市场主导地位。在这些地区&#xff0c;定位ios用户可以带来更大的成功。 您可以通过各种渠道在iOS上投放广告&#xff…

最低成本的游戏串流方案分享 如何自己打造云电脑?

今天教大家如何最低成本实现串流 出门在外也可以随时随地游玩端游大作 硬件准备&#xff1a;一台电脑 手机/平板一台 软件&#xff1a;Gameviewer远程 为啥不用moonlight等其他软件呢 因为设置公网穿透等复杂操作对小白来说不太友好 而GameViewer从安装到使用仅需一键 对比同类…

PostgreSQL技术内幕10:PostgreSQL事务原理解析-日志模块介绍

文章目录 0.简介1.PG日志介绍2.事务日志介绍3.WAL分析3.1 WAL概述3.2 WAL设计考虑3.2.1 存储格式3.2.2 实现方式3.2.3 数据完整性校验3.3 check ponit 4.事务提交日志&#xff08;CLOG&#xff09;4.1 clog存储使用介绍4.2 slru缓冲池并发控制 0.简介 本文将延续上一篇文章内容…

好用的网页翻译插件

软件介绍 「火山翻译&#xff0c;开箱即用免配置&#xff0c;完全免费无广告&#xff0c;开发的多语言翻译插件&#xff0c;基本涵盖众多小语种及国际通用语言的翻译&#xff0c;支持网页一键翻译、划词翻译、英语词典、生词本、吐司弹词记忆等丰富能力。 下载方式 请看文章…

【AprilTag】视觉定位实战 | 使用 ROS 驱动的 USB 摄像头进行相机标定与 AprilTag 识别

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

Matlab进行频率切片小波变换

Matlab进行频率切片小波变换(FSWT)源代码&#xff0c;将一维信号生成时频图。 输入信号可以是任何一维信号&#xff0c;心电信号、脑电信号、地震波形、电流电压数据等。 相比连续小波变换(CWT)&#xff0c;频率切片小波变换(Frequency Slice Wavelet Transform,FSWT)是一种更具…

C# 使用代码清理 以及禁用某个代码清理

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

鸿蒙Harmony应用开发,数据驾驶舱 项目结构搭建

对于一个项目而言&#xff0c;在拿到我们的开发任务后&#xff0c;我们最重要的就是技术的选型。选型定下来了之后我们便开始脚手架的搭建&#xff0c;然后开始撸代码&#xff0c;开搞. 首先我们需要对一些常见依赖库的引入 我们需要再oh-package.json5的dependencies节点下面…

strlen和sizeof

在 C 语言中&#xff0c;strlen 和 sizeof 是两个非常常用的操作符&#xff0c;但它们的作用和用途有很大的不同。下面详细解释这两个操作符&#xff1a; strlen strlen 是一个函数&#xff0c;定义在 <string.h> 头文件中&#xff0c;用于计算一个以空字符&#xff08…

华为OD机试 - 字符串划分(Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;E卷D卷A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加…

注意,传统的提示工程对新模型o1可能失效:来自OpenAI官方的4条提示词建议!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

Flink系列知识之:Checkpoint原理

Flink系列知识之&#xff1a;Checkpoint原理 在介绍checkpoint的执行流程之前&#xff0c;需要先明白Flink中状态的存储机制&#xff0c;因为状态对于检查点的持续备份至关重要。 State Backends分类 下图显示了Flink中三个内置的状态存储种类。MemoryStateBackend和FsState…

linux设置常见开机自启动命令

本文介绍了三种开机自启的方式&#xff0c;重点介绍使用systemctl的方式自启动的 方式一、修改 /etc/rc.d/rc.local 文件 /etc/rc.d/rc.local 文件会在 Linux 系统各项服务都启动完毕之后再被运行。所以你想要自己的脚本在开机后被运行的话&#xff0c;可以将自己脚本路径加到…

Kubernetes从零到精通(12-Ingress、Gateway API)

Ingress和Gateway API都是Kubernetes中用于管理外部访问集群服务的机制&#xff0c;但它们有不同的设计理念和适用场景。它们的基本原理是通过配置规则&#xff0c;将来自外部的网络流量路由到Kubernetes集群内部的服务上。 Ingress/Gateway API和Service Ingress/Gateway API…

边缘计算智能网关的功能应用与优势-天拓四方

在物联网的世界中&#xff0c;数以亿计的设备不断产生、传输和处理数据。然而&#xff0c;传统的云计算架构在面对这些实时性要求高、数据量庞大的物联网数据时&#xff0c;常常面临着网络延迟、带宽限制和安全风险等问题。这时&#xff0c;边缘计算智能网关作为一种新兴的技术…

图书馆座位预约系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;图书馆管理&#xff0c;座位信息管理&#xff0c;预约选座管理&#xff0c;签到信息管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;论坛&#xf…

【Harmony】轮播图特效,持续更新中。。。。

效果预览 swiper官网例子 Swiper 高度可变化 两边等长露出&#xff0c;跟随手指滑动 Swiper 指示器导航点位于 Swiper 下方 一、官网 例子 参考代码&#xff1a; // xxx.ets class MyDataSource implements IDataSource {private list: number[] []constructor(list: nu…