复杂推理方向
定义
介绍:fuyao
- 复杂推理是标志着小模型与大模型差异的关键因素 .
- 复杂推理是使模型成为下一代操作系统的核心能力 ( 需要能够通过与工具、用户和外部环境的所有元素互动来完成复杂的指令。 )
.本文研究 - 如何训练具有强大复杂推理能力的模型
- 如何进行提示工程以充分发挥模型的推理能力
- 以及如何评估模型的推理性能。
加大语言模型推理能力的方案 :
● 预训练 / 持续训练:在这个阶段,我们通常在大型数据集(如科学文献或代码数据)上训练大型模型。 在大量科学文献 / 代码上进行训练可以显著提高基础模型的推理/编码能力。
● 有监督微调:在这个阶段,我们对模型进行微调,以便完成复杂任务的指令。( 1. 通过使用对话格式的数据,将基本模型调优为聊天机器人相对容易(参见像 Alpaca 和 MOSS 这样的优秀示例)。然而,闲聊的能力并不能转化为执行复杂任务的能力。 2.指令调优问题是一个数据混合问题:如何最好地混合来自不同来源的指令数据,以便从所有角度均匀地提高模型性能 )
● 强化学习:在这个阶段,我们使用诸如任务是否已全部/部分完成的信号作为奖励。
BigBench Hard 数据集,它在测试模型推理能力方面非常有效。
以下论文讨论了上下文学习为什么起作用:few-shot
● Xie et. al. 2021. An Explanation of In-context Learning as Implicit Bayesian Inference
○ 语言模型在提示中的示例之间推断出一个潜在概念,并进入相应的任务模式
● Wei et. al. 2023. Larger language models do in-context learning differently
○ 当出现与先验知识相矛盾的上下文示例时,尽管大型模型可能具有更强的语义先验,大型模型可以根据提示词来覆盖语义先验。
模型只关注提示的格式,但可能不会受到提示正确性的显著影响(情感分类先给出几个例子那种但是错误的)。然而,模型在多大程度上会受到提示正确性的影响,或者提示可以在多大程度上覆盖模型的先验信念,还是一个尚待研究的问题。
在谈论评估时,有三个重要因素需要考虑:数据格式、能力类型和模型类型。首先,提示时有四种数据格式:
提示的类型:
● In-context 指的是在测试问题之前附加一系列上下文示例。
● Zero-shot 是指在没有上下文示例的情况下直接将测试问题输入给模型。
● Chain-of-thought 是指在回答之前生成推理。
● Answer-only 是指没有链式思维,直接给答案。
对于模型能力,有两种大致正交的能力类型:
● 知识 knowledge:模型是否了解世界
● 推理 reasoning:模型是否可以根据其知识进行推理。
这两个方面并不是严格正交的,因为一些推理规则也可以被视为某种形式的知识。然而,在评估时,这两种能力有明显的差异:
● 一些数据集更注重对知识的评估,如 MMLU,它测试模型是否具有高达大学水平的知识。
● 一些数据集更注重对推理的评估,如 BBH,它测试模型是否具有逐步解决问题的能力。
● 对于知识,链式思维与仅回答的表现相似(参见 FlanPaLM 论文)
● 对于推理,链式思维比仅回答表现得更好(参见原始 CoT 论文,然后参见 FlanPaLM 论文)
在实践中,因为 CoT 在达到或优于 Answer-only 的表现,而且 CoT 更加用户友好(因为它告诉用户思考过程),现代聊天机器人总是部署 CoT(无论你问 ChatGPT 什么,它都会告诉你一堆它的想法)。
最后,在评估方面,我们区分了两种类型的模型:预训练之后的 checkpoint 和指令微调之后的 checkpoint。
● 预训练 checkpoint 具有 in-context learning 的能力。大多数预训练模型可以进行 in-context answer-only,一些更好的模型可以进行 in-context chain-of-thought(但目前尚不清楚为什么某些预训练模型可以进行 CoT 而其他模型却不能)。然而,预训练 checkpoint 可能无法进行 zero-shot,因为它们没有经过这方面的训练(但某些预训练检查点仍然可以进行 zero-shot CoT,请参阅 “让我们逐步思考” 的论文)。
● 指令微调过后的 checkpoint 既具有 zero-shot 又有 in-context 的能力。这里需要注意的是,如果没调好,指令微调之后 in-context 性能可能会稍有下降。
综上所述,我们建议使用 in-context chain-of-thought 进行评估:
● In-context 是评估 pretrained checkpoint 的更好方法,因为它更好地揭示了模型潜力。Zero-shot 可能低估模型性能,尤其是对于不支持 Zero-shot chain-of-thought 的(“让我们逐步思考”)的模型。
● Chain-of-thought prompting 是评估推理能力的更好方法,因为它比 answer-only prompting 更充分地发挥了模型的推理性能。
OpenAI的初创公司Anthropic:Claude模型
● Other abilities of LLMs such as summarization or translation are not considered here as they are rather standard and probably not challenging enough.
● We consider
● MMLU: high school and college knowledge
● GSM8K: elementary school math. – Performance improvements on this dataset directly translate to daily math abilities when interacting with LLMs
● MATH: very hard math and natural science. All current models struggle.
● BBH: a collection of 27 hard reasoning problems
预训练 :在大量科学文献 / 代码上进行训练可以显著提高基础模型的推理/编码能力
专门针对多步骤推理的小语言模型:t5和gpt蒸馏分词器动态规划对齐。
大模型
Bard Api:bard-api
Bard:bard
OpenAI-api:[api]
(https://platform.openai.com/docs/quickstart/adjust-your-settings)
降低温度意味着它将承担更少的风险,并且完成将更加准确和确定。升高温度将导致更多样化的完成。0.6 的适中温度应该可以正常工作。
tocken:对于英文文本,1 个标记大约为 4 个字符或 0.75 个单词。要记住的一个限制是,您的文本提示和生成的完成组合不能超过模型的最大上下文长度(对于大多数模型,这是 2048 个标记,或大约 1500 个单词
prompt_design:design
猜想:
- 激发推理能力:参考其他问题,生成答案效果更好,参考已经生成的答案
- 回答多个问题,猜想符合format的回答一般很好的回答了问题,如果不符合形式则迭代进行不同prompt,类比学生做题不符合format的一般都是错的
- think,发现think end很关键。就是提示什么已经结束。think start,think end.
- 代码和自然语言理解结合int i = 0;伪代码: do { context; } while (i < 5); means circulate execute the prompt context 5 times 。int i = 0; do { results=ask(“give me 10 most common answers based on common societal norms and practices following question ,each answer should only be one word 。 question:Name something that is hard to guess about a person you are just meeting.”) print(results) } virtually provide the print result.
- self-consistence,输出答案正解只有一个,多答案我们采样,还有就是多选题表现好,tot里面讲的
有个想法就是,对于大模型few shot提示的比instruct,答案格式效果更好,但是提升其准确率还是需要instruct的提示。任务导向的用instruct,格式用few-shot?
知识反思维链。先给出答案,然后生成解释。
Tree of thought
self-consistency with CoT:在输出空间有限的时候用,多选题
自己给出多条不同的推理路径
·分别进行评估后,决定下一步的行动方案
在必要时向前或向后追溯,以便实现进行全局的决策
ToT显著提高了LLM在三个新任务(24点游戏,创意写作,迷你填字游戏)中的问题解决能力
ToT执行一个具体任务时需要回答4个问题:
如何将中间过程分解为思维步骤;如何从每个状态生成潜在的想法;如何启发性地评估状态;使用什么搜索算法。
Ir-Cot![ircot框架](https://i-blog.csdnimg.cn/blog_migrate/7738d49e56782dcf0dc66e1aa5c77581.png)
回答问题:知识密集型多步骤推理问题Q
有三个构件:
1.基本检索器,它可以接受查询并从语料库或知识库中返回给定数量的段落
2.语言模型,zero/few shot思维链(CoT)生成能力
3.少量带有推理步骤的注释问题.解释如何用自然语言得出答案(思维链),并有一套段落从知识来源,它们共同支持推理链和答案。
我们首先使用问题Q作为查询,通过检索K个段落来收集基本段落集。然后,我们迭代地交替两个步骤(推理和检索),直到满足终止条件。