AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


CoT 让 LLMs 更聪明
发布日期:2024-05-08 04:41:21 浏览次数: 1875


给 LLMs 更多的时间去思考

在设计 Prompt 时,给予 LLMs 充足的推理时间非常重要。LLMs 与人一样,需要时间来思考并解决复杂问题。如果让 LLMs 匆忙给出结论,其结果很可能不准确。例如,若要 LLMs 推断一本书的主题,仅提供简单的书名和一句简介是不足够的。这就像让一个人在极短时间内解决困难的数学题,错误在所难免。

相反,我们应通过 Prompt 指引 LLMs 进行深入思考。在 Prompt 中添加逐步推理的要求,能让 LLMs 投入更多时间逻辑思维,输出结果也将更可靠准确。

举个例子,假设我们要 LLMs 判断一个数学问题的解答是否正确。仅仅提供问题和解答是不够的,LLMs 可能会匆忙做出错误判断。

相反,我们可以在 Prompt 中先要求语言模型自己尝试解决这个问题,思考出自己的解法,然后再与提供的解答进行对比,判断正确性。这种先让 LLMs 自主思考的方式,能帮助它更深入理解问题,做出更准确的判断。

反例

我们给出一个问题和一份来自学生的解答,要求 LLMs 判断解答是否正确:

prompt = f"""
判断学生的解决方案是否正确。

问题:
我正在建造一个太阳能发电站,需要帮助计算财务。

    土地费用为 100美元/平方英尺
    我可以以 250美元/平方英尺的价格购买太阳能电池板
    我已经谈判好了维护合同,每年需要支付固定的10万美元,并额外支付每平方英尺10美元
    作为平方英尺数的函数,首年运营的总费用是多少。

学生的解决方案:
设x为发电站的大小,单位为平方英尺。
费用:

    土地费用:100x
    太阳能电池板费用:250x
    维护费用:100,000美元+100x
    总费用:100x+250x+100,000美元+100x=450x+100,000美元
"""

response = get_completion(prompt)
print(response)

输出:

学生的解决方案是正确的。他正确地计算了土地费用、太阳能电池板费用和维护费用,并将它们相加得到了总费用。

但是注意,学生的解决方案实际上是错误的。(_维护费用项100x应为10x,总费用450x应为360x_)

正例

我们通过指导 LLMs 先自行找出一个解法来解决这个问题。

在这个 Prompt 中,要求模型先自行解决这个问题,再根据自己的解法与学生的解法进行对比,从而判断学生的解法是否正确。同时,我们给定了输出的格式要求。通过拆分任务、明确步骤,让模型有更多时间思考,有时可以获得更准确的结果。在这个例子中,学生的答案是错误的,但如果我们没有先让 LLMs 自己计算,那么可能会被误导以为学生是正确的。

prompt = f"""
请判断学生的解决方案是否正确,请通过如下步骤解决这个问题:

步骤:

    首先,自己解决问题。
    然后将您的解决方案与学生的解决方案进行比较,对比计算得到的总费用与学生计算的总费用是否一致,并评估学生的解决方案是否正确。
    在自己完成问题之前,请勿决定学生的解决方案是否正确。

使用以下格式:

    问题:问题文本
    学生的解决方案:学生的解决方案文本
    实际解决方案和步骤:实际解决方案和步骤文本
    学生计算的总费用:学生计算得到的总费用
    实际计算的总费用:实际计算出的总费用
    学生计算的费用和实际计算的费用是否相同:是或否
    学生的解决方案和实际解决方案是否相同:是或否
    学生的成绩:正确或不正确

问题:

    我正在建造一个太阳能发电站,需要帮助计算财务。 
    - 土地费用为每平方英尺100美元
    - 我可以以每平方英尺250美元的价格购买太阳能电池板
    - 我已经谈判好了维护合同,每年需要支付固定的10万美元,并额外支付每平方英尺10美元;

    作为平方英尺数的函数,首年运营的总费用是多少。

学生的解决方案:

    设x为发电站的大小,单位为平方英尺。
    费用:
    1. 土地费用:100x美元
    2. 太阳能电池板费用:250x美元
    3. 维护费用:100,000+100x=10万美元+10x美元
    总费用:100x美元+250x美元+10万美元+100x美元=450x+10万美元

实际解决方案和步骤:
"""

response = get_completion(prompt)
print(response)

输出:

实际解决方案和步骤:

    1. 土地费用:每平方英尺100美元,所以总费用为100x美元。
    2. 太阳能电池板费用:每平方英尺250美元,所以总费用为250x美元。
    3. 维护费用:固定费用为10万美元,额外费用为每平方英尺10美元,所以总费用为10万美元+10x美元。
    4. 总费用:将上述三项费用相加,得到总费用为100x美元+250x美元+10万美元+10x美元=360x+10万美元。

学生计算的总费用:450x+10万美元
实际计算的总费用:360x+10万美元
学生计算的费用和实际计算的费用是否相同:否
学生的解决方案和实际解决方案是否相同:否
学生的成绩:不正确

小结

给予 LLMs 充足的推理时间,是 Prompt Engineering 中一个非常重要的设计原则。这将大大提高LLMs 处理复杂问题的效果,也是构建高质量 Prompt 的关键之处。开发者应注意给 LLMs 留出思考空间,以发挥 LLMs 的最大潜力。

关于更多提示工程请参考吴恩达老师的课程:Short Courses | Learn Generative AI from DeepLearning.AI

Chain-of-Thought Prompting

Chain-of-Thought(CoT) 是一种改进的 Prompt 技术,目的在于提升 LLMs 在复杂推理任务上的表现,如算术推理(arithmetic reasoning)、常识推理(commonsense reasoning)、符号推理(symbolic reasoning)。思维链(CoT)是一种用于设计 Prompt 的方法,即 Prompt 中除了有任务的输入和输出外,还包含推理的中间步骤(中间思维)。研究表明,CoT 能极大地提升 LLMs 的能力,使之无需任何模型更新便能解决一些难题。

链式思考(CoT)提示

引入思维链(CoT)提示通过中间推理步骤实现了复杂的推理能力。可以将其与少样本提示相结合,以获得更好的结果,以便在回答之前进行推理的更复杂的任务。

思维链(CoT)提示有几个吸引人的特性,作为促进 LLMs 推理的方法。

  1. 首先,思维链原则上允许模型将多步问题分解为中间步骤,这意味着可以将额外的计算分配给需要更多推理步骤的问题。
  2. 其次,思维链为模型的行为提供了一个可解释的窗口,表明它是如何得出特定答案的,并提供调试推理路径出错的地方的机会(尽管完全表征支持答案的模型计算仍然是一个悬而未决的问题)。
  3. 第三,思维链推理可用于数学单词问题、常识推理和符号操作等任务,并且可能(至少在原则上)适用于人类可以通过语言解决的任何任务。
  4. 最后,只需将思维链的示例包含在 Few-shot 的示例中,就可以在足够大的现成语言模型中轻松引出思维链推理。

零样本 COT 提示

基本上涉及将“让我们逐步思考”添加到原始提示中。尝试一个简单的问题,看看模型的表现如何:

输入:

我去市场买了10个苹果。我给了邻居2个苹果和修理工2个苹果。然后我去买了5个苹果并吃了1个。我还剩下多少苹果?

输出:

11个苹果

答案是不正确的!现在让我们尝试使用特殊提示——“让我们逐步思考”。

输入:

我去市场买了10个苹果。我给了邻居2个苹果和修理工2个苹果。然后我去买了5个苹果并吃了1个。我还剩下多少苹果?

让我们逐步思考。

输出:

首先,您从10个苹果开始。
您给了邻居和修理工各2个苹果,所以您还剩下6个苹果。
然后您买了5个苹果,所以现在您有11个苹果。
最后,您吃了1个苹果,所以您还剩下10个苹果。

自动思维链(Auto-CoT)

当使用思维链提示时,这个过程需要手工制作有效且多样化的例子。这种手动工作可能会导致次优解决方案。Auto-CoT 提出了一种消除人工的方法,即利用 LLMs “让我们一步一步地思考” 提示来生成一个接一个的推理链。这种自动过程仍然可能在生成的链中出现错误。为了减轻错误的影响,示例的多样性很重要。通过对具有多样性的问题进行采样,并生成推理链来构建示例。

Auto-CoT 主要由两个阶段组成:

  • 阶段1:问题聚类:将给定问题划分为几个聚类。
  • 阶段2:示例抽样:从每组数组中选择一个具有代表性的问题,并使用带有简单启发式的 Zero-Shot-CoT 生成其推理链

简单的启发式方法可以是问题的长度(例如,60 个 tokens)和理由的步骤数(例如,5 个推理步骤)。这鼓励模型使用简单而准确的示例。

该过程如下图所示:

实践经验

Planning + CoT

LLMs 的任务规划能力是指其能够根据给定的任务和目标,自动生成一系列合理的步骤和计划,以完成任务。这需要 LLMs 具备对任务的理解、对环境的感知、对资源的管理和对行动的预测等多方面的能力。

LLMs 的 planning 能力具有很多价值:

  1. 提高决策效率:LLMs 可以快速处理大量数据,并生成最优的计划或策略,帮助人们在短时间内做出更明智的决策。
  2. 增强适应性:面对复杂多变的环境和任务,LLMs 能够灵活调整计划,提高系统的适应性和鲁棒性。
  3. 实现自动化:拥有强大 planning 能力的LLMs 可以在一些领域实现自动化决策和操作,提高生产效率并降低成本。
  4. 提升创新能力:通过对大量数据的学习和分析,LLMs 能够提供新的思路和解决方案,激发创新能力。
  5. 改善人机交互:在人机交互中,LLMs 的 planning 能力可以更好地理解用户需求,提供个性化的服务和建议。

遇到一个复杂的问题,通常首先是进行任务分解,把一个大的问题分解成一个个小问题,再针对每个问题进行问题解决。问题解决过程中,总是难免会遇到各种错误,一旦错误发生,首先是对这个错误进行反思,然后思考下一步如何解题。

RAG + CoT

检索增强思维 (RAT) 方法结合了 RAG 和 CoT 的优势,利用从外部来源检索相关信息的能力,同时鼓励 LLMs 通过思维链明确阐明其推理过程技术。

RAT的实施通常遵循以下步骤:

  1. 使用零样本思维链 (CoT) 提示,通过问题或任务来提示 LLMs。这个初始提示鼓励 LLMs 产生一系列中间想法或推理步骤来解决问题。
  2. 对于 LLMs 生成的每个中间想法或推理步骤,使用问题或任务提示和特定推理步骤作为查询从外部源检索相关信息。
  3. 根据检索到的与提示相关的上下文和当前推理步骤,相应地修改或细化思维链步骤。此步骤允许 LLMs 将检索到的信息合并到其推理过程中,并根据需要调整其中间思想。
  4. 最后,使用修改后的思路步骤和检索到的上下文生成最终响应或解决方案。最终输出旨在通过利用 LLMs 的推理能力和从相关来源检索的外部知识来提供全面且事实上准确的答案。

通过将 RAG 的检索功能与 CoT 的显式推理过程相结合,RAT 方法旨在减轻 LLMs 输出中有时可能出现的幻觉和事实不一致。检索到的信息作为基础机制,为 LLMs 提供相关上下文和事实知识以纳入其推理过程,而思想链提示则确保推理过程透明且可以细化或纠正如所须。

推荐阅读

免费领取:? 知乎大模型免费公开课

参考资料:

Short Courses | Learn Generative AI from DeepLearning.AI (https://www.deeplearning.ai/short-courses/)

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models (https://arxiv.org/pdf/2201.11903.pdf)

Large Language Models are Zero-Shot Reasoners (https://arxiv.org/abs/2205.11916)

Automatic Chain of Thought Prompting in Large Language Models (https://arxiv.org/abs/2210.03493)

GitHub:Auto-CoT (https://github.com/amazon-science/auto-cot)

???求关注哈???


?分享、点赞、在看,你最好看?


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询