DNN中最常使用的离散数值优化目标,莫过于交差熵。两个分布p,q的交差熵,与KL距离实际上是同一回事。

$-\sum plog(q)=D_{KL}(p\shortparallel q)-\sum plog(p)$

交差熵实际上就是KL距离减去熵。

监督学习时,p是目标的分布,无法被改变,能通过训练改变的只有拟合出的分布q,所以loss需要最小化交差熵的时候,实际上就是在最小化KL距离。

熟悉KL距离定义的话,就知道交差熵实际上是要求p与q分布尽量接近,这样就能使用相近的bit数来编码信息。

前面的文章已经论证了分类问题中,最大熵必然导致玻尔兹曼分布。

这里补充一点,关于最大熵与最大似然在分类问题中的等价证明。

假设N个样本在K个分类下,当N足够大,使nk遵循真实概率分布pk,既$n_{k}/N\approx p_{k}$,且N个样本相互独立。

对于整个系统而言,最大似然里的联合概率$p(x_{1},x_{2}\text{......}x_{N})=\prod\limits _{i=1}^{N}p(x_{i})=\prod\limits _{k=1}^{K}p(x=k)^{n_{k}}$

那么$log(p)=\sum\limits _{k=1}^{K}n_{k}log(p(k))=N\sum\limits _{k=1}^{K}p_{k}log(p_{k})=-NH$

等等,最大似然与熵虽然关联了起来,但是有个负号在前面,最大似然意味着平均每个样本的熵被最小化?这明显是不符合常理的。

问题的根本其实在于,最大熵与最大似然其实是作用在两个不同分布上的操作。

先说最大似然,这个操作是在训练模型的时候,更新权重使用梯度下降时,将预测值y_hat的联合概率进行最大似然,既最大化$log(p(\hat{\boldsymbol{y}}))$,所以需要$\frac{\partial log(p(\hat{\boldsymbol{y}}))}{\partial w}=0$

然后最大熵的操作,是针对真实分布p(y),而非预测目标p(y_hat)的,既最大化$H(p(\boldsymbol{y}))$。因为更新权重无法影响到真实分布p(y),所以$\frac{\partial H(Y)}{\partial w}$这类的操作是无意义的。

最大熵的作用,更倾向于描述一个真实分布的样本,其内在遵循的一个客观规律,既热力学第二定律。

那么,上面分类模型里的关联似然与熵负号,又代表或暗示了什么呢?

我们知道,随着训练的进行,预测分布Y_hat与Y的交互信息是要逐渐增加的,而交互信息与熵又存在这样的关系

$I(\hat{Y};Y)=H(Y)-H(Y\mid\hat{Y})$

减小的不是$H(Y)$,因为无论怎么训练权重参数,它都不受影响。

真正减少的是$H(Y\mid\hat{Y})$,通过不断减少$H(Y\mid\hat{Y})$才能使预测值更接近真实值。

在给定预测值的计算方法$p(\hat{y}=k)=n_{k}/N$之后,我们已知先验分布的p_k后,未知的真实分布Y的混乱程度实际上是降低了。这也很符合直观的理解,我们已知的信息越多,能预测出的分布与真实分布就越接近,真实分布Y的混乱度既熵也就越低,两个分布的KL距离也就越近。

所以,在我们训练机器学习模型,使似然函数逐渐趋向最大化时,给定训练获得的知识$\hat{Y}$之后描述真实分布的熵$H(Y\mid\hat{Y})$就减小了。

$log(p)=-NH(Y\mid\hat{Y})$

最大熵与最大似然,以及KL距离。的更多相关文章

  1. (转载)KL距离,Kullback-Leibler Divergence

    转自:KL距离,Kullback-Leibler Divergence   KL距离,是Kullback-Leibler差异(Kullback-Leibler Divergence)的简称,也叫做相对 ...

  2. [NLP自然语言处理]计算熵和KL距离,java实现汉字和英文单词的识别,UTF8变长字符读取

    算法任务: 1. 给定一个文件,统计这个文件中所有字符的相对频率(相对频率就是这些字符出现的概率——该字符出现次数除以字符总个数,并计算该文件的熵). 2. 给定另外一个文件,按上述同样的方法计算字符 ...

  3. KL距离,Kullback-Leibler Divergence

    http://www.cnblogs.com/ywl925/p/3554502.html http://www.cnblogs.com/hxsyl/p/4910218.html http://blog ...

  4. 各种形式的熵函数,KL距离

    自信息量I(x)=-log(p(x)),其他依次类推. 离散变量x的熵H(x)=E(I(x))=-$\sum\limits_{x}{p(x)lnp(x)}$ 连续变量x的微分熵H(x)=E(I(x)) ...

  5. 【转载】 KL距离(相对熵)

    原文地址: https://www.cnblogs.com/nlpowen/p/3620470.html ----------------------------------------------- ...

  6. KL距离(相对熵)

    KL距离,是Kullback-Leibler差异(Kullback-Leibler Divergence)的简称,也叫做相对熵(Relative Entropy).它衡量的是相同事件空间里的两个概率分 ...

  7. 深度学习(六十六)生成模型、最大化似然、KL散度

  8. KL散度、JS散度、Wasserstein距离

    1. KL散度 KL散度又称为相对熵,信息散度,信息增益.KL散度是是两个概率分布 $P$ 和 $Q$  之间差别的非对称性的度量. KL散度是用来 度量使用基于 $Q$ 的编码来编码来自 $P$ 的 ...

  9. PRML读书会第十章 Approximate Inference(近似推断,变分推断,KL散度,平均场, Mean Field )

    主讲人 戴玮 (新浪微博: @戴玮_CASIA) Wilbur_中博(1954123) 20:02:04 我们在前面看到,概率推断的核心任务就是计算某分布下的某个函数的期望.或者计算边缘概率分布.条件 ...

随机推荐

  1. k8s外部访问内部的service

    如果不指定Service的spec.type的值,创建的Service的类型默认为ClusterIP类型.这种类型的Service只会得到虚拟的IP和端口,只能在Kubernetes集群内部被访问. ...

  2. 深入理解Java虚拟机读书笔记5----虚拟机字节码执行引擎

    五 虚拟机字节码执行引擎   1 运行时栈帧结构     ---栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,是虚拟机运行时数据区中的虚拟机栈的栈元素.     ---栈帧中存储了方法的局部变 ...

  3. 蒙特卡洛树,AMAF,Rave浅析

    蒙特卡洛树搜索: MCTS使用蒙特卡洛模拟来估计每个节点的价值. 其默认策略为贪婪算法, 即每次选择价值最高的节点进行模拟, 在每次模拟得到结果后, 将结果反馈回每个上级节点, 更新节点价值. 通常来 ...

  4. DataGridView添加的数据最后一步无法生效的问题。

    在做项目时,需要使用到大量固定的参数,使用时只需修改一部分定值即可,所以就选用DataGridView控件进行循环添加,数据添加完成,一切正常,但是在修改数据时发现,每一次修改的数据的操作的最后一步总 ...

  5. LevelDB源码分析-Version

    Version VersionSet类 VersionSet管理整个LevelDB的当前状态: class VersionSet { public: // ... // Apply *edit to ...

  6. spring框架校验自定义注解

    起因: 项目开发时遇到一个问题是对于金额类型的字段,数据库中格式一般为BigDecimal类型,两位小数点,然后在接口定义中如果不定义成String类型的话,就不能使用@pattern注解限定格式,而 ...

  7. tornado 基于MongoDB存储 session组件开发

    1.开发伊始 根据源码中RequestHandler类中发现__init__函数中会调用自身initialize函数,此函数中为pass,即可以围绕initialize开发一系列的组件 2.开发实现 ...

  8. MYSQL批量删除大量数据

    DELETE FROM '表' WHERE '字段'=1 会发现删除失败,因为lock wait timeout exceed的错误: 通过LIMIT参数分批删除,因为如果不用limit,删除大量数据 ...

  9. woff/woff2字体404找不到

    每次控制台都报这个错,很纳闷,服务器上明明放了字体文件,怎么找不到呢 今天突然想起来,IIS的MIME类型要配置一下 之前部署网站,一个链接下载app的时候,IIS就不识别apk格式的文件,尽管服务器 ...

  10. step_by_step_记录一个javascript字符串处理问题

    记录一个javascript字符串处理的问题 这一天下班,技术QQ群里的大神提出了一个问题,带着问题去思考. ? '---9890.999008-555555-55555555----' 对于这样的字 ...