KL 散度 是什麼?
Kullback-Leibler Divergence:KL 散度 的完整解釋
衡量兩個機率分佈之間差異程度的指標,常用於資訊理論、生成模型訓練與分佈比較。
KL 散度(Kullback-Leibler Divergence),由統計學家所羅門·庫爾巴克與理查德·萊布勒於 1951 年提出,是資訊理論中的核心概念之一。它衡量的是:如果我們用分佈 Q 來近似真實分佈 P,會損失多少資訊,或者說兩個分佈之間的「資訊距離」有多大。KL 散度也被稱為相對熵(Relative Entropy),在資訊理論、統計推斷、機器學習中都有重要地位。
在數學定義上,對於離散分佈,KL 散度 DKL(P||Q) = Σ P(x) × log(P(x)/Q(x));對於連續分佈則取積分形式。幾個關鍵特性值得注意:KL 散度恆為非負值(由吉布斯不等式保證),且當且僅當 P 與 Q 完全相同時為 0。但 KL 散度並非對稱的,DKL(P||Q) 不等於 DKL(Q||P),因此嚴格來說它不是距離度量,而是「散度」。
這種不對稱性在機器學習中有實際意義。DKL(P||Q)(前向 KL,P 為真實分佈)傾向於讓近似分佈 Q 覆蓋真實分佈 P 的所有高概率區域,即使 P 有多個峰值也要盡量照顧到,這被稱為「均值尋找(Mean-Seeking)」行為。反之,DKL(Q||P)(反向 KL,Q 為近似分佈)傾向於讓 Q 集中在 P 的某個高概率峰值上,稱為「模式尋找(Mode-Seeking)」行為。在變分推斷(Variational Inference)中,選擇哪個方向的 KL 散度作為目標函數,會顯著影響近似後驗分佈的形狀。
在變分自動編碼器(VAE, Variational Autoencoder)的訓練中,KL 散度是損失函數的核心組成部分。VAE 的損失函數由兩部分組成:重建損失(Reconstruction Loss)衡量解碼器輸出與原始輸入的差異,以及 KL 散度項衡量學習到的隱空間分佈與標準常態分佈之間的差異。KL 散度項起到正規化作用,讓隱空間保持連續性與結構性,使得模型可以從隱空間中任意取樣生成合理的輸出。當 KL 散度項的權重(beta)增大時,隱空間的結構性更強,生成的多樣性會降低但連貫性提高;beta 為 1 時就是標準 VAE,beta 更大則稱為 beta-VAE,有助於學習解耦(Disentangled)的隱空間表示。
在強化學習領域,近端策略優化(PPO, Proximal Policy Optimization)演算法使用 KL 散度來約束每次策略更新的幅度,確保新策略不會偏離舊策略太多,從而穩定訓練過程,避免出現策略崩潰(Policy Collapse)的問題。
在知識蒸餾(Knowledge Distillation)中,KL 散度被用來衡量學生模型輸出分佈與教師模型輸出分佈之間的差異,幫助學生模型不只學習硬標籤(Hard Label),還能學習教師模型的「軟標籤(Soft Label)」知識,包含類別之間的相對信心程度。
除了 KL 散度本身,衍生的 JS 散度(Jensen-Shannon Divergence)解決了非對稱問題,JS 散度 = (DKL(P||M) + DKL(Q||M)) / 2,其中 M = (P+Q)/2。JS 散度是對稱的,且有界(介於 0 到 log(2) 之間),在生成對抗網路(GAN)的早期理論分析中扮演重要角色,Wasserstein GAN 的提出正是為了克服 JS 散度在分佈不重疊時梯度消失的問題。
在 iPAS 考試中,KL 散度常出現在模型評估、分佈比較與資訊理論相關題目。考生需要理解 KL 散度的定義、不對稱性(DKL(P||Q) ≠ DKL(Q||P))、與 JS 散度的關係、以及在 VAE 損失函數中的正規化作用。