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 中抽取分数。

P-GenRM workflow
图1: P-GenRM 的整体流程。模型先从隐式/显式偏好信号中推断 persona 和偏好分析,再导出动态 scoring scheme,并在测试时引入 individual-level 与 prototype-level scaling。图片来自原论文 Figure 1。

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 拆成两个步骤:

  1. 从历史和上下文中生成当前场景下的偏好解释;
  2. 基于这套偏好解释生成 scoring rubric,并据此给候选回答打分。

Problem Formulation

论文先给出对话式 personalized reward modeling 的形式化定义。对用户 $u$ 来说,在第 $t$ 轮对话中,当前 query 为 $q_t$,历史交互记为:

$$ H_t^{(u)}= \left\{ (q_1,y_1^+,y_1^-),\ldots,(q_\tau,y_\tau^+,y_\tau^-),\ldots,(q_{t-1},y_{t-1}^+,y_{t-1}^-) \right\}^{(u)} $$

其中 $y_\tau^+$ 表示 preferred response,$y_\tau^-$ 表示 dispreferred response。除此之外,用户还可能提供显式偏好 $E^{(u)}$,例如语气、风格、长度或者内容偏好。

P-GenRM 并不直接输出一个 reward 标量,而是先生成一段结构化的文本化评估过程:

$$ [P_t^{(u)};S_t^{(u)}] \sim R_\theta\big(q_t,H_t^{(u)},E^{(u)},y_t^i\big), \quad \{s_t^i\}_{i=1}^b=\operatorname{Extract}(S_t^{(u)}) $$

这里:

  • $P_t^{(u)}$ 表示当前场景下的 preference modeling,包含 persona 与 preference analysis;
  • $S_t^{(u)}$ 表示基于该偏好推导出来的 scoring rubric、逐项分析和最终分数;
  • $\operatorname{Extract}$ 表示从文本化评分过程中抽取最终的 scalar score。

因此,这个模型的计算链路不再是:

$$ (q_t,H_t^{(u)},E^{(u)},y_t^i)\rightarrow s_t^i $$

而是被显式展开成:

$$ (q_t,H_t^{(u)},E^{(u)},y_t^i) \rightarrow P_t^{(u)} \rightarrow S_t^{(u)} \rightarrow s_t^i $$

这一步的意义在于,偏好解释本身变成了可生成、可采样、可聚合的中间表示,后面的 test-time scaling 才有成立的空间。

Methodology

P-GenRM 的方法部分可以分成两大块:

  1. Multi-stage Training Framework
  2. Test-time User-based Scaling
P-GenRM methodology
图2: P-GenRM 的三阶段训练与 personalized evaluation chain。左图是 SFT + RL + curriculum learning,右图是模型实际生成的打分链条结构。图片来自原论文 Figure 2。

Multi-stage Training Framework

Structured Evaluation Chain.
P-GenRM 生成的一条 evaluation chain,大致包含以下顺序:

  1. 根据历史和显式条件写出当前场景下的 persona;
  2. 总结当前场景的 core preference;
  3. 导出一组带权重的 evaluation criteria;
  4. 对每个 response 给出 score breakdown;
  5. 汇总为最终分数。

这意味着 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。

从建模角度看,这一步相当于先教模型掌握下面这条生成格式:

$$ \{H_t^{(u)},E^{(u)}\} \Rightarrow P_t^{(u)} \Rightarrow \text{criteria with weights} \Rightarrow \text{score breakdown} \Rightarrow s_t^i $$

这个阶段解决的是:模型是否具备生成合格 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,对应分数记为:

$$ \operatorname{PR}_t\in[0,1] $$

第二部分是 outcome reward。如果最终分数满足 chosen response 高于 rejected response,则记为 1,否则记为 0:

$$ \operatorname{OR}_t=\mathbf{1}\{s_t^c>s_t^r\} $$

因此总奖励为:

$$ R_t=\alpha\cdot \operatorname{PR}_t+\beta\cdot \operatorname{OR}_t $$

这个设计同时约束了两件事:

  • $\operatorname{PR}_t$ 约束 evaluation chain 是否真正覆盖用户偏好;
  • $\operatorname{OR}_t$ 约束最终排序是否正确。

如果只有 $\operatorname{OR}_t$,模型可能只学到“让 chosen 分更高”的结果导向策略,而 chain 本身未必真正反映用户偏好;如果只有 $\operatorname{PR}_t$,模型可能生成形式上完整的分析,但最终排序仍然错误。

采样得到的第 $k$ 条 evaluation chain 记为:

$$ c_t^{(k)}=[P_t^{(u)};S_t^{(u)}] $$

论文将上述奖励放入 GRPO 进行训练。为了避免和奖励权重中的 $\beta$ 混淆,下面把 KL 系数记为 $\gamma$。目标函数可以写成:

$$ \begin{align} J_{\text{GRPO}}(\theta)= \mathbb{E}\Bigg[ \frac{1}{K}\sum_{k=1}^K \frac{1}{|c_t^{(k)}|} \sum_{j=1}^{|c_t^{(k)}|} \min\Big( r_{t,j}^{(k)}A_t^{(k)}, \operatorname{clip}(r_{t,j}^{(k)},1-\epsilon,1+\epsilon)A_t^{(k)} \Big) \Bigg] -\gamma D_{KL}(\pi_\theta\Vert\pi_{\text{ref}}) \end{align} $$

其中 token-level ratio 为:

$$ r_{t,j}^{(k)}= \frac{ \pi_\theta(c_{t,j}^{(k)}\vert q_t,H_t^{(u)},y_t^i,c_{t, < j}^{(k)}) }{ \pi_{\theta_{\text{old}}}(c_{t,j}^{(k)}\vert q_t,H_t^{(u)},y_t^i,c_{t, < j}^{(k)}) } $$

$A_t^{(k)}$ 是由 $R_t$ 计算得到的 relative advantage。

这个目标可以按下面的逻辑理解:

  1. 先给每条 sampled evaluation chain 一个基于 $R_t$ 的相对优势;
  2. 若 $A_t^{(k)}>0$,则提高这条 chain 上 token 的生成概率;
  3. 若 $A_t^{(k)}<0$,则降低这条 chain 上 token 的生成概率;
  4. clip 控制单步更新幅度;
  5. 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:

$$ P_t^{(u)}\in\mathbb{R}^d $$

再将这些 embedding 聚成 $k$ 个 user prototype:

$$ A\in\mathbb{R}^{k\times d} $$

但 K-means 得到的只是静态聚类中心,还不是可用于判别 chosen/rejected 的有效 prior,因此论文进一步对 prototype 做 refinement。

首先,对一条历史记录 $(q_\tau,y_\tau^+,y_\tau^-)$,构造对应的 preference signal:

$$ o_\tau=\sigma\big(W\cdot \operatorname{concat}(q_\tau,\;y_\tau^+-y_\tau^-)\big) $$

这里的设计是:

  • $q_\tau$ 保留该轮任务语境;
  • $y_\tau^+-y_\tau^-$ 表示用户偏好方向。

因此,$o_\tau$ 编码的不是“这轮发生了什么”,而是“在这个 query 下,用户偏向什么样的回答”。

接着,论文使用 query-aware + prototype-aware attention 对历史做选择:

$$ \begin{align} v_H&=\sum_{\tau=1}^h\alpha_\tau o_\tau \\ \alpha_\tau&= \operatorname{softmax}_\tau \left( \frac{o_\tau^\top q_t}{\sqrt d} + \rho\frac{o_\tau^\top a_j}{\sqrt d} \right) \end{align} $$

其中:

  • $\frac{o_\tau^\top q_t}{\sqrt d}$ 衡量当前 query 与历史记录是否相关;
  • $\rho\frac{o_\tau^\top a_j}{\sqrt d}$ 衡量这条历史是否符合当前 prototype 的整体偏好方向。

得到历史摘要后,再把 prototype、当前 query 和历史摘要融合成一个 prior:

$$ z_t=a_j+\lambda_q W_q q_t+\lambda_s W_s v_H $$

这个式子的三项分别对应:

  • 群体层面的 prototype prior;
  • 当前 query 的场景修正;
  • 个人历史的局部修正。

随后,模型利用这个 prior 区分当前样本中的正负回答。定义打分间隔为:

$$ \Delta_t=z_t^\top y_t^+-z_t^\top y_t^- = z_t^\top (y_t^+-y_t^-) $$

如果将“正样本优于负样本”的概率写成 logistic 形式:

$$ p(y_t^+\succ y_t^-\mid z_t)=\sigma(\Delta_t) $$

那么对应的 pairwise loss 就是:

$$ L_{\text{pair}}=-\log \sigma(\Delta_t) $$

这个推导可以按下面的顺序理解:

  1. 希望 $\Delta_t$ 越大越好,因为这表示 $y_t^+$ 比 $y_t^-$ 更符合当前 prior;
  2. 用 sigmoid 把 margin 转成概率;
  3. 对“正样本应优于负样本”做最大似然估计;
  4. 得到的负对数似然就是 $-\log \sigma(\Delta_t)$。

其导数为:

$$ \frac{\partial L_{\text{pair}}}{\partial \Delta_t} = \sigma(\Delta_t)-1 $$

当 $\Delta_t$ 较小时,$\sigma(\Delta_t)-1<0$,优化会继续推动 $\Delta_t$ 增大;只有当正负样本已经被明显拉开时,梯度才会逐渐减小。

为了防止 prototype 漂移过大,论文又加入两个正则项,得到最终目标:

$$ L= L_{\text{pair}} + \lambda_{\text{cent}}\lVert a_j-\mu_j\rVert_2^2 + \lambda_{\text{tr}}\lVert a_j-p_j\rVert_2^2 $$

其中:

  • $\mu_j$ 是当前 cluster 的中心;
  • $p_j$ 是上一步更新前的 prototype 状态。

因此,prototype refinement 的作用就是把静态聚类中心改造成一个可训练、可判别、可迁移的用户偏好先验。

Test-time dual-granularity scaling.
完成训练后,论文在测试时又做了两层 scaling。

第一层是 individual-level scaling。对同一个用户,不只生成一条 preference analysis,而是并行采样 $m$ 条:

$$ S_{t,x}^i\sim R_\theta\big(q_t,H_t^{(u)},y_t^i,P_{t,x}^{(u)}\big) $$

然后对这些分数求平均。从形式上看,这一步可以理解成对潜在偏好变量 $P_t^{(u)}$ 做 Monte Carlo 积分:

$$ \frac{1}{m}\sum_{x=1}^m \operatorname{Extract}(S_{t,x}^i) \approx \mathbb{E}_{P\sim p(P\vert q_t,H_t^{(u)},E^{(u)})} \big[\operatorname{score}(y_t^i\vert P)\big] $$

也就是说,如果当前场景下的 persona 本身存在不确定性,那么一次采样并不足够;更稳定的做法是对多个合理偏好假设求平均。

第二层是 prototype-level scaling。模型先把当前用户分配到最近的 prototype,再找出该 prototype 下最相似的 $n$ 个用户 ${u_w}_{w=1}^n$,利用这些相似用户的偏好再做一轮评分:

$$ \big(S_t^i\big)^{(u_w)} \sim R_\theta\big(q_t,H_t^{(u_w)},y_t^i,P_t^{(u_w)}\big) $$

最终分数写为:

$$ s_t^i= \frac{1}{m}\sum_{x=1}^m \operatorname{Extract}(S_{t,x}^i) + \frac{1}{n}\sum_{w=1}^n \operatorname{Extract}\Big(\big(S_t^i\big)^{(u_w)}\Big) $$

这个公式表达的是两个并列的投票池:

  • 一个来自当前用户自身的多次偏好采样;
  • 一个来自相似用户的偏好迁移。

前者处理“同一个用户当前场景到底在意什么”的不确定性,后者处理“新用户历史太少时能否借助相似用户补足先验”的问题。这也是 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.