1. 程式人生 > >KL散度、交叉熵與極大似然 的友誼

KL散度、交叉熵與極大似然 的友誼

ood 進行 映射 滿足 變量 rac 生成 ack kl散度

一. 信息論背景

  信息論的研究內容,是對一個信號包含信息的多少進行量化。所采用的量化指標最好滿足兩個條件:

(1)越不可能發生的事件包含的信息量越大;

(2)獨立事件有增量的信息(就是幾個獨立事件同時發生的信息量等於每一個信息量的和)。

遵循以上原則,定義一個事件$\mathsf{x}=x$的自信息為:$$I(x)=-\log p(x)$$log底為e時,單位為nats;底為2時,單位為比特或香農。

  用香農熵(Shannon Entropy)對一個變量在整個概率分布中的不確定性進行量化:$$H(\mathsf{x})=E_{\mathsf{x} \sim P}[I(x)]=-E_{\mathsf{x}\sim P}[\log P(x)]$$香農熵的意義,就是滿足$p$分布的事件所產生的期望信息總量。

二. KL散度(Kullback-Leibler Divergence)

  若一個隨機變量$\mathsf{x}$有兩種可能的分布$P(\mathsf{x})$和$Q(\mathsf{x})$,則可以用KL散度衡量兩個分布之間的差異:$$\begin{align*} D_{KL}(P||Q)&=E_{\mathsf{x}\sim P}\left[ \log \frac{P(x)}{Q(x)}\right]\\&=E_{\mathsf{x}\sim P} \left[ \log P(x)-\log Q(x)\right]\end{align*}$$  KL散度為非負,當且僅當P與Q為相同分布時,KL散度為零。所以假設有一個分布$p(x)$,想用另一個分布$q(x)$近似,可以選擇最小化二者之間的KL散度。

  但是需註意$D_{KL}(p||q)\neq D_{KL}(q||p)$,前者表示選擇一個q,使得它在p具有高概率的地方具有高概率;後者表示選擇一個q,使得它在具有低概率的地方具有低概率。

三. 交叉熵(Cross-Entropy)

  交叉熵定義為:$$\begin{align*}H(P,Q)&=H(P)+D_{KL}(P||Q) \\&=-E_{\mathsf{x}\sim P}\log Q(x)\end{align*}$$針對Q最小化交叉熵等價於最小化KL散度,因為$H(P)$與Q無關。

四. 極大似然估計

  假設有m個樣本的數據集,由未知的真實數據分布$p_{data}(x)$獨立生成。令$p_{model}(x;\theta )

$為由$\theta$確定的概率分布,$p_{model}(x;\theta )$將任意輸入$x$映射到實數來估計真實概率$p_{data}(x)$。

  也就是說,給定一個$\theta$,就得到了一個完整的數據概率分布,我們就可以計算the probability of observing out sample data,即sample likelihood $L(\theta)$。如果一組$\theta$計算出來的sample likelihood太低,則需要換一組$\theta$。極大似然估計就是要選擇一組$\theta$使得sample likelihood越高越好。$$\begin{align*}\theta_{ML}&=\mathop{\arg\min}_{\theta}p_{model}(x;\theta) \\&=\mathop{\arg\min}_{\theta} \prod_{i=1}^{m}p_{model}(x^{(j)};\theta)\end{align*}$$

多個概率的乘積可能導致數值下溢,所以通常會采用對數轉換成求和的形式: $$\begin{equation}\theta_{ML}=\mathop{\arg\min}_{\theta}\sum_{i=1}^m \log p_{model}(x^{(i)};\theta)\end{equation}$$

五. MLE-->KL-->CE

  由於$$E_{\mathsf{x}\sim p_{data}}[\log p_{model}(x)]=\sum_{i=1}^{m}p_{data}\cdot \log p_{model}(x;\theta)$$極大似然估計可以經過縮放,用與訓練數據經驗分布$p_{data}$相關的期望來表示:$$\begin{equation}
\theta_{ML}=\mathop{\arg\min}_{\theta}E_{\mathsf{x}\sim p_{data}} \log p_{model}(x^{(i)};\theta)
\end{equation}$$  極大似然估計可以看作最小化訓練集熵的經驗分布$p_{data}$和模型分布之間的差異,即二者之間的KL散度:$$D_{KL}(p_{data}||p_{model})=E_{\mathsf{x}\sim p_{data}}\left[ \log p_{data}-\log p_{model}(x) \right]$$而最小化KL散度又等價於最小化分布之間的交叉熵$$-E_{\mathsf{x}\sim p_{data}}[\log p_{model}(x)]$$

KL散度、交叉熵與極大似然 的友誼