ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

熵、KL散度(相对熵)、交叉熵

2022-04-13 19:35:14  阅读:191  来源: 互联网

标签:概率 交叉 样本 散度 KL 分布


目录

熵定义

\(s(x) = - \sum_iP(x_i)log_bP(x_i)\)

  • 熵的定义表明了一个事件所含有的信息量,上式中\(x_i\)表示一个事件,\(P(x_i)\)表示该事件发生的概率。由定义可知,如果某事件发生概率为1,则它的熵为0。
  • 独立事件的信息量可叠加。
  • 由于事件发生的概率在[0,1]之间,因此熵的定义中有负号,来抵消负的对数函数值,使得最终计算得到的熵是正的。
  • 需要注意的是,熵都是基于概率计算的,具体计算中跟样本取值没有关系

KL散度(相对熵)定义

  • 离散事件的KL散度定义为:
    \(D_{KL}(A||B) = \sum_iP_A(x_i)log(\frac{P_A(x_i)}{P_B(x_i)}) = \sum_iP_A(x_i)logP_A(x_i) - \sum_iP_A(x_i)logP_B(x_i)\)
  • 连续事件的KL散度定义为:
    \(D_{KL}(A||B) = \int a(x)log(\frac{a(x)}{b(x)})\)
  • KL散度可以用来衡量两个分布(事件)的不同,即对于两个单独的概率分布A和B,KL散度可以用来表示从事件A的角度看,事件B有多大不同,或者反过来从B的角度看,事件A有多大不同。
  • KL散度不具有对称性。

交叉熵

\(H(A, B) = -\sum_i P_A(x_i)log(P_B(x_i))\)

  • 交叉熵表示从事件A的角度看,如何描述事件B。
  • 事件A与B的交叉熵形式上就是A与B的KL散度公式中的后半部分。
  • A与B的交叉熵=A与B的KL散度-A的熵。
  • 交叉熵不具有对称性。

机器学习与交叉熵

  • 在机器学习的有监督分类任务中通常采用交叉熵作为损失函数,本质上是对KL散度的一种简化。
  • 概率论中,随机变量是随机事件的一种数学表示,随机变量的分布则是一个函数,将随机变量的不同取值映射到该取值发生的概率上。
  • 在有监督分类任务中,我们最终训练得到的分类模型本质上就是一个映射,将一个样本映射到该样本发生的概率上(通常对分类结果进行归一化,softmax),因此,训练的目的本质上就是为了学习一个映射,相当于学习一个随机变量的分布。假设每条数据样本均为独立同分布采样,我们希望学习到的分布与真实分布相同,但是由于真实分布无法获得(不可能采集到所有样本),因此用训练集的分布来代替真实分布,因此可以用训练集分布(真实分布)关于模型分布的KL散度作为损失函数,希望模型训练得到的分布尽可能与真实分布一致。
  • 由于KL散度的公式中的第一项是真实分布的熵,而我们是用训练集的分布来代替的真实分布,在机器学习模型的优化过程中训练集的分布是不会改变的,无法优化。因此为了简单起见,可以只使用KL散度的第二项作为损失函数,即交叉熵作为损失函数。
  • 在具体实现中,可以认为训练集中(样本,类别)-> 概率 表示了一种真实分布,当然这里的概率一般采用one-hot编码表示。比如(样本1,猫)-> 1 表示(样本1,猫)发生的概率为1,那么当然这个样本一定是属于猫这一类。在模型预测的输出中,会输出一个分类向量,分类向量每个元素分别表示样本1属于某一类的概率,计算真实概率与模型输出之间的交叉熵即可作为模型损失。
  • 刚开始学机器学习时总觉得困惑的有两点,一是既然模型训练的目的是学习数据的真实分布,那么为什么计算损失的时候只计算标签和输出之间的损失,是怎么跟数据的分布联系起来的,实际上计算分布之间的差异用的就是概率,没有用到实际的样本值。二是会认为数据样本是随机变量的取值,而对应的类别是概率,但实际上数据样本和类别都是数据的一部分,标签是对应的概率,在具体实现中是没有类别对应的具体的数字的,而是以概率或者说标签来给出了类别。因此,模型输出的n维预测向量隐式表示了随机向量n个取值(虽然我们看到的只有一个数据样本,但是与隐含的n个类别一起形成了n个取值)对应的概率,且这些概率相加为1,有取值有概率,可以看成是个分布,当然可以用交叉熵来表示差异。这样问题又来了,相当于每个训练样本都对应了一个分布,然后针对每个训练样本计算交叉熵,通过拟合每个样本,最终拟合整个训练集?

标签:概率,交叉,样本,散度,KL,分布
来源: https://www.cnblogs.com/chkplusplus/p/16141720.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有