解密prompt系列26. 人类思考vs模型思考:抽象和发散思维
在Chain of Thought出来后,出现过许多的优化方案例如Tree of thought, Graph of Thought, Algorithm of Thought等等,不过这些优化的出发点都更加"Machine Like",而非"Human Like", 哈哈不是说机器化不好,仅仅是对AGI的一些个人偏好而已。
所以如果我们从人类思考的角度出发,能否把当前模型的思考方式和人类的思考方式进行关联呢? 我先问了下PPLX-70B人类思维有哪些分类(这个问题RAG真的不如模型压缩后回答的效果)
我们再把之前已经聊过的一些引导模型推理思考的prompt模板,以及工具调用的一些prompt方案和上面的人类思维逻辑进行下不完全的类比:
Prompt策略 | 类比人类思维 |
---|---|
Chain of Thought | 逻辑思维中的演绎推理 |
Few Shot Prompt | 类比思维 |
SELF-REFINE,Relfection | 自省思维 |
ReAct,SelfAsk | 后续性思维(线性思维?) |
情感思维 | 哈哈夸夸模型会更好 |
和上面的人类思维模式相比,似乎还少了抽象思维和发散思维,这一章我们就聊聊这两种思考方式如何通过prompt来引导。
抽象思维: Step Back Prompt
- Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models
- LARGE LANGUAGE MODELS CAN LEARN RULES
DeepMind提出的新Prompt方式,在思维链之前加了一步抽象(后退一步思考)。通过把原始问题抽象成更高层次的概括性、概念性问题,降低原始问题中的细节对推理的影响,如下
在RAG场景里,这类prompt策略很适合解决用户query过于细节,导致召回效果不佳的问题。用户在大模型场景的提问往往比在搜索框中的提问更加具体,包含更多条件和细节,举个例子query = “哪些国家在经济陷入低谷时,因为通货膨胀严重,而不得不加息“,如果直接对以上query进行改写,Decompose拆分,会发现都无法召回有效的内容,因为问题本身粒度已经太细了,这时不需要进一步拆分,相反需要更高层次的总结和抽象。我们只需要把问题修改成“哪些国家发生过被动加息”,这类更高层次的抽象概念,召回效果立刻起飞。
StepBack推理和COT推理相同,都是通过few-shot prompt来引导模型进行后退思考。
论文对三个不同领域的任务进行了评估,分别是STEM领域的推理任务,知识密集的QA任务,和multi-hop推理任务。其中前者和后两者的prompt模板存在差异,前者是让模型先抽象理论概念,后两者是更通用的提出stepback问题,个人感觉是归纳推理从特殊到一般的推理抽象过程在不同领域的差异性
STEM推理的few-shot prompt模板如下
知识密集的QA任务和multi-hop推理任务都是使用的以下few-shot prompt模板
测试下了step back prompt中few-shot才是核心,因为在不同领域中归纳推理的思维是不同的,有需要对概念进行抽象,有需要对不同时间,实体进行抽象,有需要对条件进行放宽,以下是论文中在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
- Diversity of Thought Improves Reasoning Abilities of Large Language Models
发散思维简单说就是“一题多解“,“一物多用”, 其实在Self-Consistency这类Ensemble方案中就出现过。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还有再进一步探索的空间,以及如何在不同场景下让模型选择不同的思维模式,进行思考,并最终收敛到正确的结果也值得再进行尝试。
想看更全的大模型相关论文梳理·微调及预训练数据和框架·AIGC应用,移步Github >> DecryPrompt
解密prompt系列26. 人类思考vs模型思考:抽象和发散思维的更多相关文章
- 解密Prompt系列6. lora指令微调扣细节-请冷静,1个小时真不够~
上一章介绍了如何基于APE+SELF自动化构建指令微调样本.这一章咱就把微调跑起来,主要介绍以Lora为首的低参数微调原理,环境配置,微调代码,以及大模型训练中显存和耗时优化的相关技术细节 标题这样写 ...
- 解密prompt系列5. APE+SELF=自动化指令集构建代码实现
上一章我们介绍了不同的指令微调方案, 这一章我们介绍如何降低指令数据集的人工标注成本!这样每个人都可以构建自己的专属指令集, 哈哈当然我也在造数据集进行时~ 介绍两种方案SELF Instruct和A ...
- 解密Prompt系列2. 冻结Prompt微调LM: T5 & PET & LM-BFF
这一章我们介绍固定prompt微调LM的相关模型,他们的特点都是针对不同的下游任务设计不同的prompt模板,在微调过程中固定模板对预训练模型进行微调.以下按时间顺序介绍,支持任意NLP任务的T5,针 ...
- 解密Prompt系列4. 升级Instruction Tuning:Flan/T0/InstructGPT/TKInstruct
这一章我们聊聊指令微调,指令微调和前3章介绍的prompt有什么关系呢?哈哈只要你细品,你就会发现大家对prompt和instruction的定义存在些出入,部分认为instruction是promp ...
- 解密Prompt系列3. 冻结LM微调Prompt: Prefix-Tuning & Prompt-Tuning & P-Tuning
这一章我们介绍在下游任务微调中固定LM参数,只微调Prompt的相关模型.这类模型的优势很直观就是微调的参数量小,能大幅降低LLM的微调参数量,是轻量级的微调替代品.和前两章微调LM和全部冻结的pro ...
- 人脸检测及识别python实现系列(3)——为模型训练准备人脸数据
人脸检测及识别python实现系列(3)——为模型训练准备人脸数据 机器学习最本质的地方就是基于海量数据统计的学习,说白了,机器学习其实就是在模拟人类儿童的学习行为.举一个简单的例子,成年人并没有主动 ...
- .NET Core加解密实战系列之——使用BouncyCastle制作p12(.pfx)数字证书
简介 加解密现状,编写此系列文章的背景: 需要考虑系统环境兼容性问题(Linux.Windows) 语言互通问题(如C#.Java等)(加解密本质上没有语言之分,所以原则上不存在互通性问题) 网上资料 ...
- Java 加解密技术系列文章
Java 加解密技术系列之 总结 Java 加解密技术系列之 DH Java 加解密技术系列之 RSA Java 加解密技术系列之 PBE Java 加解密技术系列之 AES Java 加解密技术系列 ...
- [转载]《C++0x漫谈》系列之:多线程内存模型
<C++0x漫谈>系列之:多线程内存模型 By 刘未鹏(pongba) 刘言|C++的罗浮宫(http://blog.csdn.net/pongba) <C++0x漫谈>系列导 ...
- 11.Java 加解密技术系列之 总结
Java 加解密技术系列之 总结 序 背景 分类 常用算法 原理 关于代码 结束语 序 上一篇文章中简单的介绍了第二种非对称加密算法 — — DH,这种算法也经常被叫做密钥交换协议,它主要是针对密钥的 ...
随机推荐
- 批量修改SVN的用户名和密码的尝试
起源 公司规定每6个月需要修改一次密码,否则每天都有邮件和内网提醒.因为邮箱密码和svn等一系列应用绑定,避免每次修改密码后需要手工输入修改多个svn仓库的帐号和密码. PS.同一个前缀的svn不用重 ...
- svn把文件日期设置为最后提交的时间
在使用svn进行checkout或update时,我想让文件的日期为提交那时的日期,这要怎样做? 说明:我是在windows下使用TortoiseSVN进行操作的 方法1.修改config [misc ...
- 深度学习应用篇-推荐系统[11]:推荐系统的组成、场景转化指标(pv点击率,uv点击率,曝光点击率)、用户数据指标等评价指标详解
深度学习应用篇-推荐系统[11]:推荐系统的组成.场景转化指标(pv点击率,uv点击率,曝光点击率).用户数据指标等评价指标详解 1. 推荐系统介绍 在网络技术不断发展和电子商务规模不断扩大的背景下, ...
- ROS节点通信(一)消息发布和订阅
目录 1.说明 2.创建工作空间 3.创建功能包 4.编写自定义传输类型文件 5.编写源代码 5.1.编写发布者代码 5.2.编写订阅者代码 6.编译 7.启动运行 8.查看ROS网络结构图 1.说明 ...
- KB0003.申请和加载DoraCloud的软件许可
KB0003.申请和加载DoraCloud的软件许可 DoraCloud安装后,默认处于30天试用状态.如果您购买了软件授权,可以申请许可证. 在[系统][License管理][获取License文件 ...
- 零基础入门Vue之皇帝的新衣——样式绑定
回顾 大致掌握了上一节的 插值语法 我已经可以把想要的数据显示到页面上,并且仅需要修改变量,页面就会跟着实时改变 但如果对于已经熟悉前端的人来说,单单有数据还是不太行,还需要css对数据进行样式的修饰 ...
- shell 两个数组比较,得到元素的并集、交集等
linux shell 实现数组比较,取元素的并集.交集时,可以使用sort排序.uniq统计和awk数据过滤. shell 实现如下 file_list_1=("test1" & ...
- 云计算 - 对象存储服务OSS技术全解
本文全面深入地探讨了对象存储服务(OSS)的核心技术.基础知识和高级功能.从媒体存储到数据备份,再到数据仓库与数据湖,我们不仅解析了OSS在各种应用场景下的关键角色,还深入讨论了其与机器学习.多媒体处 ...
- Exadata健康检查工具EXAchk
本文根据MOS文章:Oracle Exadata Database Machine EXAchk (Doc ID 1070954.1)整理关键步骤. 注:通常都会要求使用当前最新可用的EXAchk版本 ...
- Oracle ADG + Keepalived 切换演练
客户的一套生产环境采用的架构是Oracle ADG + Keepalived,近期需要进行切换演练,要求我这边保障.ADG本身切换倒没啥可说的,但引入keepalived软件,就需要提前研究下这个架构 ...