🤖 AI Summary
Large language models (LLMs) often suffer from answer degradation in complex reasoning due to failures in self-verification and self-correction. To address this, we propose ProgVe+ProgRe, a program-driven, two-stage self-correction framework: first, it generates and executes interpretable, verifiable pseudo-programs to precisely assess model responses; second, it simultaneously reflects on both the original response and the verification pseudo-program itself—enabling dual-path correction. Our approach pioneers the codification and executable instantiation of verification logic, coupled with meta-level reflection on the verification program, thereby mitigating error propagation from flawed feedback. Integrated with pseudo-program generation/execution, dual-path reflection, instruction fine-tuning, and real programming tools, ProgVe+ProgRe achieves significant improvements across three instruction-following and mathematical reasoning benchmarks. Gains further amplify when augmented with external tools, demonstrating the method’s effectiveness, robustness, and scalability.
📝 Abstract
Self-Correction aims to enable large language models (LLMs) to self-verify and self-refine their initial responses without external feedback. However, LLMs often fail to effectively self-verify and generate correct feedback, further misleading refinement and leading to the failure of self-correction, especially in complex reasoning tasks. In this paper, we propose Program-driven Self-Correction (ProgCo). First, program-driven verification (ProgVe) achieves complex verification logic and extensive validation through self-generated, self-executing verification pseudo-programs. Then, program-driven refinement (ProgRe) receives feedback from ProgVe, conducts dual reflection and refinement on both responses and verification programs to mitigate misleading of incorrect feedback in complex reasoning tasks. Experiments on three instruction-following and mathematical benchmarks indicate that ProgCo achieves effective self-correction, and can be further enhance performance when combined with real program tools.