作者观察到,只要在数据合成prompt中简单地加入角色信息,就可以让生成该角色视角下独特的合成数据。
于是经过研究之后,这个包含10亿个(准确说是1,015,863,523个)不同人格信息的Persona Hub应运而生。
除了前面提到的训练数据,这些人格还能设计出弱智吧风格的逻辑推理问题,也可以拿来做工具开发,甚至打造出游戏NPC、进行社会模拟。
有网友看了表示这实在是泰裤辣,自己以前也做过这样的实验,不过只制作了一万种人格,现在这个项目真的很有趣。
其中也包括生成训练数据,比如用它们生成的数学文本训练大模型,可以让7B模型拥有和GPT-4 Turbo相当的数学能力。
具体来说,作者用Persona Hub中的不同人格生成了107万条数据,并用其训练了Qwen2-7B模型,然后在MATH数据集上进行了测试。
结果模型获得了64.9%的准确率,比原始版本提高了15个百分点,并与1106、0125两个版本的GPT4-Turbo打成了平手。
在生成训练数据之外,Persona Hub也能通过模拟用户提示、创建知识文本等方式来提高模型的能力。
当然除了帮助模型提高能力,也可以让Persona Hub当中的角色来设计问题,比如不同风格的逻辑推理题目。
根据prompt中的游戏背景设定,再结合目标人物的风格,模型合成了三个迥异的人物和他们相应的介绍。
进一步地,作者还认为,通过利用这些人格来模拟和推断真实用户的潜在需求和行为,还为用语言模型模拟现实世界创造了许多新的机会。
Persona Hub中的10亿个人格,可以利用强大的语言模型在虚拟世界中维持一个组织良好的虚拟社会,构建出一个超大号的“斯坦福小镇”。
作者合成人格的方式主要有两种——由文本生成人格(Text-Persona)和由人格生成人格(Persona-Persona)。
用文本生成人格信息的理论基础,是作者发现具有特定专业背景和文化背景的人,在阅读和写作时会表现出独特的兴趣偏好。
操作上,作者将海量网络文本数据输入预训练语言模型,通过prompt(如“谁可能会阅读/撰写/喜欢这段文本?”)引导模型从每段文本中提取一个对应的人格,这里的prompt可以控制输出人格描述的格式,如纯文本或结构化文本。
总之,通过在海量网络文本上应用文生人格方法,可以获得数十亿乃至更多的人格,覆盖各个领域、不同粒度的角色。
但仍然可能会遗漏一些在网络上可见度较低的角色,如儿童、乞丐、幕后工作人员等,为了补充这些角色,作者还提出了人格生人格方法。
这种方法建立在文生人格的基础之上,从其获得的人格出发,利用人际关系链,根据六度分隔理论,对每个种子角色进行最多6轮的关系扩展,推断并扩展出其他相关联的角色。
(六度分隔理论由哈佛大学心理学教授Stanley Milgram于1967年提出,内容是说人和任何一个陌生人之间所间隔的人不会超六个,即最多通过六个人就能认识任何一个陌生人。)
实际操作过程当中,作者会首先选择要探索的人际关系类型,将种子人格和目标关系类型输入到模型中,通过prompt引导模型生成对应的相关人格。
这里生成的相关人格可以作为新的种子,进一步扩展人格网络,经过6轮迭代扩展,可以覆盖绝大多数相关角色。
不过,由于在生成新的personas的过程中可能会产生一些不合理、不合逻辑,或者与种子关联性不强的角色描述,所以作者还需要对这些生成的人格进行过滤。
过滤解决了人格描述质量的问题,但生成的人格中仍然可能存在大量相似甚至重复的描述,所以还需要对生成的人格进行去重。
一是基于MinHash的去重,作者将每个描述转化为一组n-grams,使用MinHash算法计算每段描述的signature并比较相似度,超过某个阈值时则认为出现了重复。
另一种是基于嵌入的去重,作者使用大模型将每个描述转化为一个嵌入向量,并计算嵌入向量之间的相似度,同样是超过某个阈值时认为出现了重复。
比如在这个场景中,作者尝试了零样本、少样本和人格增强的少样本三种方式,发现零样本创造力强但相关性差,少样本相关性提高了但创造力下降了,人格增强的少样本则在两者之间实现了较好的平衡。