NL2SQL:弱监督学习与有监督学习完成进阶之路

NL2SQL:弱监督学习与有监督学习完成进阶之路

本文作者:追一科技 算法工程师 Wayne

Outline 

  • NL2SQL 任务和 WikiSQL 数据集介绍
  • 弱监督学习下 NL2SQL 解决方案
  • 有监督学习下 NL2SQL 解决方案
  • 追一科技 NL2SQL 天池挑战赛


 

NL2SQL任务和WikiSQL数据集介绍

近年来,NLP 的突破,带来了一些创新型研究机会,NL2SQL 正是其中之一,在学界与工业界获得了广泛关注。Salesforce、斯坦福、耶鲁等机构提出了 WikiSQL、WikiTableQuestions、Spider、SParC 等大规模数据集,并得到多次评测结果的提交。以 WikiSQL 为例,目前在排行榜上有多达 19 次的评测结果的提交。 
 

顾名思义,NL2SQL 就是将自然语言转化为 SQL 语句的一项任务。在中文领域,NL2SQL 研究也越来越受到瞩目。随着追一科技在天池平台发起首届中文 NL2SQL 比赛,(比赛地址https://tianchi.aliyun.com/markets/tianchi/zhuiyi_cn),第一个中文 NL2SQL 数据集也将横空出世。那么,这个任务,有哪些解决方案?尤其是在挑战赛这种高手对决的情况下,如何实现最优解? 

 

WikiSQL 是目前规模最大的 NL2SQL 数据集,有不少的借鉴和优化空间。在这篇文章中,我们将帮助选手简要梳理一下目前在 WikiSQL 数据集上的弱监督学习以及有监督学习的方案。
 

弱监督学习下NL2SQL解决方案

众所周知,使用机器学习算法少不了训练数据的参与。对于 NL2SQL 任务,我们希望实现从自然语言问句到 SQL 程序语句的转换。很容易想到,我们可以使用“自然语言语句-SQL”作为训练数据来训练模型。但“自然语言语句-SQL”这样的训练数据难以获得或标注,使数据的前期准备工作变得繁重困难。使用弱监督学习方式意味着我们可以使用“自然语言语句-SQL 的执行结果”取代“自然语言语句-SQL”作为训练数据更新模型参数。相比之下,这样的训练数据更容易获得,可以将研究人员从训练数据收集的繁重工作解放出来。 
 

针对弱监督学习方法解决 NL2SQL 问题,WikiSQL 提供了专门的榜单。目前榜单上有两种弱监督学习的方案,分别是 MAPO 和 MeRL,本文将对这两种方法对应的论文进行解析。
 

Memory Augmented Policy Optimization (MAPO)

NL2SQL:弱监督学习与有监督学习完成进阶之路_第1张图片

MAPO 算法是在论文 Memory Augmented Policy Optimization for Program Synthesis and Semantic Parsing 中提出的,发表于 2018 年的 NIPS 会议。论文中对 MAPO 算法的设计思路进行了详细的介绍,并且对 MAPO 算法在 WikiSQL 上的应用进行了详尽的分析。 
 

MAPO 是一种基于弱监督强化学习的方法。在论文中,作者根据 NL2SQL 任务的基本构成和强化学习的基本元素,将 NL2SQL 任务转化为一个强化学习任务。在 MAPO 中,强化学习的状态 x 被看做输入的自然语言问题和其对应的环境(一个解释器或者数据库),强化学习的动作空间 A 被看做当前自然语言问题下所有可能产生的程序集合,而每一条强化学习轨迹的动作序列 a 对应着每一个可能的程序。

 

MAPO 算法的目的是生成一个策略函数,该策略函数给出了在一个自然语言问句 x 条件下,采样到的各个程序 a 的概率分布,根据此概率分布,我们可以得到自然语言问句对应的程序,也就解决了 NL2SQL

你可能感兴趣的:(技术分享,深度学习,deep,learning,NL2SQL)