当前位置: 首页 > news >正文

在Text-to-SQL任务中应用过程奖励模型

论文标题

Reward-SQL: Boosting Text-to-SQL via Stepwise Reasoning and Process-Supervised Rewards

论文地址

https://arxiv.org/pdf/2505.04671

代码地址

https://github.com/ruc-datalab/RewardSQL

作者背景
中国人民大学,香港科技大学广州,阿里云,清华大学

前言

CTE是大部分数据库系统都支持的SQL表达模式,这种模式恰好能作为过程奖励模型的构建依据,从而显著减轻了在Text-to-SQL任务上应用PRMs的标注难度

动机

在Text-to-SQL任务中,模型的推理能力至关重要,但实践中经常发现“推理链条越长,模型产生幻觉的风险就越高”,即在复杂查询场景中引入无关或错误的步骤,会显著降低查询准确率。于是我们希望使用强化学习来来评估和监督生成结果,以提高推理准确性。

过程奖励模型(PRMs)能为训练过程提供细粒度的奖励信号,识别推理过程中的关键错误,或许能有效缓解上述问题。然而,在Text-to-SQL任务中有效利用PRMs并非易事,一方面需要构建适合Text-to-SQL任务的中间推理步骤,并设计能准确评估这些步骤的PRM;另一方面,要探索如何将PRM最优地整合到训练和推理流程中,以最大化其指导效果,同时确保模型能发展出真正的SQL推理能力,而不是仅仅优化奖励信号

于是作者设计了一套应用于Text-to-SQL任务的PRMs方法,并探索了多种训练与推理范式

本文方法

本文提出REWARD-SQL框架,其核心在于引入链式公共表表达式(Chain-of-CTEs, COCTE)作为中间推理步骤,并设计相应的PRM来评估这些步骤。

一、COCTE介绍

COCTE将复杂的SQL查询分解为一系列公共表表达式(CTEs),每个CTE代表一个独立的推理步骤,最终通过这些CTE构建出完整的SQL查询。CTE是SQL查询中定义的临时命名结果集,使复杂查询更易于管理和阅读。COCTE的优势在于提供可解释性和灵活性,每个CTE产生一个具体的、可执行的中间结果,并且COCTE形成一个有向无环图,每个步骤可以引用任何前面的步骤

简单来说就是要求生成的SQL都按照以下形式书写:

WITH step1 AS (
-- 第一步的查询逻辑
),
step2 AS (
-- 基于step1结果的第二步查询逻辑
),
step3 AS (
-- 基于step2的第三步查询逻辑
)
SELECT*FROM step3;

在这里插入图片描述

二、模型初始化

  • 策略模型冷启动
    在BIRD训练集上,手动编写一些COCTEs示例,提示强模型将其他SQL语句转换为COCTEs;然后执行这些COCTEs并保留与原始SQL结果一致的样本;此外还使用SQL语法树编辑距离过滤语义相似的样本,确保数据多样性。然后通过SFT训练开源模型,使之具备基本的SQL能力
  • 过程奖励模型训练
    通过蒙特卡洛树搜索(MCTS)算法探索多样化的推理路径,并标记每个步骤的正确性。使用二元交叉熵损失函数训练PRM,使其能够准确评估每个CTE步骤的正确性

在这里插入图片描述

三、优化策略

  • 奖励设计: 训练时同时使用过程奖励和结果奖励
  • 离线训练方法:
    • 拒绝采样(RS): 生成多个COCTEs,根据PR和OR分数过滤,保留高分样本进行微调
    • 直接偏好优化(DPO): 利用样本之间的比较信息,通过Bradley-Terry偏好模型优化策略
  • 在线训练方法 : 分组相对策略优化(GRPO)在线更新策略模型,利用PRM的步骤级分数指导策略更新,通过分组相对优势减少方差和计算负担

在这里插入图片描述

  • 推理时奖励辅助 : 在推理过程中也让奖励模型参与决策:让模型生成多个候选COCTEs,使用PRM选择得分最高的候选作为最终输出

在这里插入图片描述

上述RS、DPO、GRPO以及推理时奖励辅助刚好对应了四种典型的奖励信号处理方式,如下图所示:

在这里插入图片描述

  • RS:仅针对过程正确且结果正确的样本进行奖励
  • DPO:奖励过程、结果都正确的样本,惩罚过程、结果都错误的样本
  • GRPO:奖励过程、结果都正确的样本,惩罚其他所有样本。其中,【过程正确但结果错误】表明推理链条中存在隐蔽的逻辑缺陷,为了提高大模型推理能力所以需要惩罚;【过程错误但结果正确】表明模型可能依靠巧合,或者数据集偏差蒙对了答案,需要进行较严厉的惩罚
  • 推理时奖励辅助:与GRPO训练策略不同,推理时模型已经学习完毕,不用再惩罚【过程正确但结果错误】,但为了提高输出质量,发生这种情况时应当酌情奖励

实验结果

一、各优化策略对比

在这里插入图片描述

表中的SFT表示仅经过冷启动阶段训练的开源模型。作者表示也尝试了将后续RL阶段所使用的数据加入训练,但效果很差;

实验结果表明通过GRPO能够实现最好的性能,并且在解码阶段引入过程奖励模型从Best-of-N中进行挑选,效果能再提升近10个点

二、与各SOTA模型对比

在这里插入图片描述

在贪婪解码下,REWARD-SQL优于多个基于更大模型(如GPT-4)的基线方法;在投票解码下,REWARD-SQL进一步超越了所有基线方法,包括Reasoning-SQL,即使在不使用模式过滤器的情况下,REWARD-SQL的表现依然出色;结合模式过滤器后,REWARD-SQL在贪婪解码和投票解码下的执行准确率又得到了进一步提升

模式过滤(Schema Filter)是一种精简上下文,提高模型的专注度和效率的方法
实现过程:
类似于RAG,首先分析用户query,然后计算各种数据库Schema表述与query之间的相似度,只保留与query相关的放入上下文

相关文章:

在Text-to-SQL任务中应用过程奖励模型

论文标题 Reward-SQL: Boosting Text-to-SQL via Stepwise Reasoning and Process-Supervised Rewards 论文地址 https://arxiv.org/pdf/2505.04671 代码地址 https://github.com/ruc-datalab/RewardSQL 作者背景 中国人民大学,香港科技大学广州,阿…...

Python的安装使用

一、下载Python安装包 下载python安装包,可以直接访问官网地址:https://www.python.org/downloads/ 通过页面咱们直接下载最新版本的python安装包即可,python3.13.3。在页面的下方也可下载安装之前的版本,目前咱们按最新版本安装…...

mapreduce-wordcount程序2

WordCount案例分析 给定一个路径,统计这个路径下所有的文件中的每一个单词的出现次数。 其中,需要我们去实现代码的部分是:map函数和reduce函数。它们各自的作用是: map函数的入参是kv结构,k是偏移量,v是一…...

Java 内存模型(JMM)与内存屏障:原理、实践与性能权衡

Java 内存模型(JMM)与内存屏障:原理、实践与性能权衡 在多线程高并发时代,Java 内存模型(JMM) 及其背后的内存屏障机制,是保障并发程序正确性与性能的基石。本文将系统梳理 JMM 的核心原理、内…...

1.6 偏导数

(铺垫)全导数与偏导数看似相似,实则对应不同维度的变化观察。理解它们的差异需要从"变量自由度"切入: (核心差异解剖) 维度偏导数全导数变量关系其他变量被强制锁定所有变量都通过中间变量关联…...

网络爬虫学习之正则表达式

开篇 本文整理自《python3 网络爬虫开发实战》的学习笔记。 笔记整理 match match是一种常用的匹配方法,向它传入要匹配的字符串以及正则表达式,就可以检测这个正则表达式是否和字符串相匹配。 match会尝试从字符串的起始位置开始匹配正则表达式&#x…...

Pytorch常用统计和矩阵运算

文章目录 常用统计函数torch.prod()求积torch.sum()求和torch.mean()求均值torch.max()求最值torch.var() 方差torch.std()标准差 常见矩阵运算矩阵乘法点积 (torch.dot)批量矩阵乘法 (torch.bmm)奇异值分解 (SVD)特征分解 (torch.eig)矩阵求逆 (torch.inverse)伪逆 (torch.pin…...

PyTorch Lightning实战 - 训练 MNIST 数据集

MNIST with PyTorch Lightning 利用 PyTorch Lightning 训练 MNIST 数据。验证梯度范数、学习率、优化器对训练的影响。 pip show lightning Version: 2.5.1.post0Fast dev run DATASET_DIR"/repos/datasets" python mnist_pl.py --output_grad_norm --fast_dev_run…...

内存泄漏系列专题分析之十一:高通相机CamX ION/dmabuf内存管理机制Camx ImageBuffer原理

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:内存泄漏系列专题分析之八:高通相机CamX内存泄漏&内存占用分析--通用ION(dmabuf)内存拆解 这一篇我们开始讲: 内存泄漏系列专题分析之十一:高通相机CamX ION/dmabuf内存管理机制Camx ImageBuf…...

MySQL-逻辑架构

MySQL服务器逻辑架构图 主要分层结构 1.连接层 功能:处理连接、安全认证、线程管理等 核心模块:连接器:支持不同语言(JDBC)与MySQL交互;线程连接池:管理线程连接,减少线程频繁创建…...

架构思维:通用架构模式_系统监控的设计

文章目录 引言什么是监控三大常见监控类型1. 次数监控2. 性能监控3. 可用率监控 落地监控1. 服务入口2. 服务内部3. 服务依赖 监控时间间隔的取舍小结 引言 架构思维:通用架构模式_从设计到代码构建稳如磐石的系统 架构思维:通用架构模式_稳如老狗的SDK…...

架构、构架、结构、框架之间有什么区别?|系统设计|系统建模

在技术与知识中,我们总是频繁地遇到一些高度抽象、看似类似、却又各自承载着不同思想重量的词汇。“架构”、“构架”、“结构”、“框架”即是其中最为常见又最为令人困惑的一组术语。它们既是工程师们日常工作的核心语言,也是学者们在探索系统、组织、…...

系统架构设计(五):构件

定义 构件(Component)是指一个具有明确边界和独立部署能力的模块化单元,能够封装实现细节,并通过接口与其他构件协作完成系统功能。 主要特性 特性说明可复用性构件可以在不同系统中被重复使用。可部署性构件可以独立部署&…...

【系统架构师】2025论文《基于架构的软件设计方法》【最新】

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本文分享【系统架构师】2025论文《系统可靠性设计》,期待与你一同探索、学习、进步,一起卷起来叭! 目录 项目介绍背景介绍系统模块技术栈基于…...

MultiTTS 1.7.6 | 最强离线语音引擎,提供多音色无障碍朗读功能,附带语音包

MultiTTS是一款免费且支持离线使用的文本转语音(TTS)工具,旨在为用户提供丰富的语音包选项,实现多音色无障碍朗读功能。这款应用程序特别适合用于阅读软件中的离线听书体验,提供了多样化的语音选择,使得听书…...

Costmap代价地图

以下为ROS navigation导航工具包的move_base框架图。其中有两个关于代价地图的模块(红框所框),全局代价地图global_costmap和局部代价地图local_costmap,这两个代价地图实际上是调用的同一个功能包代码,通过配置不同的参数实例化为两个代价地…...

用生活例子通俗理解 Python OOP 四大特性

让我们用最生活化的方式,结合Python代码,来理解面向对象编程的四大特性。 1. 封装:像使用自动售货机 生活比喻: 你只需要投币、按按钮,就能拿到饮料 不需要知道机器内部如何计算找零、如何运送饮料 如果直接打开机…...

大规模容器集群怎么规划

规划大规模容器集群需要综合考虑多个方面,以下是一些关键的规划要点: 业务需求分析 应用类型和特点:明确容器集群上运行的应用类型,如 Web 应用、数据库、大数据处理等。不同类型的应用对资源的需求和性能要求各不相同。例如&am…...

机器学习第七讲:概率统计 → 预测可能性,下雨概率70%就是典型应用

机器学习第七讲:概率统计 → 预测可能性,下雨概率70%就是典型应用 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手…...

蓝桥杯13届 卡牌

问题描述 这天, 小明在整理他的卡牌。 他一共有 n 种卡牌, 第 i 种卡牌上印有正整数数 i(i∈[1,n]), 且第 i 种卡牌 现有 ai​ 张。 而如果有 n 张卡牌, 其中每种卡牌各一张, 那么这 n 张卡牌可以被称为一 套牌。小明为了凑出尽可能多套牌, 拿出了 m 张空白牌, 他可以在上面…...

《Vue.js》阅读之响应式数据与副作用函数

Vue.js 《Vue.js设计与实现》(霍春阳) 适合:从零手写Vue3响应式系统,大厂面试源码题直接覆盖。重点章节:第4章(响应式)、第5章(渲染器)、第8章(编译器&…...

线下消费经济“举步维艰”,开源AI智能名片链动2+1+S2B2C小程序线上“狂飙突进”!

开源AI智能名片链动21模式S2B2C商城小程序:驱动消费经济迭代的数字化引擎 摘要:本文以中国消费经济四阶段演进为框架,分析开源AI智能名片链动21模式S2B2C商城小程序如何重构商业生态。研究显示,该系统通过AI算法驱动的精准需求匹…...

简述DNS域名服务器

DNS简述 在互联网中,识别一个主机通常有两种方式——主机名和IP地址。从人类角度来看,人类肯定更喜欢这些便于记忆的主机名标识方式,而对于路由器来说,路由器则更喜欢定长的,有结构层次的IP地址。所以DNS域名服务器就…...

小结: Port Security,DHCP Snooping,IPSG,DAI,

以下是华为和思科在 IP Source Guard、Dynamic ARP Inspection、DHCP Snooping、Port Security 四个安全功能的配置指令对比: 1. Port Security(端口安全) 思科(Cisco) # 进入接口模式 interface GigabitEthernet0/1…...

2025年阿里云ACP人工智能高级工程师认证模拟试题(附答案解析)

这篇文章的内容是阿里云ACP人工智能高级工程师认证考试的模拟试题。 所有模拟试题由AI自动生成,主要为了练习和巩固知识,并非所谓的 “题库”,考试中如果出现同样试题那真是纯属巧合。 1、在PAl-Studio实验运行完毕后,可以右键单…...

SwitchyOmega_Chromium 代理插件下载与配置

下载地址: 【免费】SwitchyOmega-Chromium.ran资源-CSDN文库 下载 SwitchyOmega_Chromium.ran 文件。 解压缩文件 解压第一层后,解压第二层代理插件SwitchyOmega_Chromium。 打开 Chromium 浏览器。 导入插件: 在浏览器地址栏输入 chrome://extensio…...

【Nova UI】十四、打造组件库之按钮组件(下):按钮组组件的构建之旅

序言 在之前的探索中,我们成功雕琢出了功能完备且样式精美的 Vue 按钮组件,它在前端界面上绽放着独特的光彩✨。然而,前端开发的创新之路永无止境。如今,为了满足更丰富的交互需求,我们将目光聚焦在按钮组组件的实现上…...

SQL注入

sql注入核心语句 information_schema 虚拟数据库(物理上不存在),能提供方皓文数据库元数据的方式,元数据是关于数据的数据,如数据库名、表名、列的数据类型、访问权限等 只能访问 information_schema下面的表: schemata表&#xf…...

Java面试高阶篇:Spring Boot+Quarkus+Redis高并发架构设计与性能优化实战

Java面试高阶篇:Spring BootQuarkusRedis高并发架构设计与性能优化实战 面试官(严肃): Q1: 你项目中如何实现高并发下的缓存优化? 候选人(水货): 我们用了Redis做缓存,…...

【CF】Day57——Codeforces Round 955 (Div. 2, with prizes from NEAR!) BCD

B. Collatz Conjecture 题目: 思路: 简单模拟 很简单的模拟,我们只需要快速的找到下一个离 x 最近的 y 的倍数即可(要大于 x) 这里我们可以这样写 add y - (x % y),这样就知道如果 x 要变成 y 的倍数还要…...

Matlab 列车纵向滑模二阶自抗扰算法和PID对比

1、内容简介 Matlab 223-列车纵向滑模二阶自抗扰算法和PID对比 可以交流、咨询、答疑 2、内容说明 略 列车模型 在运行过程中,已知列车受到牵引力或者制动力,基本阻力和附加阻力的作用,规定与列车运行方向相同的力为正,与运行…...

Swift实战:如何优雅地从二叉搜索树中挑出最接近的K个值

文章目录 摘要描述题解答案题解代码分析示例测试及结果时间复杂度空间复杂度总结未来展望 摘要 在日常开发中,我们经常会遇到“在一堆数据中找出最接近某个值”的需求。尤其在搜索引擎、推荐系统或者地理坐标匹配中,这种“最近匹配”的问题非常常见。Le…...

深度策略梯度算法PPO

一、策略梯度核心思想和原理 从时序差分算法Q学习到深度Q网络,这些算法都侧重于学习和优化价值函数,属于基于价值的强化学习算法(Value-based)。 1. 基于策略方法的主要思想(Policy-based) 基于价值类方…...

QuickList

Redis在3.2版本引入数据结构,是一个双端链表,每个节点都是一个ZipList。 引入的原因:ZipList申请内存空间是连续的,如果内存占用较多,申请内存效率很低 思想:属于分片存储的思想 Redis配置项&#xff1a…...

DVWA在线靶场-SQL注入部分

目录 1.SQL注入 1.1 low 1.2 Medium 1.3 high 1.4 impossible 1. SQL盲注 1.1 low 2.2 medium 2.3 high 2.4 impossible 1.SQL注入 显注:前端页面可以回显用户信息,比如 联合注入、报错注入。 盲注:前端页面不能回显用户信息,比…...

IDEA+git将分支合并到主分支、IDEA合并分支

文章目录 一、合并分支二、可能遇到的问题2.1、代码冲突 开发过程中我们可能在开发分支(dev)中进行开发,等上线后将代码合并到主分支(master)中,本文讲解如何在IDEA中将dev分支的代码合并到master分支中。 一、合并分支 功能说明:将dev分支的…...

【Linux笔记】——进程信号的产生

🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:Linux 🌹往期回顾🌹:【Linux笔记】进程间通信——system v 共享内存 🔖流水不争,争的是滔滔不 一、进程信号…...

Java后端文件类型检测(防伪造)

在 Spring Boot 项目中,为了防止用户伪造 Content-Type(例如将 .txt 文件改为 image/jpeg 上传),可以通过检查文件的 Magic Number(文件头签名)来验证文件的真实类型。以下是 详细实现步骤 和 完整代码示例…...

知名人工智能AI培训公开课内训课程培训师培训老师专家咨询顾问唐兴通AI在金融零售制造业医药服务业创新实践应用

AI赋能未来工作:引爆效率与价值创造的实战营 AI驱动的工作革命:从效率提升到价值共创 培训时长: 本课程不仅是AI工具的操作指南,更是面向未来的工作方式升级罗盘。旨在帮助学员系统掌握AI(特别是生成式AI/大语言模型…...

VUE3基础样式调整学习经验

首先创建一个vue项目最好要把不属于自己的样式都删除掉,以面出现css难以调整的情况: 1.assets目录下的main.css、base.css等样式全部删除 2.app.vue下的样式也全部删除 3.使用element plus一定要加入样式包: import element-plus/dist/in…...

AI与IoT携手,精准农业未来已来

AIoT:农业领域的变革先锋 在科技飞速发展的当下,人工智能(AI)与物联网(IoT)的融合 ——AIoT,正逐渐成为推动各行业变革的关键力量,农业领域也不例外。AIoT 技术通过将 AI 的智能分析能力与 IoT 的设备互联能力相结合,为农业生产带来了前所未有的精准度和智能化水平。 …...

物联网驱动的共享充电站系统:智能充电的实现原理与技术解析!

随着新能源汽车的快速普及,共享充电站系统作为其核心基础设施,正通过物联网技术的深度赋能,实现从“传统充电”到“智能充电”的跨越式升级。本文将从系统架构、核心技术、优化策略及实际案例等角度,解析物联网如何驱动共享充电站…...

MCP 入门实战:用 C# 开启 AI 新篇章

MCP 入门实战:用 C# 开启 AI 新篇章 一、什么是 MCP? MCP,全称为 Model Context Protocol(模型上下文协议),是一个开放的协议,它为应用程序向大型语言模型(LLM)提供上下…...

ES常识7:ES8.X集群允许4个 master 节点吗

在 Elasticsearch(ES)中,4 个 Master 节点的集群可以运行,但存在稳定性风险,且不符合官方推荐的最佳实践。以下从选举机制、故障容错、资源消耗三个维度详细分析: 一、4 个 Master 节点的可行性&#xff1…...

WebRTC:去中心化网络P2P框架解析

在互联网的世界里,数据的传输就像一场永不停歇的 “信息快递”。当我们使用 WebRTC 实现视频通话时,背后支撑的网络框架至关重要。今天,我们将深入探索 WebRTC 开发中视频通话的前置基础 ——P2P(点对点)框架&#xff…...

Linux 上安装RabbitMQ

🐇 安装 Erlang/OTP 27.3.4(最新稳定版) 1. 下载 Erlang 源码 cd /usr/local/src wget https://erlang.org/download/otp_src_27.3.4.tar.gz2. 解压源码 tar -zxvf otp_src_27.3.4.tar.gz cd otp_src_27.3.43. 安装依赖 sudo apt update …...

Service Mesh实战之Istio

Service Mesh(服务网格)是一种专为微服务架构设计的网络代理层,用于处理服务间的通信、管理和监控。Istio 是一个流行的开源 Service Mesh 实现,通过提供流量管理、观测性和安全性等功能,帮助开发者应对分布式系统的复…...

BGP练习

一、要求拓扑图 二、要求 完成上图内容,要求五台路由器的环回地址均可以相互访问 三、需求分析 1. 网络连通性目标 - 需求明确要求五台路由器(AR1 - AR5 )的环回地址能够相互访问。环回地址是路由器上用于测试、管理及作为BGP等协议中Ro…...

【Redis】分布式锁的实现

目录 一、本地锁存在的问题 二、redis实现分布式锁原理 三、使用示例 四、锁误删问题 解决思路 获取锁和释放锁代码优化 五、锁释放的原子性问题 解决思路(Lua脚本) 使用流程 总结 大家好,我是千语。上期给大家讲了使用悲观锁来解决…...

【vue】全局组件及组件模块抽离

一、全局组件 只要是实例化过的区域都可以使用 Vue.component("组件名",{ template: 内容} ) 二、组件模块抽离 抽离就是把template的内容写到body里面,然后建立id写到变量下的template里,id变量写到component里 body{ template: …...