前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大模型思维链经典论文阅读之——Zero-shot CoT, Manual CoT, AutoCoT

大模型思维链经典论文阅读之——Zero-shot CoT, Manual CoT, AutoCoT

作者头像
beyondGuo
发布2023-09-01 11:23:52
1.1K0
发布2023-09-01 11:23:52
举报
文章被收录于专栏:SimpleAISimpleAI

大模型与CoT经典论文阅读之——Zero-shot CoT, Manual CoT, AutoCoT

ChatGPT 以及 GPT4 作为纯自回归式语言模型,本不应该期待其有什么推理能力,尤其是数学推理,但是他们在基础的推理任务上却十分让我们惊艳(当然肯定不能作为专业的数学解题工具),这让我们非常好奇大模型(LLM)这么多参数里面到底藏了些什么好东西,怎么去激发大模型的潜能给我们带来更多惊喜。

CoT(Chain of thought),思维链,是学者们发现的能够激发LLM通过“思考”来回答一些困难问题的技术,可以显著提高LLM在推理等任务上的正确率。根据猜测,CoT的思想也被用于训练ChatGPT/GPT4,因为它们在回答一些需要推理的任务时,会先给出一步步的推理,再给出答案,而ChatGPT之前的LLM则经常直接给出答案。因此,让我们来一起回顾一下ChatGPT之前,CoT技术如何运用于LLM并提升模型回答的准确性的。

本次主要回顾三篇论文:

  1. CoT 开山之作:Chain-of-Thought Prompting Elicits Reasoning in Large Language Models,NeurIPS2022
  2. Zero-Shot-CoT:Large language models are zero-shot reasoners. NeurIPS2022
  3. AuTo-CoT:Automatic Chain of Thought Prompting in Large Language Models,ICLR2023

一、CoT的起源和开山之作

  • Chain-of-Thought Prompting Elicits Reasoning in Large Language Models,NeurIPS2022
  • Jason Wei, Xuezhi Wang, Dale Schuurmans, Maarten Bosma, Brian Ichter, Fei Xia, Ed Chi, Quoc Le, Denny Zhou(谷歌)

这篇文章很简单很简单,虽然洋洋洒洒写了几十页,但是核心方法一张图就可以表达清楚:

一句话:在问LLM问题前,手工在prompt里面加入一些包含思维过程(Chain of thought)的问答示例,就可以让LLM在推理任务上大幅提升。

注意,这里首先是使用 In-Context-Learning(上下文学习)的范式来进行prompt,即在prompt里面添加一些问答对作为“示范”,LLM在看到这些示范之后,就可以更好地进行Zero-shot任务(或者理解成Few-shot吧,毕竟需要提供一些标注的样本)了。

CoT的方法,就是在 In-Context-Learning 的范式中,增加了对推理的示范,从而希望LLM在给出答案的时候,也像模像样地进行推理。

作者在一些代表性LLM中队这样的方法做了大量实验,其中LLMs包括下面这些:

实验结果如下:

CoT的方法,相比于普通的ICL方式,显著提高了模型的推理能力,而且随着模型规模的增大提升的愈发明显。

这种CoT的方法,虽然十分有效,但需要手工写很多推理过程交给模型作为示范,虽然说对于同一类问题我们只用写一套就行了,但是当场景一换,或者问题改变时,之前有效的示范,可能效果就会打折了,因此还是比较费劲的。

于是,很快啊,就有学者提出了名为Zero-shot CoT的方法。

二、不用动手的傻瓜式CoT——Zero-shot CoT

  • Large language models are zero-shot reasoners. NeurIPS2022
  • Takeshi Kojima, Shixiang Shane Gu, Machel Reid, Yutaka Matsuo, Yusuke Iwasawa(东京大学,谷歌)

这篇文章发现:大模型,尤其是足够大的模型,可能不需要你费劲吧啦地写一堆CoT来作为prompt了,它自己可能就会推理了,秘诀就是加上一句咒语:“Let's think step by step.”

具体则是需要LLM两次生成:

  1. 先使用 “Let's think step by step.” 让模型自己给出推理过程
  2. 把原始问题以及给出的推理过程再合在一起,让模型抽取出最终答案。

其实第二步是不一定需要的,这里只是为了直接给出答案,所以加了第二步。

下图对比了Zero-shot CoT跟其他方法的差别:

本文测试的LLMs主要是这些:

主要效果如下(为了省空间,我只贴出跟Zero-shot的对比了):

可以看到,这个Zero-shot CoT还是可以显著提升LLM的数学推理能力的。

还有一些跟Few-shot CoT和其他CoT改进版本的对比,这里就不放了,重点是这个工作发现了一些值得思考的问题:

  • Zero-shot CoT和Few-shot CoT在常识推理问题(CommonsenseQA)上,并没有太大的提升(相比于数学推理)。很多时候CoT给不出正确的答案,但是推理过程却是合理且灵活的。Zero-shot CoT在多项选择时,倾向于给出多个答案,很难只给出一个答案。
  • 在数学推理问题上,CoT能有显著的提升,但是Zero-shot CoT和Few-shot CoT犯错误时的特点很不一样:Zero-shot方法在推出正确答案后,可能会继续“画蛇添足”,导致最终错误;另外,Zero-shot有时候干脆不推理,直接重复题目。Few-shot方法则是在生成的推理过程中包含三元运算的时候很容易出错,例如(3+2)*4

总体上,Few-shot CoT(又可以称之为Manual-CoT)的效果还是比Zero-shot CoT更好的,毕竟你手动认真地写了很多示范,努力不会白费嘛。下面介绍的一篇文章,则尝试把二者进行结合,企图既省力、效果又好。

三、通往自动CoT之路?

  • Automatic Chain of Thought Prompting in Large Language Models,ICLR2023
  • Zhuosheng Zhang, Aston Zhang, Mu Li, Alex Smola(上交,亚马逊)

回顾上面讲的 Zero-shot CoT 和 Manual CoT,前者实际上没有使用 In-Context-Learning,而后者使用了 In-Context-Learning。ICL 提供了LLM更多的示范信息,可能能让LLM在输出的时候更加规范。

因此,一个自然的想法就是,能不能利用 Zero-shot CoT 来让 LLM 产生很多带有推理的QA pair,然后把这些QA pair加入到prompt中,构成ICL的上文,再让LLM进行推理。

作者假设的是这样一个场景:我们有一大堆的待测试的问题(没有标注,不知道正确答案和推理过程),我们要怎么利用 LLM 和这么一个无标注问题集合,在不进行手工编写CoT的情况下,提升LLM回答这些模型的质量。

作者的基本思路是这样的:

  • 给定待测试的问题q,从无标注问题集合中,采样一批问题;
  • 使用 GPT-3 作为产生推理过程的工具,即直接使用 “Let's think step by step.” 咒语,来对这一批采样的问题产生推理过程;
  • 把产生的这些问题和推理过程,构成In-Context-Learning的上文加入到prompt中,再让LLM对问题q进行回答。

关键就在于这个采样过程,作者分别先测试了两种简单的采样过程:

  1. 随机采样,Random-Q-CoT
  2. 基于跟待测试q的相似度进行采样,Retrieval-Q-CoT

实验发现,居然随机采样还要更好一些。经过探究,作者发现GPT-3自动产生推理过程是有一定比例出错的,而出错的问题也容易聚集

因此基于相似度搜索的时候,容易导致采样出一批错误的示范,而随机采样的方法,则可能避免聚集性地出错。

基于这样的考虑,作者设计了基于多样性的采样方法,先试用SentenceBERT对所有问题进行聚类,然后从每个cluster中进行采样,示意图如下:

具体采样过程则是:

  • 假设需要再In-Context-Learning的时候加入k个示例,则对问题集合聚k类
  • 对于每个cluster中的问题,按照每个问题跟cluster中心点的相似度来排序
  • 每个cluster采样一个问题,距离中心点越近的越优先采样,但是得符合一些规则:
    • 问题不超过60个token,通过Zero-shot-CoT产生的推理步骤不超过5步(也是前人的经验,简单原则)

就这样采样。。。

其实这个方法让人有些不解,因为采样过程是跟要测试的问题无关的,按照我的理解,应该在考虑多样性的同时,还考虑问题跟待测试问题的相关性(不确定是我对本文方法理解错了,如有错误请读者告知)。

总之,这样子就确实在给定一个问题集合的情况下,解放了双手。

Auto-CoT跟Zero-shot、Few-shot CoT的对比实验如下:

image-20230602224952606

这个结果还是令人惊讶的,Auto的方法居然可以比Manual更好。其实有一种解释,Manual方法其实给多个任务都使用的是同一套模板,比方6个数学任务里面5个都使用的同一套示例(为了省力,同时Manual-CoT的论文也不是为了刷榜,而是为了揭示这么一个现象,所以CoT没有进行仔细调优),而Auto-CoT则是每个任务都会有自己的一套示例产生,毕竟问题集合不一样,聚类的结果也会不一样。

总之,这个方法主要证明了基于多样性的采样方法,对于CoT可能是很有效的。(虽然我近期还看了一篇探讨In-Context-Learning的论文得到的结论跟这个是矛盾的,那篇文章揭示了基于相似度的采样可能比基于多样性的采样更好,具体为什么会有这样的矛盾,可能需要更细致的探究)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SimpleAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大模型与CoT经典论文阅读之——Zero-shot CoT, Manual CoT, AutoCoT
    • 一、CoT的起源和开山之作
      • 二、不用动手的傻瓜式CoT——Zero-shot CoT
        • 三、通往自动CoT之路?
        相关产品与服务
        腾讯云服务器利旧
        云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档