KL divergence(KL 散度)详解
本文用一种浅显易懂的方式说明KL散度。
参考资料
KL散度本质上是比较两个分布的相似程度。
现在给出2个简单的离散分布,称为分布1和分布2.
分布1有3个样本,
其中A的概率为50%, B的概率为40%,C的概率为10%
分布2也有3个样本:
其中A的概率为50%,B的概率为10%,C的概率为40%。
现在想比较分布1和分布2的相似程度。
直观看上去分布1和分布2中样本A的概率是一样的,仅仅B和C的概率换了一下。
分布应该是相似的,但是如何量化来看呢。
可以这样做,用分布1的各个样本的概率和分布2样本概率做比值,相加再求平均。
现假设分布1的概率分布为P,分布2的概率分布为Q,
那么P(A) = 0.5, P(B)=0.4, P( C) = 0.1
Q(A) = 0.5, Q(B) = 0.1, Q( C) = 0.4,
各样本概率做比值之后为:
P(A)/Q(A) + P(B)/Q(B) + P( C)/Q( C) = 1+4+1/4
再对3个样本取平均: (1+4+1/4) / 3 = 1.75
这就是我们想要的分布1和分布2的相似度。
不过有一个问题,
可以看到P(B)和Q(B), P( C)和Q( C)仅仅概率做了交换,它们的相似度大小应该是一样的(仅仅方向不一样),
也就是说P(B)/Q(B), P( C)/Q( C)的绝对值应该是一样的,符号不一样。
但是现在,哪个分子大哪个结果就大,这是不应该的,
想要这样一个函数来解决这个问题,
f(4) = y
f(1/4) = -y,
这里的4为P(B)/Q(B), 1/4为P( C)/Q( C),
经过f(x)后得到的应该是同样的相似度大小,只是方向不一样,一个是变大的方向,一个是变小的方向,用负号表示方向的不同。
那么什么样的函数能满足f(x)呢,
可以取几个值画一下,你会发现,这个f(x)就是log(x)。
那么现在把刚才的相似度修改一下,
把简单的P(x)/Q(x)换成log(P(x) / Q(x)).
于是变为: ∑ 1 n l o g P ( x ) Q ( x ) / n \sum_{1}^{n} log\frac{P(x)}{Q(x)} / n 1∑nlogQ(x)P(x)/n
对样本取平均值表示每个样本的weight都是1/n,
不要取这么平均,把weight改为P(x),
那么就得到 ∑ 1 n P ( x ) l o g P ( x ) Q ( x ) \sum_{1}^{n} P(x) log\frac{P(x)}{Q(x)} 1∑nP(x)logQ(x)P(x)
这就是我们熟悉的KL散度,它比较的是分布P和分布Q的相似度。
“||”右边的Q表示是reference分布。
K L ( P ∣ ∣ Q ) = ∑ 1 n P ( x ) l o g P ( x ) Q ( x ) KL(P||Q) = \sum_{1}^{n} P(x) log\frac{P(x)}{Q(x)} KL(P∣∣Q)=1∑nP(x)logQ(x)P(x)
相关文章:
KL divergence(KL 散度)详解
本文用一种浅显易懂的方式说明KL散度。 参考资料 KL散度本质上是比较两个分布的相似程度。 现在给出2个简单的离散分布,称为分布1和分布2. 分布1有3个样本, 其中A的概率为50%, B的概率为40%,C的概率为10% 分布2也有3个样本: 其…...
AzerothCore@FreeBSD安装记录
尝试在FreeBSD系统下安装AzerothCore 首先安装相关软件 pkg install cmake mysql80-server boost-all装完mysql之后提示: MySQL80 has a default /usr/local/etc/mysql/my.cnf, remember to replace it with your own or set mysql_optfile"$YOUR_CNF_FILE i…...
vue .env配置环境变量
最近使用的不同的环境有点多了,接口文件ip一直在替换打包,看了下文档,有个方案使用.env配置不同的环境运行打包 vue 现在已经兼容了env ,无需下载 创建文件(根目录) 创建.env.development,.env.…...
ThreadLocal介绍
文章目录 ThreadLocal源码分析:set方法get方法remove方法 ThreadLocal内存泄漏问题 ThreadLocal ThreadLocal提供了线程局部变量,每个线程都可以通过set和get方法来对这个变量进行操作,但不会和其他线程的局部变量冲突,实现了线程…...
【Linux系统化学习】线程概念
目录 线程的概念 线程的引出 什么是线程 理解线程比进程更加的轻量化 线程的优点 现成的缺点 线程异常 线程用途 Linux进程VS线程 线程的简单现象 线程的概念 有关操作系统的书籍或者课本都会这样描述线程: 线程是比进程轻量化的一种执行流线程是进程内部…...
Redis集群模式
分片 面试题:为什么Redis的最大槽位是16384? 翻译一下作者的话: 解读一下:...
执行go get xxx报错
1、执行命令 go get github.com/go-redis/redis/v8 报错 : go: coding.jd.com/xxx/xxxxxxv0.0.0-xxxxxxxxxx: invalid version: git ls-remote -q origin in /users/douhao7/go/pkg/mod/cache/vcs/xxxxxxxxxxxxxx: exit status 128: 致命错误:could not read use…...
MATLAB基础语法与实践
文章目录 初级篇MATLAB简介特点 安装和配置界面介绍 中级篇基础语法变量表达式函数 数据类型整数和浮点数复数字符串单元数组 高级篇脚本与函数编写脚本编写函数编写 图形绘制数据分析 实践篇实例演示1:矩阵运算实例演示2:数据可视化 初级篇 MATLAB简介…...
智能边缘小站 CloudPond(低延迟、高带宽和更好的数据隐私保护)
智能边缘小站 CloudPond(低延迟、高带宽和更好的数据隐私保护) 边缘小站的主要功能是管理用户在线下部署的整机柜设施,一个边缘小站关联一个华为云指定的区域和一个用户指定的场地,相关的资源运行状况监控等。 边缘计算 迈入5G和AI时代,新…...
回归预测 | Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测
回归预测 | Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测(完整…...
LeetCode15:三数之和
题目描述 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组…...
【详识JAVA语言】面向对象程序三大特性之三:多态
多态 多态的概念 多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。 多态实现条件 在java中要实现多态,必须要满足如下几个条件,缺一不可…...
nginx(三)实现反向代理客户端 IP透传
正常情况下,客户端去访问代理服务器,然后代理服务器再取访问真实服务器,在真实服务器上,只能显示代理服务器的ip地址,而不显示客户端的ip地址,如果想让客户端的ip地址也能在真实服务端看见,这一…...
深入Java日志框架及其最佳实践
概述 在Java应用开发中,日志框架是确保应用稳定性和可观察性的关键组件。它帮助开发者记录应用的行为、诊断问题,并监控系统的健康状况。随着Java生态系统的不断发展,各种日志框架也应运而生,各有特点和优势。本文将详细探讨几个…...
threejs显示本地硬盘上的ply文件,通过webapi
由于ply文件是第三方提供的,threejs无法用绝路路径的方式显示ply 所以想通过webapi把ply通过url地址的方式给threejs 1.webapi部分 /// <summary>/// 获取PLY文件/// </summary>/// <returns></returns>[HttpPost(Name "GetPly&qu…...
代码随想录day10(2)字符串:反转字符串Ⅱ (leetcode541)
题目要求:给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前…...
【MySQL】_联合查询基础表
联合查询也称为多表查询,是将多个表联合到一起进行查询; 笛卡尔积是联合查询的基础,笛卡尔积其实就是一种排列组合,把两张表的记录尽可能地排列组合出n种情况: 以两张表:班级表与学生表为例,计…...
InnoDB存储引擎对MVCC的实现
MVCC MVCC的目的 在搞清楚MVCC之前,我们要搞懂一个问题,MVCC到底解决的是什么问题? 我用一句话概括,那就是为了解决读-写可以一起的问题! 在我们的印象里,InnoDB可以读读并发,不能读写并发,或者写写并发 这是很正常的想法,因为如果读写并发的化,会有并发问题 而对于写写…...
【精选】Java项目介绍和界面搭建——拼图小游戏 中
🍬 博主介绍👨🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 …...
C++ //练习 10.16 使用lambda编写你自己版本的biggies。
C Primer(第5版) 练习 10.16 练习 10.16 使用lambda编写你自己版本的biggies。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 /*******************************************************************…...
为什么你的ChatGPT演讲稿总被说“像机器人”?深度拆解人类共情节奏建模与提示词嵌入技术
更多请点击: https://intelliparadigm.com 第一章:为什么你的ChatGPT演讲稿总被说“像机器人”? 当你精心调用 ChatGPT 生成一篇 800 字的 TED 风格演讲稿,满怀期待地朗读给同事听,却收到一句扎心反馈:“很…...
【限时公开】ChatGPT演讲稿写作的“三秒钩子公式”:前3秒抓住注意力,已助867位技术管理者拿下关键汇报
更多请点击: https://intelliparadigm.com 第一章:【限时公开】ChatGPT演讲稿写作的“三秒钩子公式”:前3秒抓住注意力,已助867位技术管理者拿下关键汇报 在技术汇报场景中,听众平均注意力窗口仅剩2.8秒——这是微软研…...
【DeepSeek日志分析黄金方案】:20年SRE亲授——从TB级日志中5分钟定位P0故障的7大实战模式
更多请点击: https://kaifayun.com 第一章:DeepSeek日志分析方案的演进逻辑与核心哲学 DeepSeek日志分析方案并非从零构建的技术堆砌,而是伴随模型训练规模跃迁、推理服务复杂度攀升、可观测性需求深化而持续演化的系统性实践。其底层哲学始…...
解密Lua字节码反编译:unluac架构深度解析与实战指南
解密Lua字节码反编译:unluac架构深度解析与实战指南 【免费下载链接】unluac fork from http://hg.code.sf.net/p/unluac/hgcode 项目地址: https://gitcode.com/gh_mirrors/un/unluac 在Lua生态系统中,字节码反编译技术对于逆向工程、代码审计和…...
DeepSeek-R1量化部署实战指南(含TensorRT+AWQ+GGUF三引擎对比评测)
更多请点击: https://intelliparadigm.com 第一章:DeepSeek-R1量化部署方案概览 DeepSeek-R1 是一款高性能开源大语言模型,其量化部署旨在平衡推理精度、显存占用与吞吐效率。本章聚焦于面向生产环境的轻量化落地路径,涵盖权重量…...
OpenAI破解80年数学猜想:AI首次完成原创性科学突破
2026年5月21日,一个普通的工作日,数学界却迎来了一场地震。OpenAI的内部通用推理模型,独立证明了离散几何领域一个悬置近80年的核心猜想——而且不是证明了它成立,而是直接推翻了它。 目录 引言:一个简单到小学生都能理解的问题 Erdős单位距离猜想:80年的数学悬案 AI突破…...
JMeter接口测试进阶:从功能验证到生产级性能工程
1. 这不是“点点点就能跑通”的接口测试,而是你真正能扛住压测的底气很多人第一次打开 JMeter,以为它只是个“图形化 Postman”——填 URL、选方法、点执行,看到绿色 Success 就觉得“接口测完了”。我带过三届测试团队,几乎每届都…...
Android Studio中文界面汉化终极指南:5分钟告别英文困扰
Android Studio中文界面汉化终极指南:5分钟告别英文困扰 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为Androi…...
别再重启了!Win11开机卡死/间歇性卡顿的终极排查与修复指南(附免费工具)
Win11系统卡顿终极自救指南:从根源排查到永久修复 每次开机都像在玩俄罗斯轮盘赌——今天Win11会卡死吗?鼠标指针变成沙漏图标的那一刻,血压瞬间飙升的场景想必每个Win11用户都经历过。不同于网上那些"重启试试"的敷衍建议…...
Stable Video vs. Runway ML vs. Kling:学习曲线强度TOP3工具横向测评(含GPU资源消耗比、提示词容错阈值、迭代收敛周期)
更多请点击: https://kaifayun.com 第一章:Stable Video vs. Runway ML vs. Kling:学习曲线强度TOP3工具横向测评(含GPU资源消耗比、提示词容错阈值、迭代收敛周期) 在生成式视频建模领域,Stable Video Di…...
