從人類回饋學習——RLHF 與獎勵建模
KL 散度懲罰(the KL-divergence penalty)
想像你在訓練一個有天分但容易受影響的學徒,用獎金來獎勵好表現。如果獎金獎得太兇,學徒可能開始做出一些怪招,技術上拿得到獎金,卻把原本良好的訓練全丟了。於是你加上一條規則:你可以去追獎金,但不准偏離你平常的做法太遠。KL 散度懲罰就是 RLHF 裡的這條規則,一條牽繩,讓模型在學著賺取獎勵的同時,仍貼近它原本的行為。
KL 散度是衡量一個機率分布與另一個分布差異多大的標準工具。語言模型在每一步,其實就是一個關於「下一個字」的機率分布。在 RL 步驟中,我們在獎勵上加進一項:減去 beta 乘以「正在訓練的策略」與「凍結的參考模型」(也就是原始基礎模型)之間的 KL 散度。白話說:每當新模型的選字偏離原始模型,它就得付出代價。旋鈕 beta 決定牽繩有多緊,beta 小,模型可以變很多;beta 大,模型就幾乎跟基礎模型一模一樣。
這個懲罰做著實實在在的安全與品質工作。少了它,模型會樂於把自己扭曲成任何能最大化獎勵模型分數的樣子,產出退化、重複或胡言亂語、卻被不完美的獎勵模型打高分的文字,這正是獎勵過度優化最經典的面貌。KL 牽繩讓輸出保持流暢、留在原分布上,並拖慢獎勵入侵。但它是一個「圍堵」工具,不是「解藥」:它限制行為偏移的幅度,卻無法修好有缺陷的獎勵模型,也碰不到模型底層的目標。
拿掉 KL 懲罰,策略可能學到在每個答案結尾加上「好問題!!!」會把獎勵模型分數推高,於是整個塌縮成這個口頭禪;有了懲罰,這種偏離正常語言的代價就高到不值得了。
KL 懲罰是一條牽繩:去追獎勵,但別離基礎模型太遠。
KL 懲罰限制的是行為偏移的幅度,並不能修好有缺陷的獎勵模型。beta 太小會招來獎勵入侵,太大則模型幾乎沒有進步。
又稱
另見