JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

熵、資訊與機率式機器學習

機率衡量不確定性;資訊理論衡量一則訊息消除了多少不確定性。從一個對數出發,我們建起熵、KL 散度與互資訊——並發現「訓練一個機器學習模型」,幾乎一字不差地,就是「最小化你資料帶來的驚訝」。

用位元來量驚訝

在這整條學習階梯裡,機率一直是我們描述不確定性的語言。資訊理論再加上一個詞:它問的不只是「我有多不確定?」,更是「這則訊息剛剛消除了多少不確定性?」連接兩者的,是一個幾乎無可避免的選擇。假設一個機率為 p 的事件發生了。你應該有多驚訝?一個近乎必然的事件(p 接近 1)應該幾乎不令人驚訝;一個你以為近乎不可能的事件(p 接近 0)則應該極為驚訝。而對於獨立事件,驚訝應當是可加的:得知兩件互不相關的事,帶來的驚訝應是各自驚訝的和。唯一能把「機率相乘」轉成「相加」的函數就是對數,所以我們把一個結果的驚訝定義為 -log(p)。

對數的底只是決定單位。底為 2 給出位元(bit):一個位元是一次公平擲幣的驚訝,因為 -log_2(1/2) = 1。底為 e 給出奈特(nat),在微積分裡更自然,也是機器學習通常採用的單位。一枚公平硬幣攜帶 1 位元;一顆公平的六面骰子攜帶 -log_2(1/6),約 2.58 位元——結果越多,驚訝越大,當你終於看見結果時得到的資訊也越多。請留意此處已浮現的一個誠實之處:驚訝是「某個特定結果在某個特定模型 p 之下」的性質。換掉模型,同一個結果攜帶的位元數就會不同。

熵:平均驚訝

若 -log(p) 是一個結果的驚訝,那麼自然的下一問是:在我看見結果之前,平均而言我會有多驚訝?這個平均就是[[shannon-entropy|夏農熵]]。對於機率質量為 p(x) 的隨機變數 X,它就是驚訝的期望:H(X) = 對所有 x 求和 p(x) 乘以 -log(p(x))。它是一個X 之函數的期望——正是你很久以前學過的 LOTUS 招式,此處應用於函數 -log(p(X))。因此熵以位元或奈特為單位,並用一個數字量化:在任何觀測之前,整個分配有多不確定。

H(X) = - sum_x  p(x) log p(x)        (entropy, average surprise)

fair coin   p = (1/2, 1/2)   ->  H = 1 bit       (max for 2 outcomes)
biased coin p = (0.9, 0.1)   ->  H ~ 0.47 bits   (more predictable)
sure thing  p = (1, 0)       ->  H = 0 bits      (no surprise at all)
熵在均勻分配時最大(最不確定),在確定的結果時為零。慣例 0 log 0 = 0 乾淨地處理了不可能的結果。

兩個事實賦予熵它的形貌。第一,它從不為負,因為對於 p 落在 [0, 1] 的每一項 p(x) 乘以 -log(p(x)) 都非負。第二,對於有 k 個可能結果的變數,熵恰好在分配為均勻時最大,給出 H = log(k);任何偏斜都會把它拉低。這正是為什麼公平硬幣(1 位元)比偏向的硬幣(0.47 位元)更難預測:均勻意味著最大的不確定。夏農的來源編碼定理隨後讓單位變得字面成真——熵是「編碼此來源時每符號所需的平均位元數」,沒有任何壓縮方案能在平均意義上勝過它,這也是為什麼 H 被稱為資訊量。

KL 散度:相信錯誤模型的代價

現在進入驅動下游一切的關鍵一步。假設資料其實來自分配 p,但你卻圍繞另一個分配 q 來建立你的信念——以及你的壓縮編碼。你為「弄錯」付出多少代價?你用錯誤的模型計算驚訝 -log(q(x)),但它們實際上以正確的頻率 p(x) 發生,所以你的平均驚訝是交叉熵,即對所有 x 求和 -p(x) log(q(x))。減去那個無可避免的下限,也就是真正的熵 H(p),剩下的差距就是[[kullback-leibler-divergence|Kullback-Leibler 散度]] D(p given q):你把 p 當成 q 來建模時,平均每符號白白浪費的額外位元。

KL 散度最重要的單一性質,是它從不為負,且唯有 q 恰好吻合 p 時才等於零。這就是 Gibbs 不等式,而最乾淨的證明,是你在動差那一階段早已擁有的:它不過是把Jensen 不等式應用於凹函數對數而已。正因如此,KL 表現得像一個「q 離 p 有多遠」的有向度量——一種分配之間的距離概念。但對這個詞要誠實:它不是真正的距離。KL 是非對稱的,D(p given q) 一般不等於 D(q given p),而且它不滿足三角不等式。它衡量的是某個特定方向上被浪費的位元,而非對稱的差距。

互資訊:一個變數能告訴你關於另一個多少

熵衡量一個變數中的不確定性;[[mutual-information|互資訊]]衡量「得知一個變數能減少你對另一個的不確定性多少」。它乾淨的定義是一個喬裝的 KL 散度:I(X; Y) 是「真正的聯合分配 p(x, y)」與「邊際分配之積 p(x) p(y)」之間的 KL 散度。回想聯合分配那一階段:聯合恰好等於邊際之積,當且僅當 X 與 Y 獨立。所以互資訊字面上就是「變數實際如何共同行為」與「它們若獨立會如何行為」之間的散度。它恰好在 X 與 Y 獨立時為零,否則為正。

還有一個等價且更直觀的讀法:I(X; Y) = H(X) - H(X given Y)。第一項是你在看見 Y 之前對 X 的不確定性;第二項是你看見 Y 之後殘留的不確定性。它們的差,恰好是「觀測 Y 所抹除的不確定性」——Y 攜帶的關於 X 的資訊。由對稱性,它也等於 H(Y) - H(Y given X),所以資訊是相互的:Y 告訴你關於 X 的,與 X 告訴你關於 Y 的一樣多。一個具體的畫面:若一項醫學檢驗結果 Y 把你對疾病狀態 X 的熵從 1 位元降到 0.3 位元,那麼這項檢驗就遞送了 0.7 位元關於診斷的資訊。

互資訊能偵測任何統計相依,無論線性與否——這正是它相較於相關係數的一大優勢,後者對於關係強烈但非線性的變數可能為零。但前面各階段的同一個告誡在此完全適用:大的 I(X; Y) 意味著兩個變數共享資訊,而不是其一導致另一。資訊是對稱的;因果不是。相關不蘊含因果,互資訊同樣不蘊含因果。

從散度到學習:通往機器學習的橋樑

這就是把整個階段綁在一起的收成。一個機器學習模型是一族帶參數的分配 q_theta,而「訓練」就是選擇 theta,使 q_theta 最佳地吻合資料未知的真實分配 p。自然的目標是最小化 D(p given q_theta)——被浪費的位元。但我們證過它等於交叉熵減去常數 H(p),所以最小化 KL 散度就是最小化交叉熵。而交叉熵,用你的資料集平均來估計時,恰恰就是「平均對數似然」的負值。因此最小化它就是最大似然估計——你在「通往統計學」那一篇遇過的主力,如今揭曉為一個資訊理論的行動。

  1. 目標:讓你的模型 q_theta 靠近真實資料分配 p,亦即對參數 theta 最小化 D(p given q_theta)。
  2. 拆開它:D(p given q_theta) = H(p, q_theta) - H(p)。由於 H(p) 由現實固定,最小化 KL 與最小化交叉熵 H(p, q_theta) 是同一回事。
  3. 用資料估計交叉熵:對你的訓練樣本平均 -log q_theta(x)。這就是平均對數似然的負值。
  4. 最小化那個平均,恰恰就是最大似然。所以「最小化交叉熵損失」與「以最大似然來擬合」是同一個程序的兩個名字。

這正是為什麼你將遇到的幾乎每一個分類器,其損失函數都叫做交叉熵損失,也是為什麼同一套機制坐落在如此多模型之下。一個隱馬可夫模型——一條你無法直接看見其狀態、只能透過帶噪訊號的釋放來觀測的馬可夫鏈——是藉由最大化觀測序列的似然來擬合的,正是同一個交叉熵最小化,只是換上了時間序列的裝束。整個階段的縱覽於是收束成一個故事:貝氏那幾篇的先驗與後驗供給分配,蒙地卡羅與 MCMC 讓你在積分難解時仍能與之計算,統計把估計繫於資料,而資訊理論告訴你「好的擬合」究竟是什麼意思——浪費最少位元的那個模型。

誠實的界限,以及這條路通向何方

幾個誠實的告誡,能避免這些優雅的量被誤用。KL 散度與交叉熵是相對於某個模型 q 來定義的,而若 q 把機率零指派給一個 p 認為可能的結果,它們就會爆炸到無窮——你的模型宣告某事不可能,然後現實偏偏產生了它,於是驚訝字面上無界。這正是為什麼可用的模型會在各處都抹上一點點機率。微分熵,亦即用密度寫成的連續類比,失去了離散版本某些乾淨的保證:它可以為負,而且會在變數變換之下改變,因為密度不是機率,拉伸坐標軸就會把它重新縮放。位元計數的直覺對離散來源是精確的,在連續情形下則只是一個需要小心的類比。

還有一個觀念上的要點,與本階段第一篇首尾相連。「該考慮哪一族模型」這個選擇——也就是先驗的結構——並非由資料交給我們;它是一個假設,而長久以來的貝氏與頻率學派之爭,有一部分正是在爭論「要多坦白地承認它」。資訊理論在此是中立的:它告訴你,給定兩個候選模型,哪一個浪費較少位元,卻無法從無到有變出正確的模型族。那句有名的口號——「在你的約束之下,最大熵分配是『最少偏見』的選擇」——確實有用,但它是一個「在模型之間做選擇」的原則,而非「自然會服從它」的保證。

於是這條階梯在它出發之處收尾,卻已脫胎換骨。我們起初問的是「機率究竟是什麼」;我們結束於「用機率量化資訊、衡量信念之間的距離,並定義一台機器『學習』究竟是什麼意思」。早先各階段的每一件工具,都在此以新的角色重現——期望化為平均驚訝,Jensen 不等式證明了某個散度非負,條件分配化為被減少的不確定性。前方的前沿,無論深度學習還是現代統計,幾乎完全由這些零件搭成。你如今已擁有讀懂它的語言。