知識蒸餾 - 最小化KL散度與最小化交叉熵是完全等價的
flyfish
KL散度與交叉熵的數學關系
對于兩個概率分布 PPP(真實分布)和 QQQ(模型預測分布),KL散度的定義是:
DKL(P∥Q)=∑xP(x)log?(P(x)Q(x)) D_{KL}(P \| Q) = \sum_{x} P(x) \log\left( \frac{P(x)}{Q(x)} \right) DKL?(P∥Q)=x∑?P(x)log(Q(x)P(x)?)
通過簡單拆分,可以寫成:
DKL(P∥Q)=∑xP(x)log?P(x)?∑xP(x)log?Q(x) D_{KL}(P \| Q) = \sum_{x} P(x) \log P(x) - \sum_{x} P(x) \log Q(x) DKL?(P∥Q)=x∑?P(x)logP(x)?x∑?P(x)logQ(x)
其中:
第一項 ?∑xP(x)log?P(x)-\sum_{x} P(x) \log P(x)?∑x?P(x)logP(x) 是真實分布 PPP 的熵(Entropy),記為 H(P)H(P)H(P);
第二項 ?∑xP(x)log?Q(x)-\sum_{x} P(x) \log Q(x)?∑x?P(x)logQ(x) 是 PPP 和 QQQ 的交叉熵(Cross-Entropy),記為 H(P,Q)H(P, Q)H(P,Q)。
因此,KL散度與交叉熵的關系可以表示為:
DKL(P∥Q)=H(P,Q)?H(P) D_{KL}(P \| Q) = H(P, Q) - H(P) DKL?(P∥Q)=H(P,Q)?H(P)
真實分布 PPP 的熵 H(P)H(P)H(P) 是固定不變的常數(甚至為0)
1. 真實分布 PPP 是“確定性的one-hot分布”,與模型無關
在分類任務中,“真實分布 PPP”本質上是樣本真實標簽的數學表達,它由數據本身的標簽決定,與模型的預測(QQQ)無關。
例如:
- 對于“判斷一張圖片是貓/狗/鳥”的3類任務,若某樣本的真實標簽是“貓”,則 PPP 被定義為 [1,0,0][1, 0, 0][1,0,0](one-hot向量,只有“貓”對應的位置為1,其余為0);
- 若另一樣本的真實標簽是“狗”,則 PPP 被定義為 [0,1,0][0, 1, 0][0,1,0]。
這種“one-hot分布”的核心特點是:確定性——每個樣本的真實類別是唯一且固定的,因此 PPP 的形式完全由樣本標簽決定,不會隨模型參數、訓練過程變化。
2. one-hot分布的熵必然為0,且不隨樣本變化
根據信息熵的定義:
H(P)=?∑xP(x)log?P(x) H(P) = -\sum_{x} P(x) \log P(x) H(P)=?x∑?P(x)logP(x)
對于one-hot分布,可以逐點計算求和項:
- 對于真實類別對應的 xxx:P(x)=1P(x) = 1P(x)=1,而 log?1=0\log 1 = 0log1=0,因此該項為 1?log?1=01 \cdot \log 1 = 01?log1=0;
- 對于非真實類別對應的 xxx:P(x)=0P(x) = 0P(x)=0,而 0?log?00 \cdot \log 00?log0 在信息熵中被定義為0(因為“不可能發生的事件”對熵沒有貢獻);
因此,整個求和結果為 ∑xP(x)log?P(x)=0\sum_{x} P(x) \log P(x) = 0∑x?P(x)logP(x)=0,代入熵的公式得:
H(P)=?0=0 H(P) = -0 = 0 H(P)=?0=0
3. 為什么“固定不變”?
因為:
- 每個樣本的真實標簽是確定的(例如“這張圖一定是貓”),因此其對應的one-hot分布 PPP 是固定的;
- 所有樣本的真實分布 PPP 的熵 H(P)H(P)H(P) 都為0(如上述計算),且這個值不依賴于模型的預測分布 QQQ(模型怎么預測都不會改變樣本的真實標簽)。
因此,在整個訓練過程中,真實分布 PPP 的熵 H(P)H(P)H(P) 始終是0(或固定的常數),不會隨模型參數變化而改變。
真實分布 PPP 由樣本的真實標簽唯一確定(one-hot形式),其熵計算結果恒為0,且與模型無關,是固定不變的常數。
因此:優化交叉熵 ≡ 優化KL散度
在上述場景中(真實分布 PPP 固定,且 H(P)H(P)H(P) 為常數),KL散度的表達式簡化為:
DKL(P∥Q)=H(P,Q)?常數 D_{KL}(P \| Q) = H(P, Q) - 常數 DKL?(P∥Q)=H(P,Q)?常數
這意味著:最小化KL散度 DKL(P∥Q)D_{KL}(P \| Q)DKL?(P∥Q) 與最小化交叉熵 H(P,Q)H(P, Q)H(P,Q) 是完全等價的(因為常數不影響優化方向)。