首页 > 其他分享 >交叉熵、KL 散度 | 定义与相互关系

交叉熵、KL 散度 | 定义与相互关系

时间:2024-07-25 12:39:46浏览次数:9  
标签:mathbf log 交叉 text 散度 KL


1 KL 散度

对于离散概率分布 \(P\) 和 \(Q\) ,KL 散度定义为:

\[\text{KL}(P \| Q) = -E_{x\sim P}\log P(x)-\log Q(x) \\ =\sum_{\mathbf{x}} P(\mathbf{x}) \log \frac{P(\mathbf{x})}{Q(\mathbf{x})} \]

对于连续概率分布,定义为:

\[\text{KL}(P \| Q) = \int p(\mathbf{x}) \log \frac{p(\mathbf{x})}{q(\mathbf{x})} d\mathbf{x} \]

其中,\(p(\mathbf{x})\) 是 \(P\) 的概率密度函数,\(q(\mathbf{x})\) 是 \(Q\) 的概率密度函数。

KL 散度的性质:

  1. 非负性:KL 散度总是非负的,\(\text{KL}(P \| Q) \geq 0\)。
  2. 不对称性:KL 散度不是对称的,即 \(\text{KL}(P \| Q) \neq \text{KL}(Q \| P)\)。
  3. 零点:当 \(P\) 和 \(Q\) 完全相同时,\(\text{KL}(P \| Q) = 0\)。
  4. 不满足三角不等式:KL 散度不满足传统意义上的三角不等式。

2 交叉熵

交叉熵(cross-entropy)和 KL 散度联系密切,也可以用来衡量两个分布的差异。

对于离散概率分布 \(P\) 和 \(Q\) ,交叉熵定义为:

\[H(P,Q)=-E_{x\sim P}\log Q(x)=-\sum P(x_i)\log Q(x_i) \]

对于连续概率分布,定义为:

\[H(P,Q) = -\int p(\mathbf{x}) \log q(\mathbf{x}) d\mathbf{x} \]

可以看出,\(H(P,Q)=H(P)+D_\text{KL}(P \| Q)\) ,其中 \(H(P)\) 是 P 的熵。

性质:

  1. 非负性;
  2. 和 KL 散度相同,交叉熵也不具备对称性,即 \(H(P,Q)\neq H(Q,P)\);
  3. 对同一个分布求交叉熵,等于对其求熵。


标签:mathbf,log,交叉,text,散度,KL
From: https://www.cnblogs.com/moonout/p/18322747

相关文章

  • 熵,交叉熵,Focalloss
    https://zhuanlan.zhihu.com/p/149186719香农首次提出熵的定义,目的寻找一种高效/无损地编码信息的方法:以编码后数据的平均长度来衡量高效性,平均长度越小越高效;同时还需满足“无损”的条件,即编码以后不能呢个有原始信息的丢失。所以熵的定义是:无损编码事件信息的最小平均编码长度......
  • Python 无法 pickle 自定义类型
    我正在尝试在ProcessPool中运行一个函数,该函数将通过读取python文件并运行生成的类中的方法来加载一些自定义类。我遇到的错误是TypeError:cannotpickle'generator'object该方法需要返回一个生成器。我该如何解决这个问题,谢谢。我用谷歌搜索但没有运气。......
  • MKL库---cblas_?copy
    提示:该函数属于BLASLevel1RoutinesandFunctions章节文章目录前言一、cblas_?copy函数二、使用示例1.引入库2.使用cblas_?copy函数进行向量复制操作总结前言BLASLevel1RoutinesandFunctions章节主要提供向量与向量之间的操作函数,该函数在Intel官网说明链......
  • 使用ublacklist屏蔽某度
    谷歌浏览器,已升级到最新版,uBlacklist插件也已安装设置如下:内容:baidu.com*://*.baidu.com/*tieba.baidu.com*.baidu.*/勾选要启用的搜索引擎:启用后效果如下:点开发现确实屏蔽掉某度了,感觉整个世界瞬间清净晒:惜秦皇汉武,略输文采;唐宗宋祖,稍逊风骚~冯唐易老,李广难封。......
  • 我们如何从 pickle 文件中获取注释,这些注释将告诉我们 pickle 文件中存储的对象数量和
    有人在Pickle文件中存储了多个对象。现在我想取消该文件,但我如何知道Pickle文件中存储了多少对象?是否有任何注释或其他内容可供我们获取有关Pickle文件的信息?你不能直接从pickle文件本身获取注释来说明存储了多少个对象或这些对象的类型。Pickle文件不存储此类元数......
  • echarts的markline自定义起始位置和终点位置
    letmarkPoint=[10,20];markLine:{symbol:["none","none"],//去掉箭头silent:true,label:{show:true,formatter:"{b}",offset:[-......
  • sklearn 的 DbScan 与 Rapids 的 Dbscan
    我正在尝试与GPU配合使用的DbScanRapids版本。我用Python编写了一段简短的代码,用于查找3D随机生成点中的簇,当我使用该代码时,我意识到CPU的方式由于某种我不熟悉的原因,它比GPU更快:fromsklearn.clusterimportDBSCANfromcuml.clusterimportDBSCANascuDB......
  • Kbdgkl.dll的功能与其损坏后的修复步骤
    kbdgkl.dll是一个动态链接库(DynamicLinkLibrary)文件,通常与Windows操作系统中的键盘布局和输入法支持相关。这个DLL文件负责处理特定语言的键盘输入,例如,kbdgkl.dll可能与希腊语键盘布局相关联,用于在Windows系统中正确解析和显示希腊字母。当kbdgkl.dll文件损坏或缺失时,解决k......
  • mkl学习
    MathKernelLibrary)是Intel提供的一个高性能的数学库,它提供了广泛的数学函数来优化各种数学运算,包括线性代数、快速傅里叶变换(FFT)、随机数生成等。MKL库也提供了内存管理函数,如mkl_malloc()和mkl_free(),以及线性代数函数,如cblas_dgemm()。下面我将分别介绍这些函数的用法:mkl_ma......
  • 交叉编译ethtool(ubuntu 2018)
    参考文章:https://www.cnblogs.com/nazhen/p/16800427.htmlhttps://blog.csdn.net/weixin_43128044/article/details/1379539131、下载相关安装包//ethtool依赖libmulgitclonehttp://git.netfilter.org/libmnl//ethtool源码gitclonehttp://git.kernel.org/pub/sc......