思维链是一种通过逐步思考解决问题的方式,在解决复杂推理任务上展现出良好的性能,近年来受到自然语言处理领域的广泛关注
[16]。思维链也被广泛应用于下游任务如数学推理、常识推理、逻辑推断等,并取得了良好的效果,其主要思想包含思维链构造方法、结构变体以及增强方法等。从思维链构造的角度来看,现有的工作可以分为3种方式:手动思维链构造、自动思维链构造以及半自动思维链构造。手动思维链构造中,示例中的推理链由人工标注,少样本思维链率先通过手动构造演示自然语言形式的基本原理
[17];为进一步提升推理的准确性,PAL
[18]、PoT
[19]以及NLEP
[20]方法可处理并减少推理路径和答案之间的不一致性,利用编程语言作为注释的基础,将问题求解转换为可执行的程序;Mathprompter方法使用零样本思维链提示生成多个答案,可以相互验证,提高结果的可靠性
[21]。手动构建推理链条具有较高的数据质量,缺点在于需要较大的人力成本开销,并且会遇到示例选择难以优化、跨任务迁移困难等问题。自动思维链示例中的推理链无须人工标注,零样本思维链通过特定的提示文本(“Let's think step by step”)激发模型,使模型在没有示例的情况下生成推理链
[17];自动思维链(automatic chain of thought,Auto-CoT)方法利用前者零样本生成的推理链结合示例选择策略,通过少样本学习的方式生成推理链
[22];COSP方法引入结果熵来论证示例选择的正确性
[23],例如Wang等
[24]提出Reprompt,通过Gibbs迭代抽样挖掘出有效的思维链提示。同时,推理链中的一些错误来自缺步错误,Wang等
[25]通过计划和解决(plan-and-solve,PS)策略将整个任务划分为较小的子任务进行执行,从而将零样本思维链扩展为计划和解决(plan-and-solve,PS)提示。自动思维链构造减少了人工成本,由于无须针对任务设定示例,在不同任务间可以方便迁移,但由于缺少高质量数据,其性能通常较差,时常会出现事实错误、逻辑错误等问题。半自动思维链构造结合了前二者,在推理性能和人力成本间达到了平衡。Shao等
[26]提出了合成提示(synthetic prompts),即利用少量人工注释的示例来提示模型生成更多的示例,并选择有效的示例引出更好的推理,从而缓解Auto-CoT方法中缺乏人为对齐的问题。