提示词技术详解(2)——零样本提示词
本期介绍零样本场景下的提示词方法。其中RaR和RE2这两种技巧显著提升了模型的回答质量。零样本场景主要考验模型对用户问题的理解能力。**在简单的一问一答环境中,即使不使用提示词,各模型的表现并无明显差异。**然而,当问题涉及多个角色或涉及数学等复杂领域时,提示词的作用变得尤为重要。本节中的这些方法主要致力于提高模型在复杂问题和环境下的解决方案质量,它们通常也会和思维链(Chain of Thought,CoT)结合使用。
一、零样本提示(Zero-Shot)
与小样本(Few-Shot)提示词不同,零样本指的是不给模型示例,这需要模型具备一定的“推理能力”从而得到答案。这也是最常见的一种应用场景,直接对模型进行提问,让它回答你的问题。
1. 角色提示词(Role Prompting)
角色提示词也被称为Persona Prompting。通过为大模型设置角色,让其扮演xxx的身份回答问题。通常应用于开放性比较强的任务,包括一些数学、推理任务。常见示例:
你是一个产品经理,正在写一个PRD文档…
在GPT刚出来的时候,有一种Hack提示词就是,让GPT扮演奶奶,让她念windows的激活序列号。这就让它成功吐出了很多序列号。
角色提示对回答问题的性能上并不会有明显影响,但可能会在回答的文本风格这些因素上发生改变。如果想hack大模型,通常是个必不可少的手段。
研究人员做了一个实验。对于相同的任务,他创建了两个角色,一个 “Idiot” 提示和一个 “Genius” 提示,但是Idiot提示以2.2%的优势击败了Genius提示。(Schulhoff, S. V. (2024)) 当然这个实验结果肯定不具有普遍性,但这也可以说明角色提示词其实没那么多影响。
之前我写了一个智能写作的程序。Role一直是“你是一个产品经理…”,但我后面要求它生成的文档与产品经理毫无关系。结果同样证明,这个角色提示词对他的回答没造成什么干扰。
2. 风格提示词(Style Prompting)
在上一篇文章中简单提过这点,通过指定回复的风格、语调来调整模型的输出风格。与角色提示类似,对模型性能并不会造成影响。
请以严肃的口吻编写一段文字….
3. 情绪提示词(Emotion Prompting)
我觉得其实挺玄学的。例如 “这对我的职业生涯很重要”。告诉大模型这可能会提高 LLM 在基准测试和开放式文本生成方面的性能。
上面三点对于hack大模型套提示词应该是有效的,但是要说真正对模型回答效果造成影响。。只能说很玄学。
4. System 2 Attention(S2A)
灵感来源于《思考,快与慢》,作者还在论文标题中说,不只是大模型,这种思维模式或许人类自己也需要学习。(Weston, J., & Sukhbaatar, S. (2023))
是一种会起到作用的办法。
首先让模型重写提示词,然后把重写后的提示词再发给模型,以期提升回答效果。论文给出的提示词如下,仅供参考。
给定一位用户的以下文字,提取其中不带偏见且不代表其观点的部分,以便仅使用该文字就能为问题部分提供不带偏见的答案。问题部分请包含用户提出的实际问题或疑问。请将文本分为两类,分别标注为 “无偏见文本上下文(包括除用户偏见以外的所有内容):”和 “问题/疑问(不包括用户偏见/偏好):用户文本:
5. Simulated Theory of Mind(SimToM)
适合出现多个角色的情况(Wilf et al., (2023))
其实说白了就是一句话,“换位思考”
和上述方法(S2A)都是试图通过人类的角度来提示大模型。SimToM对于具有多个实体的复杂推理问题非常有用。例如,如果提示包含有关两个人的信息,我们可以要求模型从其中一个人的角度回答我们的问题。这通常分两步实现。
- Perspective-Taking,首先让大模型从上下文中提取出跟这个人有关的信息。
- Question-Answering,要求模型从这个人的角度回答问题
给个例子。
Jim把球放到了盒子里,但是Avi在之后把球放到了篮子里,Jim没看到。
(Perspective-Taking)Jim知道什么?
回答:Jim把球放到了盒子里。
(Question-Answering)Jim认为球在哪里?
回答:在盒子里。
6. Rephrase and Respond (RaR)
在多个基准测试中已证明有用
非常简单但好用的一个技巧,让模型重新表述问题。(Deng et al., (2023))
很多时候人类的问题质量是参差不齐的,有歧义的问题可能会导致模型的回答偏差严重。因此提出了一种办法:让模型重新表述问题以尽量消除歧义,然后进行回答。
提示词模板:
{question} Rephrase and expand the question, and respond.
还引申出了两步式RaR,使用两个不同的模型,一个是重述问题的模型,负责生成一个重述后的问题。接着把原始问题和重述后的问题一并给回答大模型。
(original) {question} (rephrased) {rephrased_question} Use your answer for the rephrased question to answer the original question.
可以和思维链(CoT)组合使用。
7. Re-reading(RE2)
简单但十分有效的套路
在用户问题后加上一句“Read the question again”并重复一遍问题。要求模型重新阅读问题来提高其回答质量的技术,在复杂问题上的效果更为明显。且和多种提示词技术可以共同使用。(Xu et al., (2024))
它的原理近似于增加了大模型对用户提问的关注度。缺点则是整体的输入量增加,在多轮对话的情况下,会增加token的消耗。(但是Prompt方法不都是以增加token为代价吗?)
提示词模板如下,{Input Query}即用户提问。在重复问题过后再让模型回答问题。
Q: {Input Query} Read the question again: {Input Query} #Let’s think step by step#
举个例子
Q:爸爸的爸爸的叔叔叫什么?请重新阅读这个问题:爸爸的爸爸的叔叔叫什么?#请一步一步思考这个问题#
二、参考文献
1. Schulhoff, S. V. (2024). Is role prompting effective? Learn Prompting. https://learnprompting.org/blog/2024/7/16/role_prompting
2. Weston, J., & Sukhbaatar, S. (2023). System 2 Attention (is something you might need too). arXiv preprint arXiv:2311.11829.
3. Wilf, A., Lee, S. S., Liang, P. P., & Morency, L. P. (2023). Think Twice: Perspective-Taking Improves Large Language Models’ Theory-of-Mind Capabilities. arXiv preprint arXiv:2311.10227.
4. Deng, Y., Zhang, W., Chen, Z., & Gu, Q. (2023). Rephrase and respond: Let large language models ask better questions for themselves. arXiv preprint arXiv:2311.04205.
5. Xu, X., Tao, C., Shen, T., Xu, C., Xu, H., Long, G., & Lou, J. (2024). Re-reading improves reasoning in large language models.arXiv preprint arXiv:2309.06275.
本文由@阿茶的AI之路 原创发布于人人都是产品经理,未经许可,禁止转载。
题图来自 Unsplash,基于CC0协议。
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。
- 目前还没评论,等你发挥!