信息量、信息熵、交叉熵、KL散度、JS散度、Wasserstein距离

前两篇介绍了目标检测中的回归损失函数,本来这篇打算介绍目标检测中的分类损失函数。但是介绍classification loss function自然绕不过交叉熵,所以还是简单的把信息论中的一些概念在这里普及下。(以前研究GAN网络时在CSDN写过类似的概念,这里迁移一下)

信息量

也叫做香农信息量,常用于刻画消除随机变量X在x处的不确定性所需的信息量大小。假设只考虑连续型随机变量的情况,设p为随机变量X的概率分布,即p(x)为随机变量X在X=x处的概率密度函数值,随机变量X在x处的香农信息量定义为:

信息量的单位为比特。上式只定义了随机变量在一个点处的香农信息量。

信息熵

衡量随机变量X在整个样本空间的总体香农信息量可以通过信息熵来表示,即香农信息量logp(x)的数学期望,所有X=x处的香农信息量的和,由于每一个x的出现概率不一样,需要用p(x)加权求和,用于刻画消除随机变量X的不确定性所需要的总体信息量的大小。信息熵的定义如下:

交叉熵

假设q(x)是用来拟合p(x)的概率分布,x属于p的样本空间,交叉熵用于衡量q在拟合p的过程中,用于消除不确定性而充分使用的信息量大小。常作为神经网络的损失函数使用,由于在每一个点X=x处q的香农信息量为-logq(x),也就是在点X=x处,q消除不确定性而充分使用的信息量为-logq(x),即衡量q在X=x处为了拟合p所作的努力,那么就可以计算出在整个样本空间上q消除不确定性二充分使用的总体信息量,即-logq(x)的数学期望,由于每个x的权重为p(x),因此交叉熵H(p,q)的定义为:

KL散度

两个概率分布p和q的KL散度也叫相对熵,用于刻画概率分布q拟合概率分布p的程度,p为真实数据的概率分布,q为随机噪声生成数据的概率分布,生成对抗网络中q分布拟合p分布的过程中,如果q完全拟合p,则H(p)=H(p,q),如果q拟合p不充分,则产生的信息损耗H(p)-H(p,q)就是p和q的KL散度,因此p和q的相对熵D(p||q)为信息熵H(p)与交叉熵H(p,q)的差,衡量q拟合p的过程中产生的信息损耗,损耗越少,q拟合p也就越好,通俗点说KL散度是用来度量使用基于Q的编码来编码来自P的样本平均所需的额外的比特个数。KL散度的定义为:

JS散度

由于KL散度并不是一个真正的度量或距离函数,确切的说其仅用于衡量一个分布相比另一个分布的信息损失,存在不对称的缺点,即D(P||Q)!=D(Q||P) 。故引出JS散度,(a)JS散度的值域范围是[0,1],相同为0,相反为1。(b)具有对称性JS(P||Q)=JS(Q||P) 。因此JS散度的定义为:

Wasserstein距离

由于KL散度和JS散度存在同一个问题,如果p分布和q分布相距很远完全没有重叠,则会导致梯度消失。故引出了Wasserstein距离,即使两个分布的支撑集没有重叠仍能反映两个分布的远近。直观上可以把E(x,y)∼γ[||x−y||]理解为在γ这个路径规划下把土堆p挪到土堆q所需要的消耗。而Wasserstein距离就是在最优路径规划下的最小消耗。所以Wesserstein距离又叫Earth-Mover距离。

总而言之:信息量代表的是一种不确定性;信息熵代表的是不确定性的期望值;KL散度,JS散度,交叉熵都可以用来衡量两个概率分布之间的差异性;因为训练数据的分布已知所以交叉熵等价于KL散度。

你可能感兴趣的:(信息熵,python,机器学习,人工智能,算法)