如何提升大模型的推理和规划能力:思维链 CoT + 由少至多提示 Least-to-Most Prompting

思维链

思维链已经被证实能够改善大模型在算术、常识和符号推理等任务上的表现。

思维链 是 2021年 OpenAI 在训练中的发现。

神经网络在模仿现有数据时表现出色,准确率不会比人类专家差。

可一旦条件发生变化,ta 就会束手无策,只能重新收集数据,重新学习。

最开始,OpenAI 在训练大模型时,也出现了这种问题。

但 OpenAI 决定让 ta 继续训练试试。

不断训练后,OpenAI 惊奇地发现,模型竟然学会了训练数据外的题目!无论给它什么变换的题目,它都能泛化解决!

1 0 2 10^2 102 1 0 5 10^5 105 训练完全没有成果。

在训练一千步到一万步时,模型在训练题上的表现已经相当出色,但在分布外题目上几乎毫无能力。

训练到十万步后,模型在训练题上的成绩趋于完美,对分布外题目也开始有了一定表现。

再经过一百万步的训练,模型在分布外题目上的准确度竟接近100%。

这是一个量变引发质变的神奇过程。

大模型的奇特能力,包括少样本学习、突然学会加减法、大规模多任务语言理解、分类能力、类比、推理等思考能力。

这些新能力只有在模型参数超过 1000 亿时才会出现,而其关键机制被称为思维链。

  • 模型参数至少达到100亿时效果才开始显现
  • 达到1000亿时效果才明显
  • 最优测试效果出现在参数达到5400亿的大模型上

这是因为处理策略性问题通常需要大量的世界知识,而小模型由于参数有限,难以存储和处理如此庞大的信息量,从而限制了其推理能力。

之前的模型通常直接输出结果,而忽略了思考过程。

人类在解决多步推理问题时,比如数学应用题,通常会逐步写下每个解题步骤,然后得出答案。

如果我们明确指示模型先输出中间推理步骤,再根据这些步骤得出答案,它的推理表现是否会提升呢?

除了输入问题外,还可以向模型提供类似题目的解题思路和步骤,这样模型不仅能输出最终结果,还能展示中间推理步骤,从而提升其推理能力。

思维链的原理在于,当模型接收到一个问题后,它会逐步罗列出自己知道的相关信息,仿佛在自言自语般把各种相关内容一一说出来。

那么,思维链是如何赋予语言模型思考能力的呢?

只要思考过程能够通过语言表达出来,语言模型就具备了这种思考能力。

那么,如何使用思维链呢?

思维链的主要思想是通过向大模型展示一些带有推理过程的样例。

在回答提示时,模型也会显示类似的推理过程,这通常能引导出更准确的结果。

因此,只要我们设置好让模型在回答问题前先进行思考,它就能自动使用思维链,从而具备思考能力。

思维链有很多种类,如:

  • 思维链 CoT:让大模型把一个问题拆解为多个步骤,一步步分析,模拟人类逐步思考的方式。
  • 思维树 ToT:生成多条推理路径,形成一个树状结构。这允许在推理时探索不同的分支,类似于你在面对决策时考虑不同的选择。
  • 思维图 GoT:不仅生成多条推理路径,而且这些路径可以交叉和重新连接,形成一个有向图网络。

 

为什么思维链,能提升大模型推理能力?

大模型在预测下一个字时,会考虑你输入的每个字与前面字的相关度,以及每个字与所有字的相关度。

当你需要较高准确度的结果时(特别是像数学题这种分毫不差的要求),应该明确提出你已知的信息和关键词。

这样,模型会增加这些关键词的权重,并沿着这个方向进行分析,从而提高答案的准确性。

不然,得到的都是很宽泛的答案。

怎么用思维链 CoT 呢?

思维链 CoT 的用法:在输入末尾加一句 — 请一步一步仔细思考,并写出你思考的过程。

GPT4 + CoT 效果:
在这里插入图片描述

GPT4 居然认为 9.11 比 9.9 大,加了 CoT 后,就对了。

GPT4 居然连数数都数错了(3r数成2r),加了 CoT 就对了。

GPT 是一个心直口快的 AI,有时候就是需要你提醒 ta 慢思考,增加有效深度。
 

既然如此,只要我们设置好让模型每次都先思考一番再回答问题,ta就能自动使用思维链,ta就有了思考能力。

CoT(链式思考)已被证实能够改善大型AI模型在算术、常识和符号推理等任务上的表现。

用户发现,当他们在问题中添加“让我们一步步来思考”时,模型仿佛被施了魔法,之前答错的数学题突然能够正确解答,原本无理的论述变得有条有理。

不过,CoT对模型性能的提升与模型的大小成正比关系,模型参数至少达到100亿才有效果,达到1000亿效果才明显,测试效果最好的是 5400亿 参数的大模型。

研究中指出,处理策略性问题通常需要大量的世界知识。

然而,小型模型由于其有限的参数,往往难以存储这些庞大的知识信息,这限制了它们在产生正确推理步骤方面的能力。

为什么 GPT4 会觉得 9.11 大于 9.9?

当我们面对看似简单的数字比较时,你有没有想过,即便是最先进的大模型,有时也会给出错误的答案?

这并非计算错误,而是源于我们和机器之间的沟通方式。

大模型会将一句话拆分成每个部分都有自己意义的小片段,并将每个片段转换成一个独立的向量。

9.11、9.8 会被切成 “9”、“.”、“11”、“8”,因为 11 > 8,所以这种切分模型下就变成了 9.11 > 9.8。

为什么大模型会把 strawberry 中的 r 数成 2 个,这也是切分问题吗?

是的,这也可能是由于切分问题。

在处理单词“strawberry”时,一些大型语言模型可能将其拆分成了不同的子单元(称为tokens),这些子单元不一定按照单个字母进行切分。

例如,模型可能将“strawberry”这个词切分为“straw”和“berry”,这样,模型就可能只计数到两个“r”(一个在“straw”中,一个在“berry”中)。

这种切分是模型在预训练过程中学习的,旨在有效处理和理解语言。

但是,如果切分机制没有针对性地调整或优化,就可能在执行特定任务(如计数特定字母)时产生误差。

思维链改进:CCoT、Auto-CoT、小冰链(X-CoTA)

CCoT 根据任务,限制长度,避免冗余输出,就能提升正确率

我发现 CoT 有一个简单的改进方法,叫 CCoT(根据任务,限制长度,避免冗余输出)。

  • 推理精简、聚焦主题、避免发散:CCOT通过限制输出长度,迫使模型仅关注于最关键的推理步骤。这种约束减少了无关紧要的推理和可能导致错误的冗余内容,从而提升了输出的直接相关性和准确性。
  • 优化推理质量:CCOT要求模型在有限的空间内完成推理,这通常意味着模型必须进行更加精确和深思熟虑的逻辑推演,以确保答案的质量。

CCoT 论文:https://arxiv.org/pdf/2407.19825

实验结果:

  • 在具体的实验中,使用CCOT方法对LLM进行限制时,例如限制Llama2-70b模型在GSM8K数据集上的推理长度到100个词,结果显示CCOT的精确度从36.01%提升到了41.07%,同时平均输出长度从99词减少到71词。
  • 这表明,通过有效控制输出长度,CCOT不仅减少了输出的字数,而且显著提高了答案的准确率。
Auto-CoT:不用人工,让机器从各种问题中学习,生成多种多样的推理链

使用了人工构造的思维链。

然而,由不同人员编写的推理范例,在准确率上存在高达 28.2% 的差异。

因此,如果能够自动构建具有良好问题和推理链的范例,则可以大幅度提升推理效果。

Auto-CoT 可以让机器从各种问题中学习,生成多种多样的推理链。

这个方法首先把类似的问题分成不同的组,然后从每一组中挑选出代表性的问题,并让机器学习如何解答这些问题。

  • 问题向量表示:使用 Sentence-BERT 对问题进行编码。
  • 聚类算法:使用 K-means 根据问题的向量表示进行聚类。
  • 排序:根据问题到聚类中心的距离进行排序。
  • 范例构建:选择距离中心近的问题,并生成推理链。
  1. Clustering(聚类): 将类似问题通过聚类算法分组,如图中的几个小圆圈所示。

  2. LLM Demo Construction(LLM 示范构建): 根据选择的标准,从每个问题簇中抽取一个代表性的问题,并利用语言模型构建出问题的解决步骤或推理链,即“Let’s think step by step…”的过程。

  3. Sampling by Selection Criteria(按选择标准抽样): 从每个簇中选取问题并生成推理链,这可能包括使用问题本身作为提示输入到模型中,并观察模型如何一步一步解决问题。

  4. Test Question(测试问题): 这是一个实际例子,说明了如何将上述方法应用于一个具体的问题——宠物店的问题。在这个例子中,解释了宠物店如何根据出售的小狗数量和每个笼子里的小狗数量来决定需要多少笼子。

这种方法可以提升大型语言模型处理复杂、多步骤问题的能力,尤其是需要详细解释步骤的场合中。

以及强调多样性在构建有效范例中的重要性。

 

小冰链(X-CoTA):不仅将其 思考过程 完整透明地呈现,还能真正实施某种行动

也还有一些研究人员提出了对思维链提示的改进方法,例如从训练样本中选取推理最复杂的样本来形成示例样本,被称为 Complex-CoT。

也有研究者指出可以从问题角度考虑优化思维链提示,通过将复杂的、模糊的、低质量的问题优化为模型更易理解的高质量问题,进一步提升思维链提示的性能,被称为 Self-Polish。

 
感觉有一个很强,叫小冰链(X-CoTA)。

不仅将其 思考过程 完整透明地呈现,还能真正实施某种行动。

例如:在⽤户提出问题后,她经过思考,发现⾃⼰需要进⾏搜索,或是实时编写⼀段代码并真的加以运⾏,或是⾃主决
定她应当控制物理世界的⼀系列设备或交通⼯具,来更好地满⾜⽤户的需求。

⼩冰链展示的不只是“聊天”,⽽是在“逻辑思维”驱动下的“下⼀代⾏动中枢”,能影响数字和物理世界。

⼩冰链所解决的问题包括:解决⼤模型训练数据更新不及时的问题,并提⾼回复的准确性和可信度,使信息可溯源;有效降低参数规模和成本,促进⼤模型普及等。

 


由少至多提示 - Least-to-Most Prompting

通过引导模型首先将复杂问题分解为多个较为简单的子问题,然后逐一解决这些子问题,可引导模型得出最终解答,这种策略被称为 由少至多提示。

当面对复杂任务或者问题时,人类通常倾向于将其转化为多个更容易解决的子任务/子问题,并逐一解决它们,得到最终想要的答案或者结果。

这种能力就是通常所说的任务分解能力。

基于这种问题解决思路,研究人员们提出了由 少至多提示 (Least-to-Most Prompting)方法。

主要包含两个阶段:

  • 问题分解阶段
  • 逐步解决子问题阶段

在问题分解阶段中,模型的输入包括 k×[原始问题,子问题列表] 的组合,以及要测试的原始问题;

在逐步解决子问题阶段中,模型的输入包括 k×[原始问题,m×(子问题,子答案)] 元组,以及要测试的原始问题和当前要解决的子问题。

阶段 1:问题简化

  • 在这个阶段,原始问题是关于Amy在水滑梯关闭前可以滑多少次的。问题的复杂性在于它包含多个步骤的计算。

阶段 2:顺序解决子问题

为了解决这个问题,语言模型采取了分步骤的方法,将原始问题分解为两个子问题。

  • 子问题 1: 首先,模型被问到每次滑行需要多少时间。这是解决原始问题的第一步,因为只有知道了每次滑行的时间,我们才能计算出Amy在水滑梯关闭前可以滑多少次。

    模型的答案是:每次滑行需要5分钟(爬上去需要4分钟,滑下来需要1分钟)。

  • 子问题 2: 接下来,模型使用了子问题 1 的答案来解决最初的问题——Amy在水滑梯关闭前可以滑多少次。

    模型的答案是:水滑梯在15分钟内关闭,每次滑行需要5分钟,所以Amy可以在水滑梯关闭前滑3次。

通过将一个问题分解成多个更简单的子问题,一个语言模型可以逐步构建答案,并最终解决原始问题。

分步解决问题的逻辑思维,及如何有效地使用语言模型来辅助问题解决过程。

├── 思维链
│   ├── 引入思维链的目的【增强大模型的推理能力】
│   ├── 思维链的种类
│   │   ├── CoT【链式思考】
│   │   │   ├── 基本定义【逐步解析问题的方式】
│   │   │   └── 应用实例【数学题、符号推理等】
│   │   ├── ToT【思维树】
│   │   │   ├── 基本定义【生成多条推理路径,形成树状结构,决策时考虑多种选择】
│   │   │   └── 应用实例【数学题、符号推理、创意写作等】
│   │   └── GoT【思维图】
│   │       ├── 基本定义【生成多条可以交叉重新连接的推理路径,形成有向图网络】
│   │       └── 应用实例【数学题、符号推理、创意写作、多变量多步骤医学诊断等】
│   ├── 思维链的实施
│   │   ├── Auto-CoT【自动构建】
│   │   │   ├── 方法描述【从各种问题中生成多样的推理链】
│   │   │   └── 技术细节【问题向量、聚类、范例构建】
│   │   └── 小冰链(X-CoTA)【行动中枢】
│   │       ├── 概念描述【透明展示思考过程,影响数字和物理世界】
│   │       └── 实际应用【搜索、代码编写、物理设备控制】
│   └── 思维链的效果
│       ├── 参数规模与效果【至少100亿参数起效,1000亿参数明显】
│       └── 提升的能力【少样本学习、类比、推理等】
└── 由少至多提示【任务分解能力】
    ├── 基本概念【将复杂问题分解为简单子问题】
    ├── 实施阶段
    │   ├── 问题分解阶段【原始问题分解为子问题列表】
    │   └── 逐步解决子问题阶段【解决每个子问题,构建最终答案】
    └── 应用示例
        ├── 原始问题【Amy在水滑梯关闭前可以滑多少次】
        ├── 子问题 1【计算每次滑行所需时间】
        └── 子问题 2【基于滑行时间计算可滑行次数】
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值