人能逆向思维,LLM 也可以吗?北卡罗来纳大学教堂山分校与谷歌最近的一项研究表明,LLM 确实可以,并且逆向思维还能帮助提升 LLM 的正向推理能力!
论文一作 Justin Chih-Yao Chen 的推文
简单来说,正向思维就是从问题开始,一步步地得出答案;而逆向思维则是先从一个预测答案开始,逆推到原始问题。
组合使用正向和逆向思维可让我们验证解答的正确性并找到可能的错误。
举个简单例子,如果小明有 2 个苹果,小红有 3 个苹果,那么他们一共有多少个苹果?
使用正向推理,我们可以得出 2 + 3 = 5。再使用逆向推理,我们可以从共有 5 个苹果的结论开始,然后根据小明有 2 个来逆向得知小红有 3 个。这些数值与原始问题相符,故此可以验证 5 这个答案的正确性。如果正向推理出错了,比如答案是 6 个,那么逆向推理时就会得到与原始问题不一样的数值:小红有 4 个苹果。这种矛盾可让我们重新检视自己的推理过程哪里有误。
大型语言模型(LLM)的数学能力也能通过正向 - 逆向推理得到提升,原因有二:
- 数学本身是高度结构化的,因此正向和逆向推理之间存在明确的逆反关系;
- 只需替换名称或数值等变量,就可以创建出新的数学问题。
那么问题来了:逆向思维能否应用于更广泛、结构性较差的领域?
此外,这些方法通常是测试时使用,目的是验证:给定一个解,让 LLM 逆向思考并查看正向推理是否正确。虽然它们比其它测试时方法(例如自我一致性)的表现稍微好一点,但还是存在未解的疑问:我们能否训练一个本身就能逆向思维的模型,从而提升其正向推理效果,而不是在测试时使用逆向推理进行验证?
近日,北卡罗来纳大学教堂山分校、谷歌 Cloud AI Research、谷歌 DeepMind 的一个联合团队为上面两个问题提供了解答。他们发布的论文表明,逆向思维可以显著 LLM 的推理能力,并且不限于数学任务。他们还提出了一个名叫 RevThink 的框架,可将逆向思维「灌输」给语言模型。
- 论文标题:Reverse Thinking Makes LLMs Stronger Reasoners
- 论文地址:https://arxiv.org/pdf/2411.19865
论文发布后,吸引来不少称赞之声。
方法
RevThink 主要包含两个阶段:数据增强和全新的学习目标。
数据增强
首先,对于推理数据集,该团队使用了一个更大、能力更强的教师模型来对其进行增强。
我们知道,一般来说,推理基准数据由一个问题和一个答案构成。那么该如何增强它呢?该团队的方法是通过对教师模式使用少样本提示来(few-shot prompting)生成三种新数据:正向推理、逆向问题、逆向推理。其中正向和逆向推理都会使用思维链。
只有当数据点的正向推理准确(与 ground truth 相符)且逆向推理与原始问题一致(通过提示教师模型进行验证)时,该数据点才会被保留下来。
学习目标
完成数据集增强之后,该团队还提出了三个用于训练更小的学生模型的关键目标。
具体来说,学生模型需要学会:
- 基于问题生成正确的正向推理;
- 基于原始问题生成逆向问题;
- 基于逆向问题生成逆向推理。
之所以要设置这三个目标,该团队说明了三点原因:
- 基于问题生成正确的正向推理是知识蒸馏的标准方法;
- 生成逆向问题会促使学生模型「思考」如何逆向一个问题并确定要问的正确问题;
- 最后,解决这个逆向问题可以增强学生模型逆向推理的能力。
在测试时,首先会使用问题来询问该学生模型,而它只会生成前向推理 —— 类似于标准的零样本推理。
本质上讲,这个流程是在训练过程中内化了逆向推理的能力,同时还能保证测试时间计算与零样本方法一样高效。
如图 1 传统的监督式微调侧重于从问题到答案的单向推理。相比之下,RevThink 基于新提出的数据增强方法和目标,通过学习两个方向的推理而引入了双向思维。这能为模型带来更大的提升。
实验和评估
该团队通过实验验证了 RevThink 的有效性。具体来说,他们使用的教师模型是 Gemini-1.5-Pro-001,学生模型是 Mistral-7B-Instruct-v0.3 和 Gemma-7B-Instruct。训练中,他们使用了 LoRA 微调,秩设为 32。所有比较方法都使用了 vllm 和贪婪解码。
他们也选择了多种任务进行评估,包括常识推理(StrategyQA、CommonsenseQA、ARCchallenge),数学推理(MATH、GSM8K),表格数据推理(TabMWP)、自然语言推理(ANLI),逻辑推理(Date Understanding)。
参与比较的方法大致可分为三类:零样本方法、知识蒸馏(包含符号知识蒸馏和逐步蒸馏)和数据增强(包含问题重新表述、问题增强、答案增强)。更多实验设置请参阅原论文。
主要结果
表 1 给出了主要结果。
首先,RevThink 的平均性能表现很好,在不同数据集和模型上都优于基线。与学生模型的零样本性能相比,RevThink 使用 Mistral 时实现了 12.68% 的平均提升,使用 Gemma 时实现了 14.37% 的平均提升。
此外,相比于符号知识蒸馏(SKD)和逐步蒸馏(Distill Step-by-Step)—— 依赖于使用来自教师模型的正确推理链来执行监督式微调,RevThink 有 6.44% 至 7.15% 的显著提升。
与基于数据增强的基线方法相比,RevThink 带来的增益也更为显著,特别是在常识推理、表格推理和日期理解方面。虽然其中一些增强方法(例如答案增强 (AnsAug))对于数学推理很有效,但它们为其它领域带来的改进较少。这表明数学是一个更结构化的领域,会随着数据的增加而更好地扩展。
相比之下,RevThink 在各种推理任务上都能带来稳定的提升。并且表 3 表明,在留存数据集上进行评估时,RevThink 在领域外数学数据集上也能带来更大的增益,表现出了更好的泛化能力。
下面还列出了 RevThink 的更多优势,相关详情请访问原论文:
- RevThink 表现出了很好的样本效率。
- 逆向问题生成可提高性能,但充分利用新的数据集可获得最佳性能。
- RevThink 的目标比使用指令调整的单独实例更有效。
- 只需稍多一点 token,RevThink 就能获得更大提升。
- RevThink 与模型大小呈正相关。
- RevThink 可泛化至 OOD 数据集。
- RevThink 可作为现有方法的补充。
- RevThink 在可逆问题和中等难度问题上表现出了更大的提升。