基于演员-评论家网络的SQL语句构造方法与流程

文档序号:18267236发布日期:2019-07-27 09:16阅读:473来源:国知局
基于演员-评论家网络的SQL语句构造方法与流程

本发明涉及一种sql语句构造方法,特别是一种基于演员-评论家网络的sql语句构造方法,属于基于演员-评论家网络的sql语句构造方法的创新技术。



背景技术:

结构化查询语言(sql)是关系数据库系统常用的标准语言,可支持的功能包括数据插入、查询、更新和删除等。关系数据库程序要为应用编写高质量查询,必须精通sql和熟悉对应数据库架构。而这两者的任务都是具挑战性的。降低sql的编程难度和减轻复杂数据库架构的学习负担一直是数据库研究领域和工业界的重要课题。其中研究如何构建自然语言数据库接口(nlidb)在近年被广泛关注。

nlidb是指允许用户输入以可支持自然语言表示的请求来访问存储于数据库信息的系统。相比其他数据库信息访问接口,nlidb支持自然语言输入无需额外学习人造语言,问题的表达变得简单和支持嵌入到对话系统。但nlidb十分依赖于系统自然语言的转化能力或者理解能力。现有的nlidb构建原理,大体可分为三种思路。第一种是基于模式匹配的思路,通过自然语言模板和sql查询模板一一对应从而达到转化功能,需要大量的人工工作和灵活性很差;第二种是基于机器翻译的思路,通过序列至序列模型直接将自然语言序列转化为sql查询语言,缺点是训练过程中仅能通过语句相似性更新模型;第三种是基于语义解析的思路,目标是将自然语言转化为逻辑表达式,引入强化学习通过逻辑表达式操作输入表从而得到反馈,缺点是训练困难和不支持大的数据表输入。

序列至序列模型是常用的神经网络模型,输入和输出都是序列达到学习序列间转化,被广泛用于机器翻译、文本摘要等领域。序列至序列模型采用编码-解码框架(encoder-decoder)。从输入序列到输出序列的转换包含两个阶段,分别为编码阶段和解码阶段。编码阶段主要处理输入序列,提取输入序列的关键信息,并适当地将信息存储到神经网络的存储器中。解码器阶段负责输出生成,在字典中顺序选择输出字,并相应地更新存储器状态。

通常情况下,编码器和解码器均采用长短期记忆单元(longshorttermmemory,lstm)。在编码器阶段,输入序列x={x1,x2,x3,...,xn}按时间步逐个输入至lstm,隐含层状态he按时间步传递更新,得到最后一个时间步的隐含层状态hen,设解码器的初始隐含层状态hd0=hen。

在解码器阶段,每个时间步输入来自上一个时间步的预测输出和隐状态ht-1,即基于之前的输入信息产生新的预测输出,最后产生一个预测序列所以,序列至序列模型是基于输入序列作预测,其目标函数是:

演员-评论家算法(actor-critic)是一种经典的强化学习算法。,通常,演员主要作预测,而评论家主要是对演员的预测作评判;或“演员”表示策略,“评论家”表示对价值函数的估计。在深度强化学习中,“演员”和“评论家”可以用非线性神经网络来逼近表示。

在具体场景中,强化学习旨在能够得到一个解决问题的真实策略π*,然而实际上真实的策略是未知的,这个时候可以通过训练一个神经网络去表达出一个最优的策略π,通过参数学习使得π能够近似真实策略,假设这个策略参数为θ:

π(θ)≈π*(θ*)

在最优的策略下,能够根据当前的状态(state)产生一个动作概率分布π(a|θ),然后通过从采样的方式来获得具体动作(action)a:

a~π(a|θ)

并作用到环境(environment)中从而得到最大的未来奖励(reward),同时也会进入新的状态。这个表达最优策略的神经网络就是演员网络。

评论家是一个值函数(valuefunction),根据当前状态产生一个值v(s),作为对应状态的期望奖励。实际上使用函数近似的方法,通过训练一个神经网络去近似表达这个值函数。评论家是一个神经网络模型,所以也叫评论家网络。

演员网络根据当前状态产生一个动作概率分布,并通过采样的方式产生一个具体的动作,输入到环境中得到实际奖励和新的状态,评论家网络也根据当前状态得到一个期望奖励返回,根据演员网络以评论家网络返回的期望奖励(作为基准)、实际奖励和新的状态来更新演员网络参数。同时评论家网络在这个过程中,由于对状态的评判可能会存在偏差,所以也需要在这个过程中以实际的奖励和新的状态对应的期望奖励作为目标对自身参数进行修正。



技术实现要素:

本发明的目的在于考虑上述问题而提供一种基于演员-评论家网络的sql语句构造方法,本发明是一种方便实用的基于演员-评论家网络的sql语句构造方法。

本发明的技术方案是:本发明是基于演员-评论家网络的sql语句构造方法,包括如下步骤:

1)分别对演员网络中的参数θ和评论家网络的参数进行随机初始化;

2)从数据集获取自然语言序列x={x1,...,xn}和对应的sql序列yreal={y1,...,ym};

3)以时间步为单位,把自然语言序列x的每个单词输入到演员网络的编码器中;

4)把演员网络编码器最后一个时间步的隐状态haen作为演员网络解码器的初始隐状态had0;

5)以时间步为单位,把真实sql语句序列yreal的每个单词输入到评论家网络的编码器中;

6)把评论家网络编码器最后一个时间步的隐状态hcem作为评论家网络解码器的初始隐状态hcd0;

7)演员网络解码器接收上一个时间步预测出的sql单词和隐状态hadt-1生成单词概率分布

8)根据生成的单词概率分布随机采样得到当前单词

9)每得到当前单词和之前的预测sql序列真实目标序列yreal结合,输入到环境中得到当前回报再把输入到评论家网络的解码器中得到基于当前预测sql序列的未来长期奖励评估值重复步骤7,8,9;

10)计算当前时间步的长期奖励rt:

11)结合前一个时间步得到的未来长期奖励(当t=1时,令通过损失函数计算损失,其中

利用梯度下降算法更新评论家网络参数梯度公式如下,其中β为学习率:

12)同样地,演员网络的损失函数为:

利用梯度下降算法更新演员网络参数θ,梯度公式如下,其中α为学习率:

上面描述的是训练自然语言到sql语句的生成模型,当模型已存在,输入自然语言即可得到相应的sql语句。

本发明是基于演员-评论家网络的sql语句构造方法,结构化查询语言是关系型数据库的标准管理语言。结构化查询语言的编写比较困难,对于普通没有编程学习经验的用户难于编写结构化查询语言。即使对于有经验的程序员,在编写数据库相关应用前,仍需要良好的掌握结构化查询语言和学习对应数据库的架构才能写出高效可用的查询语句。与基于匹配的sql语句构造方法对比,本发明不需要大量的人工操作和灵活支持更多类型的sql语句。与传统的基于序列到序列学习的sql语句构造方法对比,本发明引入强化学习新型架构解决了损失函数和评价不一致和误差传播等问题。本发明是一种方便实用的基于演员-评论家网络确定预测sql序列的方法,具有实际应用意义。

附图说明

图1为本发明的原理图;

图2为本发明序列至序列的模型示意图;

图3为演员-评判家算法的原理图。

具体实施方式

实施例:

本发明的原理图如图1所示,本发明的基于演员-评论家网络的sql语句构造方法,包括如下步骤:

1)分别对演员网络中的参数θ和评论家网络的参数进行随机初始化;

2)从数据集获取自然语言序列x={x1,...,xn}和对应的sql序列yreal={y1,...,ym};

geo是基于美国地理事实数据库(geobase)的自然语言问题到sql查询语句的数据集,可以从geo中获取自然语言序列x={x1,...,xn}和对应的sql序列yreal={y1,...,ym};

另外,上述数据集还可以是比较常用的oracle、mysql、sqlserver等等,只要支持sql进行查询、更新、删除等管理操作即可,因sql是关系型数据库的标准管理语言。

3)以时间步为单位,把自然语言序列x的每个单词输入到演员网络的编码器中;

4)把演员网络编码器最后一个时间步的隐状态haen作为演员网络解码器的初始隐状态had0;

5)以时间步为单位,把真实sql语句序列yreal的每个单词输入到评论家网络的编码器中;

6)把评论家网络编码器最后一个时间步的隐状态hcem作为评论家网络解码器的初始隐状态hcd0;

7)演员网络解码器接收上一个时间步预测出的sql单词和隐状态hadt-1生成单词概率分布

8)根据生成的单词概率分布随机采样得到当前单词

9)每得到当前单词和之前的预测sql序列真实目标序列yreal结合,输入到环境中得到当前回报再把输入到评论家网络的解码器中得到基于当前预测sql序列的未来长期奖励评估值重复步骤7,8,9。;

10)计算当前时间步的长期奖励rt:

11)结合前一个时间步得到的未来长期奖励(当t=1时,令通过损失函数计算损失,其中

利用梯度下降算法更新评论家网络参数梯度公式如下,其中β为学习率:

12)同样地,演员网络的损失函数为:

利用梯度下降算法更新演员网络参数θ,梯度公式如下,其中α为学习率:

上面描述的是训练自然语言到sql语句的生成模型,当模型已存在,输入自然语言即可得到相应的sql语句。

上述步骤1)演员网络中的参数θ和评论家网络的参数分别对应两个网络里所有可被调节的数值参数。演员网络中的参数θ和评论家网络的参数是指在人工神经网络中被调节的权重,通常是被学习算法调节的数值参数。权重可以看作神经元之间的连接强度。

上述步骤2)中的数据集是由人工或者机器统计采集,是自然语言和结构化查询语言(sql)对,可按比例拆分为训练集和测试集分别用于训练学习网络和评价网络的可靠性。

上述步骤3)中的时间步是递归神经网络在处理序列数据按时间单位输入。演员网络和评论家网络结构都是编码器-解码器模型,而编码器与解码器分别都是一个长短期记忆网络(longshorttermmemory),递归神经网络的一种类型。

上述步骤5)根据网络结构和权重参数,输出层映射生成词的概率分布。

上述步骤11)及步骤12)中的梯度下降算法如下:

a.假设有一个关于神经网络的参数θ的目标函数j(θ)

b.计算j(θ)的梯度

c.以更新步长α(α>0)更新参数θ,

梯度下降算法是一种迭代求解最小值的算法,它能够在迭代的过程中使得j(θ)减小,直至达到局部或全局最小值。

上述演员网络和评论家网络均采用编码器-解码器架构,即序列至序列模型,但是模型的输入和输出有所不同。

演员网络中编码器接收自然语言序列x作为输入,当前时间步为t,根据前面预测出的sql序列作解码,产生一个词作为动作。词(动作)的生成是通过演员网络中产生的词概率分布随机采样得到,即:

演员网络的学习过程需要的是未来长期奖励作为反馈,而不是短期某一个奖励。因为长期奖励更能体现一个策略的整体优劣;而短期的奖励更多反映当下状态的一个优劣情况,可是没有做到长远的考虑,这种情况下可能会错过学习总体最优的策略。而未来长期奖励即表示为当前时间步以及之后每个时间步短期奖励的累积:

使用长期奖励,需要演员网络产生多个时间步的动作,计算多个对应时间步的短期奖励。但是无法在每个时间步对演员网络进行参数更新,只能多个时间步更新一次网络参数。引入时序差分学习的方法可以解决此训练问题。由于评论家网络是根据状态对未来长期奖励作预测,也就是说评论家网络可以得到在某状态下的未来长期奖励的近似值。因此,演员网络在某个时间步产生一个动作后,可以把未来长期奖励转化为:

rt=r(a;s)+γv(s′)

其中,r(a;s)表示在状态s下产生动作a得到的当前时间步的奖励,v(s′)表示在状态s′。假设演员网络在状态s产生动作后会进入新的状态s′;由于未来的奖励并非环境在当前实际返回的,为了表达这种不确定性,设γ为折扣因子对评论家网络评判的未来奖励进行打折。

结合本发明面对的sql序列预测任务,这里把奖励函数和值函数中的状态定义为直到某个时间步t为止的sql序列演员网络产生了当前时间步的单词后,结合之前的预测序列进入环境与目标序列yreal做对比,产生一个当前回报假定当前时间步的长期奖励rt,则:

rt=r(y1,...,yt,yreal)+γv(y1,...,yt)

其中,r是奖励函数,表示在到当前时间步的sql序列作用在环境中所产生的奖励。而v表示评论家网络表达的值函数,根据解码器当前时间步为止预测的sql序列来评估未来长期奖励。

由于返回的奖励会作为反馈对演员网络的预测产生影响,所以建立的奖励机制需要明确体现sql序列的准确性。sql作为一种计算机编程语言,是遵循特定的编程语法且具有可执行性的。要判断预测的sql序列是否正确,通过比较预测序列和目标序列在相应数据库的执行结果是否一致即可。但在预测过程中,生成的sql序列是不完整的,无法通过执行来判断是否正确。在机器翻译领域常采用bleu比较语言的相似性。引入bleu评测通过计算同时出现在预测sql序列中和在目标sql序列中的单词组(以n个单词作为一个单元)的数量来得到一个bleu值,体现的是预测sql序列与目标sql序列之间的相似度。若bleu值越高,表示预测sql序列与目标sql序列越相似。

上述bleu是一种机器翻译质量评测算法,全称是“bilingualevaluationunderstudy”。

但bleu表达的相似性并不可靠,在很多情况下可能会出现错误。例如,“selectfromaa”是与“selectafroma”相似度很高,但前者是明显存在语法错误,所以只是考虑预测sql序列和目标sql序列之间的相似度显然不全面。因此,本发明在奖励机制中引入基于sql语法自动机判断。sql语言是符合上下文无关文法,那么它可以被对应的下推自动机所接纳。所以,构建相应的自动机可以检查预测sql序列是否合法,称“语法自动机”。语法自动机接受当前输出语句则语法合法奖励为1,语法自动机拒绝接受则语句非法奖励为-1。

当一个预测sql序列完成后,则此时相比于计算预测sql序列的bleu值,直接对比执行sql得到的检索结果显得更加简单直观准确。所以在sql序列生成完成后,本发明用对比执行预测sql与目标sql的检索结果来确定预测的sql序列的准确性,当对比结果一致,则返回1,否则返回-1。

演员网络随着时间步的增加会产生一个预测的sql序列y1,...,yt,考虑到sql序列的准确性需要从字面层面和执行结果2个方面去考虑,本发明的奖励机制也分为中间过程和执行阶段2个阶段,具体的奖励函数定义如下:

其中,表示预测sql序列与目标序列之间的bleu值,范围在[0,1];表示对比预测sql序列和目标sql序列的数据库执行结果,若结果一致为1,否则为-1;表示语法自动机对预测sql序列作语法检查,若符合语法则返回1,否则返回-1。a和b为超参,其符合条件a+b=1,为了对每个公式两部分评测标准进行加权。

当前时间步为止预测的未来长期奖励会作为评论家网络训练时候更新学习的目标。评论家网络是根据当前的演员网络预测的sql序列作未来长期奖励的评估。评论家网络虽然与演员网络一样采用的是序列至序列模型,但是评论家网络的编码器接收目标序列yreal作为输入,解码器根据之前预测的sql序列作解码,产生一个值该值即为对当前预测的sql序列的未来长期奖励评估值。

评论家网络在训练学习过程中,通过优化其参数来近似真实的长期奖励,关于预测值与目标值rt以均方误差来定义损失函数

然后通过梯度下降算法对参数进行更新,假定学习率为β:

演员网络在训练过程中,需要根据当前实际返回的长期奖励rt、由评论家网络预测出的评估值以及当前时间步随机采样产生的单词来计算损失,则定义其损失函数为:

其中为时序差分残差,表达的是以评论家网络评估的未来长期奖励为基线,判断实际得到的未来长期奖励(虽然也引入了评估值)和评论家网络评估的未来长期奖励的差距,若高于评估奖励,则增大当前时间步选择的动作的出现概率;若低于评估奖励,则降低动作的出现概率。

得到损失值后,通过梯度下降算法对参数θ进行更新,假设学习率为α:

整个自然语言-sql生成网络初始参数是随机生成的,学习算法通过不断更新权重参数来使得模型的输出准确性更高。准确性通过比较真实sql和预测sql而得,本发明采用bleu和数据库的检测结果。

bleu和数据库检测结果都用于奖励得分计算,预测序列不完整时采用bleu作为奖励得分,预测序列完整(最后一个时间步)采用数据库检测结果作为奖励得分。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1