熵的基础知识
-
近來抽空過了些熵相關的基礎知識,自己手動整理了下,有很多是借鑒了別的博客的內(nèi)容,所以先感謝網(wǎng)上大佬們的分享了,具體參考的博客有:
機器學習各種熵:從入門到全面掌握
Cross-entropy and Maximum Likelihood Estimation -
在機器學習中 熵是表征隨機變量分布的混亂程度,分布越混亂,則熵越大。
-
Self-information (自信息)
自信息表示某一事件發(fā)生時所帶來的信息量的多少,事件發(fā)生的概率越大,則自信息越小。或者可以這樣理解:某一事件發(fā)生的概率非常小,但是實際上卻發(fā)生了(觀察結(jié)果),則此時的自信息非常大;某一事件發(fā)生的概率非常大,并且實際上也發(fā)生了,則此時的自信息較小。
度量自信息時,需要尋找一個函數(shù),它滿足的條件是:事件發(fā)生的概率越大,則自信息越小;自信息不能是負值,最小是0;自信息應該滿足可加性,并且兩個獨立事件的自信息應該等于兩個事件單獨的自信息。自信息公式定義:I(pi)=?log?(pi)I(p_i) = -\log(p_i)I(pi?)=?log(pi?)
-
Entropy (信息熵)
自信息描述的是隨機變量的某個事件發(fā)生所帶來的信息量,而信息熵通常用來描述整個隨機分布所帶來的信息量平均值,更具統(tǒng)計特性。信息熵也叫香農(nóng)熵:H(X)=Ex~p[I(x)]=?Ex~p[log?p(x)]=?∑i=1np(xi)log?p(xi)=?∫xp(x)log?p(x)dx\begin{aligned} \mathcal{H}(X) &=\mathbb{E}_{x \sim p}[I(x)]=-\mathbb{E}_{x \sim p}[\log p(x)] \\&=-\sum_{i=1}^{n} p\left(x_{i}\right) \log p\left(x_{i}\right)=-\int_{x} p(x) \log p(x) dx \end{aligned}H(X)?=Ex~p?[I(x)]=?Ex~p?[logp(x)]=?i=1∑n?p(xi?)logp(xi?)=?∫x?p(x)logp(x)dx? 隨機變量取值個數(shù)越多,狀態(tài)數(shù)也就越多,累加次數(shù)就越多,信息熵就越大,混亂程度就越大,純度越小。越寬廣的分布,熵就越大,在同樣的定義域內(nèi),由于分布寬廣程度:脈沖分布 < 高斯分布 < 均勻分布,故而熵的關系為:脈沖分布的信息熵 < 高斯分布的信息熵 < 均勻分布的信息熵。可以通過數(shù)學證明,當隨機變量分布為均勻分布時即狀態(tài)數(shù)最多時,熵最大。- 熵只依賴于隨機變量的分布,與隨機變量取值無關;
- 定義 0×log?0=00 \times \log0 = 00×log0=0 (可能出現(xiàn)某個概率取值為0的情況);
- 熵越大,隨機變量的不確定性就越大,分布越混亂,隨機變量狀態(tài)數(shù)越多。
-
Conditional Entropy (條件熵)
條件熵的定義為:在 XXX 給定條件下,YYY 的條件概率分布的熵對 XXX 的數(shù)學期望。H(Y∣X)=Ex~p[H(Y∣X=x)]=∑i=1np(xi)H(Y∣X=xi)=?∑i=1np(xi)∑j=1mp(yj∣xi)log?p(yj∣xi)=?∑i=1n∑j=1mp(xi,yj)log?p(yj∣xi)=?(∑i=1n∑j=1mp(xi,yj)log?p(xi,yj)?∑i=1n∑j=1mp(xi,yj)log?p(xi))=?(∑i=1n∑j=1mp(xi,yj)log?p(xi,yj)?∑i=1nlog?p(xi)∑j=1mp(xi,yj))=?(∑i=1n∑j=1mp(xi,yj)log?p(xi,yj)?∑i=1np(xi)log?p(xi))=H(X,Y)?H(X)\begin{aligned} \mathcal{H}(Y | X) &= \mathbb{E}_{x \sim p}[\mathcal{H}(Y | X=x)]=\sum_{i=1}^{n} p(x_i) \mathcal{H}(Y | X=x_i) \\&=-\sum_{i=1}^{n} p(x_i) \sum_{j=1}^{m} p(y_j | x_i) \log p(y_j | x_i) = - \sum_{i=1}^{n} \sum_{j=1}^{m} p(x_i, y_j) \log p(y_j | x_i) \\&=-\left(\sum_{i=1}^{n} \sum_{j=1}^{m} p(x_i, y_j) \log p(x_i, y_j)-\sum_{i=1}^{n} \sum_{j=1}^{m} p(x_i, y_j) \log p(x_i)\right) \\& =-\left(\sum_{i=1}^{n} \sum_{j=1}^{m} p(x_i, y_j) \log p(x_i, y_j)-\sum_{i=1}^{n} \log p(x_i) \sum_{j=1}^{m} p(x_i, y_j)\right) \\ &=-\left(\sum_{i=1}^{n} \sum_{j=1}^{m} p(x_i, y_j) \log p(x_i, y_j)-\sum_{i=1}^{n} p(x_i) \log p(x_i)\right) \\ &= \mathcal{H}(X, Y)-\mathcal{H}(X) \end{aligned}H(Y∣X)?=Ex~p?[H(Y∣X=x)]=i=1∑n?p(xi?)H(Y∣X=xi?)=?i=1∑n?p(xi?)j=1∑m?p(yj?∣xi?)logp(yj?∣xi?)=?i=1∑n?j=1∑m?p(xi?,yj?)logp(yj?∣xi?)=?(i=1∑n?j=1∑m?p(xi?,yj?)logp(xi?,yj?)?i=1∑n?j=1∑m?p(xi?,yj?)logp(xi?))=?(i=1∑n?j=1∑m?p(xi?,yj?)logp(xi?,yj?)?i=1∑n?logp(xi?)j=1∑m?p(xi?,yj?))=?(i=1∑n?j=1∑m?p(xi?,yj?)logp(xi?,yj?)?i=1∑n?p(xi?)logp(xi?))=H(X,Y)?H(X)?
-
Mutual Information (互信息)
引入互信息,它不僅能說明兩個隨機變量之間是否有關系,也能反應它們之間關系的強弱。I(X;Y)=∫X∫YP(X,Y)log?P(X,Y)P(X)P(Y)=∫X∫YP(X,Y)log?P(X,Y)P(X)?∫X∫YP(X,Y)log?P(Y)=∫X∫YP(X)P(Y∣X)log?P(Y∣X)?∫Ylog?P(Y)∫XP(X,Y)=∫XP(X)∫YP(Y∣X)log?P(Y∣X)?∫Ylog?P(Y)P(Y)=?∫XP(X)H(Y∣X=x)+H(Y)=H(Y)?H(Y∣X)\begin{aligned} I(X ; Y) &=\int_{X} \int_{Y} P(X, Y) \log \frac{P(X, Y)}{P(X) P(Y)} \\ &=\int_{X} \int_{Y} P(X, Y) \log \frac{P(X, Y)}{P(X)}-\int_{X} \int_{Y} P(X, Y) \log P(Y) \\ &=\int_{X} \int_{Y} P(X) P(Y | X) \log P(Y | X)-\int_{Y} \log P(Y) \int_{X} P(X, Y) \\ &=\int_{X} P(X) \int_{Y} P(Y | X) \log P(Y | X)-\int_{Y} \log P(Y) P(Y) \\ &=-\int_{X} P(X) \mathcal{H}(Y | X=x) + \mathcal{H}(Y) \\ &= \mathcal{H}(Y)- \mathcal{H}(Y | X) \end{aligned}I(X;Y)?=∫X?∫Y?P(X,Y)logP(X)P(Y)P(X,Y)?=∫X?∫Y?P(X,Y)logP(X)P(X,Y)??∫X?∫Y?P(X,Y)logP(Y)=∫X?∫Y?P(X)P(Y∣X)logP(Y∣X)?∫Y?logP(Y)∫X?P(X,Y)=∫X?P(X)∫Y?P(Y∣X)logP(Y∣X)?∫Y?logP(Y)P(Y)=?∫X?P(X)H(Y∣X=x)+H(Y)=H(Y)?H(Y∣X)? H(Y)\mathcal{H}(Y)H(Y) 衡量的是 YYY 的不確定度,YYY 分布得越離散,H(Y)\mathcal{H}(Y)H(Y) 的值越高。H(Y∣X)\mathcal{H}(Y | X)H(Y∣X) 則表示在已知 XXX 的情況下,YYY 的不確定度,而 I(X;Y)I(X ; Y)I(X;Y) 則表示得知特征 XXX 的信息而使得 YYY 信息的不確定性減少的程度,因而如果 XXX 和 YYY 關系越大,I(X;Y)I(X ; Y)I(X;Y)越大。- 當XXX 和 YYY 完全相關時,I(X;Y)I(X ; Y)I(X;Y) 取值最大為 H(Y)\mathcal{H}(Y)H(Y)。由于 XXX的引入,YYY 的熵由原來的 H(Y)\mathcal{H}(Y)H(Y) 減小了 I(X;Y)=H(Y)I(X;Y) = \mathcal{H}(Y)I(X;Y)=H(Y),變成了 0,也就是說如果 XXX 確定,那么 YYY 就完全確定了。
- 而當 XXX 和 YYY獨立時,I(X;Y)=0I(X;Y)=0I(X;Y)=0 ,引入 XXX,并未給 YYY 帶來任何好處。
綜合以上分析,可以得到互信息的一些性質(zhì):
- I(X;Y)≥0I(X; Y) \geq 0I(X;Y)≥0
- H(X)?H(X∣Y)=I(X;Y)=I(Y;X)=H(Y)?H(Y∣X)\mathcal{H}(X)-\mathcal{H}(X | Y)=I(X ; Y)=I(Y ; X)=\mathcal{H}(Y)-\mathcal{H}(Y | X)H(X)?H(X∣Y)=I(X;Y)=I(Y;X)=H(Y)?H(Y∣X)
- XXX,YYY 獨立時,I(X;Y)=0I(X; Y) = 0I(X;Y)=0
- 當 XXX,YYY 知道一個就能推斷另一個時,I(X;Y)=H(X)=H(Y)I(X;Y)=\mathcal{H}(X)=\mathcal{H}(Y)I(X;Y)=H(X)=H(Y)
互信息在 Decision Tree (決策樹) 領域有著很廣泛的應用,決策樹中常用的 Information Gain (信息增益) 就等價于訓練集中類與特征的互信息:g(D,A)=H(D)?H(D∣A)g(D, A) = \mathcal{H}(D) - \mathcal{H}(D|A)g(D,A)=H(D)?H(D∣A),表示由于特征 AAA 而使得對數(shù)據(jù)集 DDD 的分類的不確定性減少的程度。g(D,A)g(D, A)g(D,A) 越大,則說明特征 AAA 越重要。
-
Cross Entropy (交叉熵)
交叉熵廣泛用在 Logistic Regression (邏輯回歸) 和 Softmax 函數(shù)中作為損失函數(shù)使用。其主要用于度量兩個概率分布間的差異性信息,公式定義為:H(p,q)=Ex~p[?log?q(x)]=?∑i=1np(xi)log?q(xi)\begin{aligned} H(p, q)=\mathbb{E}_{x \sim p}[-\log q(x)]=-\sum_{i=1}^{n} p(x_i) \log q(x_i) \end{aligned}H(p,q)=Ex~p?[?logq(x)]=?i=1∑n?p(xi?)logq(xi?)?
其中 p(x)p(x)p(x) 是真實樣本分布,q(x)q(x)q(x) 是預測得到的樣本分布。- 交叉熵在邏輯回歸中應用廣泛,邏輯回歸的損失函數(shù)就是交叉熵,其定義為:J(θ)=?1n∑i=1n[yilog?hθ(xi)+(1?yi)log?(1?hθ(xi))]\begin{aligned} J(\theta)=-\frac{1}{n} \sum_{i=1}^{n}\left[y_{i} \log h_{\theta}\left(x_{i}\right)+\left(1-y_{i}\right) \log \left(1-h_{\theta}\left(x_{i}\right)\right)\right] \end{aligned}J(θ)=?n1?i=1∑n?[yi?loghθ?(xi?)+(1?yi?)log(1?hθ?(xi?))]?
- 其中 yiy_iyi? 為 0 或 1,模型預測為 1 的概率為 hθ(xi)h_\theta(x_i)hθ?(xi?),預測為 0 的概率為 1?hθ(xi)1 - h_\theta(x_i)1?hθ?(xi?):
- yi=1y_i = 1yi?=1 時,對應的 q(x)=hθ(xi)q(x) = h_\theta(x_i)q(x)=hθ?(xi?);
- yi=0y_i = 0yi?=0 時,對應的 q(x)=1?hθ(xi)q(x) = 1 - h_\theta(x_i)q(x)=1?hθ?(xi?)。
它們共同組合則得到到了邏輯回歸的損失函數(shù)。
- 其中 yiy_iyi? 為 0 或 1,模型預測為 1 的概率為 hθ(xi)h_\theta(x_i)hθ?(xi?),預測為 0 的概率為 1?hθ(xi)1 - h_\theta(x_i)1?hθ?(xi?):
- 對于多分類的邏輯回歸算法,通常使用 Softmax 作為輸出層映射,其對應的損失函數(shù)也叫交叉熵,只不過寫法有點區(qū)別,具體如下:J(θ)=?1n[∑i=1n∑j=1k1{yi=j}log?eθjTxi∑l=1keθlTxi]\begin{aligned} J(\theta)=-\frac{1}{n}\left[\sum_{i=1}^{n} \sum_{j=1}^{k} 1\left\{y_{i}=j\right\} \log \frac{e^{\theta_{j}^{T} x_{i}}}{\sum_{l=1}^{k} e^{\theta_{l}^{T} x_{i}}}\right] \end{aligned}J(θ)=?n1?[i=1∑n?j=1∑k?1{yi?=j}log∑l=1k?eθlT?xi?eθjT?xi??]?,其中 nnn 是樣本個數(shù),kkk 是輸出層的分類個數(shù)。
對比邏輯回歸算法的損失函數(shù):J(θ)=?1n∑i=1n[yilog?hθ(xi)+(1?yi)log?(1?hθ(xi))]=?1n[∑i=1n∑j=011{yi=j}log?p(yi=j∣xi;θ)]\begin{aligned} J(\theta) &= -\frac{1}{n} \sum_{i=1}^{n} \left[ y_{i} \log h_{\theta}\left(x_{i}\right)+\left(1-y_{i}\right) \log \left(1-h_{\theta}\left(x_{i}\right)\right) \right] \\&= -\frac{1}{n}\left[\sum_{i=1}^{n} \sum_{j=0}^{1} 1\left\{y_{i}=j\right\} \log p\left(y_{i}=j \mid x_{i};\theta\right)\right] \end{aligned}J(θ)?=?n1?i=1∑n?[yi?loghθ?(xi?)+(1?yi?)log(1?hθ?(xi?))]=?n1?[i=1∑n?j=0∑1?1{yi?=j}logp(yi?=j∣xi?;θ)]? 可以看出,其實兩者是一樣的,Softmax 只是對邏輯回歸在多分類上面的推廣。
- 交叉熵在邏輯回歸中應用廣泛,邏輯回歸的損失函數(shù)就是交叉熵,其定義為:J(θ)=?1n∑i=1n[yilog?hθ(xi)+(1?yi)log?(1?hθ(xi))]\begin{aligned} J(\theta)=-\frac{1}{n} \sum_{i=1}^{n}\left[y_{i} \log h_{\theta}\left(x_{i}\right)+\left(1-y_{i}\right) \log \left(1-h_{\theta}\left(x_{i}\right)\right)\right] \end{aligned}J(θ)=?n1?i=1∑n?[yi?loghθ?(xi?)+(1?yi?)log(1?hθ?(xi?))]?
-
Relative Entropy (相對熵)
相對熵是一個較高端的存在,其作用和交叉熵差不多。相對熵經(jīng)常也叫做 Kullback-Leibler Divergence (KL 散度),在貝葉斯推理中, DKL(p∣∣q)D_\text{KL}(p || q)DKL?(p∣∣q) 衡量當修改了從先驗分布 qqq 到后驗分布 ppp 的信念之后帶來的信息增益。DKL(p∥q)=Ex~p(x)[log?p(x)q(x)]=?Ex~p(x)[log?q(x)p(x)]=?∑ip(xi)log?q(xi)p(xi)=H(p,q)?H(p)\begin{aligned} D_\text{KL}(p \| q) &= \mathbb{E}_{x \sim p(x)}\left[\log \frac{p(x)}{q(x)}\right] = -\mathbb{E}_{x \sim p(x)}\left[\log \frac{q(x)}{p(x)}\right] \\ &= -\sum_{i} p(x_i) \log \frac{q(x_i)}{p(x_i)}=\mathcal{H}(p, q) - \mathcal{H}(p) \end{aligned}DKL?(p∥q)?=Ex~p(x)?[logq(x)p(x)?]=?Ex~p(x)?[logp(x)q(x)?]=?i∑?p(xi?)logp(xi?)q(xi?)?=H(p,q)?H(p)? 相對熵較交叉熵有更多的優(yōu)異性質(zhì),主要為:- 當 ppp 分布和 qqq 分布相等時候,KL 散度值為 0,這是一個非常好的性質(zhì);
- KL 散度是非負的;
- 非對稱的,通過公式可以看出,KL 散度是衡量兩個分布的不相似性,不相似性越大,則值越大,當完全相同時,取值為0。
簡單對比交叉熵和相對熵,可以發(fā)現(xiàn)僅僅差了一個 H(p)\mathcal{H}(p)H(p),如果從優(yōu)化角度來看,ppp 是真實分布,是固定值,最小化 KL 散度情況下,H(p)\mathcal{H}(p)H(p) 可以省略,此時交叉熵等價于KL散度。在最優(yōu)化問題中,最小化相對熵等價于最小化交叉熵;
交叉熵大量應用在 Sigmoid 函數(shù)和 Softmax 函數(shù)中,最經(jīng)典的應用就是神經(jīng)網(wǎng)絡的訓練和邏輯回歸。而相對熵大量應用在生成模型中,例如 GAN、EM、貝葉斯學習和變分推導中。- 在監(jiān)督學習中,訓練神經(jīng)網(wǎng)絡所用到的相對熵的 loss 等價于交叉熵的 loss:DKL(p∣∣q)=Ex~p(x)[log?p(x)q(x)]=∑ip(xi)?log?p(xi)q(xi)=∑ip(xi)?log?p(xi)?∑ip(xi)?log?q(xi)=?∑ip(xi)?log?q(xi)\begin{aligned} D_\text{KL}(p||q) &= \mathbb{E}_{x\sim p(x)} \left[\log {\frac {p(x)} {q(x)}}\right] = \sum_{i}p(x_{i}) \cdot \log {\frac {p(x_{i})} {q(x_{i})}} \\&= \sum_{i}p(x_{i}) \cdot \log p(x_{i}) - \sum_{i}p(x_{i}) \cdot \log q(x_{i}) = - \sum_{i}p(x_{i}) \cdot \log q(x_{i}) \end{aligned}DKL?(p∣∣q)?=Ex~p(x)?[logq(x)p(x)?]=i∑?p(xi?)?logq(xi?)p(xi?)?=i∑?p(xi?)?logp(xi?)?i∑?p(xi?)?logq(xi?)=?i∑?p(xi?)?logq(xi?)? 因為 p(xi)p(x_i)p(xi?) 在分類任務中為 one-hot 形式的 label,label 為 0 或 1,所以有:∑ip(xi)?log?p(xi)=0\begin{aligned} \sum_{i}p(x_{i}) \cdot \log p(x_{i}) = 0 \end{aligned}i∑?p(xi?)?logp(xi?)=0?
總結(jié)
- 上一篇: gym中render()函数在远端ser
- 下一篇: 在Windows10上基于WSL2运行L