LogicPro
LogicPro
使用算法题来构造高质量的推理数据。
Abstract
提出了一个 LogicPro 的新方法来增强 LLM 的复杂逻辑推理。根据算法题和代码题解构造输入,基于此构造不同的复杂逻辑推理问题,最后结合代码题解的中间变量输出,推导出推理过程和最终结果。
这个方法可以构建一个困难(所有模型都是无效的)、多样化、可拓展的数据集,并获得了一个由中间变量值引导的高质量推理过程。在BBH27、GSM8K、HellSwag、Logicqa、Reclor和RTE数据集的多个模型上取得了显著的改进,优于大量现有的推理数据集。
Introduction
构建高质量推理数据,现有的方法是收集真实世界中的数据,如公务员考试和法律考试。这种方法对进一步的训练来说费时费力。
考虑 合成数据,在合成数据上训练的 Llama3.1能力非常不错,在数学方面的合成数据能提高模型的数学能力,也有研究逻辑推理领域的合成数据,同时提供推理过程。现有的复杂逻辑合成数据往往是基于命题逻辑构建的,限制了其难度和多样性。
在大语言模型(LLM)的训练数据集中,合成数据(synthetic data)是指通过人工生成的方法来构建的模拟真实世界的数据。与从实际环境中收集的“真实数据”相比,合成数据并非直接从用户交互或现实事件中获取,而是通过算法或现有数据的某些特性生成的。这种方法具有多种优势,尤其是在数据收集困难或隐私问题较为严重的情况下。
此外,高质量的推理过程 是优质推理数据集的核心组成部分。现有的构造推理过程数据的方法都不佳。
Introduction 后续内容和 Abstract 差不多
Approach
四个步骤:
构建输入样例
把算法题和对应的题解代码喂给 LLM,让它为题目生成输入样例。
构建复杂推理问题
把算法题和输入样例喂给 LLM,让它生成一个具体的复杂推理问题。
从程序中获取中间变量
让模型重写原始的题解代码,使其打印关键中间变量的值,以说明算法逻辑。
程序引导的推理
把步骤 2 中构建的复杂推理问题和步骤三中重写代码输出的中间变量值喂给 LLM,提供 one-shot,让模型生成推理过程。
This post is licensed under CC BY 4.0 by the author.