机器学*中的交叉熵

信息量

一件事发生的概率越*,其蕴含的信息量就越少,反之,若发生的几率越小,则蕴含的信息量就越*。例如,“太阳从东方升起”:这件事发生概率极*,*家都*以为常,所以不觉得有什么不妥的地方,因此蕴含信息量很小。但“国足踢入世界杯”:这就蕴含的信息量很*了,因为这件事的发生概率很小。若某事x的发生概率为P(x),则信息量的计算公式为:

I(x)=log(P(x))

其中,log表示自然对数,底数为e(也有资料使用底数为2的对数)。公式中,P(x)值落在0到1之间,画出上面函数在P01时的取值,图像如下。在概率值P趋向于0时,信息量趋向于正无穷,在概率值P趋向于1时,信息量趋向于0,这个函数能够满足信息量的基本想法。

信息熵

信息熵又称熵,熵可以表达数据的信息量*小。其本质是所有信息量的期望。期望是试验中每次可能结果的概率乘以其结果的总和。熵的公式如下:

H(X)=i=1nP(xi)log(P(xi))(X=x1,x2,x3,xn)

相对熵(KL散度)

如果我们对于同一个随机变量 x有两个单独的概率分布 P(x)Q(x),我们可以使用 KL 散度来衡量这两个分布的差异。相对熵的基本定义是:如果用P来描述目标问题,而不是用Q来描述目标问题,得到的信息增量。

在机器学*中,P往往用来表示样本的真实分布,Q用来表示模型所预测的分布,我们训练的目的就是让 P(x)Q(x)的差异越来越小。

KL散度的计算公式如下:

DKL(P||Q)=i=1nP(xi)log(P(xi)Q(xi))

其中n为事件的所有可能性。DKL的值越小,表示Q分布和P分布越接近.

交叉熵

我们分解相对熵的公式:

DKL(PQ)=i=1nP(xi)log(P(xi))i=1nP(xi)log(Q(xi))=H(P(x))+[i=1nP(xi)log(Q(xi))]

H(X)为之前的信息熵,后面那一坨其实就是交叉熵了,所以可以看到:KL散度 = 交叉熵 - 信息熵

所以交叉熵的公式如下:

H(P,Q)=i=1nP(xi)log(Q(xi))

从信息熵的公式我们知道,对于同一个数据集,其信息熵是不变的,所以信息熵可以看作一个常数,因此当KL散度最小时,也即是交叉熵最小时。所以在多分类任务中,KL散度(相对熵)和交叉熵是等价的,我们也就可以用交叉熵来当作损失函数。

posted @   GXX探索者  阅读(63)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示