熱門話題
#
Bonk 生態迷因幣展現強韌勢頭
#
有消息稱 Pump.fun 計劃 40 億估值發幣,引發市場猜測
#
Solana 新代幣發射平臺 Boop.Fun 風頭正勁
另一個有趣的觀察
在你的文本語料庫上執行 SGD 以最小化交叉熵損失
等同於
REINFORCE,即,基於策略的策略梯度,使用二元獎勵 "我的模型是否從語料庫生成文本"

8月12日 00:20
為什麼交叉熵對於語言預訓練是一個好的損失函數?
注意:這一切都是已知的;有趣的是,儘管對於「為什麼使用交叉熵」有許多觀點和直覺,但它們都可以從一個單一的起點得出。
這裡有一個簡單的第一原則推導,並不假設任何關於數據分佈的東西。它來自一個非常合理的操作需求:)
「我希望我的模型聽起來很智能」
但我們無法測量這一點,所以我們問:
「我希望我的模型聽起來像人類」
雖然我們可以訪問所有曾經寫過的文本,但我們也無法準確測量這一點,因此我們改為問:
「我希望我的模型生成的文本與所有曾經寫過的文本的可能性最大」
或者更直白地說:
「我希望我的模型記住訓練數據。」
考慮這個思想實驗:
給定一個數據集 S,包含人類所寫的所有文本,我們對 S 中的每個「文本」進行獨立試驗:
從我們的模型中抽樣:「樣本文本」 Pr( ;W)
檢查:「樣本文本」是否與原始文本完全匹配?注意:我們不對任何東西進行條件化!我們只是問,在模型可以生成的所有內容中,我們是否得到了「文本」。
將成功定義為事件:
E = 「所有每個樣本檢查成功」
E 的概率是,你的模型 W 對正確真實值分配的概率的乘積:
Pr(E) = Π_{text in S} Pr(text; W)
最大化 log Pr(E) 對 W 進行優化會給你交叉熵目標。
你如何用 SGD 來優化這個?
從語料庫中抽樣文本
計算每個文本前綴的 grad log Pr(token|prefix)
更新模型
優雅的是,這同時實現了:
1) 最小化模型 P( ;W) 下數據的描述長度(壓縮視角)
2) 最小化與真實分佈的 KL 散度——如果存在的話(雖然我們從未假設過一個)
3) 實現最大似然估計
這個推導是直接且眾所周知的,但它突顯了一個重要的事情:交叉熵自然地從想要精確重現訓練數據中產生。
P.S. 你本可以選擇最大化:
Pr(模型生成的文本在真實值中)
有趣的是,優化這個可能導致模式崩潰,因為最佳解是始終預測語料庫中的單一文本。然而,梯度再次看起來像交叉熵,但有一個乘法因子。
即,Pr(text;W) grad log Pr(text;W)
63.47K
熱門
排行
收藏