
在模型對齊和評估這個方向上最貴的往往不是算力而是人工標注。人類偏好數據既要花錢采集又要花時間清洗標注一致性還經常不穩定。為了讓模型“更符合預期”團隊往往要反復標注、反復微調成本一路走高。這次我們來看一種更偏理論基礎的方法Revealed Rationality: Label-Free Evaluation and Regularization from Representation Theorems。它想解決的問題很直接能不能不依賴人工標簽直接從模型自己的行為中推斷它的“判斷傾向”再把這種推斷用于評估和訓練正則化。這個方向的關鍵詞是Label-Free Evaluation無標簽評估和Regularization正則化。核心思路來自決策理論里的“顯示偏好”和“表示定理”如果一個人或一個模型在成對選項之間表現出穩定的選擇行為那么這些行為可以用一個潛在的效用函數來表示反過來通過行為反推效用函數就可以在沒有外部標簽的情況下評估模型“理不理性”并把這個“理性差距”變成訓練時可以優化的正則項。這篇文章屬于理論方法拆解不是一鍵啟動的本地工具包所以不會出現“下載即用”的安裝步驟。我會把標題里的幾個理論概念翻譯成工程語言給出一套可參考的實現思路和代碼骨架再說清楚這類方法真正落地時容易踩的坑以及評估和訓練階段分別怎么接入。1. 核心能力速覽能力項說明核心問題在沒有人工標簽的情況下評估模型行為并用評估結果約束訓練過程理論來源顯示偏好理論Revealed Preference 表示定理Representation Theorems評估形式通過模型對成對選項的行為選擇推斷潛在效用函數計算“理性一致性”分數正則化形式將行為偏離理性公理的程度轉化為可微損失項疊加到訓練目標中適用階段模型評估、偏好對齊、微調正則化、RLHF 之外的替代約束所需數據模型自身的成對輸出對比或行為選擇記錄不需要人工標注工程現狀以研究原型為主沒有公開一鍵包需要按論文思路自行實現落地難點如何定義“一致性”、如何建模行為空間、如何避免效用函數退化與 RLHF 的關系可以作為偏好優化目標之外的一種約束信號不是完全替代關系2. 無標簽評估為什么值得關注先看現在的典型流程。常見做法是先收集人工標注的偏好數據例如給定同一個 prompt 的多個回答讓標注員排序然后用這些排序訓練一個獎勵模型再用獎勵模型引導生成策略。這個流程能用但有三個明顯問題。第一標注成本高。要讓獎勵模型穩定通常需要大量高質量標注而且不同標注員的判斷標準不一致清洗成本非常高。第二標注噪聲大。同樣一段回答不同人可能給出相反的排序。噪聲一旦進入獎勵模型模型學到的偏好信號就會“漂移”。第三評估和訓練目標脫節。我們希望模型輸出“有用、安全、符合預期”但實際優化的只是“獎勵模型認為好的回答”兩者之間可能存在系統性偏差。無標簽評估的思路就是繞過人工標注這一環從模型行為本身提取結構信息。這里的理論支撐是如果模型在多個成對比較中保持一致那么這些選擇行為背后大概率存在一個較為穩定的評分函數。我們可以利用這種結構性來建立評估指標并把背離一致性的部分作為懲罰項在訓練時約束模型不要“前后矛盾”。這種思路的最大價值不是替代人工評估而是給評估和訓練增加一個可解釋的、低成本目標。對于小團隊來說尤其有意義沒有預算攢大量人工偏好可以先跑無標簽評估篩選出性能不穩定的輸出再針對性地做標注和調優。3. 理論基石顯示偏好與表示定理這個方向的兩個核心概念都來自經濟學和決策理論理解它們就能看懂整個方法框架。3.1 顯示偏好理論顯示偏好理論的核心命題是人的偏好不需要通過自述獲得可以通過觀察其選擇行為來推斷。在買東西的場景里如果消費者在商品 A 與商品 B 都買得起的情況下選擇了 A就“顯示”他更偏好 A。反復觀察不同預算條件下的選擇就能還原出一個較為完整的偏好結構。把這個邏輯遷移到模型上就是與其去問“你更喜歡哪種回答風格”不如讓模型在多種回答之間做選擇。給定若干成對比較數據可以通過模型的選擇行為反推其內在偏好。這種偏好不是模型嘴上說出來的而是行為上暴露出來的因此叫“顯示偏好”。3.2 表示定理表示定理說明在滿足完備性和傳遞性偏好的前提下一定存在一個實值效用函數使得選擇順序與效用函數的高低順序一致。簡單來說如果模型是“理性”的那么它的所有行為選擇都可以被看成在比較一個隱式分數。分數高的一方被選中分數低的一方被忽略。這就是之后所有操作的理論基礎先假設模型存在一個潛在評分函數然后用行為數據去擬合這個函數擬合得越好說明模型選擇越一致擬合不上的部分就是“不理性”的殘差。這個殘差既是評估指標的一部分也是正則化項的核心。3.3 “理性”在這里不等于“正確”需要特別說明一點這里的“理性”描述的是選擇行為在邏輯結構上的一致性不意味著模型輸出的內容更符合人類價值觀。一個模型可以前后一致地說“不該拒絕惡意請求”這樣的行為高度理性但對齊結果完全不合格。所以無標簽評估更適合作為“行為質量約束”不能單獨作為“價值觀對齊目標”。4. 方法拆解從行為到分數再到正則化把兩個理論概念落到實際方法里大致可以拆成四步構造行為數據、學習潛在效用、計算理性差距、把差距變成訓練損失。4.1 構造行為數據不需要人工標簽只需要讓模型對若干選項做選擇。具體操作方式是給定一組輸入文本讓模型通過解碼概率、內部隱狀態對比或者生成式比較輸出對兩個候選回答的偏好判斷。行為數據的形態不限于最終生成的文本也可以是 logprob 對比結果。行為樣本的形式可以抽象成(上下文, 選項A, 選項B, 模型選擇)。其中“模型選擇”表示模型更傾向于 A 還是 B或者兩者無差異。4.2 學習潛在效用函數用行為數據訓練一個潛在的效用網絡目標是讓這個函數盡量還原模型的全部選擇行為。如果模型選擇 A 而不選 B那學習目標就是讓f(A) f(B)。這一步非常像訓練獎勵模型但區別在于數據不來自人類標注而來自模型自身的行為。效用網絡可以用簡單的 MLP也可以基于模型隱層輸出構建。如果是大模型場景可以直接把最后一層隱藏狀態接入一個線性打分頭而不是單獨訓練一個完整編碼器。4.3 計算理性差距所謂的“理性差距”通常用行為數據對“傳遞性公理”的違反程度來衡量。假設模型在第一次比較中說 A 優于 B第二次說 B 優于 C那么按照理性人的公理第三次比較中它應該認為 A 優于 C。如果第三次結果相反就產生了“偏好循環”這說明模型內部沒有一個穩定的全局評分函數。在實現上可以用排序損失或者對比損失來評估這種不一致程度。差值越大說明模型行為越不穩定理性程度越低。4.4 把差距變成正則化項無標簽評估可以直接當“評分指標”使用但更有吸引力的用途是變成訓練時的正則化項。做法是在常規損失之外額外加入一個“傳遞性損失”迫使模型的輸出空間更接近一個全局一致的評分函數。也就是說模型不僅要學會回答任務本身還要在相互比較時保持一致。這等于在訓練目標里加了一個“自我一致性”約束。如果模型在訓練過程中開始出現前后矛盾的偏好這個約束就會產生梯度把模型拉回更穩定的方向。5. 一個可參考的實現思路下面給出一套用于驗證思路的 PyTorch 風格代碼骨架。說明一下這是基于“顯示偏好 傳遞性約束”的通用實現思路不保證與原始論文逐行對應。實際使用時需要根據模型結構和行為數據格式調整。5.1 定義效用評估器假設我們已經拿到了模型的輸出向量例如對 A、B、C 三個候選回答各自編碼得到 768 維向量。先用 MLP 把這些向量映射成一個標量分數。import torch import torch.nn as nn import torch.nn.functional as F class ScalarEvaluator(nn.Module): 把候選回答的向量表示映射為標量效用分數。 def __init__(self, input_dim: int 768, hidden_dim: int 128): super().__init__() self.net nn.Sequential( nn.Linear(input_dim, hidden_dim), nn.ReLU(), nn.Linear(hidden_dim, hidden_dim), nn.ReLU(), nn.Linear(hidden_dim, 1), ) def forward(self, x: torch.Tensor) - torch.Tensor: # x: [batch, input_dim] # 返回: [batch] return self.net(x).squeeze(-1)5.2 定義傳遞性正則化損失這里的核心是構造一個可微的“非理性”指標。假設樣本中包含三元組(A, B, C)且模型的已知偏好關系是A B、B C。那么理想情況下分數的順序應該是f(A) f(B) f(C)特別是f(A) f(C)。我們用邊緣損失來度量違反程度如果f(A) - f(C)小于某個 margin就產生損失。同時附加一個輕微的分數 L2 正則避免分數無限發散。class TransitivityRegularizer(nn.Module): 根據三元組行為數據計算傳遞性損失。 def __init__(self, evaluator: ScalarEvaluator, margin: float 0.1): super().__init__() self.evaluator evaluator self.margin margin def forward(self, A: torch.Tensor, B: torch.Tensor, C: torch.Tensor) - torch.Tensor: A, B, C: [batch, input_dim] 已有行為信息: A B, B C 理想情況下應滿足: A C score_a self.evaluator(A) score_b self.evaluator(B) score_c self.evaluator(C) # 成對比較損失讓 A 高于 BB 高于 C pairwise_loss ( F.relu(self.margin - (score_a - score_b)) F.relu(self.margin - (score_b - score_c)) ) # 傳遞性損失讓 A 高于 C trans_loss F.relu(self.margin - (score_a - score_c)) # 輕微 L2 防止打分漂移 reg (score_a**2 score_b**2 score_c**2).mean() * 0.01 return (pairwise_loss trans_loss).mean() reg5.3 接入訓練循環使用時可以把傳遞性正則化損失和模型的主任務損失相加。如果主任務是語言建模損失可以寫成evaluator ScalarEvaluator(input_dim768) regularizer TransitivityRegularizer(evaluatormargin0.1) # 從模型隱層獲取候選回答向量 A model_hidden_states_for_candidate(...) B model_hidden_states_for_candidate(...) C model_hidden_states_for_candidate(...) train_loss main_loss lambda_reg * regularizer(A, B, C) train_loss.backward()這里最需要關注的是lambda_reg的取值。太小正則約束無效太大模型會為了滿足一致性而犧牲原有生成能力。建議從0.01或0.001起步在驗證集上觀察主任務指標和一致性指標的變化。5.4 無標簽評估指標的計算在評估階段可以簡單統計測試行為數據中滿足傳遞性的比例或者計算平均違反 margin。例如def consistency_score(model, triplets): total 0 consistent 0 for A, B, C in triplets: scores model([A, B, C]) if scores[0] scores[2]: consistent 1 total 1 return consistent / max(total, 1)數值越高說明模型行為越穩定潛在的評分函數結構越清晰。這個分數可以當作無標簽評估的一維參考。6. 如何在訓練和評估流程中實際使用這類方法要產生實際價值需要明確它在現有流程中的位置。6.1 作為評估階段的補充信號當前評估體系主要依賴指標計算、人工評測和模型評測。無標簽評估可以作為一種低成本篩查手段先跑一批 prompt用解碼概率或模型選擇行為構造成對比較數據然后計算一致性分數。分數偏低的 prompt 類型大概率是模型行為不穩定的區域值得優先做人工標注和定向調優。6.2 作為微調階段的正則化目標在監督微調或偏好微調階段把傳遞性損失加到主損失后面可以理解為“額外請一個行為一致性監督員”。它在訓練時盯著模型參數的更新方向一旦發現模型在傳遞性約束上產生較大偏差就用梯度把它拉回來。6.3 與 RLHF 的對比對比項RLHF無標簽評估 正則化數據來源人工標注偏好模型自身行為訓練目標優化獎勵模型分數主任務損失 行為一致性損失成本高中低邏輯假設獎勵模型能準確代表人類偏好模型行為應該具備內部一致性單獨使用可以不建議必須搭配主任務無標簽評估和正則化更適合作為 RLHF 或偏好優化的輔助約束而不是完全替代。因為“理性一致”和“符合人類預期”是兩個維度不能混為一談。7. 資源占用與性能觀察這個方向沒有現成的本地一鍵包所以沒有固定顯存數字可寫。但從實現路徑來看資源占用有三個層級需要關注。7.1 行為數據生成階段的瓶頸構造行為數據需要大量調用基礎模型。如果使用 7B 級別模型在不做量化的情況下單卡推理一批樣本的顯存占用通常在 15GB 到 20GB 之間。這個數值會隨上下文長度、批量大小和量化方式變化實際以本機測試為準。如果顯存不足最常見的方法是降低批量大小、減少最大序列長度或者使用 4bit 量化加載模型。7.2 效用網絡訓練的顯存開銷效用網絡本身的參數量很小主要是 MLP 或線性頭顯存占用遠小于基礎模型。但如果需要對模型隱層狀態做反向傳播就必須保留隱層計算圖顯存成本會增加。實際操作時可以先把模型隱層向量離線抽取出來再單獨訓練效用網絡這樣可以把顯存占用降得很低。7.3 如何觀察性能訓練過程和生成階段可以用nvidia-smi觀察顯存占用nvidia-smi -l 2更新頻率設置為 2 秒一次重點看每個進程的顯存占用和 GPU 利用率。如果顯存占用很高優先降低 batch size如果 GPU 利用率很低大概率是數據加載或預處理階段出現了瓶頸。8. 常見問題與邊界問題現象可能原因排查方式解決方案傳遞性損失很小但生成質量下降正則化權重過大模型過度追求一致性對比不同lambda_reg下的主任務指標調低正則權重優先保證主任務不退化一致性分數很高但人工評估不認可“理性”不完全等于“對齊”檢查模型在安全、有用性等維度的表現把無標簽評估作為輔助指標結合人工評估使用行為數據量不足效用網絡擬合不穩定構造的成對樣本太少統計行為樣本規模觀察效用網絡驗證損失增加 prompt 覆蓋范圍和候選回答數量模型輸出出現循環偏好采樣溫度過高或模型本身偏好不穩定記錄多次采樣結果分析偏好關系圖降低采樣溫度或對多次采樣結果取平均無法復現論文效果關鍵細節缺失例如效用網絡的初始化、訓練步數仔細閱讀論文正文和附錄小規模復現實驗逐步調整超參數8.1 數據規模的下限無標簽評估依賴成對比較數據如果行為樣本太少效用函數可能無法穩定擬合。更穩妥的做法是先用批量生成構造一個覆蓋多種 prompt 風格和回答長度的行為庫再開始訓練效用網絡。8.2 失敗模式效用函數退化如果沒有梯度約束效用網絡可能把所有候選回答都打同一個分這樣傳遞性損失雖然很小卻沒有任何信息量。解決方法是加入 margin 約束并監控效用分數的分布。如果所有分數都擠在零點附近說明模型沒有學到有效區分度。9. 最佳實踐與合規建議這套方法還處于研究階段想在生產環境使用建議按下面的順序推進。9.1 先做小規模驗證不要直接在大模型完整訓練流程中引入新的正則項。先用一個小型模型或者少量數據驗證“無標簽評估分數是否能反映模型行為差異”。如果一致性分數無法區分不同模型或不同訓練階段那就說明數據構造或效用網絡設計有問題后面的大規模實驗也沒有意義。9.2 保留最小可運行實驗配置任何實驗項目都應該有一份可以隨時復跑的 baseline 配置。數據集、prompt 生成策略、行為采樣參數、效用網絡超參、lambda_reg取值都要記錄在實驗表中。否則一旦效果不好很難判斷是數據問題、模型問題還是正則化參數問題。9.3 合規與授權提醒如果行為數據來自公開模型或 API 服務需要注意服務條款和使用場景限制。如果涉及用戶數據、內部業務數據必須在授權范圍內使用。涉及人臉、聲音、人物肖像或版權素材的內容需要先確認是否有合法授權否則只能用于內部技術驗證不能發布或商用。9.4 學術引用與傳播如果是用來寫論文或技術博客應該標注該方法來源引用原始論文和理論出處。在技術分享中要區分“論文原意”和“自己的實現思路”避免讓讀者誤以為某個代碼骨架是官方實現。10. 總結與下一步這個方向最值得嘗試的點在于它把“模型行為是否一致”變成了一個可計算的、可微分的信號。相比依賴人工標注的傳統評估方式無標簽評估的成本更低可以和主訓練目標并行使用尤其適合模型行為差異排查和偏好微調輔助約束。如果動手驗證建議最先做一件事用一個小模型構造一批成對比較數據訓練一個簡單的效用打分函數然后檢查“一致性分數是否能區分不同訓練步數的模型”。如果能再繼續嘗試把傳遞性損失加到訓練目標中。最容易踩的坑有兩個。一是把“理性一致”等同于“符合人類預期”導致評估結果與人工評估嚴重脫節二是正則化權重設置過大模型為了保持偏好一致而犧牲了原本的生成能力出現明顯的質量退化。后續可以繼續擴展的方向包括把無標簽評估分數接入自動數據篩選流程、構造更復雜的多候選行為數據、把一致性約束擴展到組合多個模型輸出上以及在 RLHF 訓練管線中把它作為一個額外的獎勵分支。這套思路不會取代人工標注但可以在標注成本上真正省下一部分預算讓模型調優過程更可控。