只告訴 AI「這個回答比較好」,它怎麼學會改進?
上一章用「要求+示範答案」,說明模型 (Model) 如何練習照指令回答。可是,有時我們沒有重新寫一份標準答案,只是看了兩個回答,說:「我比較喜歡這個。」
這句比較,怎麼變成電腦能用來訓練 (Training) 的資料?它又怎麼改變以後的回答?
先把過程分開:記下哪個回答較好,是準備資料;訓練程式接著利用這份比較,調整模型內的數值,才會影響後續回答的傾向。
不是只有一個正確寫法,怎麼教?
沿用上一章的句子。要求是:
請把「今天下雨,出門時記得帶傘。」縮短。
| 候選回答 | 內容 |
|---|---|
| 短回答 | 下雨帶傘。 |
| 較長回答 | 今天下雨,出門帶傘。 |
兩個回答都保留了下雨、帶傘的意思,也都比原句短。如果這次重視簡潔,評選者可以把短回答選為較好的一個。
這份資料記下的是:
| 同一筆比較裡要保存什麼 | 本例 |
|---|---|
| 原本的要求 | 請把那句話縮短。 |
| 比較喜歡的回答 | 下雨帶傘。 |
| 相較之下較不喜歡的回答 | 今天下雨,出門帶傘。 |
這稱為偏好回饋 (Preference Feedback):教電腦「對這個要求,這個回答比另一個更符合期待」。不是把較長回答宣判成錯誤,也不是說短回答適合所有要求。若要求改成保留時間資訊,評選理由也可能改變。
有了比較,訓練程式做什麼?
模型內有許多用來計算的數值,稱為權重 (Weights)。前面的章節已看過:數值變了,下一個 token 的機率 (Probability) 也會跟著變。
偏好訓練仍要調整這些數值,只是用來評分的資料換成了兩個回答之間的比較。先看一種直接使用成對比較的做法:
訓練程式會利用模型對兩段回答文字的計算結果,形成一個「目前有多符合這份比較」的評分。再依這個評分,算出權重應調整的方向。用於更新的誤差評分稱為損失 (Loss);它仍會接回前面學過的「計算誤差、更新數值」。
以下方練習為例:一筆資料選短回答時,如果模型仍很偏向較長回答,這筆比較的損失就比較大;若已偏向短回答,損失就比較小。訓練程式算出怎麼調數值能降低這批比較的平均損失,再執行更新。
比較標記提供方向;訓練程式把這個方向變成數值更新。 電腦不必先理解評選者心裡的理由,才能利用這種成對資料學習。
真實方法的評分與限制不只一種。例如有的方法會對照訓練前的一份模型,限制回答傾向的變動。這裡先抓住資料、評分與更新的關係,不把所有後訓練 (Post-Training) 都當成同一套做法。
選一筆比較,直接點選哪個回答較好,再用四筆評選資料訓練一步。
練習裡,究竟變了什麼?
為了看清因果,練習只保留兩個固定回答與一個可調數值。你可以逐筆修改四次評選:先點第幾筆,再直接選哪個回答較好。起點是兩個回答各有 50% 被選中的機會;結果區畫的是短回答的機率,另一個回答就是剩下的機率。
| 四筆比較資料 | 訓練一步後,選短回答的機率 |
|---|---|
| 三筆偏好短回答、一筆偏好較長回答 | 50.0% → 約 55.0% |
| 一筆偏好短回答、三筆偏好較長回答 | 50.0% → 約 45.0% |
| 兩邊各有兩筆 | 50.0% → 50.0% |
本表是章內簡化模型的實際計算。它只在兩個固定回答間選擇,不是大型語言模型 (Large Language Model, LLM) 的生成結果;真實 LLM 逐 token 產生文字,也不只調整一個數值。
第一組資料裡,短回答比較常被選為較好。更新後,它被選中的機率往上移;換成第二組,方向就反過來。第三組在本例的對稱起點,兩邊作用抵銷。
注意:三筆對一筆,不代表訓練一步就直接把機率改成 75%。資料先影響評分與更新方向,再透過數值的變動影響機率。這和前面的一步訓練是同一條因果線。
點選回答,是把偏好記入目前那一筆比較;還要按「用這四筆資料訓練一步」才會更新模型。切換查看第幾筆不改資料,也不會清掉訓練結果。
修改評選會讓模型回到同一起點,是為了公平比較不同資料的影響;「回到起點」也只重設模型,保留你目前的四筆評選。這是教材的對照設計,並不代表真實訓練每換一批資料都要從頭開始。
與直接給示範答案差在哪裡?
| 提供的學習資料 | 告訴訓練程式什麼 |
|---|---|
| 要求+示範回答 | 對這個要求,練習產生這份回答。 |
| 要求+兩個回答+偏好 | 對這個要求,這個回答比另一個更符合期待。 |
它們都可以用來調整已有模型,也可以出現在同一個製作流程中。偏好比較不等於每次都需要評選者寫出完整示範答案;但它仍需要回答材料、比較標記,以及真正執行訓練。
比較喜歡,不代表一定正確
如果評選者偏好語氣肯定卻有錯的答案,訓練資料就可能鼓勵這種表現。符合偏好和符合事實,是不同的檢查。
同一個人在不同要求下,也可能需要不同回答方式。不能只靠本例的四筆比較,就宣稱模型學會在新問題上取捨;仍要用未參與訓練的例子另外檢查。
聊天產品上的讚或倒讚,則是回饋入口。是否保存、如何整理、會不會用在日後訓練,取決於產品的資料流程;按下去不等於當場更新你正在使用的模型。聊天時直接說「短一點」,首先改變的是這次的上下文 (Context),也不能直接當成權重更新。
補充:本例的數值怎麼算?
不需要先算公式才能讀懂主文。若想核對練習:可調數值從 0 開始;短回答的選擇機率為「1 ÷ (1 + exp(−可調數值))」,較長回答是剩下的機率。
每一步以四筆比較計算平均損失,再按它的梯度 (Gradient) 更新;梯度描述數值稍微改變時,損失會怎麼變,程式用它決定調整方向與幅度。這個構造模型的更新式是「新數值 = 舊數值 − 0.8 × (目前選短回答的機率 − 偏好短回答的比例)」。所以三比一的第一步為「0 − 0.8 × (0.5 − 0.75) = 0.2」,換算後約為 55.0%。
這是將成對偏好目標簡化到兩個候選的算例:固定參考模型 (Reference Model) 兩邊各半、調整強度為 1。不能把這個一參數算式直接當成真實 LLM 的完整訓練程式。
參考:Hugging Face 的成對資料格式與直接偏好訓練、Direct Preference Optimization 原始研究(2026-10-14 查核)。本章聚焦一種直接比較回答的做法;其他利用偏好訓練的方法仍有不同步驟。