解密prompt系列26. 人类思考vs模型思考:抽象和发散思维
解密prompt系列26. 人类思考vs模型思考:抽象和发散思维
在Chain of Thought出现后,出现了许多优化方案,如Tree of thought、Graph of Thought、Algorithm of Thought等,但这些优化方案更倾向于"机器化"而非"人性化"。本文将从人类思考的角度出发,探讨如何通过prompt引导模型进行抽象思维和发散思维。
抽象思维:Step Back Prompt
DeepMind提出的新Prompt方式,在思维链之前加了一步抽象(后退一步思考)。通过把原始问题抽象成更高层次的概括性、概念性问题,降低原始问题中的细节对推理的影响。
在RAG场景里,这类prompt策略很适合解决用户query过于细节,导致召回效果不佳的问题。例如,对于query = “哪些国家在经济陷入低谷时,因为通货膨胀严重,而不得不加息”,直接对以上query进行改写、拆分都无法召回有效的内容,因为问题本身粒度已经太细了。这时需要进行更高层次的总结和抽象,把问题修改成“哪些国家发生过被动加息”,这类更高层次的抽象概念,召回效果会更好。
StepBack推理和COT推理相同,都是通过few-shot prompt来引导模型进行后退思考。论文对三个不同领域的任务进行了评估,分别是STEM领域的推理任务、知识密集的QA任务和multi-hop推理任务。其中,STEM推理的few-shot prompt模板如下:
知识密集的QA任务和multi-hop推理任务使用的few-shot prompt模板如下:
以下是论文中在QA场景使用的一些few-shot案例:
效果上,在PaML-2的模型上进行试验,各个任务上step-back都能相比COT有进一步的显著提升,在多数任务上stepback + RAG都能超越GPT-4的效果。并且prompt效果和few-shot的个数无关,1-shot的效果就很好。
不过在实际场景中测试,论文中提到的几个stepback的问题其实一定程度上被放大了,主要有以下几个问题:
- Context Loss:在抽象问题的过程中,模型丢掉了核心的条件,导致问题丢失了核心信息,后面的RAG也随之错误
- Abstraction Error:在垂直领域,模型的归纳推理效果有限,往往在第一步定位principle、concept就存在错误
- Timing:Step Back Prompt和Decompose其实是相对对立的关系,各自适合解决一部分问题,在RAG场景中Decompose更适合粗粒度Query,Step Back适合细粒度Query,但想让模型自己决策不同的思考方式难度有点高
另一篇论文《Large Language Models can Learn Rule》的思路也有些类似,也是先归纳推理再演绎推理,通过把抽象出的通用知识注入prompt,用来帮助下游推理。
发散思维:Diversity of Thought
发散思维简单说就是“一题多解”、“一物多用”。Self-Consistency通过让模型随机生成多个推理,从中Major Vote出概率最高的答案,更像是发散思维的对立收敛思维,重心放在从四面八方的各种尝试中抽象问题的核心。
Self-Consistency的重心放在收敛,而Diversity of Thought的重心放在发散。这里论文提出了两个可以发散模型思维的prompt方式:
- Approaches:以XX方式思考,例如数学问题可以让模型直接计算、化简计算、可视化、逆推等等
- Persona:像谁谁一样思考,例如金融问题可以像Buffett一样思考,数学问题像Turing一样思考
基于以上的多个发散维度,论文给出了两种prompt构建的方案:
- 多个approach拼成一个one-shot让模型推理一次给出多个不同的结果
- 1个approach作为one-shot让模型推理多次
分别对应以下两种prompt:
那如何得到上面的这些approach呢?这里论文也采用了大模型自动构建的方案,在某一类问题中随机采样query,使用以下prompt让模型生成回答该问题可以使用的方案,最后每个领域选择出现频率最大的TopN个Approach用来构建prompt。挖掘approach的prompt如下:
效果上,使用发散思维和COT进行配合,在GSM8K、AQUA等推理任务,CommenseQA等常识任务,和BlocksWorld等规划任务上均有显著提升。并且和Self-Consistency的结论相似,以上发散思维的Ensemble数量更多,效果越好。
整体上,以上的两种思维逻辑都还相对初步,对比已经比较成熟的演绎推理的COT还有再进一步探索的空间,以及如何在不同场景下让模型选择不同的思维模式,进行思考,并最终收敛到正确的结果也值得再进行尝试。