從人類回饋學習——RLHF 與獎勵建模

best-of-n 取樣(best-of-n sampling)

當某件事真的重要時,你會寫幾份草稿、寄出最好的那一份。best-of-n 取樣把這個習慣套用到語言模型上:對一個提示產生 n 個不同的答案,用獎勵模型替每個打分,再回傳分數最高的那一個。模型的權重從不改變;你只是在「產生答案時」多花一些計算,來篩出品質。

具體來說,假設 n 設為 16,模型取樣出 16 個候選回覆,獎勵模型替全部 16 個評分,使用者只看到勝出的那一個,其餘 15 個被丟棄。這有時稱為拒絕取樣。它吸引人之處在於極其簡單、不需要脆弱的 RL 訓練,而且容易調節:n 越大通常答案越好,但計算量也成比例增加。它也是一個乾淨的基準,用來判斷完整的 RL 微調是否值得;而勝出的樣本還可以蒐集起來去微調一個模型,使它第一次就產出這類答案(一種蒸餾)。

best-of-n 是一個有用又可控的提升品質方式,但它逃不過 RLHF 的核心陷阱。因為它挑的是獎勵模型打分最高的那個,較大的 n 等於給了代理更多機會暴露自己的盲點,所以把 n 推得很高,就會像 RL 訓練一樣漂進獎勵過度優化,挑出的是鑽獎勵模型漏洞、而非真正更好的答案。在分析中,它常被放在與 RL 微調相同的 KL 散度預算下衡量,使這兩者作為「用計算換對齊」的方式可以直接相比。

對一個棘手的客服問題,系統悄悄產生 8 個答案,獎勵模型替它們評分,使用者只收到評分最高的那一個,不涉及任何重新訓練,只是在回答的當下多花了計算。

best-of-n 用推論時的計算換取品質,做法是多取樣、留最好。

best-of-n 對古德哈特並不免疫:n 越大,給獎勵模型被鑽漏洞的機會就越多,因此極大的 n 會漂進和 RL 微調一樣的獎勵過度優化。

又稱
BoNrejection samplingbest-of-nn 選一取樣