关于熵、相对熵以及交叉熵的部分理解

熵 (entropy) 这一表述最早由热力学主要奠基人、德国物理学家克劳修斯 (Rudolf Julius Emanuel Clausius) 提出,定义为可逆过程中输入热量相对于温度的变化率,即
$$dS = \frac {dQ}{T}$$
上述表示形式与如今我们所熟知的信息熵存在着较大差异,因为香农 (Claude E.Shannon) 在信息论中所定义的熵引自玻尔兹曼 (Ludwig E.Boltzmann) 所提出的熵的统计物理学解释。玻尔兹曼建立了熵 S 和系统宏观态所对应的可能的微观态数目 W 的联系,即 $S\propto lnW$。而后普朗克 (Max Karl Ernst Ludwig Planck) 引入比例系数 $k_{B}$,得到普朗克-玻尔兹曼公式
$$S = k_{B}\cdot lnW$$
上述公式的等价表述形式为
$$S=k_{B}\sum_{i}p_{i}ln{\frac{1}{p_{i}}}$$
其中 i 标记了所有可能出现的微观态,$p_{i}$ 表示可能微观态出现的概率。从上述公式可以看出,此处用概率的倒数,即 $\frac{1}{p_{i}}$,表示对应的可能的微观态数目。一种不太严谨但是直观的解释是对于一个出现概率为$p_{i}$的微观态,可以认为其包含的微观态数目是$\frac{1}{p_{i}}$。由此我们可以引出信息论当中的香农熵
$$S=k\cdot\sum_{i=1}^{n}p_{i}log_{2}\frac{1}{p_{i}}$$

至于此处为何对数底数从 e 变成了 2,从数学角度来看区别甚微,但香农是基于另一种视角在这里定义了一种度量,用掷硬币来类比即微观态数目 $\frac{1}{p_{i}}$ 所对应的硬币的数量。具体地,若微观态数量为 $2^{3}$, 则对应 3 枚硬币(每一枚硬币都有正反两种可能,共可有序给出 8 种组合),所对应硬币数量越多,则熵越大,因此可以理解为将“硬币”作为熵的度量。事实上,这枚“硬币”的单位被称比特 (bit),而之所以取以 2 为底的对数,是因为计算机当中的信息存储方式是“0”和“1”,3 bit的信息意味着需要 3 位二进制数才能完全确定。以汉字为例,整个汉语体系共包含常用字7000字左右,若所有常用字的使用是等概率的,则 $s=log_{2}7000\approx 13$,这意味着整个汉字体系包含约 13 bits的信息量。但7000字等频率出现是假设中的情况,生活中高频使用的汉字仅占百分之十左右,因此汉字的比特数一般只有 5 bits左右。即一部十万字的小说,包含信息约 500000 bits,也就是 0.0625 MB。(但是文件的实际大小视具体压缩算法而定,差异可能很大)。

对于带约束函数 $y=\sum_{i=1}^{n}p_{i}log_{2}\frac{1}{p_{i}},s.t. \sum_{i=1}^{n}p_{i}=1$,构造拉格朗日函数 $L(p_{1},p_{2},...,p_{n},\lambda)=\sum_{i=1}^{n}p_{i}log_{2}\frac{1}{p_{i}}-\lambda(\sum_{i=1}^{n}p_{i}-1)$ 并求其满足 KKT 条件的解
$$\left\{\begin{matrix} \frac{\partial L}{\partial p_{i}}=log_{2}\frac{1}{p_{i}}-\frac{1}{ln2}-\lambda=0 (i=1,2...,n) \\\frac{\partial L}{\partial \lambda}=\sum_{i=1}^{n}p_{i}-1=0 \end{matrix} \right.$$
由上述方程组易知 $p_{1}=p_{2}=...=p_{n}=\frac{1}{n}$ 是其中的一组解,进一步,根据二阶条件 $d^{T}\triangledown_{x}^{2}Ld\leq 0$ 对于所有可行方向 d 均成立知上述解是带约束函数极大值。

因此,当所有样本等概率出现时,系统的熵达到最大值;同时在所有样本等概率出现的情况下,样本数越多熵越大 ($S=k\cdot log_{2}n$)。这意味着,一个系统越有序,其熵越低,若系统变量时完全确定的,即 $p=1$ 时,S=0,此时熵值达到最小值;一个系统不确定性越高,则熵值越高。

回到最本质的问题上,到底什么是信息熵 (香农熵),或者信息熵这样一个概念有什么感性的解释?我们可以狭义的认为信息熵是一个事件信息量的度量。当一个事件的不确定性越大,我们想要得到确切的答案所需要的信息越多,即该事件的信息量与其不确定性直接相关。信息熵和信息量在数值上一致,获取信息的目的在于降低不确定性,即降低事件的熵,事件本身的信息熵越大,降低不确定性所需要的信息就越多。

相对熵

由熵的基本概念,在此引出相对熵。相对熵 (Relative Entropy) 也叫KL散度 (Kullback-Leibler divergence),用以衡量两分布间的差异。

设$p(x)$和$q(x)$是离散随机变量$X$的两个概率分布,则p对q的相对熵为
$$D_{KL}(p||q)=\sum_{x}p(x)log_2\frac{p(x)}{q(x)}=\mathbb{E}_{x\sim p}(log_2p(x)-log_2q(x))$$

值得注意的是相对熵并不具有对称性,即一般情况下 $D_{KL}(p||q)=D_{KL}(q||p)$ 并不成立。

交叉熵

交叉熵旨在衡量真实分布和模拟分布的近似程度,常用作机器学习、深度学习中作为分割等任务的损失函数。设 $p(x)$ 是真实数据分布,$q(x)$ 是模拟数据分布,则交叉熵为
$$S_{CE}=\sum_{x}p(x)log_2\frac{1}{q(x)}$$

当模拟数据分布越来越近似真实分布时,交叉熵数值将逐渐减小,当$q(x)=p(x)$时取得最小值。具体到深度学习中的多类别语义分割应用时,对于某像素,设置其真实类别为标签值为 1,其他类别为0;网络在输出结果时经 softmax 归一化输出 N 张结果图,当标签对应 map 相同位置处为 1 时交叉熵损失取得最小值为 0,即 $Loss=-log\frac{e^{x_{label}}}{\sum_{i=1}^{N}e^{x_{i}}}=0$。

同时我们注意到,熵 $S$、相对熵 $D_{KL}$ 以及交叉熵 $S_{CE}$ 间存在关系
$$D_{KL}=S_{CE}-S$$
因此我们可以看到在深度学习相关任务中使用相对熵 $D_{KL}$ 和交叉熵 $S_{CE}$ 做损失函数没有本质区别。

你可能感兴趣的:(机器学习,深度学习,算法,图像处理)