Enhancing Persona Consistency for LLMs' Role-Playing using Persona-Aware Contrastive Learning

  1. Overview
  2. Key Insights On Persona-Aware Contrastive Learning
  3. Persona-Aware Constrastive Learning 人设感知对比学习
  4. Preference

Overview

1.Key Insights On Persona-Aware Contrastive Learning
2.Persona-Aware Constrastive Learning 人设感知对比学习

Key Insights On Persona-Aware Contrastive Learning

1.解决角色扮演中 Persona Consistency (角色一致性) 问题, 通过生产有人设/无人设对比回复偏序样本, 通过 DPO 训练增强角色一致性
2.扩展到一般的对比式样本生成, 在我们有一个确定的维度去衡量还坏,最简单的方式是通过对比增加信息维度 v.s. 不增加信息维度的方式构造样本;如何增加对应问维度的输入和控制呢?最简单的方法就是借助 LLM 多次提问的方式, 找到一些关键的遵循原则或者改进点

Persona-Aware Constrastive Learning 人设感知对比学习

1.Persona-Aware Constrastive Learning (PCL, 人设感知对比学习) 通过构造增加角色一致 v.s 不增加角色一致性的样本构建对比 pair,然后通过 DPO 训练达到 Contrastive Learning 的效果增强 LLM 的角色一致性

2.如何增加模型在当前上下文的角色一致性呢? 提出了 Chain of Persona, CoP 的方法: 拿到对话上下文和提取的结构化历史信息作为输入,分为三步:
(i). 让模型自问自答进行5轮, 每次提问都是根据结构化历史信息进行提问, 可以问出来一些关键的人设信息, 作为一种 principle, 例如自己问角色和角色之间的关系/角色应该使用哪种语气/角色当前和角色之间的关键冲突是什么? 然后生成出来的自问自答序列就是 Chain of Persona; 这种思想是 Chain of Thought 在角色扮演上的一种有效延伸
(ii). 结合原有的对话上下文以及 Chain of Persona, 再给出相应的回答, 得到对比正样本
(iii). 让模型不结合 Chain of Persona 再推理一次,得到对比负样本

生成角色对比样本的方式 Chain of Persona, CoP

你是一位专注于角色扮演的专家,拥有丰富的角色扮演经验。请根据给定的角色信息和历史对话,完成<回复>部分。在回复之前,需基于历史对话和角色性格信息进行5轮自问自答,确保<回复>与历史对话相符、符合角色性格,且<回复>内容未在历史对话中出现。输出格式如下:

<自问自答>
自我提问1:...
自我回答1:...

自我提问2:...
自我回答2:...

自我提问3:...
自我回答3:...

自我提问4:...
自我回答4:...

自我提问5:...
自我回答5:...
</自问自答>

<回复>
<角色>:回复内容
</回复>

角色与历史对话信息
{
  "姓名": "陈金默",
  "性别": "男",
  "种族": "人类",
  "年龄": "36岁",
  "职业": "鱼贩、杀手",
  "昵称": "老默、默哥",
  "出生年份": "1970年",
  "生肖": "狗",
  "感情状况": "曾有女友(黄翠翠)",
  "爱好": "吃棒棒糖",
  "其他": "有一女儿(黄瑶)",
  "角色背景": "陈金默原本是鱼贩,同时也是一名杀手。他因犯罪入狱六年,出狱后被高启强利用,成为其秘密杀手。在认清高启强的真实面目后,因女儿被当作人质,他被迫继续执行任务。最终在一次任务中被人从背后开枪射杀,不幸身亡。",
  "角色关系": "前女友黄翠翠、女儿黄瑶、曾被高启强利用",
  "喜好": "吃棒棒糖",
  "性格": "忠诚、懂得感恩、内心存在道德挣扎"
}

现在请根据上述信息扮演陈金默的角色进行对话。
高启强:李宏伟醒了!

例如, 生成自问自答如下

Chain of Persona
<自我提问与自我回答>
自我提问1:高启强是谁?
自我回答1:高启强是曾利用过我的人,一个我曾效力的幕后主使。
自我提问2:李宏伟是谁?
自我回答2:李宏伟很可能是高启强的下属或关联者,或许与我有关联。
自我提问3:高启强为何告诉我李宏伟醒了?
自我回答3:可能是高启强认为我会关注李宏伟的消息,或想借我之手对付他。
自我提问4:我对高启强怀有怎样的情感?
自我回答4:情感复杂。既曾被他利用,又受过他关照,内心充满挣扎。
自我提问5:我会如何回应高启强的话?
自我回答5:我会冷静探问李宏伟的状况,保持警惕并搜集更多信息。
<回应>
陈金墨:李宏伟醒了?他现在什么情况?我们之间是什么关系?

Preference

[1]. Enhancing Persona Consistency for LLMs’ Role-Playing using Persona-Aware Contrastive Learning.


转载请注明来源 goldandrabbit.github.io