KL散度 (Kullback-Leibler Divergence)

news2025/5/18 15:56:34

KL散度,也称为相对熵 (Relative Entropy),是信息论中一个核心概念,用于衡量两个概率分布之间的差异。给定两个概率分布 P ( x ) P(x) P(x) Q ( x ) Q(x) Q(x)(对于离散随机变量)或 p ( x ) p(x) p(x) q ( x ) q(x) q(x)(对于连续随机变量),从 Q Q Q P P P 的KL散度定义如下:

1. 定义

  • 对于离散概率分布 P ( x ) P(x) P(x) Q ( x ) Q(x) Q(x)
    D K L ( P ∥ Q ) = ∑ x ∈ X P ( x ) log ⁡ ( P ( x ) Q ( x ) ) D_{KL}(P \parallel Q) = \sum_{x \in \mathcal{X}} P(x) \log \left( \frac{P(x)}{Q(x)} \right) DKL(PQ)=xXP(x)log(Q(x)P(x))
    其中 X \mathcal{X} X 是随机变量 x x x 所有可能取值的集合。

  • 对于连续概率分布 p ( x ) p(x) p(x) q ( x ) q(x) q(x)
    D K L ( p ∥ q ) = ∫ − ∞ ∞ p ( x ) log ⁡ ( p ( x ) q ( x ) ) d x D_{KL}(p \parallel q) = \int_{-\infty}^{\infty} p(x) \log \left( \frac{p(x)}{q(x)} \right) dx DKL(pq)=p(x)log(q(x)p(x))dx

    在这些定义中,通常使用自然对数 (ln),此时KL散度的单位是“奈特 (nats)”。如果使用以2为底的对数,单位则是“比特 (bits)”。约定 0 log ⁡ ( 0 / q ) = 0 0 \log(0/q) = 0 0log(0/q)=0 p log ⁡ ( p / 0 ) = ∞ p \log(p/0) = \infty plog(p/0)= (如果 P ( x ) > 0 P(x) > 0 P(x)>0 Q ( x ) = 0 Q(x) = 0 Q(x)=0,则KL散度为无穷大,意味着如果 P P P 中有事件发生而 Q Q Q 认为其概率为0,则 Q Q Q 无法良好地逼近 P P P)。

2. 信息论视角

从信息论的角度来看,KL散度有多种解释:

  • 期望的对数似然比: D K L ( P ∥ Q ) D_{KL}(P \parallel Q) DKL(PQ) 是在真实分布为 P P P 的情况下,使用 P P P 相对于使用 Q Q Q 的对数似然比的期望值。
  • 信息增益: 当我们从一个先验分布 Q Q Q 更新到一个后验分布 P P P 时, D K L ( P ∥ Q ) D_{KL}(P \parallel Q) DKL(PQ) 量化了我们获得的平均信息量。
  • 编码长度的额外代价: 假设数据真实服从分布 P P P。如果我们使用一个基于分布 Q Q Q 的最优编码方案来编码这些数据,而不是使用基于真实分布 P P P 的最优编码方案, D K L ( P ∥ Q ) D_{KL}(P \parallel Q) DKL(PQ) 表示我们平均需要多少额外的比特数(或奈特数)来编码样本。也就是说,它衡量了由于使用了一个次优的分布 Q Q Q 来近似真实分布 P P P 所导致的信息损失。
  • 相对熵: 它可以表示为交叉熵与熵的差:
    D K L ( P ∥ Q ) = H ( P , Q ) − H ( P ) D_{KL}(P \parallel Q) = H(P, Q) - H(P) DKL(PQ)=H(P,Q)H(P)
    其中 H ( P , Q ) = − ∑ x P ( x ) log ⁡ Q ( x ) H(P, Q) = - \sum_x P(x) \log Q(x) H(P,Q)=xP(x)logQ(x) P P P Q Q Q 之间的交叉熵,而 H ( P ) = − ∑ x P ( x ) log ⁡ P ( x ) H(P) = - \sum_x P(x) \log P(x) H(P)=xP(x)logP(x) P P P 的熵(信息熵)。由于 H ( P ) H(P) H(P) 是固定的(对于给定的 P P P),最小化KL散度等价于最小化交叉熵。

3. 重要性质

  • 非负性 (Gibbs’ Inequality): D K L ( P ∥ Q ) ≥ 0 D_{KL}(P \parallel Q) \ge 0 DKL(PQ)0
  • 当且仅当 P = Q P=Q P=Q 时取零: D K L ( P ∥ Q ) = 0 D_{KL}(P \parallel Q) = 0 DKL(PQ)=0 当且仅当 P ( x ) = Q ( x ) P(x) = Q(x) P(x)=Q(x) 对于几乎所有 x x x 都成立。
  • 不对称性: 通常情况下, D K L ( P ∥ Q ) ≠ D K L ( Q ∥ P ) D_{KL}(P \parallel Q) \neq D_{KL}(Q \parallel P) DKL(PQ)=DKL(QP)。这意味着KL散度不是一个真正的度量 (metric),因为它不满足对称性和三角不等式。例如,如果 P P P 是一个多峰分布,而 Q Q Q 是一个单峰分布,那么 D K L ( P ∥ Q ) D_{KL}(P \parallel Q) DKL(PQ) D K L ( Q ∥ P ) D_{KL}(Q \parallel P) DKL(QP) 会有不同的行为:
    • 最小化 D K L ( P ∥ Q ) D_{KL}(P \parallel Q) DKL(PQ) 会倾向于使 Q Q Q 覆盖 P P P 的所有模式 (mode-covering or zero-avoiding behavior),即如果 P ( x ) > 0 P(x)>0 P(x)>0,则 Q ( x ) Q(x) Q(x) 也必须大于0。
    • 最小化 D K L ( Q ∥ P ) D_{KL}(Q \parallel P) DKL(QP) 会倾向于使 Q Q Q 集中在 P P P 的某个模式上 (mode-seeking or zero-forcing behavior),即如果 P ( x ) P(x) P(x) 很小或为0, Q ( x ) Q(x) Q(x) 也会趋向于很小或为0。

4. 在机器学习中的应用

KL散度在机器学习中有广泛应用:

  • 变分推断 (Variational Inference): 在贝叶斯统计中,当后验分布 P ( Z ∣ X ) P(Z|X) P(ZX) 难以计算时,我们常常寻找一个简单分布 Q ( Z ) Q(Z) Q(Z) 来近似它。这通过最小化 D K L ( Q ( Z ) ∥ P ( Z ∣ X ) ) D_{KL}(Q(Z) \parallel P(Z|X)) DKL(Q(Z)P(ZX)) (或者更常见的是最小化 D K L ( Q ( Z ) ∥ P ( Z , X ) ) D_{KL}(Q(Z) \parallel P(Z,X)) DKL(Q(Z)P(Z,X)),这等价于最大化证据下界 ELBO)来实现。由于前面提到的不对称性,通常选择最小化 D K L ( Q ∥ P ) D_{KL}(Q \parallel P) DKL(QP) 的形式,这倾向于找到一个能够很好地拟合 P P P 主要模式的 Q Q Q
  • 损失函数与正则化:
    • 作为两个概率分布之间差异的度量,它可以直接用作损失函数,例如在生成模型中,我们希望模型生成的分布 Q Q Q 尽可能接近真实数据分布 P P P
    • 作为正则化项,例如在强化学习中,约束策略网络的变化,使其不会与先前的策略或参考策略偏离太远。

5. 在RLHF (Reinforcement Learning from Human Feedback) for LLMs 中的应用

KL散度可用于约束语言模型的策略更新,具体体现在奖励函数中:
R ( x , y ) = r θ ( x , y ) − β log ⁡ ( π ϕ R L ( y ∣ x ) π S F T ( y ∣ x ) ) R(x,y) = r_{\theta}(x,y) - \beta \log\left(\frac{\pi_{\phi}^{RL}(y|x)}{\pi^{SFT}(y|x)}\right) R(x,y)=rθ(x,y)βlog(πSFT(yx)πϕRL(yx))
这里的 log ⁡ ( π ϕ R L ( y ∣ x ) π S F T ( y ∣ x ) ) \log\left(\frac{\pi_{\phi}^{RL}(y|x)}{\pi^{SFT}(y|x)}\right) log(πSFT(yx)πϕRL(yx)) 项直接与KL散度相关。实际上,如果我们在 π S F T ( y ∣ x ) \pi^{SFT}(y|x) πSFT(yx) 的期望下看待这一项,它就是 D K L ( π S F T ∥ π ϕ R L ) D_{KL}(\pi^{SFT} \parallel \pi_{\phi}^{RL}) DKL(πSFTπϕRL) 的一部分(或者更准确地说,是 D K L ( π ϕ R L ∥ π S F T ) D_{KL}(\pi_{\phi}^{RL} \parallel \pi^{SFT}) DKL(πϕRLπSFT) 的负相关项,符号和期望对象需要注意)。

在这个公式中:

  • π ϕ R L ( y ∣ x ) \pi_{\phi}^{RL}(y|x) πϕRL(yx) 是当前通过强化学习更新的策略(语言模型),给定上下文 x x x 生成 y y y 的概率。
  • π S F T ( y ∣ x ) \pi^{SFT}(y|x) πSFT(yx) 是一个参考策略,通常是经过监督微调 (Supervised Fine-Tuning) 得到的模型,它代表了期望的、较为安全的行为。
  • β \beta β 是一个超参数,控制KL惩罚项的强度。

该KL惩罚项(或其变体)的作用:

  1. 约束探索空间,防止策略漂移过大: 它限制了RL策略 π ϕ R L \pi_{\phi}^{RL} πϕRL 不要与初始的、表现良好的SFT策略 π S F T \pi^{SFT} πSFT 偏离太远。这有助于稳定训练,避免模型探索到非常差的、产生无意义或有害内容的策略空间。
  2. 缓解奖励模型被“Hacking”: 语言模型可能会找到一些方式来“欺骗”奖励模型 r θ ( x , y ) r_{\theta}(x,y) rθ(x,y) 给出高分,但实际上生成的文本质量不高或者不符合人类偏好。KL惩罚项使得模型在追求高奖励的同时,也必须考虑其行为与参考模型的相似性,从而间接约束了这种“Hacking”行为。
  3. 充当熵奖励/正则化,鼓励探索(特定形式下): “it acts as an entropy bonus, encouraging the policy to explore and deterring it from collapsing to a single mode.” 虽然上述公式中的形式是惩罚与SFT模型的差异,但在某些RL框架中,KL散度(或者其与熵的联系)可以被用来鼓励策略的随机性,从而促进探索。具体到这里的公式,主要是通过防止模型过于偏离SFT模型来避免模式崩溃到SFT模型未曾覆盖的奇怪区域,而不是直接最大化策略本身的熵。SFT模型本身具有一定的多样性,保持与它的接近间接维持了这种多样性。

KL散度为我们提供了一个量化两个概率分布之间差异的强大工具。在AI和机器学习中,它不仅是理论分析的基础,也是许多算法设计(如变分自编码器VAE、策略优化RL算法如TRPO、PPO等)中的关键组成部分,用于度量信息损失、约束模型行为或指导模型学习。在RLHF中,它扮演了稳定器和安全阀的角色,确保在通过强化学习优化模型以符合人类偏好时,模型不会偏离其已学到的有用知识太远。

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

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

相关文章

回溯法理论基础 LeetCode 77. 组合 LeetCode 216.组合总和III LeetCode 17.电话号码的字母组合

目录 回溯法理论基础 回溯法 回溯法的效率 用回溯法解决的问题 如何理解回溯法 回溯法模板 LeetCode 77. 组合 回溯算法的剪枝操作 LeetCode 216.组合总和III LeetCode 17.电话号码的字母组合 回溯法理论基础 回溯法 回溯法也可以叫做回溯搜索法,它是一…

【进程控制二】进程替换和bash解释器

【进程控制二】进程替换 1.exec系列接口2.execl系列2.1execl接口2.2execlp接口2.3execle 3.execv系列3.1execv3.2总结 4.实现一个bash解释器4.1内建命令 通过fork创建的子进程,会继承父进程的代码和数据,因此本质上还是在执行父进程的代码 进程替换可以将…

JavaScript 的编译与执行原理

文章目录 前言🧠 一、JavaScript 编译与执行过程1. 编译阶段(发生在代码执行前)✅ 1.1 词法分析(Lexical Analysis)✅ 1.2 语法分析(Parsing)✅ 1.3 语义分析与生成执行上下文 🧰 二…

NHANES指标推荐:FMI

文章题目:Exploring the relationship between fat mass index and metabolic syndrome among cancer patients in the U.S: An NHANES analysis DOI:10.1038/s41598-025-90792-9 中文标题:探索美国癌症患者脂肪量指数与代谢综合征之间的关系…

【JDBC】JDBC常见错误处理方法及驱动的加载

MySQL8中数据库连接的四个参数有两个发生了变化 String driver "com.mysql.cj.jdbc.Driver"; String url "jdbc:mysql://127.0.0.1:3306/mydb?useSSLfalse&useUnicodetrue&characterEncodingutf8&serverTimezoneAsia/Shanghai"; 或者Strin…

车载以太网驱动智能化:域控架构设计与开发实践

title: 车载以太网驱动专用车智能化:域控架构设计与开发实践 date: 2023-12-01 categories: 新能源汽车 tags: [车载以太网, 电子电气架构, 域控架构, 专用车智能化, SOME/IP, AUTOSAR] 引言:专用车智能化转型的挑战与机遇 专用车作为城市建设与工业运输…

如何利用技术手段提升小学数学练习效率

在日常辅导孩子数学作业的过程中,我发现了一款比较实用的练习题生成工具。这个工具的安装包仅1.8MB大小,但基本能满足小学阶段的数学练习需求。 主要功能特点: 参数化出题 可自由设置数字范围(如10以内、100以内) 支…

BGP路由策略 基础实验

要求: 1.使用Preva1策略,确保R4通过R2到达192.168.10.0/24 2.用AS_Path策略,确保R4通过R3到达192.168.11.0/24 3.配置MED策略,确保R4通过R3到达192.168.12.0/24 4.使用Local Preference策略,确保R1通过R2到达192.168.1.0/24 …

第9讲、深入理解Scaled Dot-Product Attention

Scaled Dot-Product Attention是Transformer架构的核心组件,也是现代深度学习中最重要的注意力机制之一。本文将从原理、实现和应用三个方面深入剖析这一机制。 1. 基本原理 Scaled Dot-Product Attention的本质是一种加权求和机制,通过计算查询(Query…

双向长短期记忆网络-BiLSTM

5月14日复盘 二、BiLSTM 1. 概述 双向长短期记忆网络(Bi-directional Long Short-Term Memory,BiLSTM)是一种扩展自长短期记忆网络(LSTM)的结构,旨在解决传统 LSTM 模型只能考虑到过去信息的问题。BiLST…

MySQL UPDATE 执行流程全解析

引言 当你在 MySQL 中执行一条 UPDATE 语句时,背后隐藏着一套精密的协作机制。从解析器到存储引擎,从锁管理到 WAL 日志,每个环节都直接影响数据一致性和性能。 本文将通过 Mermaid 流程图 和 时序图,完整还原 UPDATE 语句的执行…

亚马逊云科技:开启数字化转型的无限可能

在数字技术蓬勃发展的今天,云计算早已突破单纯技术工具的范畴,成为驱动企业创新、引领行业变革的核心力量。亚马逊云科技凭借前瞻性的战略布局与持续的技术深耕,在全球云计算领域树立起行业标杆,为企业和个人用户提供全方位、高品…

【实测有效】Edge浏览器打开部分pdf文件显示空白

问题现象 Edge浏览器打开部分pdf文件显示空白或显示异常。 ​​​​​​​ ​​​​​​​ ​​​​​​​ 问题原因 部分pdf文件与edge浏览器存在兼容性问题,打开显示异常。 解决办法 法1:修改edge配置 打开edge浏览器&#x…

RJ连接器的未来:它还会是网络连接的主流标准吗?

RJ连接器作为以太网接口的代表,自20世纪以来在计算机网络、通信设备、安防系统等领域中占据了核心地位。以RJ45为代表的RJ连接器,凭借其结构稳定、信号传输可靠、成本低廉等优势,在有线网络布线领域被广泛采用。然而,在无线网络不…

Redis持久化机制详解:保障数据安全的关键策略

在现代应用开发中,Redis作为高性能的内存数据库被广泛使用。然而,内存的易失性特性使得持久化成为Redis设计中的关键环节。本文将全面剖析Redis的持久化机制,包括RDB、AOF以及混合持久化模式,帮助开发者根据业务需求选择最适合的持…

DeepSeek 大模型部署全指南:常见问题、优化策略与实战解决方案

DeepSeek 作为当前最热门的开源大模型之一,其强大的语义理解和生成能力吸引了大量开发者和企业关注。然而在实际部署过程中,无论是本地运行还是云端服务,用户往往会遇到各种技术挑战。本文将全面剖析 DeepSeek 部署中的常见问题,提…

嵌入式培训之数据结构学习(五)栈与队列

一、栈 (一)栈的基本概念 1、栈的定义: 注:线性表中的栈在堆区(因为是malloc来的);系统中的栈区存储局部变量、函数形参、函数返回值地址。 2、栈顶和栈底: 允许插入和删除的一端…

RabbitMQ--进阶篇

RabbitMQ 客户端整合Spring Boot 添加相关的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> 编写配置文件&#xff0c;配置RabbitMQ的服务信息 spri…

Android Studio报错Cannot parse result path string:

前言 最近在写个小Demo&#xff0c;参考郭霖的《第一行代码》&#xff0c;学习DrawerLayout和NavigationView&#xff0c;不知咋地&#xff0c;突然报错Cannot parse result path string:xxxxxxxxxxxxx 反正百度&#xff0c;问ai都找不到答案&#xff0c;报错信息是完全看不懂…

关于网站提交搜索引擎

发布于Eucalyptus-blog 一、前言 将网站提交给搜索引擎是为了让搜索引擎更早地了解、索引和显示您的网站内容。以下是一些提交网站给搜索引擎的理由&#xff1a; 提高可见性&#xff1a;通过将您的网站提交给搜索引擎&#xff0c;可以提高您的网站在搜索结果中出现的机会。当用…