Overview
P-GenRM: Personalized Generative Reward Model with Test-time User-based Scaling讨论的是 personalized alignment 里的一个核心问题:同一条回答,对不同用户未必有相同的评价标准;即使是同一个用户,在不同场景下,评价标准也可能变化。
现有 personalized reward model 往往把用户偏好压成固定向量、固定维度或者静态 persona,然后直接输出一个 scalar reward。这类做法在开放式对话场景里会遇到两个问题:
- 偏好是场景相关的,而不是静态标签;
- 新用户历史很短时,偏好推断容易被噪声主导。
P-GenRM 的核心改动是:不直接学习“输入到分数”的黑盒映射,而是先生成一条结构化的 evaluation chain,再从这条 chain 中抽取分数。
Motivation
这篇论文的 motivation 可以概括成两条。
Static preference modeling is too coarse.
同一个用户在不同场景下可能采用不同的评价准则。例如,寻求快速建议时更偏好简洁、可执行的回答;寻求陪伴或讨论时则更偏好表达丰富、情绪更细腻的回答。如果 reward model 始终使用同一套固定维度或者固定 persona,那么“场景切换”会被错误压缩成“用户始终如此”,评价标准会变得僵硬。
Cold-start personalization is inherently noisy.
个性化建模通常依赖两类信号:
- 显式信号:用户直接说出的偏好,如长度、语气、表达方式;
- 隐式信号:历史 query、chosen response、rejected response。
显式信号更准确,但通常稀缺;隐式信号更丰富,但噪声更大,而且往往只在局部场景有效。因此,问题不只是“如何预测一个 reward”,而是“如何先恢复当前场景下的偏好解释,再根据这套解释做评分”。
P-GenRM 的答案是把 reward modeling 拆成两个步骤:
- 从历史和上下文中生成当前场景下的偏好解释;
- 基于这套偏好解释生成 scoring rubric,并据此给候选回答打分。
Problem Formulation
论文先给出对话式 personalized reward modeling 的形式化定义。对用户 $u$ 来说,在第 $t$ 轮对话中,当前 query 为 $q_t$,历史交互记为:
其中 $y_\tau^+$ 表示 preferred response,$y_\tau^-$ 表示 dispreferred response。除此之外,用户还可能提供显式偏好 $E^{(u)}$,例如语气、风格、长度或者内容偏好。
P-GenRM 并不直接输出一个 reward 标量,而是先生成一段结构化的文本化评估过程:
这里:
- $P_t^{(u)}$ 表示当前场景下的 preference modeling,包含 persona 与 preference analysis;
- $S_t^{(u)}$ 表示基于该偏好推导出来的 scoring rubric、逐项分析和最终分数;
- $\operatorname{Extract}$ 表示从文本化评分过程中抽取最终的 scalar score。
因此,这个模型的计算链路不再是:
而是被显式展开成:
这一步的意义在于,偏好解释本身变成了可生成、可采样、可聚合的中间表示,后面的 test-time scaling 才有成立的空间。
Methodology
P-GenRM 的方法部分可以分成两大块:
- Multi-stage Training Framework
- Test-time User-based Scaling
Multi-stage Training Framework
Structured Evaluation Chain.
P-GenRM 生成的一条 evaluation chain,大致包含以下顺序:
- 根据历史和显式条件写出当前场景下的 persona;
- 总结当前场景的 core preference;
- 导出一组带权重的 evaluation criteria;
- 对每个 response 给出 score breakdown;
- 汇总为最终分数。
这意味着 reward modeling 被改写成了一个结构化生成过程。模型不只是在比较两个回答谁更好,而是在先回答“这个用户此刻在意什么”,再回答“在这套标准下谁更好”。
Persona-guided Scoring Induction.
第一阶段是 SFT,但监督目标不是简单的 chosen/rejected 分类,而是 Structured Evaluation Chain (SEC) 数据。构造方式是:给 instruction model 输入 ${H_t^{(u)},E^{(u)}}$,先生成 $P_t^{(u)}$,再生成 criteria、权重、逐项分析和最终分数,并通过 rejection sampling 过滤低质量 chain。
从建模角度看,这一步相当于先教模型掌握下面这条生成格式:
这个阶段解决的是:模型是否具备生成合格 personalized evaluation chain 的基本能力。
Criteria-based Reasoning Enhancement.
只有 SFT 还不够。推理时往往没有显式偏好 $E^{(u)}$,但模型仍然要从有限历史中推断“这个用户当前大概率在意什么”。因此第二阶段使用 RL 强化 evaluation chain 的质量。
这一阶段的关键设计是:把显式偏好当作训练时 supervision,而不是推理时必须可见的条件。模型需要从有限历史中先推断 plausible explicit preference,再基于这套偏好生成完整 chain。
奖励由两部分组成。第一部分是 process reward。模型生成一条 evaluation chain 后,再由 LLM-as-a-judge 判断这条 chain 是否覆盖了用户显式偏好或 synthetic preference,对应分数记为:
第二部分是 outcome reward。如果最终分数满足 chosen response 高于 rejected response,则记为 1,否则记为 0:
因此总奖励为:
这个设计同时约束了两件事:
- $\operatorname{PR}_t$ 约束 evaluation chain 是否真正覆盖用户偏好;
- $\operatorname{OR}_t$ 约束最终排序是否正确。
如果只有 $\operatorname{OR}_t$,模型可能只学到“让 chosen 分更高”的结果导向策略,而 chain 本身未必真正反映用户偏好;如果只有 $\operatorname{PR}_t$,模型可能生成形式上完整的分析,但最终排序仍然错误。
采样得到的第 $k$ 条 evaluation chain 记为:
论文将上述奖励放入 GRPO 进行训练。为了避免和奖励权重中的 $\beta$ 混淆,下面把 KL 系数记为 $\gamma$。目标函数可以写成:
其中 token-level ratio 为:
$A_t^{(k)}$ 是由 $R_t$ 计算得到的 relative advantage。
这个目标可以按下面的逻辑理解:
- 先给每条 sampled evaluation chain 一个基于 $R_t$ 的相对优势;
- 若 $A_t^{(k)}>0$,则提高这条 chain 上 token 的生成概率;
- 若 $A_t^{(k)}<0$,则降低这条 chain 上 token 的生成概率;
- clip 控制单步更新幅度;
- KL 项约束新策略不要偏离参考模型过远。
因此,第二阶段优化的不是单独那个最终分数,而是整条评价链条的生成策略。
Hard negative-aware Curriculum Learning.
第三阶段继续使用 RL,但逐步提高 hard negative 的比例。这里的 hard negative 指那些差异非常细、主观性强、难以直接判断的 response pair。论文在这个阶段关闭了 process reward,只保留 outcome-oriented 优化。原因是 hard negative 已经足够接近决策边界,继续强加过程奖励会压缩模型的探索空间。这个阶段的目标更像是针对困难样本的排序强化。
Test-time User-based Scaling
这一部分对应论文要解决的另外两个问题:
- 用户偏好推断本身带有噪声;
- 新用户历史很短时,单靠个人数据不够稳定。
Offline prototype initialization and optimization.
论文先对每个 preference modeling $P_t^{(u)}$ 做 embedding:
再将这些 embedding 聚成 $k$ 个 user prototype:
但 K-means 得到的只是静态聚类中心,还不是可用于判别 chosen/rejected 的有效 prior,因此论文进一步对 prototype 做 refinement。
首先,对一条历史记录 $(q_\tau,y_\tau^+,y_\tau^-)$,构造对应的 preference signal:
这里的设计是:
- $q_\tau$ 保留该轮任务语境;
- $y_\tau^+-y_\tau^-$ 表示用户偏好方向。
因此,$o_\tau$ 编码的不是“这轮发生了什么”,而是“在这个 query 下,用户偏向什么样的回答”。
接着,论文使用 query-aware + prototype-aware attention 对历史做选择:
其中:
- $\frac{o_\tau^\top q_t}{\sqrt d}$ 衡量当前 query 与历史记录是否相关;
- $\rho\frac{o_\tau^\top a_j}{\sqrt d}$ 衡量这条历史是否符合当前 prototype 的整体偏好方向。
得到历史摘要后,再把 prototype、当前 query 和历史摘要融合成一个 prior:
这个式子的三项分别对应:
- 群体层面的 prototype prior;
- 当前 query 的场景修正;
- 个人历史的局部修正。
随后,模型利用这个 prior 区分当前样本中的正负回答。定义打分间隔为:
如果将“正样本优于负样本”的概率写成 logistic 形式:
那么对应的 pairwise loss 就是:
这个推导可以按下面的顺序理解:
- 希望 $\Delta_t$ 越大越好,因为这表示 $y_t^+$ 比 $y_t^-$ 更符合当前 prior;
- 用 sigmoid 把 margin 转成概率;
- 对“正样本应优于负样本”做最大似然估计;
- 得到的负对数似然就是 $-\log \sigma(\Delta_t)$。
其导数为:
当 $\Delta_t$ 较小时,$\sigma(\Delta_t)-1<0$,优化会继续推动 $\Delta_t$ 增大;只有当正负样本已经被明显拉开时,梯度才会逐渐减小。
为了防止 prototype 漂移过大,论文又加入两个正则项,得到最终目标:
其中:
- $\mu_j$ 是当前 cluster 的中心;
- $p_j$ 是上一步更新前的 prototype 状态。
因此,prototype refinement 的作用就是把静态聚类中心改造成一个可训练、可判别、可迁移的用户偏好先验。
Test-time dual-granularity scaling.
完成训练后,论文在测试时又做了两层 scaling。
第一层是 individual-level scaling。对同一个用户,不只生成一条 preference analysis,而是并行采样 $m$ 条:
然后对这些分数求平均。从形式上看,这一步可以理解成对潜在偏好变量 $P_t^{(u)}$ 做 Monte Carlo 积分:
也就是说,如果当前场景下的 persona 本身存在不确定性,那么一次采样并不足够;更稳定的做法是对多个合理偏好假设求平均。
第二层是 prototype-level scaling。模型先把当前用户分配到最近的 prototype,再找出该 prototype 下最相似的 $n$ 个用户 ${u_w}_{w=1}^n$,利用这些相似用户的偏好再做一轮评分:
最终分数写为:
这个公式表达的是两个并列的投票池:
- 一个来自当前用户自身的多次偏好采样;
- 一个来自相似用户的偏好迁移。
前者处理“同一个用户当前场景到底在意什么”的不确定性,后者处理“新用户历史太少时能否借助相似用户补足先验”的问题。这也是 P-GenRM 将 generative reward model 的 test-time sampling 能力与 prototype-based transfer 结合起来的关键。
Reference
[1] Zhang et al. “P-GenRM: Personalized Generative Reward Model with Test-time User-based Scaling”. arXiv, 2026.