为何要理解Prompt技术
最近看了很多相关的论文、做了很多相关的实验,其实就是想搞明白一个问题:LLMs是否具有智能,现在可能不行,那么未来呢?
每个人都知道 LLMs 的核心是 Transformer——对下一个 Token 进行预测。表面看起来这个和智能无关,尤其是 Prompt 的技术和实验看得越多,就觉得当下的 LLMs 还只是学到形式,并没有真正的懂得。
但不得不说,GPT4 的效果真好。
如果还是采用 Transformer 的架构,该如何提升性能呢?
第一个想到的是更多的数据,包括更多的知识,更多的各种形式的知识。这个会增加 LLMs 的知识,会增加能力,但似乎会不增加新的能力。
即使是新的合成数据,增强的是指令理解的能力,对 Prompt 的格式的要求会降低。
然后是增加模型的参数,这个会有用么?其核心问题是,LLMs 从文本中到底学到了什么。文本本身是世界知识的抽象,是有压缩损耗的,通过文本本身的学习,是否会学到压缩的过程呢?需要多少参数?
CCoT
Contrastive Chain-of-Thought Prompting——对比性思维链提示(CCoT)使用正面和负面示例来提高大型语言模型的推理能力。
近来出现了许多链式X示例,展示了大型语言模型(LLMs)如何能够将复杂问题分解为一系列中间步骤。这导致了一种现象,有些人称之为X链。
这个基本原理最初是由连锁思考(CoT)提示的概念引入的……CoT提示的基本前提是模仿人类解决问题的方法,我们将较大的问题分解成较小的步骤。
LLM随后会集中注意力解决每个子问题,从而减少忽视关键细节或做出错误假设的可能性。
CoT的一个有趣特点是使用无效示范者的影响相对较小;这意味着在中间推理步骤中的错误假设会沿着链条传播下去。
考虑到这一点,对比性思维链(CCoT)专注于提供正面和负面的例子,以努力增强模型的推理能力。这个研究有效果,再次证明了上下文学习(ICL)对于大型语言模型(LLMs)的重要性。
CCoT在推理时向LLM展示了有效和无效的推理示例。模型不知道在传统CoT中应避免哪些错误,这可能导致错误增多和错误传播。CCoT在示范例子中提供了正确和错误的推理步骤。
总的来说:
1. 对比正面和负面的例子可以提高CoT方法的有效性。
2. 需要开发一种自动化方法来创建正面和负面示例,这种方法基于人工注释的数据,包括正确的和合适的错误数据。
3. CCoT相较于传统CoT方法的改进带来了开发提示创建结构的额外负担。
如何构建 CCoT 呢?我们现了解如下的框架。
传统的CoT包括两个要素:桥接和语言模板。
桥接
桥接是指模型在得出最终结论时所遍历的象征性项目。在算术任务中,桥接可以由数字和方程式组成,或者在事实任务中由实体的名称组成。
语言模板
语言模板是文本提示,它指导语言模型在推理过程中派生和情境化正确的桥接对象。
上图是一个实际例子,展示了用于创建思维链条推理的桥接对象(蓝色)和语言模板(红色)。
考虑两个属性:连贯性和关联性。这都对正确推理有影响。
连贯性指的是在理由中正确排序步骤,并且对于成功的思维链条是必要的。具体来说,由于思维链条是一个顺序推理过程,后续步骤不可能是早期步骤的先决条件。
关联性指的是论证是否包含问题中的对应信息。例如,如果问题提到一个名叫Leah的人在吃巧克力,那么讨论另一个人剪头发就是不相关的。
考虑上图,这里你看到了标准提示、思维链提示和对比性思维链提示的输入和输出示例的比较。
最后看一下效果:
效果是有,但整体没那么方便。
论文:https://arxiv.org/abs/2311.09277
参考:https://cobusgreyling.medium.com/contrastive-chain-of-thought-prompting-cc8c5b75a6e0
继续阅读
阅读原文