【譯】用信息論剖析深度學習

做者:Lilian Wenghtml

翻譯:老齊git

與本文相關書籍推薦:《數據準備和特徵工程》github


最近,我聆聽了Naftali Tishby教授的演講「深度學習中的信息論」,感受頗有意思。他在演講中說明了如何將信息論用於研究深度神經網絡的增加和轉換,他利用IB(Information Bottleneck)方法,爲深度神經網絡(DNN)開創了一個新的領域,因爲參數的數量成指數增加,致使傳統的學習理論在該領域均行不通。另外的一種敏銳觀察顯示,在DNN訓練中包含了兩個迥異的階段:首先,訓練網絡充分表示輸入數據,最小化泛化偏差;而後,經過壓縮輸入的表示形式,它學會了忘記不相關的細節。算法

基本概念

馬爾科夫鏈

馬爾科夫過程是一個「無記憶」(也稱爲「馬爾科夫性質」)的隨機過程,馬爾科夫鏈是一類包含多個離散狀態的馬爾科夫過程,也就是說,過程的將來狀態的條件機率僅由當前狀態決定,而不取決於過去狀態。markdown

KL散度

KL散度用於度量一個機率分佈p偏離另外一個指望的機率分佈q的程度,它是不對稱的。網絡

\begin{aligned}D_{KL}(p \| q) &= \sum_x p(x) \log \frac{p(x)}{q(x)} dx \\
 &= - \sum_x p(x)\log q(x) + \sum_x p(x)\log p(x) \\
&= H(P, Q) - H(P)\end{aligned}

p(x) == q(x)時,D_{KL}達到最小值零。函數

互信息

互信息度量兩個變量之間的相互依賴程度,它把一個隨機變量經過另外一個隨機變量所得到的「信息量」進行量化,互信息是對稱的。oop

\begin{aligned}
I(X;Y) &= D_{KL}[p(x,y) \| p(x)p(y)] \\
 &= \sum_{x \in X, y \in Y} p(x, y) \log(\frac{p(x, y)}{p(x)p(y)}) \\
 &= \sum_{x \in X, y \in Y} p(x, y) \log(\frac{p(x|y)}{p(x)}) \\ 
 &= H(X) - H(X|Y) \\
\end{aligned}

數據處理不等式(DPI)

對於任意的馬爾科夫鏈: X \to Y \to Z,咱們有I(X; Y) \geq I(X; Z)性能

深度神經網絡能夠看做是一個馬爾科夫鏈,所以當咱們沿着DNN層向下移動時,層與輸入之間的互信息只會減小。學習

再參數化不變性

對於兩個可逆函數\phi\psi,互信息仍然是:I(X; Y) = I(\phi(X); \psi(Y))

例如,若是咱們在DNN的一個層中調整權重,它不會影響這個層和另外一個層之間的互信息。

馬爾科夫鏈的深度神經網絡

訓練數據來自XY聯合分佈的抽樣觀測,輸入變量X和隱藏層的權重都是高維隨機變量。真實值Y和預測值\hat{Y}是分類設置中較小維度的隨機變量。

圖1:一個深度神經網絡的結構,它包含標籤Y、輸入層X、隱藏層h_一、…、h_m和預測值\hat{Y}

若是咱們將DNN的隱藏層標記爲h_1,h_2,…,h_m,如圖1所示,咱們能夠將每一層看做是一個馬爾科夫鏈的狀態:h_i \to h_{i+1}。根據DPI,咱們有:

H(X) \geq I(X; h_1) \geq I(X; h_2) \geq \dots \geq I(X; h_m) \geq I(X; \hat{Y}) \\
I(X; Y) \geq I(h_1; Y) \geq I(h_2; Y) \geq \dots \geq I(h_m; Y) \geq I(\hat{Y}; Y)

DNN的設計目的是學習如何描述X,以便預測Y;最終,將X壓縮成只包含與Y相關的信息。Tishby將這一過程描述爲「相關信息的逐次細化」。

信息平面定理

DNN依次實現了X的內部表示,一組隱藏層{T_i}。根據信息平面定理,經過它的編碼器和解碼器信息來描述每一層,編碼器即對輸入數據X編碼,而解碼器則將當前層中的信息轉換爲目標輸出Y

準確地說,在一個信息平面圖中:

  • X軸:樣本T_i複雜度由編碼器互信息I(X;T_i)決定,樣本複雜度是指你須要多少個樣原本達到必定的準確性和泛化。
  • Y軸:精度(泛化偏差),由解碼器互信息I(T_i;Y)決定。

圖2:50個DNN隱藏層的編碼器和解碼器的交互信息。不一樣層有不一樣色彩的編碼器,綠色是緊挨着輸入的一層,橙色是離輸入最遠的一層。有三個快照,分別是初始階段、400個階段和9000個階段。

圖2中的每一個點表示一個隱含層的編碼器或解碼器的互信息(不採用正則化;沒有權重衰減,沒有丟失,等等)。它們按照預期的那樣向上移動,由於關於真實標籤的知識在增長(準確性在提升)。在早期階段,隱藏層瞭解了不少關於輸入X的信息,可是以後它們開始壓縮以忘記輸入的一些信息。Tishby認爲,「學習的最重要的部分其實是遺忘」。

圖3:這是圖2的彙總視圖。在泛化偏差變得很是小以後進行了壓縮。

兩個優化階段

對各層權重的均值和標準差的及時跟蹤還顯示了訓練過程的兩個優化階段。

圖4:各層權重梯度的均值和標準差的範數做爲訓練函數。不一樣的層用不一樣的顏色。

在早期階段中,平均值比標準差大三個量級。 通過足夠的時間段後,偏差趨於飽和,隨後標準差變得更大。離輸出越遠的層,噪聲就越大,這是由於噪聲能夠經過反向傳播過程放大和累積(而不是因爲層的寬度)。

學習理論

「舊的」泛化

經典學習理論定義的泛化範圍爲:

\epsilon^2 < \frac{\log|H_\epsilon| + \log{1/\delta}}{2m}
  • \epsilon:訓練偏差與泛化偏差的差值。泛化偏差衡量的是一個算法對前所未見的數據的預測有多準確。
  • H_\epsilon: 假設,一般咱們假設大小爲\vert H_\epsilon \vert \sim (1/\epsilon)^d.
  • \delta: 信度。
  • m: 訓練樣本的數目。
  • d:假設的VC維度。

該定義指出,訓練偏差和泛化偏差之間的差別受假設空間大小和數據集大小的限制。假設空間越大,泛化偏差就越大。

可是,它不適用於深度學習。網絡越大,須要學習的參數越多。有了這種泛化界限,較大的網絡(較大的d)會有更糟的界限。咱們直覺上會認爲更大的網絡可以實現更好的性能和更高的表達能力。這裏倒是和直覺相反。

「新的」輸入壓縮

爲了應對這種違反直覺的觀察數據,Tishby等人提出了DNN的新輸入壓縮範圍。

首先讓咱們將T_\epsilon做爲輸入變量X\epsilon分區。此分區將有關標籤同質性的輸入壓縮爲小單元格,全部單元格能夠覆蓋整個輸入空間。若是預測輸出二進制值,則能夠用2^{\vert T_\epsilon \vert}代替假設的基數\vert H_\epsilon \vert

|H_\epsilon| \sim 2^{|X|} \to 2^{|T_\epsilon|}

X比較大時,X的大小大約是2^{H(X)}。ϵ所在的每一個單元格的大小是2^{H(X \vert T_\epsilon)}。所以,咱們有\vert T_\epsilon \vert \sim \frac{2^{H(X)}}{2^{H(X \vert T_\epsilon)}} = 2^{I(T_\epsilon; X)}。那麼,輸入壓縮範圍就成了:

\epsilon^2 < \frac{2^{I(T_\epsilon; X)} + \log{1/\delta}}{2m}

圖5:黑線是可實現的最佳IB極限。在一個有限的樣本集上訓練時,紅線對應樣本外IB失真的上限。ΔC是複雜性的差距和ΔG是泛化的差距。

網絡和訓練數據的大小

更多隱藏層的好處

擁有更多的層會給咱們帶來計算上的好處,並加快訓練過程,以得到更好的泛化效果。

圖6:有更多的隱藏層,優化時間更短(階段更少)。

經過隨機鬆弛算法進行壓縮:根據擴散方程,k層的鬆弛時間與該層壓縮量\Delta S_k: \Delta t_k \sim \exp(\Delta S_k)的指數成正比。咱們能夠按照\Delta S_k = I(X; T_k) - I(X; T_{k-1})計算層壓縮。由於\exp(\sum_k \Delta S_k) \geq \sum_k \exp(\Delta S_k),因此咱們指望使用更多的隱藏層(更大的k)來使訓練週期呈指數式減小。

更多訓練樣本的好處

擬合更多的訓練數據須要經過隱藏層捕獲更多的信息,隨着訓練數據量的增長,解碼器互信息I(T;Y) (還記得嗎,這與泛化偏差直接相關)被推高,更接近理論IB的邊界。Tishby強調,與標準理論不一樣,決定泛化的是互信息,而不是層的大小或VC維度

圖7:不一樣大小的訓練數據用不一樣顏色編碼。這裏繪製了多個聚合網絡的信息平面。訓練數據越多,泛化效果越好。

原文連接:lilianweng.github.io/lil-log/201…

搜索技術問答的公衆號:老齊教室

在公衆號中回覆:老齊,可查看全部文章、書籍、課程。

以爲好看,就點贊轉發/strong>

相關文章
相關標籤/搜索