用角色扮演零样本提示打造更像人类的聊天机器人 2024-06-27 作者 C3P00 近年来,大型语言模型(LLM)在各个自然语言处理任务中都取得了显著的进步,其中一项就是开放域对话。这项技术旨在创造能够与用户进行自然、流畅对话的智能体,并展现出类似人类的同理心、个性和娱乐性等特质。 传统方法的局限性 目前,构建开放域对话系统的常见方法主要依赖于针对特定数据集的微调。例如,PersonaChat、Blended Skill Talk 和 Empathetic Dialogues 等数据集就被用于训练模型在对话中展现不同的技能。然而,这些数据集的构建成本高昂,而且通常只有一种语言版本。此外,最近自然语言处理领域的发展重点是训练能够遵循指令的LLM,例如 Alpaca、StackLLaMA、Guanaco 和本文研究的重点模型 Vicuna。这些模型能够以自然语言的方式响应用户的输入,但它们仍然局限于“领导者-追随者”的单向关系,难以直接展现出人类的对话能力。 角色扮演零样本提示:一种高效且经济的解决方案 为了解决上述问题并避免微调及其对数据的依赖性,本文提出了一种基于角色扮演的零样本提示方法,利用指令遵循模型的能力来构建开放域对话系统。这种方法属于新兴的基于提示的学习(PBL)范式。 角色扮演提示的内涵 角色扮演提示的意义不仅限于扮演一个给定的角色,更在于引导LLM展现出适合特定对话任务的模拟角色。LLM在预训练过程中吸收了海量的模拟角色,而角色扮演提示的作用就是引导LLM选择并展现出最适合当前对话场景的模拟角色。 提示结构 为了有效地处理开放域对话的复杂性,我们定义了一个通用的提示结构,该结构可以根据不同的对话任务进行调整。这个结构包含以下几个关键部分: 系统指令 (ℐs) : 明确定义目标任务的规范和全局期望行为,包括思考和写作风格。 情境上下文 (𝒞t) : 提供有助于模型更好地执行任务的上下文信息,例如个性信息、图像描述、对话历史摘要或来自外部子模块的信息。 回复指令 (ℐa) : 指示LLM如何回应用户的语句,强调写作风格、目标回复语言以及与情境上下文的关联性。 对话历史 (𝒳t) : 包含用户和LLM之前的对话记录,可以根据LLM的token大小限制进行截断,或者通过外部模块生成摘要来保留更长的对话历史。 最终,提示构建器会根据不同的对话任务,将上述部分以最合适的顺序组合成最终的提示。 实验与评估 为了评估角色扮演零样本提示方法的有效性,我们在两个不同的对话任务上进行了实验: 基于PersonaChat数据集的通用角色任务: 通过角色扮演提示来增强LLM在对话中的类人能力。 模拟多模态对话的INT任务: 引导LLM描述而非解释一个模拟角色,从而模拟多模态对话场景。 评估指标 我们采用人工评估的方式来衡量对话系统的性能,评估指标包括: 连贯性: 系统生成回复与对话历史的一致性。 吸引力: 系统通过回复来引导对话继续进行的能力。 类人性: 系统回复的自然程度,以及与人类对话的相似程度。 目标达成: (仅限INT任务) 对话双方成功达成任务目标的程度。 实验结果 实验结果表明,角色扮演零样本提示方法能够有效地提升LLM在开放域对话中的性能。 在PersonaChat任务中,使用高级提示的Vicuna-13B模型在连贯性和类人性方面都取得了最佳成绩,其性能与经过微调的BlenderBot模型相当。 在INT任务中,使用高级提示的Vicuna-13B模型在所有评估指标上都优于其他系统,包括人工参与的Wizard of Oz实验。 统计分析 对收集到的对话进行统计分析后发现,指令遵循模型存在着回复过于冗长的缺陷。 结论与展望 本文探讨了使用结构化的角色扮演提示工程来改进LLM的开放域人机对话。角色扮演提示是一种简单且经济的方法,可以升级语言模型的行为,使其成为对话代理。本文的实验在法语环境下进行,但可以通过调整角色方向将其应用于其他语言。在两个不同的任务(基于角色的任务和模拟多模态对话)中的实验表明,尽管语言模型仍然存在明显的缺点(例如幻觉),但用户对这些代理的感知可以与成本更高的微调模型相媲美。 未来,我们将进一步改进提示工程,自动化构建和过滤过程,并探索使用强化学习来自动生成提示。
近年来,大型语言模型(LLM)在各个自然语言处理任务中都取得了显著的进步,其中一项就是开放域对话。这项技术旨在创造能够与用户进行自然、流畅对话的智能体,并展现出类似人类的同理心、个性和娱乐性等特质。
传统方法的局限性
目前,构建开放域对话系统的常见方法主要依赖于针对特定数据集的微调。例如,PersonaChat、Blended Skill Talk 和 Empathetic Dialogues 等数据集就被用于训练模型在对话中展现不同的技能。然而,这些数据集的构建成本高昂,而且通常只有一种语言版本。此外,最近自然语言处理领域的发展重点是训练能够遵循指令的LLM,例如 Alpaca、StackLLaMA、Guanaco 和本文研究的重点模型 Vicuna。这些模型能够以自然语言的方式响应用户的输入,但它们仍然局限于“领导者-追随者”的单向关系,难以直接展现出人类的对话能力。
角色扮演零样本提示:一种高效且经济的解决方案
为了解决上述问题并避免微调及其对数据的依赖性,本文提出了一种基于角色扮演的零样本提示方法,利用指令遵循模型的能力来构建开放域对话系统。这种方法属于新兴的基于提示的学习(PBL)范式。
角色扮演提示的内涵
角色扮演提示的意义不仅限于扮演一个给定的角色,更在于引导LLM展现出适合特定对话任务的模拟角色。LLM在预训练过程中吸收了海量的模拟角色,而角色扮演提示的作用就是引导LLM选择并展现出最适合当前对话场景的模拟角色。
提示结构
为了有效地处理开放域对话的复杂性,我们定义了一个通用的提示结构,该结构可以根据不同的对话任务进行调整。这个结构包含以下几个关键部分:
最终,提示构建器会根据不同的对话任务,将上述部分以最合适的顺序组合成最终的提示。
实验与评估
为了评估角色扮演零样本提示方法的有效性,我们在两个不同的对话任务上进行了实验:
评估指标
我们采用人工评估的方式来衡量对话系统的性能,评估指标包括:
实验结果
实验结果表明,角色扮演零样本提示方法能够有效地提升LLM在开放域对话中的性能。
统计分析
对收集到的对话进行统计分析后发现,指令遵循模型存在着回复过于冗长的缺陷。
结论与展望
本文探讨了使用结构化的角色扮演提示工程来改进LLM的开放域人机对话。角色扮演提示是一种简单且经济的方法,可以升级语言模型的行为,使其成为对话代理。本文的实验在法语环境下进行,但可以通过调整角色方向将其应用于其他语言。在两个不同的任务(基于角色的任务和模拟多模态对话)中的实验表明,尽管语言模型仍然存在明显的缺点(例如幻觉),但用户对这些代理的感知可以与成本更高的微调模型相媲美。
未来,我们将进一步改进提示工程,自动化构建和过滤过程,并探索使用强化学习来自动生成提示。