
來源 | 知乎
作者 | leshare
一、引言
本文主要介紹我對當前大模型對齊框架的反思及其改進思路,最終的目標是實現一個對人力標註依賴很小,能夠自我進化的對齊模型。
二、我理想中的大模型
作為一位大模型使用者,我對大模型有以下幾點期待:
大模型能越來越懂我(千人千面):比如我今天花了很多時間撰寫了一個比較複雜但準確的指令,成功得到了符合預期的回覆,第二天我使用一個更為簡潔但任務相同的指令也能得到類似的回覆,我不想重複寫那麼複雜的指令。又比如我經常告訴大模型在返回程式碼的時候不要解釋,那麼我希望以後即使我沒有明確說不要解釋,大模型也能夠儘量幫我避免給出解釋,這樣會讓我感到驚喜。
大模型的回覆方式越來越智慧(千題千面):比如對於一個比較複雜的問題,大模型能夠自動使用CoT模式幫我解答並得出正確的回答,而對於更為簡單的問題(即使是相同任務),大模型能夠直接給出答覆,而不是一直使用CoT形式進行回覆,這樣會顯得很呆。又比如對於一個較難的問題,大模型今天還需要使用很複雜的模式進行回覆,一段時間之後就能以更為簡潔的方式進行回覆,這會讓我感覺大模型一直在進步,值得期待。
大模型對複雜問題的支援度越來越好:這是對模型的基本要求。
但是,我認為當前的技術架構很難滿足期望1和期望2,或者說對人力的要求過大。而對於期望3,目前的智慧體、O1是一種解決方案,但智慧體或者O1沒能和普通模型融合,納入到一個統一的系統中是一種遺憾。下面解釋為什麼我認為現行的大模型對齊技術路線無法很好地滿足期望1和期望2,無法統一普通模型和專有的智慧體模型。
三、大模型對齊的技術架構和潛在問題
3.1 指令對齊典型流程
目前業內主要採用SFT+RM+DPO/PPO指令對齊技術架構,其主要由以下幾個步驟構成:
-
• 訓練一個SFT模型; -
• 收集query並抓取SFT(optional :第三方模型、人工撰寫)的輸出 -
• 給SFT輸出打分(optional:收集開源資料),得到偏好資料 -
• 在step 3得到的資料基礎上訓練一個打分模型RM(可以是一個囊括了各種工具的打分系統)(optional: 在偏好資料上訓練一個DPO模型) -
• 收集query,基於SFT/DPO和RM,訓練一個PPO模型
在此框架下,PM或RD一般會預先確定一個輸出標準(這一輸出標準往往反映在評測資料集上),然後按照這一標準構建SFT、RM(DPO)資料,同時在這一標準下評估各個階段的模型。比如有些模型喜歡在回覆的最後給出一段註釋,或者在使用者要求給出理由的時候先給出核心答案再給出理由。但是,接下來我們會介紹,用一個統一的標準來約束對齊的每個階段會極大地限制模型的自我進化和對不同需求的滿足能力。
3.2 當前框架的潛在問題
統一的輸出標準天然地限制了大模型的千人千面、千題千面能力,進而也限制了大模型的自我進化和能力的統一。具體來講,統一的輸出標準具有但不限於如下幾點問題:
-
• 不利於輸出形式的調整:隨著新老使用者的交替以及使用者對模型需求的變化,模型的期望輸出形式也會發生改變。如果模型的輸出形式固化,後期調整模型輸出形式需要對資料進行大規模的改動——已有資料的退場和新資料的構建。 -
• 不利於實現千人千面、千題千面:統一的輸出形式很難滿足不同使用者的需求,也無法充分挖掘使用者的偏好反饋為將來的千人千面做儲備。從任務完成層面來看,即使是同一個任務,不同問題的難易程度不同。對於比較難的問題,模型可能需要使用CoT甚至更復雜的Agent模式進行回覆;而對於簡單的問題,模型可以直接回復。一致性地採用複雜的輸出模式會造成資源的浪費,而一致性地採用簡單的回覆模式又可能導致模型在一些複雜問題上犯錯。 -
• 不利於模型自我進化:一個比較理想的模型能力進化路徑是從複雜模式出發,不斷強化模型在簡單模式下的能力,不斷形成正確性和簡潔性的新平衡。固化模型的輸出形式會限制了模型的探索能力,不利於模型實現能力的自動進化。 -
• 不利於在效能上構建護城河:首先,因為無法很好地支援千人千面,導致無法有效形成使用者越多-效果越好-使用者越多的飛輪,在使用者體驗上無法和其他平臺拉開差異。其次,因為輸出的模式化,其他平臺可以大規模抓取我方模型的輸出,快速對齊我方模型的效能。事實上,如果能讓模型從多樣化的輸出形式出發,引入使用者因子,然後逐步根據自身能力收斂輸出模式,那麼模型的輸出就和模型能力進行了深度繫結,第三方模型很難透過抓取該模型的輸出來得到和該模型相同的效果。
四、對當前對齊框架的改進思路
基於以上思考,下面討論如何調整對齊的各個階段,從而實現上面提到的我期待的大模型。
4.1 SFT
令 表示語言模型分佈, 表示對話模型分佈。SFT是將模型在給定指令下的回覆由語言模型輸出空間遷移到對話輸出空間,也即 。其實現方式是對齊一些輸入輸出pairs。得益於大語言模型很好的泛化能力(ICL 能力——當 是兩個任務相近樣本時, ),SFT之後的對話模型往往有著很好的泛化能力。
SFT不擅長理解和遵循『不要做什麼』指令:
和傳統的分類任務不同,語言模型的SFT是一個生成任務,不具備很強的排他性。在傳統的分類任務中,最佳化模型使得目標類的機率變大,很容易導致其他類別的機率變小。而在語言模型的SFT中,輸出往往不是唯一的,同時為了保留語言模型的知識,最佳化正例時並不會將正例的機率最佳化成1而將其他可能的回覆的機率最佳化變成0。
換句話說,SFT只是告訴了模型訓練資料中的回覆是可行的,但模型無法像普通分類任務那樣利用排他性確定哪些輸出是不可行(對於排他性比較好的任務,語言模型的分佈本身就有較好的排他性,提升SFT訓練樣本的機率會大幅降低其他回覆的機率)。因此,對於一些回覆多樣性較高的任務,SFT很難避免模型生成不恰當的回覆。
從排他性角度來看,SFT擅長『要做什麼』指令,但不擅長『不要做什麼』指令,尤其是在輸出靈活性很高的任務上如創作、摘要。例如對於『生成一篇100字以內的文章』這一指令,其隱含的『不要做什麼』的指令是『文章不要超過100字』。對於這一指令,SFT階段會給模型一個100字以內的文章,但這並不足以讓模型確定超過100字的回覆是不可行的或者說機率是極小的。如果一定要用SFT來解決這類問題,那麼只能不斷增加正例數量,擠壓負例的機率。但因為這類任務下的正例排他性非常低,這樣做的效率也是非常低的。因此,不建議依賴SFT來提升模型對於『不要做什麼』指令的理解和遵循能力。
SFT不應該追求統一的輸出形式,而應該追求多元的輸出形式:
在預定義輸出標準的指導下,不少同學追求在SFT階段對齊使用者(或產品、RD)的偏好,固化模型的輸出形式;或者選擇一種初始模型表現較好的形式作為模型的預設回覆形式,比如推理任務下預設使用CoT形式進行回覆,資訊抽取任務中預設不給解釋。這樣的做法會給模型的能力升級帶來很大的困難:
-
• 不利於後期輸出形式的調整:隨著新老使用者的交替以及使用者對模型需求的變化,模型的期望輸出形式也會發生改變。如果在SFT階段就固化了模型的輸出形式,後期調整模型輸出形式需要對SFT進行大規模的改動——大量輸出形式不再合適的資料的存在使得增加少量具有新輸出形式的SFT資料很難起作用,須先對已有資料進行大規模的退場。 -
• 不利於對不同尺寸模型的適配:不同模型的能力是不同的,大模型可能可以使用簡潔的方式回覆給定問題,而小模型可能需要更復雜的輸出方式。如果只給定一種回覆模式,那麼註定很難同時滿足多個不同的模型:為大模型建設的SFT資料可能無法很好地調教小模型,而為小模型構建的SFT資料對大模型而言過於累贅低效。 -
• 不利於實現千人千面、千題千面:從使用者層面來看,不同的使用者對回覆的傾向是不同的。ToB使用者可能更喜歡簡潔的回覆,而ToC更喜歡具備詳細解釋的回覆。統一的輸出形式很難滿足不同使用者的需求,也無法充分挖掘使用者的偏好反饋為將來的千人千面做儲備。從任務層面來看,即使是同一個任務,不同case的難易程度及其恰當的回覆形式也是不同的。對於比較難的case,模型可能需要使用CoT或者更復雜的Agent模式進行回覆;而對於簡單的case,模型可以直接回復答案。一致性地採用複雜的輸出模式會造成資源的浪費,而一致性地採用簡單的回覆模式又可能導致模型在一些複雜cases上犯錯。SFT階段固化輸出形式無法實現不同能力的相容,會導致顧此失彼(比如有些平臺需要兩套不同的介面來區分Agent和非Agent。) -
• 不利於模型自我進化:一個比較理想的模型能力進化路徑是從複雜輸出模式出發,不斷強化模型簡單輸出模式下的能力,不斷形成正確性和簡潔性的新平衡。而如果在SFT階段固化模型的輸出形式,限制了模型的探索能力,不利於模型在PPO階段透過大規模探索自動實現能力的進化。 -
• 不利於形成護城河:因為模型輸出的模式化,其他平臺可以大規模抓取我方模型的輸出,快速對齊我方模型。又因為沒有及時引入使用者資訊,導致無法有效形成使用者越多-效果越好-使用者越多的飛輪。 -
• 不利於爭取其他平臺的使用者:這主要是不同平臺的輸出標準不同,固化SFT的輸出標準會增加使用者從其他平臺遷移到我方平臺的成本和難度。
因此,SFT階段應該儘可能避免做形式偏好(既包括展示形式,也包括得到輸出的路徑)的對齊,而是將其放到RM、PPO階段去完成(後面會介紹如何在RM系統中引入使用者偏好來避免上述問題)。SFT更多的是讓模型知道給定指令情況下可能可以怎麼回覆,提高潛在可行回覆的取樣機率,儘可能保留模型輸出的多樣性,以便於後期高效調整偏好(比如對於可回答的問題在SFT階段也可以引入據答)。
4.2 RM
首先做個簡單的宣告——我認為RM不應該僅僅是一個模型,更應該是一個系統,它可以使用各種工具來進行輔助——因此下面的RM模型指的是一個評估系統。
RM模型是輸出偏好的載體,用來高效表達輸出偏好。它從收集的偏好資料中進行學習,將標註資料的偏好泛化到沒有見過的樣本上,提升資料標註的利用率。直觀地說,RM模型的作用是高效地從SFT模型的多元化輸出中挑選出符合使用者要求的輸出。
在輸入形式上,目前的RM模型主要採用pairwise-response的形式,也即 的形式。這主要是從人工反饋效率的角度考慮——很多時候對於單個回覆,標註人員很難給出一個恰當的絕對打分,使用者更沒有意願做這樣的事情;相對而言,人們更容易給出一個相對打分。於此同時,現實中還存在另一種易得的pointwise-response形式的打分資料,也即 ,其中1表示輸出可接受0表示輸出不可接受。在這種形式的資料上學習評估系統也是非常必要的,因為:
使用者的很多反饋是pointwise的,以下常見的使用者反饋形式有多種就是以pointwise形式存在的:
-
• pointwise點贊(+輸出複製、同一query模板大規模呼叫)、點踩(多輪輸出修正) -
• pointwise SFT資料 -
• pairwise更好、更差、差不多 -
• 隱式pairwise比較:多輪互動輸出修正(可以訓練模型判斷多輪指令是否是在做輸出修正)
基於工具的判斷(如長度約束滿足判斷、否定約束滿足判斷)更適合做正誤判斷,而很難做pairwise比較。
因此,如何綜合pointwise和pairwise資料形式的RM模型學習是非常必要的。
基於RM的模型千題千面和能力進化
上面的SFT分析中提到要讓模型根據其自身能力來調整輸出形式,實現自我能力的進化。這一點可以透過在RM中為希望模型進化方向上的輸出賦予更高的分值來實現。比如希望讓模型的輸出可以在保證正確性的前提下越來越簡潔,那麼可以建立如下的評估標準:簡潔且正確 > 繁瑣但正確 > 簡潔但錯誤 > 繁瑣且錯誤。
在此標準下,透過大規模的反饋學習,即使是同一個任務,模型也可以根據case的具體難易程度來選擇儘可能簡潔的回覆形式(當然,過程中模型可能會陷入local optimal,此時在offline PPO階段需要配合一些策略鼓勵模型探索更多、更好的輸出形式,從而實現進一步的能力進化)。
基於RM的千人千面
RM一般需要收斂偏好,將目標使用者感興趣的輸出從SFT模型中篩選出來。但是,一個通用模型往往會同時擁有大量不同的使用者。對於同一個任務,不同使用者的標準也很可能是不同的。從使用者角度出發,不能用單個標準去滿足不同使用者的需求,也不能讓模型在不同標準之間做隨機選擇,這樣既無法穩定給出讓使用者滿意的回覆也會讓使用者覺得模型不穩定。因此,千人千面地為不同使用者採用不同的標準是很有必要的,這樣才能真正地構建數使用者和資料壁壘,提高產品競爭力。
假設對於指令 存在兩種型別的輸出 ,使用者 分別傾向於這兩種型別的輸出。對此,千人千面的RM需要做到:
其中 表示一個RM模型的打分。相較於普通的RM模型,千人千面的RM模型額外引入了使用者這個因素。
在技術上,基於RM的千人千面的關鍵在於如何表示使用者 。一個最naive的方式是用id來進行表示,但是這樣的資料過於稀疏,不利於模型的泛化。
4.3 DPO/PPO
SFT階段鼓勵模型生成各種可能的輸出。但是,其中的一些輸出在某些環境下可能不為目標使用者所青睞。比如對於中文使用者而言,在做電視劇推薦的時候預設推薦美劇就是不合適的;在面向ToB客戶時,過長的解釋可能是不必要的。
DPO/PPO階段需要把這些不被使用者所青睞的但通常意義可行或者會被SFT產出的回覆從SFT模型的輸出空間中剔除,實現使用者偏好的對齊。出於效率考慮,這一階段一般使用RM模型來表徵使用者偏好。鑑於DPO是PPO的另一種表達形式,接下用PPO統指DPO/PPO。
PPO擅長學習『不要做什麼』
得益於RM評估的高效性,PPO階段可以對回覆進行大規模取樣和評估,此時不僅可以告訴模型什麼樣的回覆是可行的,還可以告訴模型什麼樣的回覆是不可行的(SFT階段正例樣本較少,引入負例容易讓模型過擬合負例,將負例中的一些正確pattern的機率也給錯誤地降低了)。因此,相較於SFT,PPO更擅長學習『不要做什麼』,在這個階段,應加強否定指令的建設。
基於PPO的自我進化
PPO階段除了引入使用者偏好收斂輸出形式外還有一個重要任務是實現能力的進化。典型的Online PPO是從SFT模型的輸出空間中篩選出RM得分更高的子空間,所以其最終能力是受限於SFT模型的。
當SFT能力覆蓋了期望進化方向時,比如期望方向是越簡潔越好,同時給定一個query,模型能生成各種複雜度,或正確或錯誤的輸出,此時模型能透過對應的RM模型實現在該方向上能力的進化。而當SFT能力沒有覆蓋期望的進化方向時,比如模型很難生成既簡單又正確的輸出,普通的Online PPO無法有效取樣出目標方向更好的輸出,此時模型進化能力會受限。
這種情況下,最直接的方式是先用SFT擴充套件模型能力邊界。但其實也可以直接在PPO過程中擴充套件模型的能力邊界——在PPO階段引入offline資料,比如從繁瑣但正確的回覆出發,自動合成簡潔且正確的回覆,然後用importance sampling的學習方式將該樣本引入到PPO的取樣集合並進行學習。我們將在另一篇文章中進一步探討這一問題。
五、總結
SFT
-
• 不要在SFT階段固化任務輸出標準,而應該採用多元的輸出形式; -
• 基於正例的SFT排他性較差,不擅長學習『不要做什麼』,而更適合學習『要做什麼』。否定約束、幻覺約束、字數約束不應該成為SFT的最佳化重點。
RM
-
• RM應該是一個系統而不僅僅是一個模型 -
• RM系統應該要同時支援pointwise和pairwise輸入形式的學習 -
• RM要支援千人千面的打分形式 -
• RM要支援模型進化
PPO
-
• 相較於SFT,PPO更擅長學習『不要做什麼』,在這個階段,應加強否定指令的建設和能力最佳化。 -
• PPO階段可以透過資料合成來引導模型的能力進化。 -
• 要重視離線資料的使用。
技術交流群邀請函
△長按新增小助手
掃描二維碼新增小助手微信
請備註:姓名-學校/公司-研究方向
(如:小張-哈工大-對話系統)
即可申請加入自然語言處理/Pytorch等技術交流群
關於我們
MLNLP 社群是由國內外機器學習與自然語言處理學者聯合構建的民間學術社群,目前已經發展為國內外知名的機器學習與自然語言處理社群,旨在促進機器學習,自然語言處理學術界、產業界和廣大愛好者之間的進步。
社群可以為相關從業者的深造、就業及研究等方面提供開放交流平臺。歡迎大家關注和加入我們。

掃描二維碼新增小助手微信
關於我們
