本文由 简悦 SimpRead 转码, 原文地址 hsinjhao.github.io
KL 散度简介 KL 散度的概念来源于概率论和信息论中。
[](#KL散度简介 "KL散度简介")KL 散度简介
KL 散度的概念来源于概率论和信息论中。KL 散度又被称为:相对熵、互熵、鉴别信息、Kullback
熵、Kullback-Leible
散度 (即 KL 散度的简写)。在机器学习、深度学习领域中,KL 散度被广泛运用于变分自编码器中 (Variational AutoEncoder
, 简称 VAE)、EM 算法、GAN 网络中。
[](#KL散度定义 "KL散度定义")KL 散度定义
KL 散度的定义是建立在熵 (Entropy) 的基础上的。此处以离散随机变量为例,先给出熵的定义,再给定 KL 散度定义。
若一个离散随机变量 $\mathbf{X}$的可能取值为 $X=\{x_1,x_2,\cdots,x_n\}$,而对应的概率为 $p_i = p(X = x_i)$,则随机变量 $\mathbf{X}$的熵定义为:
$$H(X) = - \sum_{i=1}^{n} p(x_i) \log p(x_{i})$$
规定当 $p(x_i) = 0$时,$p(x_i) \log p(x_i) = 0$
若有两个随机变量 $\mathbf{P、Q}$,且其概率分布分别为 $p(x)、q(x)$,则 $p$相对 $q$的相对熵为:
$$D_{KL}(p||q) = \sum_{i=1}^{n}p(x) \log \frac{p(x)}{q(x)}$$
之所以称之为相对熵,是因为其可以通过两随机变量的交叉熵 (Cross-Entropy) 以及信息熵推导得到:
针对上述离散变量的概率分布 $p(x)、q(x)$而言,其交叉熵定义为:
$$\begin{aligned} H(p,q) = & \sum_{x}p(x) \log \frac{1}{q(x)} \\ = & - \sum_{x} p(x) \log q(x) \end{aligned}$$
在信息论中,交叉熵可认为是对预测分布 $q(x)$用真实分布 $p(x)$来进行编码时所需要的信息量大小。
因此,KL 散度或相对熵可通过下式得出:
$$\begin{aligned} D_{KL}(p||q) = & H(p,q)-H(p) \\ =& - \sum_{x} p(x) \log q(x) - \sum_{x}-p(x)\log p(x)\\ =& -\sum_{x} p(x) (\log q(x)-\log p(x))\\ =& -\sum_{x}p(x) \log \frac{q(x)}{p(x)} \end{aligned}$$
[](#KL散度的数学性质 "KL散度的数学性质")KL 散度的数学性质
KL 散度可以用来衡量两个分布之间的差异,其具有如下数学性质:
[](#正定性 "正定性")正定性
$$D_{KL}(p||q) \geq 0$$
可用 Gibbs 不等式直接得出。先给出 Gibbs 不等式的内容:
若$\sum_{i=1}^{n} p_i = \sum_{i=1}^{n} q_i = 1$, 且 $p_i,q_i \in(0,1]$, 则有:
$$-\sum_{i}^{n} p_i \log p_i \leq -\sum_{i}^{n} p_i \log q_i$$
当且仅当 $p_i=q_i \forall i$等号成立。
Gibbs 不等式的证明可见后文附录。
[](#不对称性 "不对称性")不对称性
KL 散度并不是一个真正的度量或者距离,因为它不具有对称性:
$$D(p \| q) \neq D(q \| p)$$
各种散度中,Jensen-Shannon divergence(JS 散度) 是对称的。
对 KL 散度不对称性的直观解释可见链接。
[](#从不同角度解读KL散度 "从不同角度解读KL散度")从不同角度解读 KL 散度
[](#统计学意义上的KL散度 "统计学意义上的KL散度:")统计学意义上的 KL 散度:
在统计学意义上来说,KL 散度可以用来衡量两个分布之间的差异程度。若两者差异越小,KL 散度越小,反之亦反。当两分布一致时,其 KL 散度为 0。正是因为其可以衡量两个分布之间的差异,所以在 VAE、EM、GAN 中均有使用到 KL 散度。
[](#信息论角度的KL散度 "信息论角度的KL散度:")信息论角度的 KL 散度:
KL 散度在信息论中的专业术语为相对熵。其可理解为编码系统对信息进行编码时所需要的平均附加信息量。其中信息量的单位随着计算公式中 $log$运算的底数而变化。
- log 底数为 2:单位为比特 (
bit
)- log 底数为
e
:单位为奈特 (nat
)
若对从统计学角度直观解释 KL 散度感兴趣,可参阅以下文章:
- 英文版 [推荐]:Kullback-Leibler Divergence Explained
- 英文版中文翻译 [推荐]: 解释 Kullback-Leibler 散度
- 中文版: 直观解读 KL 散度的数学概念
[](#连续随机变量的KL散度推导 "连续随机变量的KL散度推导")连续随机变量的 KL 散度推导
[](#服从一维高斯分布的随机变量KL散度 "服从一维高斯分布的随机变量KL散度")服从一维高斯分布的随机变量 KL 散度
[](#定义 "定义")定义
假设 p
和 q
均是服从 $N~(\mu_1,\sigma_1^2)$和 $N~(\mu_2,\sigma_2^2)$的随机变量的概率密度函数 (_probability density function_) ,则从 q
到 p
的 KL 散度定义为:
$$\begin{aligned} D_{KL}(p||q)=& \int \left[\log(p(x)) - \log( q(x)) \right]p(x)\ dx \\ =& \int \left[ \ p(x)\log(p(x)) - p(x)\log(q(x)) \right ] \ dx \end{aligned}$$
已知正态分布的概率密度函数 (probability density function
) 如下式:
$$\begin{aligned} p(x)=\frac{1}{\sqrt{2\pi}\sigma_1} \exp\left(-\frac{(x-\mu_1)^2}{2\sigma_1^2} \right) \\ q(x)=\frac{1}{\sqrt{2\pi}\sigma_2} \exp\left(-\frac{(x-\mu_2)^2}{2\sigma_2^2} \right) \end{aligned}$$
[](#KL散度推导 "KL散度推导")KL 散度推导
根据 $KL$散度公式可以将其分为两项进行计算,第一项$\int p(x)\log(p(x)) dx$计算如下:
$$\begin{aligned} \int p(x)\log(p(x)) dx =& \int p(x) \log \left[\frac{1}{\sqrt{2\pi}\sigma_1} exp\left(-\frac{(x-\mu_1)^2}{2\sigma_1^2} \right)\right ] dx \\ =& \int p(x) \left[ \log \frac{1}{\sqrt{2\pi}\sigma_1} + \log exp\left(-\frac{(x-\mu_1)^2}{2\sigma_1^2} \right) \right] dx \\ =& -\frac{1}{2}\log(2\pi\sigma_1^2) + \int p(x)\left(-\frac{(x-\mu_1)^2}{2\sigma_1^2} \right) dx \\ =& -\frac{1}{2}\log(2\pi\sigma_1^2) - \frac{\int p(x) x^2 dx - \int p(x) 2x\mu_1 dx + \int p(x) \mu_1^2 dx}{2 \sigma_1^2} \\ =& -\frac{1}{2}\log(2\pi\sigma_1^2) - \frac{(\mu_1^2+\sigma_1^2)\ - (2\mu_1\times\mu_1) \ + \mu_1^2}{2 \sigma_1^2} \\ =& - \frac{1}{2} \left[ 1+\log(2\pi \sigma_1^2) \right] \end{aligned}$$
第二项可以同第一项按照类似的方式进行展开化简,如下:
$$\begin{aligned} \int p(x)\log(q(x)) dx =& \int p(x) \log \left[\frac{1}{\sqrt{2\pi}\sigma_2} exp\left(-\frac{(x-\mu_2)^2}{2\sigma_2^2} \right)\right ] dx \\ =& \int p(x) \left[ \log \frac{1}{\sqrt{2\pi}\sigma_2} + \log exp\left(-\frac{(x-\mu_2)^2}{2\sigma_2^2} \right) \right] dx \\ =& -\frac{1}{2}\log(2\pi\sigma_2^2) + \int p(x)\left(-\frac{(x-\mu_2)^2}{2\sigma_2^2} \right) dx \\ =& -\frac{1}{2}\log(2\pi\sigma_2^2) - \frac{\int p(x) x^2 dx - \int p(x) 2x\mu_2 dx + \int p(x) \mu_2^2 dx}{2 \sigma_2^2} \\ =& -\frac{1}{2}\log(2\pi\sigma_2^2) - \frac{(\mu_1^2+\sigma_1^2)\ - (2\mu_2\times\mu_1) \ + \mu_2^2}{2 \sigma_2^2} \\ =& -\frac{1}{2}\log(2\pi\sigma_2^2) - \frac{\sigma_1^2\ + (\mu_1 -\mu_2)^2 }{2 \sigma_2^2} \end{aligned}$$
所以可以简化KL
散度公式如下:
$$\begin{aligned} KL(p,q) =& \int \left[\ p(x)\log(p(x)) - p(x)\log(q(x))\right ]\ dx \\ =& - \frac{1}{2} \left[ 1+\log(2\pi \sigma_1^2) \right] - \left[-\frac{1}{2}\log(2\pi\sigma_2^2) - \frac{\sigma_1^2\ + (\mu_1 -\mu_2)^2 }{2 \sigma_2^2} \right] \\ =& \ \log \frac{\sigma_2}{\sigma_1} \ +\frac{\sigma_1^2\ + (\mu_1 -\mu_2)^2 }{2 \sigma_2^2} \ - \frac{1}{2} \end{aligned}$$
[](#服从多元高斯分布的随机变量KL散度 "服从多元高斯分布的随机变量KL散度")服从多元高斯分布的随机变量 KL 散度
[](#定义-1 "定义")定义
其定义与一元高斯分布假设下一致,只是 p
和 q
服从的分布形式产生了改变:
$$\begin{aligned} p(x) & \sim N~(\mathbf{\mu_1},\Sigma_1^2) \\ &= {1 \over { { {(2\pi )}^{n/2} }{ {\left| \Sigma_{1} \right|}^{1/2} } } }\exp \left(- {1 \over 2}{(x - \mu_{1})^T}{\Sigma_{1} ^{ - 1} }(x - \mu_{1})\right ) \end{aligned}$$
$$\begin{aligned} q(x) & \sim N~(\mathbf{\mu_{2} },\Sigma_{2}^2) \\ &= {1 \over { { {(2\pi )}^{n/2} }{ {\left| \Sigma_{2} \right|}^{1/2} } } }\exp \left(- {1 \over 2}{(x - \mu_{2})^T}{\Sigma_{2} ^{ - 1} }(x - \mu_{2})\right ) \end{aligned}$$
其中:
$$\mu_{1},\mu_{2} \in \mathbb{R^{n\times 1} }$$
$$\Sigma_{1},\Sigma_{2} \in \mathbb{R^{n\times n} }$$
[](#KL散度推导-1 "KL散度推导")KL 散度推导
与一元高斯分布类似,可将 $D_{KL}(p||q)$分为两部分:
第一部分:
$$\begin{aligned} & \int p(x)\log(p(x)) dx\\ = & \int p(x) \log \left[\frac{1}{ {(2\pi)^{n/2} } | \Sigma_{1} | ^{1/2} } exp\left(- {1 \over 2}{(x - \mu_{1})^T}{\Sigma_{1} ^{ - 1} }(x - \mu_{1})\right )\right ] dx \\ = & \int p(x) \left[ \log \frac{1}{ {(2\pi)^{n/2} } | \Sigma_{1} | ^{1/2} } + \log exp\left(- {1 \over 2}{(x - \mu_{1})^T}{\Sigma_{1} ^{ - 1} }(x - \mu_{1})\right ) \right] dx \\ = & \log \frac{1}{ {(2\pi)^{n/2} } | \Sigma_1 | ^{1/2} } + \int p(x) \left(- {1 \over 2}{(x - \mu_{1})^T}{\Sigma_{1} ^{ - 1} }(x - \mu_{1})\right ) dx \\ = & \log \frac{1}{ {(2\pi)^{n/2} } | \Sigma_1 | ^{1/2} } + E_{p(x)}\left[- {1 \over 2}{(x - \mu_{1})^T}{\Sigma_{1} ^{ - 1} }(x - \mu_{1})\right] \\ = & \log \frac{1}{ {(2\pi)^{n/2} } | \Sigma_1 | ^{1/2} } - {1 \over 2} E_{p(x)}\left[{(x - \mu_{1})^T}{\Sigma_{1} ^{ - 1} }(x - \mu_{1})\right] \end{aligned}$$
同理,第二部分可写为:
$$\begin{aligned} \\ & \int p(x)\log(q(x)) dx\\ = & \log \frac{1}{ {(2\pi)^{n/2} } | \Sigma_{2} | ^{1/2} } - {1 \over 2} E_{p(x)}\left[{(x - \mu_{2})^T}{\Sigma_{2} ^{ - 1} }(x - \mu_{2})\right] \end{aligned}$$
因此可将服从多元高斯分布随机变量的 KL 散度写为:
$$\begin{aligned} D_{KL}(p||q) & = \int p(x)\log(p(x)) dx-\int p(x)\log(q(x)) dx \\ & = \log \frac{ {(2\pi)^{n/2} } | \Sigma_{2} | ^{1/2} }{ {(2\pi)^{n/2} } | \Sigma_1 | ^{1/2} } - {1 \over 2} E_{p(x)}\left[{(x - \mu_{1})^T}{\Sigma_{1} ^{ - 1} }(x - \mu_{1})\right] +{1 \over 2} E_{p(x)}\left[{(x - \mu_{2})^T}{\Sigma_{2} ^{ - 1} }(x - \mu_{2})\right] \\ & = \frac{1}{2}\log \frac{ | \Sigma_{2} | }{ {} | \Sigma_1 | } + \frac{1}{2}E_{p(x)}\left[{(x - \mu_{2})^T}{\Sigma_{2} ^{ - 1} }(x - \mu_{2}) - {(x - \mu_{1})^T}{\Sigma_{1} ^{ - 1} }(x - \mu_{1})\right] \end{aligned}$$
其中 $E_{p}(\cdot)$代表$\cdot$在概率密度函数 $p(x)$的期望。此处需引入涉及多元变量的期望矩阵化求解方法。具体证明见后续附录,此处直接给出多元正态分布下期望矩阵化的表示结果:
$$E\left( { {x^T}Ax} \right) = tr(A\Sigma ) + {\mu^T}A\mu$$
因此:
$$\begin{aligned} D_{KL}(p||q) & = \frac{1}{2}\log \frac{ | \Sigma_{2} | }{ {} | \Sigma_1 | } + \frac{1}{2}E_{p(x)}\left[{(x - \mu_{2})^T}{\Sigma_{2} ^{ - 1} }(x - \mu_{2}) - {(x - \mu_{1})^T}{\Sigma_{1} ^{ - 1} }(x - \mu_{1})\right]\\ & = \frac{1}{2}\log \frac{ | \Sigma_{2} | }{ {} | \Sigma_1 | } + \frac{1}{2}tr(\Sigma_{2}^{-1}\Sigma_{1}) + (\mu_{1}-\mu_{2})^{T}\Sigma_{2}^{-1}(\mu_{1}-\mu_{2})^{T} \\ &\qquad \qquad \qquad - \frac{1}{2}tr(\Sigma_{1}^{-1}\Sigma_{1}) + (\mu_{1}-\mu_{1})^{T}\Sigma_{2}^{-1}(\mu_{1}-\mu_{1})^{T} \\ & = \frac{1}{2}\log \frac{ | \Sigma_{2} | }{ {} | \Sigma_1 | } + \frac{1}{2}tr(\Sigma_{2}^{-1}\Sigma_{1}) + (\mu_{1}-\mu_{2})^{T}\Sigma_{2}^{-1}(\mu_{1}-\mu_{2})^{T} - \frac{1}{2} n \end{aligned}$$
[](#附录 "附录")附录
[](#多元高斯分布下期望证明: "多元高斯分布下期望证明:")多元高斯分布下期望证明:
为证明多元高斯分布下,下式:
$$E\left( {x^T Ax} \right) = tr(A\Sigma ) + {\mu^T}A\mu$$
成立,需引入以下性质:
- 矩阵的迹的性质:
$$\begin{aligned} tr(\alpha A + \beta B) &= \alpha tr(A) + \beta tr(B)\\ tr(A) &= tr({A^T})\\ tr(AB) &= tr(BA)\\ &\Rightarrow tr(ABC) = tr(CAB) = tr(BCA) \end{aligned}$$
若$\lambda \in \mathbb{R^{n\times 1} }$,即$\lambda$为列向量时,则${\lambda ^T}A\lambda$为标量,存在以下性质:
$${\lambda ^T}A\lambda = tr({\lambda ^T}A\lambda ) = tr(A\lambda {\lambda ^T})$$
多元高斯分布中均值$\mu$和方差$\Sigma$的性质:
$E\left[ {x{x^T} } \right] = \Sigma + \mu{\mu^T}$:
证明:
$$\begin{aligned} \Sigma &= E[(x-\mu)(x-\mu)^{T}] \\ \because(A-B)^{T} = A^{T}-B^{T } \quad \therefore \quad &=E[(x-\mu)(x^{T}-\mu^{T })]\\ & = E[xx^{T} - x \mu^{T}-\mu x^{T}- \mu \mu^{T }] \\ \because x:随机变量 \quad \mu:const \quad \therefore \quad & = E(xx^{T}) - E(x)\mu^{T} - \mu E(x^{T}) - \mu \mu^{T}\\ & = E(xx^{T}) - \mu \mu^{T} \end{aligned}$$
* $E\left( {x^T Ax} \right) = tr(A\Sigma ) + {\mu^T}A\mu$:
证明:
由于 $x^{T}Ax$最终结果为标量,利用前述矩阵的迹的性质可有:
$$\begin{aligned} E\left( { {x^T}Ax} \right) & = E\left[ {tr({x^T}Ax)} \right] \\ & = E\left[ {tr(Ax{x^T})} \right] \\ & = tr\left[ {E\left( {Ax{x^T} } \right)} \right] \\ & = tr\left[ {AE\left( {x{x^T} } \right)} \right] \\ \because A = const \quad \therefore \quad & = tr\left[ {A(\Sigma + u{u^T})} \right] \\ \because E\left[ {x{x^T} } \right] = \Sigma + \mu{\mu^T} \quad \therefore \quad & = tr(A\Sigma ) + tr(A\mu{\mu^T}) \\ & = tr(A\Sigma ) + tr({\mu^T}A\mu) \\ \because {\mu^T}A\mu \in \mathbb{R} \quad \therefore \quad & = tr(A\Sigma ) + {\mu^T}A\mu \\ \end{aligned}$$
[](#Gibbs不等式的证明 "Gibbs不等式的证明")Gibbs 不等式的证明
Gibbs 不等式的内容如下:
若$\sum_{i=1}^{n} p_i = \sum_{i=1}^{n} q_i = 1$, 且 $p_i,q_i \in(0,1]$, 则有:
$$-\sum_{i}^{n} p_i \log p_i \leq -\sum_{i}^{n} p_i \log q_i$$
当且仅当 $p_i=q_i \forall i$等号成立。
Gibbs 不等式等价于下式:
$$0 \geq \sum_{i=1}^{n} p_{i} \log q_{i}-\sum_{i=1}^{n} p_{i} \log p_{i} = \sum_{i=1}^{n} p_{i} \log \frac{q_{i} }{p_{i} } = - D_{KL}(P \| Q)$$
以下证明$\sum_{i=1}^{n} p_{i} \log \left(q_{i} / p_{i}\right) \leq 0$:
[](#法一: "法一:")法一:
已知 $ln(x) \leq x-1$, 如下图所示:
ln(x) 与 x-1 的数学图像 - w50 与 x-1 的数学图像-w50")
由上图或者严格数学证明可知,当且仅当 $x=1$时 $ln(x) = x-1$,即等号成立。
[](#法二: "法二:")法二:
根据 Jensen 不等式在凸积分中的命题:
若 $g$是任意实值可测函数,$\phi$在 $g$的值域中是凸函数,则:
$$\phi \left ( \int_{-\infty}^{+\infty} g(x) f(x) dx\right ) \leq \int_{-\infty}^{+\infty} \phi (g(x)) f(x) dx$$
若 $g(x)=x$, 则上式可简化为一常用特例:
$$\phi \left ( \int_{-\infty}^{+\infty} x f(x) dx\right ) \leq \int_{-\infty}^{+\infty} \phi (x) f(x) dx$$
因此:
$$D_{K L}(p \| q)=-\int p(x) \log \frac{q(x)}{p(x)} d x \geq-\log \int q(x) d x=0$$
其中 $D_{K L}(p | q)$与 Jensen 不等式有以下对应关系:
$$\begin{aligned} & \phi(x) = log(x)\\ & f(x) = p(x) \end{aligned}$$
由此得证。
[](#参考链接 "参考链接")参考链接
- Gibbs 不等式:相对熵 (KL 散度)
Jensen 不等式: Jensen’s inequality
- KL 散度正定性的证明:机器学习中的散度
KL 散度推导:
- 均匀分布与正态分布的 KL 散度比较:解释 Kullback-Leibler 散度
- KL 散度与交叉熵:KL 散度 (相对熵)、交叉熵的解析
- 信息论中的熵:机器学习笔记十:各种熵总结
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。