项目资源

  • 代码链接:

    https://github.com/RaidonWong/CURP_code

  • 论文链接:

    https://arxiv.org/pdf/2602.00742

  • Demo链接:

    http://www.fudan-disc.com/Persona-CURP




引言:

当我们真的开始“大规模模拟一个具体的人”

个性化正在变得越来越重要。

在社会模拟、政策评估、医疗决策测试等场景中,我们不再满足于“模型能回答问题”,而是希望模型能够模拟规模化的不同个体在同一问题下的反应,从而了解大众对特定话题的真实想法

举个例子:

我们评估“是否放宽医疗监管”,设定两位个体:

  • 40 岁女性,教师,高宜人性,外向型

  • 35 岁男性,工程师,高责任心,内向型

看似个性化,但实际运行中会暴露两个问题:

精细化不足 与 多样化不足

核心问题一:精细化不足

现实个体是多维、连续的,但建模时往往只依赖:少量标签,文本 persona 描述或简单参数注入。结果是:差异停留在标签层面,容易产生刻板印象,复杂问题上的行为差异有限。

无论是文本拼接还是模型微调,本质上都缺少结构化的个体表示

核心问题二:多样性不足

问题在规模化时更加明显。如果我们希望模拟一次真正的社会调查,不是 2 个人,而是 10 万人—— 我们需要的不是几种“典型 persona”,而是:

连续、丰富、分布合理的个体差异。

但现实中,文本 persona 依赖有限标签集合,差异空间被压缩,增加标签数量,只是简单组合扩展,模型微调若走向逐个用户微调,成本迅速上升。结果导致,要么回答高度相似,难以反映真实多样性;要么差异可以表达,但无法规模化维护。

在社会模拟场景下,这意味着很难生成足够丰富、结构合理的群体行为分布。

图一:进行用户模拟的两种主要范式和我们的框架

我们真正缺的是什么?

从这个例子可以看到,问题的根源并不在模型大小,而在:

个体差异是如何被表示的。

如果个体表示本身是非结构化的,

那么无论拼接文本还是增加参数,都只是表层修补。

我们需要的,是一种新的基础设施:

  • 能精细表达个体差异

  • 能支持大规模多样化

  • 又不依赖 per-user 模型复制




理论支持:人不是一个“固定标签”

在重新设计个体表示之前,我们先回到一个更基础的问题:

个体差异本质上是什么?

社会心理学中的自我分类理论(Self-Categorization Theory, SCT) 给出了重要启发。

SCT 认为:

个体身份并非一个固定标签,而是在不同情境下,由多个社会原型(prototypes)组合形成。

例如,一个人可能同时具备:

  • #Teacher

  • #CommunityOriented

  • #RiskAverse

  • #Calm

  • #HighResponsibility

这些原型不是孤立标签,而是可以组合、叠加、动态变化的行为单元。

换句话说:

个体不是一个标签,而是多个共享原型的组合体。

这为个性化建模提供了一个关键启发:

与其为每个用户单独建模,不如在一个共享原型空间中表示所有个体。




CURP:用原型码本重构个体表示

基于这一视角,我们提出 CURP,用原型码本重构个体表示。

核心思想很简单:不再把用户历史当作长文本拼接,而是将其抽象为可组合的原型单元

整体结构包括:

  • User Encoder:提取稳定行为特征

  • Prototype Codebook:将特征映射为离散原型组合

  • 冻结的 LLM:基于原型完成生成




为什么“原型码本”同时解决两个问题?

① 解决多样化与规模化问题

  • 所有个体共享同一套原型空间

  • 所有数据被训练到统一参数结构中

  • 差异来自“原型组合”,而不是“独立模型”

因此,多样性在统一空间中自然扩展,不需要 per-user 模型复制。

② 解决精细化问题

  • 原型是离散且可组合的维度

  • 不同语义维度可以被分解

  • 差异可以在局部层面调节

相比粗粒度 persona 描述,这种结构更接近可精细控制的坐标系。




模型结构:让“用户”变成可组合的结构表示

图二:CURP的主要模型框架

① User Encoder:把“杂乱历史”压缩成可计算表示

真实的用户历史通常是:

  • 分散

  • 风格不稳定

  • 含有大量无关噪声

如果直接拼接进 prompt,模型会面临两个问题:

  • 上下文被迅速占满

  • 无法自动提取稳定的用户特征

因此,第一步我们引入一个双向编码器(例如 Contriever),专门负责阅读用户历史。

它做的事情不是生成,而是理解——

把每条历史行为编码成向量表示,再通过 mean pooling 得到紧凑的历史特征。

这一阶段的目标可以概括为:

从“文本记录”中提炼出“行为特征”。

但到这里,我们还没有完成真正的用户建模。因为连续向量仍然是黑盒的、不稳定的,也不具备可解释性。


② Prototype Codebook:把连续向量变成“原型组合”

这是 CURP 的核心设计。

我们不直接使用连续 embedding,而是把它们映射到一个共享的原型空间中。

具体来说,我们基于约 15 万用户、2400 万条历史行为,构建了一个包含 1000 个原型的 codebook。每条历史行为会通过 Product Quantization 被拆分成 4 个子空间,并在每个子空间中选择一个最相近的原型索引。

于是,一条历史行为不再是一个难以解释的向量,而是:

4 个离散原型的组合。

可以理解为:

模型从大规模用户数据中自动学习出一组“典型行为模式”,而每个用户都可以由这些模式的组合来表示。

为什么要这么做?

因为离散原型有三个优势:

  • 提升结构化表达能力

  • 减少噪声干扰

  • 便于分析和解释

为了避免原型塌缩(只使用少数原型),我们在训练中加入了三个约束:

  • Lquant 保证量化后仍接近原始表示

  • Ldiv 保持原型之间的差异性

  • Lusage 促进所有原型被均匀使用

最终得到一个稳定、可泛化的“用户原型库”。

这一阶段解决的是:

如何构建一个共享、可扩展的用户表示空间。

③ LLM Decoder:在冻结状态下完成个性化生成

有了用户的原型表示之后,最后一步才是真正的生成。

我们将量化后的原型 embedding 通过一个小型 MLP 映射到 LLM 的 embedding 空间,然后与当前任务的 query 拼接,一起输入到冻结的 LLM Decoder中。

这里有两个关键点:

第一,LLM 是完全冻结的。

第二,我们只训练约 2000 万参数的对齐模块。

在一个 8B 模型中,这只占大约 0.2%。

也就是说,我们没有:

  • 为每个用户单独训练 LoRA

  • 修改 LLM 内部权重

  • 复制模型实例

而是通过结构化原型指导生成。

最终的生成流程是:

用户历史 → 编码 → 原型量化 → 映射 → 拼接问题 → 冻结 LLM 输出答案

这种设计实现了真正的:

plug-and-play personalization




两阶段训练:先“学原型”,再“学对齐”

为了让这套结构稳定工作,我们把训练拆成两个阶段。

Stage I:

Prototype Codebook Construction(PCC)

目标是构建一个通用、可迁移的用户原型空间。

这一阶段完全独立于具体任务,重点是从大规模用户行为中抽象出稳定原型。

可以理解为:

先建好“词汇表”,再让模型学会怎么用。


Stage II:

Prototype Behavior Aligning(PBA)

在有了原型空间之后,我们训练对齐模块,让模型学会:

  • 如何将原型映射到 LLM 表达空间

  • 如何利用原型辅助生成

此时,模型真正学到的是:

如何根据结构化用户表示生成个性化内容。

而不是单纯地模仿历史文本。




实验结果:性能与效率的平衡

我们在四类具有代表性的个性化生成任务上进行了系统评测,包括 Reddit 问答(开放式回答)、新闻标题生成(可控生成)、推文改写(风格迁移)以及商品评论写作(长文本生成)。这些任务覆盖了不同长度、不同场景和不同个性化强度的需求。对比方法方面,我们既考虑了 Prompt-based 方法(如 Zero-shot、ICL、RAG、Persona 生成等),也比较了 Training-based 方法(如 LoRA、Soft Prompt、PPlug、OPPU 等),从“纯提示”到“参数微调”两类主流技术路线进行全面对比。

在此基础上,我们重点关注两个问题:模型效果如何,以及为此付出了多少参数成本。

表1:主要实验结果


主实验结果总结

  • 整体性能领先:在四个任务的大多数指标上,CURP 均取得最优或并列最优表现,尤其在开放式生成任务上优势更明显。

  • 显著优于纯 Prompt 方法:相比 ICL、RAG 等方法,CURP 在避免长上下文噪声的同时,获得更稳定、更准确的个性化效果。

  • 接近甚至超过重训练方法:在不进行 per-user 微调的情况下,性能接近或超过 LoRA、OPPU 等训练型方法。

  • 参数效率极高:CURP 仅训练约 2000 万共享参数(约占 8B 模型的 0.2%),无需为每个用户单独训练模块,实现了性能与效率的良好平衡。

简而言之:

我们在几乎不增加模型规模的前提下,实现了更强、更稳定的个性化生成能力。




消融与分析实验

消融实验:原型量化真的必要吗?

一个自然的问题是:

如果直接使用连续用户 embedding,而不做离散原型量化,会发生什么?

为此,我们移除了 codebook,将用户历史的连续表示直接用于生成,对比完整的 CURP 框架。结果如表二和图三所示:

实验结果显示:

  • 整体性能变化并不显著,说明量化并没有明显损失关键信息;

  • 但引入原型后,表示更加结构化,表达区分度更清晰;

  • 模型在稳定性与鲁棒性方面表现更优。

这说明,codebook 的价值并不仅仅体现在指标提升上,而是在于:

在不牺牲性能的前提下,提供更清晰、更可控的用户表示结构。

更重要的是,离散原型带来了一个连续 embedding 难以具备的优势 —— 隐私保护与云端协同能力

在连续表示方案下,往往需要传输完整的用户 embedding,甚至原始历史文本。而在 CURP 中,用户历史被压缩为少量离散原型索引,这些索引本身是不可逆的,无法还原原始文本内容。

这意味着:

  •  用户端可以本地编码与量化

  • 只需将原型索引上传至云端

  • 云端 LLM 根据索引进行个性化生成

从系统层面看,这种设计天然支持云边协同架构,同时降低隐私泄露风险。

因此,消融实验告诉我们的不仅是:

Codebook 不会拖累性能,

更重要的是:

它在结构化表达、隐私保护与工程落地之间提供了一种更平衡的方案。

表二:消融实验

表三:泛化性实验

图三:codebook配置设计的影响


进一步分析:它为什么有效?

除了主实验和消融,我们还从多个角度分析了模型行为,试图回答一个问题:

CURP 为什么有效?它学到了什么?

 ①原型设计分析:更大就更好吗?

如图三所示,我们还分析了不同设计选择的影响,例如:

  • 原型数量(更大词表是否更好?)

  • 子空间数量(PQ2、PQ4、PQ8)

  • 初始化方式(随机 vs 均衡)

结果显示:

  • 合理规模即可达到最佳效果

  • 盲目增加原型数量并不会显著提升性能

  • 均衡初始化明显优于随机初始化

这说明:

有效的结构设计,比简单堆规模更重要。

② 可解释性分析:原型真的有语义吗?

一个关键问题是:

Codebook 学到的原型到底是不是有意义的?

如图四所示,我们在新闻标题任务中分析了不同子空间的原型索引,发现一个非常有趣的现象:

  • 某些子空间始终对应“主题层面”的信息(例如同一政治人物)

  • 某些子空间对应“内容类型”(新闻报道、娱乐调侃等)

  • 还有子空间反映“情绪或立场”(中性、批评、讽刺等)

也就是说,不同子空间自动学到了层次化语义结构

换句话说:

原型空间不是随机聚类,而是在分解“主题—风格—情绪”等不同维度。

这正是我们希望看到的结构化表达能力。

图四:可解释性分析

③历史数量分析:更多历史真的更好吗?

我们还测试了不同历史数量对性能的影响。

对 ICL 和 LoRA 来说:

  • 历史越多,上下文越长

  • 噪声越多,性能反而下降

但在 CURP 中:

  • 性能随历史数量变化非常平稳

  • 即使历史数量变化,模型依然保持稳定输出

原因很简单:

我们并不是直接拼接历史,而是先压缩为结构化原型表示。

这说明:

CURP 更具鲁棒性,也更适合真实场景中的不稳定数据量。





总结:

个性化的关键,不是更多历史,而是更好的表示

在大模型时代,个性化生成已经从“能不能做”走向“如何做好”。

传统做法要么不断往 prompt 里堆历史,要么为每个用户单独微调模型,前者噪声重、后者成本高。CURP 提供了一种不同的思路:

与其改模型,不如重构用户表示。

通过构建共享的原型 codebook,我们将用户从“冗长文本”抽象为“可组合结构”,再通过轻量对齐模块与冻结的 LLM 解耦结合,在几乎不增加模型规模的前提下,实现稳定、可扩展的个性化生成。

实验结果表明,这种结构化表示不仅带来更好的性能—效率平衡,也具备更强的泛化能力与可解释性;同时,离散原型天然支持云端协同与隐私保护,为真实部署提供了工程上的可行路径。

如果说 Prompting 太表层,Fine-tuning 太昂贵,那么 CURP 试图走出第三条路:

用结构化原型,让模型真正“理解用户”。

在个性化生成这件事上,表示方式,或许比模型规模更重要。





END


复旦大学数据智能与社会计算实验室


Fudan DISC


联系方式:disclab@fudan.edu.cn

地址:复旦大学邯郸校区袁天凡、慧敏校园C栋



点击“阅读原文”跳转至论文主页

内容中包含的图片若涉及版权问题,请及时与我们联系删除