提示学习研究-CoT-自洽性-ToT(思维链、思维树)
提示学习(Prompt Learning)包括:
思维链(Chain-of-Thought, CoT):开山之作
自洽性(Self-Consistency):多路径推理
思维树(Tree-of-Thoughts, ToT):续写佳话
Prompt learning 是一种使用预训练语言模型的方法,它不会修改模型的权重。在这种方法中,模型被给予一个提示(prompt),这个提示是模型输入的一部分,它指导模型产生特定类型的输出。这个过程不涉及到对模型权重的修改,而是利用了模型在预训练阶段学习到的知识和能力。
In-context learning 是指模型在处理一系列输入时,使用前面的输入和输出作为后续输入的上下文。这是Transformer模型(如GPT系列)的一种基本特性。例如,当模型在处理一个对话任务时,它会使用对话中的前几轮内容作为上下文,来生成下一轮的回答。这个过程也不涉及到对模型权重的修改。
总的来说,prompt learning和in-context learning都是利用预训练语言模型的方法,它们都不会修改模型的权重。它们的主要区别在于,prompt learning关注的是如何通过设计有效的提示来引导模型的输出,而in-context learning则关注的是如何利用输入序列中的上下文信息来影响模型的输出。
思维链(Chain-of-Thought, CoT):开山之作
CoT Prompting 作为一种促进语言模型推理的方法具有几个吸引人的特点:
首先,从原则上讲,CoT 允许模型将多步问题分解为中间步骤,这意味着可以将额外计算资源分配给需要更多推理步骤的问题。
其次,CoT 提供了对模型行为的可解释窗口,提示了它可能是如何得出特定答案的,并提供了调试推理路径错误之处的机会(尽管完全描述支持答案的模型计算仍然是一个未解决问题)。
第三,在数学应用题、常识推理和符号操作等任务中都可以使用思维链推理(CoT Reasoning),并且在原则上适用于任何人类能够通过语言解决的任务。
最后,在足够大规模现成语言模型中很容易引发 CoT Reasoning ,只需在少样本提示示例中包含一些连贯思路序列即可。
COT例子:
CoT :Solving Challenging Math Problems
CoT :Commonsense Reasoning
CoT 实验结论
1. 对于小模型来说,CoT Prompting 无法带来性能提升,甚至可能带来性能的下降。
2. 对于大模型来说,CoT Prompting 涌现出了性能提升。
3. 对于复杂的问题,CoT Prompting 能获得更多的性能收益。
CoT Prompt 黑魔法:Think step-by-step
自洽性(Self-Consistency):多路径推理
Self-Consistency 提升CoT性能
关于CoT与大模型逻辑推理能力的现状
通过思维链,我们可以看到大语言模型的强与弱:
它强在,模型规模的提高,让语义理解、符号映射、连贯文本生成等能力跃升,从而让多步骤推理的思维链成为可能,带来“智能涌现”。
它弱在,即使大语言模型表现出了前所未有的能力,但思维链暴露了它,依然是鹦鹉学舌,而非真的产生了意识。
没有思维链,大模型几乎无法实现逻辑推理。但有了思维链,大语言模型也可能出现错误推理,尤其是非常简单的计算错误。Jason Wei 等的论文中,曾展示过在GSM8K 的一个子集中,大语言模型出现了8% 的计算错误,比如6 * 13=68(正确答案是78)。
思维树(Tree-of-Thoughts, ToT):续写佳话
Prompting 示意图
ToT 设计灵感来源
“A genuine problem-solving process involves the repeated use of available informa- tion to initiate exploration, which discloses, in turn, more information until a way to attain the solution is finally discovered.” —— Newell et al. 1959
ToT 工作原理解读:
Step 1 思维分解
虽然CoT样本以连贯的方式呈现思维,没有明确的分解过程,但ToT利用问题属性来设计和分解中间思维步骤。如下表所示,根据不同的问题,一个思维可以是几个词(填字游戏),一行方程式(24点游戏),或者是整段写作计划(创意写作)。
总体而言,一个思维应该足够“小”,以便语言模型能够生成有前景且多样化的样本(例如生成整本书通常太“大”而无法连贯),同时又足够“大”,以便语言模型能够评估其对于问题求解的前景(例如仅生成一个标记通常太“小”无法评估)。
Step 2 思维生成
定义思维生成器G(pθ, s, k):给定一个树状态s = [x, z1···i],我们考虑两种策略来为下一个思维步骤生成k 个候选项:
• (a) 从CoT 提示(创意写作)中独立同分布地抽样思维:z(j) ∼ pCoT (zi+1|s) = pCoT(zi+1|x, z1···i) (j = 1 · · · k)。当思维空间丰富时(例如每个思维是一段落),独立同分布的样本能够带来多样性;
• (b) 使用“提议提示”逐个提出思维(24点游戏和迷你填字游戏):[z(1), · · · , z(k)] ∼ppropose(z(1···k)|s)。当思维θ i+1 空间更受限制时(例如每个思维只是一个词或一行),在相同语境中提出不同的想法可以避免重复。
Step 3 状态评估
定义状态评估器V(pθ,S):给定一组不同状态的前沿,状态评估器评估它们解决问题的进展情况,作为搜索算法确定哪些状态继续探索以及以何种顺序进行的启发式方法。虽然启发式方法是解决搜索问题的标准方法之一,但通常要么是编程实现(例如DeepBlue),要么是学习模型(例如AlphaGo )。
作者提出了第三种选择,即使用语言模型有意识地推理状态。在适用时,这样一个有意识的启发式方法可以比编程规则更灵活,并且比学习模型更节约样本。与思维生成器类似,我们考虑两种策略来独立或同时评估状态:
• (a) 独立地对每个状态进行价值评估:V(pθ,S)(s) ∼ pvalue(v|s),其中值θ 通过对状态s 进行推理生成一个标量值v(例如1-10)或分类结果(例如sure/likely/impossible),该分类结果可以被启发性地转化为一个值。这种评价推理的基础可能因问题和思考步骤而异。在这项工作中,我们通过少数向前看模拟(例如快速确认5、5、14可以通过5 + 5 + 14达到24, 或者“hot l”可以表示“inn”通过在“ ”中填充“e”)以及常识(例如1 2 3太小无法达到24,或者没有单词能以“tzxc”开头)来探索评估。虽然前者可能促进“好”的状态,但后者可以帮助消除“坏”的状态。这样的评估不需要完美,只需要近似即可。
• (b) 跨多个状态进行投票:V(pθ,S)(s)=1[s=s∗],其中一个被投票淘汰的"好"状态∗ ∼pvote(s∗|S),是基于对S 中不同状态进行有意比较的投票提示。当问题成功更难直接价值化时(例如段落连贯性),自然而然地会转而比较不同的部分解决方案,并为最有希望的解决方案投票。这与一种"逐步"自洽策略类似,即将"要探索哪个状态" 视为多项选择问答,并使用语言模型样本对其进行投票。
对于这两种策略,我们可以多次提示语言模型来聚合值或投票结果,以换取更忠实/稳健的启发式方法所需的时间/资源/成本。
Step 4 搜索算法
最后,在ToT框架内,可以根据树结构插入和使用不同的搜索算法。作者探索了两种相对简单的搜索算法,并将更高级的算法(例如A* 今儿MCTS)留给未来的工作:
(a) 广度优先搜索(ToT-BFS)每步维护一组最有希望的状态集合b个。这适用于24点游戏和创意写作等树深
度受限制(T ≤ 3),并且初始思考步骤可以评估和修剪为一个小集合(b ≤ 5)。
(b) 深度优先搜索(ToT-DFS)首先探索最有希望的状态,直到达到最终输出结果(t > T),或者状态评估器认为无法解决当前问题。在后一种情况下,从s开始的子树被修剪以进行开发与利用之间的权衡。在这两种情况
下,DFS会回溯到s的父状态以继续探索。
从概念上讲,ToT作为LM通用问题求解方法具有几个优势:
(1) 泛化性。IO、CoT、CoT-SC和自我完善都可以看作是ToT的特殊情况(即有限深度和广度的树;图1)
(2) 模块化。基本LM以及思考分解、生成、评估和搜索过程都可以独立变化。
(3) 适应性。可以适应不同的问题属性、LM能力和资源约束。
(4) 方便性。无需额外训练,只需要一个预训练好的LM就足够了。下一节将展示这些概念上的优势如何在不同问题中转化为强大的实证表现。
推荐阅读
