论文-A Self-Attentive Model with G

2019-12-26  本文已影响0人  魏鹏飞

1.简称

论文《A Self-Attentive Model with Gate Mechanism for Spoken Language Understanding》简称Self-Attentive Model,作者:Changliang Li、Liang Li、Ji Qi(Kingsoft AI Lab And Tsinghua University),经典的SLU论文(Semantic Frame)

2. 摘要

口语理解(SLU)通常涉及意图确定和时隙填充,是口语对话系统的核心组成部分。

鉴于插槽标签和意图应该彼此共享知识,因此联合学习在SLU中已证明是有效的。但是,大多数现有的联合学习方法仅考虑通过在表面级别而非语义级别共享参数来进行联合学习。在这项工作中,我们提出了一种具有门控机制的新型自注意模型,以充分利用槽位和意图之间的语义相关性。

我们的模型首先基于具有自我注意机制的神经网络获得意图增强的嵌入。然后,意图语义表示被用作标记插槽标签的门。通过端到端的联合学习,可以同时优化两个任务的目标。

我们对流行的基准ATIS进行实验。结果表明,我们的模型在意图检测错误率和插槽填充F1得分方面都达到了最先进的水平,并且在很大程度上优于其他流行的方法。本文为SLU的研究提供了新的视角。

3. 引言

人工智能领域的一项长期目标是建立一种智能的人机对话系统,该系统能够理解人类的语言并给出流畅而正确的响应。典型的对话系统设计为执行以下组件:(i)自动语音识别将口头查询转换为文字记录,(ii)口语理解组件分析转录以提取语义表示,(iii)对话管理器解释语义信息并决定最佳的系统操作,根据其进一步生成系统响应作为自然语言输出。

在本文中,我们主要关注口语理解是口语对话系统的核心组成部分。它通常涉及两个主要任务,意图确定和插槽填充。意图确定旨在自动识别以自然语言表达的用户意图。插槽填充旨在从自然语言句子中提取相关的语义成分,以实现目标。

通常,意图检测和插槽填充是分开进行的。但是,这两个任务的单独建模受到约束,以充分利用所有受监督信号。出于以下三个原因,值得联合学习意图检测和插槽填充。首先,这两个任务通常在SLU系统中同时出现。其次,一项任务的信息可以在另一项任务中相互促进,并可以进行联合预测(Zhang and Wang,2016)。例如,如果说的意图是要找到航班,它很可能包含出发和到达的城市,反之亦然。最后,作为用户行为的语义表示,插槽标签和意图应该彼此共享知识。

最近,用于意图检测和插槽填充的联合模型已经取得了很大进展。 (Xu and Sarikaya,2013)提出使用基于CNN的三角CRF进行联合意图检测和时隙填充。 (Guo等人,2014)提出使用递归神经网络来学习联合任务输入文本的分层表示。 (Liu和Lane,2016b)描述了一种递归神经网络(RNN)模型,该模型共同执行意图检测,时隙填充和语言建模。当转录的话语到达时,神经网络模型会不断更新意图预测,并将其用作联合模型中的上下文特征。

在这项工作中,我们提出了一种新颖的模型通过引入自我注意和门控机制来确定意图和插槽填充。我们的模型可以充分利用槽位和意图之间的语义相关性。据我们所知,这是首次尝试使用意图增强嵌入作为指导学习插槽填充任务的门。为了充分评估我们模型的效率,我们在航空公司旅行信息系统(ATIS)数据集上进行了实验(Hemphill等,1990),该数据被广泛用作相关工作的基准。经验结果表明,我们的独立模型在插槽填充任务上的F1评分优于先前的最佳结果0.54%,并且在意图检测任务上具有出色的性能。我们的联合模型进一步提高了性能,并在两项任务上均取得了最新的成果。

4. 核心

在本节中,我们将介绍用于意向检测和槽填充联合学习的模型。图 1 概述了我们的模型。

第一层通过连接其字级嵌入和字符级嵌入(通过卷积获得)将输入序列映射到向量。我们将这些向量用作下游层中的合并嵌入。在很多地方,上下文信息在序列标签中非常有用。在本文中,我们将介绍一种在每个时间步骤中利用上下文感知功能的方法。特别是,我们利用自我注意来生成嵌入的上下文感知表示。然后,双向循环层将嵌入和上下文感知矢量作为输入来生成隐藏状态。在最后一步中,我们建议利用意图增强的门控机制来匹配插槽标签。特定单词的门是通过对意图嵌入的线性变换和自注意的单词的其他上下文表示而获得的。我们在栅极和每个 BiLSTM 输出之间应用按元素划分的点积。对于简单性,我们只采用 BiLSTM 的加权平均值的输出去预测意图标签。

该结构的设计受到载体之间乘法相互作用的有效性和在各种任务中成功应用的自注意机制的激励(Cheng等人,2016年;瓦斯瓦尼等人,2017年;林等人,2017年)。它通常也对应于我们的发现,在某些情况下,意图与槽标签高度相关,因此意图的语义对于检测槽标签应该很有用。

4.1 Embedding Layer

我们首先将索引字w = (w_1, w_2, ..., w_T )转换为字级嵌入 E^w = [e^w_1,e^w_2,...,e^w_T] 和字符级嵌入 E^c = [e^c_1, e^c_2, ..., e^c_T]尽管单词嵌入对于许多 NLP 任务已经足够了,但由经过精心训练的gloveword2vec 支持,字符级信息为嵌入向量的学习过程提供了一些更先验的知识(例如,形态)。一些形态性词在矢量空间中比较接近,这对于识别槽标签非常有用。字符嵌入还缓解了测试阶段词汇外 (OOV) 问题。在此论文中,我们重点介绍在 (Kim 等人, 2016 年) 中使用的字符感知卷积层。字符级嵌入是通过对具有多个窗口大小的单词中的字符进行卷积来提取 n-gram 特征生成的。

C为字符的词汇,V为单词的词汇。字符级嵌入和单词级嵌​​入尺寸分别表示为d_cd_w。对于每个单词w_t \in Vw_t中的字符构成矩阵C^t \in R^{d_c\times l},其中列对应于l个字符嵌入。

C^t和滤波器(或内核)H \in R^{d_c\times w}之间应用了窄卷积。在这里,我们假设滤波器的宽度为w。之后,我们通过添加非线性激活来获得特征图f^t \in R^{l-w+1}。最终的n-gram特征通过采用最大时间来生成:

f^t[i]=relu(H·C^t[:,i:i+w-1]+b)\tag{4.1.1}
c^t=\max_i f^t[i]\tag{4.1.2}

4.2 Self-Attention

注意机制通常用于指导句子嵌入的形成,额外的知识也用于衡量CNN或LSTM隐藏状态(即文档单词有时会涉及问题信息)。但是,在槽位填充任务中,我们模型的输入只是一个序列。因此,这里使用的注意力机制称为自注意力,也就是说,每个时间步骤中的单词都会出现在该句子中的整个单词上。并且它有助于确定哪个区域可能是插槽。由于每个时间步的嵌入都包含多个部分(即,词嵌入和不同内核宽度的字符嵌入),因此每个部分都有其自己的语义。如图2所示,我们将嵌入分为多个部分,每个部分的注意都在其相应的尺寸内进行。在这种方法中,我们限制了嵌入的不同方面之间的交互。我们假设不同的语义部分相对独立,并在我们的网络中扮演不同的角色。

假设M \in R^{d_m\times T}是包含句子隐藏向量[m_1,...,m_T]的矩阵,其中d_m是这些T向量的维数。考虑到插槽任务的特点,我们的目标将每个隐藏向量编码为上下文感知表示。我们通过注意所有句子隐藏向量M来实现这一点。首先,我们通过不同的投影参数W_a,W_bW_cM中的所有向量线性映射到三个特征空间,因此所得向量表示为M_a,M_bM_c具有与M相同的形状。这些矩阵在所有时间步中共享。考虑到由K个不同部分组成的嵌入结构(我们使用4种尺寸相同的嵌入),将这些变换后的矩阵平均分为K个部分。此外,注意力权重由M_aM_b之间的点积计算。最后,注意力输出是M_c的加权和。

具体来说,我们在k = 1,..,K中考虑不同的K部分:

\begin{bmatrix} M_a \\ M_b \\ M_c \end{bmatrix}=\begin{bmatrix} W_aM \\ W_bM \\ W_cM \end{bmatrix}\tag{4.2.1}

\alpha_{k,t}=softmax(m_{k,a,t}^TM_{k,b})\tag{4.2.2}

S-Att(m_t,M)=[M_1,c\alpha_{1,t}^T,...,M_K,c\alpha_{K,t}^T]\tag{4.2.3}

其中M_{k,a}\inR^(d_m/K)\times TM_a的第k部分,通过W_a转换到M。下标t是整个时间步T的某个时刻,m_{k,a,t}\in R^{d_m/K}M_{k,a}的第t列。\alpha_{k,t}是整个M_{k,c}的权重矩阵。

4.3 BiLSTM

字符嵌入和单词嵌入都是我们任务中的重要特征。为了进一步利用这些功能,我们将每个嵌入与上下文感知表示相关联,该表示通常由自注意机制实现。对于当前单词w_t,在时间步t的递归层的输入表示为x_t
e_t^a=S-Att([e_t^c,e_t^w],E)\tag{4.3.1}
x_t=[e_t^c,e_t^w],e_t^a\tag{4.3.2}

e^a_tw_t的上下文感知向量,它是通过对串联嵌入E=[e_1^c||e_1^w,...,e_T^c||e_T^w]应用自我注意机制而获得的。

训练RNN捕获长期依赖关系很困难,因为梯度趋于消失或爆炸。因此,设计了带有门控单元的一些更复杂的激活功能。在这项工作中,我们使用LSTM(Hochreiter和Schmidhuber,1997):
i_t=\sigma(W_ix_t+U_ih_{t-1}+b_i)\tag{4.3.3}
f_t=\sigma(W_fx_t+U_fh_{t-1}+b_f)\tag{4.3.4}
o_t=\sigma(W_ox_t+U_oh_{t-1}+b_o)\tag{4.3.5}
\hat{c_t}=tanh(W_cx_t+U_ch_{t-1}+b_c)\tag{4.3.6}
c_t=i_t\odot \hat{c_t}+f_t\odot c_{t-1}\tag{4.3.7}
h_t=o_t\odot tanh(c_t)\tag{4.3.8}

其中\odot表示两个向量的元素乘积。为了既考虑过去的历史又考虑未来的历史,我们提前使用了BiLSTM作为编码器。双向LSTM(BiLSTM)是对LSTM的改进,由前向LSTM和后向LSTM组成。编码器读取输入向量x=(x_1,x_2,...,x_t),并通过串联BiLSTM的前向和后向隐藏状态来生成T个隐藏状态:

4.4 Intent-Augmented Gating Mechanism

如上所述,意图信息对于时隙填充任务是有用的。为了测量目标位置中单词的概率并关注与意图相关的单词,我们在BiLSTM层的输出中添加了一个门。令H \in R^{2d\times T}为由BiLSTM产生的隐藏矢量[h_1,...,h_T]组成的矩阵。对于每个单词,我们使用自我注意机制来形成另一个上下文感知表示,门矢量h^*_t通过多层转换线性变换上下文感知表示和意图嵌入矢量v^{int}的方式来计算感知器(MLP)网络。在训练阶段,由正确的标签提供意图标签,在测试阶段,由意图分类层的输出提供意图标签。具体来说,对于t = 1,... T
s_t=Self-Attention(h_t,H)\tag{4.4.1}
h^*_t=MLP([s_t,v^{int}])\tag{4.4.2}
o_t=h_t\odot h_t^*\tag{4.4.3}

我们使用逐元素乘法来建模BiLSTM输出和门控矢量之间的相互作用。

4.5 Task Learning

双向递归层将单词w =(w_1,w_2,...,w_T)的序列转换为隐藏状态H = [h_1,...,h_T],这两个任务可以共享该状态。我们使用表示为H上的f_{att}的简单注意力集中功能来获得用于意图标签分类的注意力总和向量。分类的标签y^int}由矩阵E^{int}转换为嵌入的v^{int},以进行门运算。

h^{int}=f_{att}(H)\tag{4.5.1}
y^{int}=softmax(W^{int}h^{int}+b^{int})\tag{4.5.2}

在训练阶段,模型参数会更新。预测概率与真实标记之间的交叉熵损失。在测试阶段,将选择概率最大的标签作为预测意图。

对于另一个任务,由我们的选通层处理的隐藏状态用于预测插槽标签。

y_t^{slot}=softmax(W^{slot}o_t+b^{slot})\tag{4.5.3}

可以将时隙填充定义为序列标记问题,即将话语序列w =(w_1,...,w_T)映射到其相应的时隙标签序列y=(y_1,...,y_T)。目标就是最大化序列似然:
P(y^{slot}|w)=\prod_{t=1}^TP(y_t^{slot}|w)\tag{4.5.4}

它等于最小化预测序列y^{slot}的正确标签的负对数似然(NLL)。

5. 实验

5.1 Dataset

为了评估我们提出的模型的效率,我们对ATIS(航空旅行信息系统)数据集进行了实验,该数据集被广泛用作SLU研究的基准(Price,1990年)。


图3给出了ATIS数据集中句子的一个示例。单词被标记为带有某些语义框架的值。单词的插槽标签以In-Out-Begin(IOB)格式表示,并且意图被高亮显示,并带有一个框。

在本文中,我们使用ATIS语料库,遵循先前的相关工作(Liu和Lane,2016a; Mesnil等,2015; Liu和Lane,2015; Xu和Sarikaya,2013; Tur等,2010)。训练集包含来自ATIS-2和ATIS-3数据集的4978语音,而测试集包含来自ATIS-3 NOV93和DEC94数据集的893语音。插槽标签的数量是127,意图有18种不同类型。

5.2 Metrics

插槽填充任务的性能由F1评分来衡量,而意图检测任务则通过预测错误率(即测试数据错误意图的比率)来评估。

5.3 Training Details

该模型在Tensorflow框架中实现(Abadi等人,2016)。在训练阶段,我们按照(Sutskever et al。,2014)的建议使用LSTM单元,对于向前和向后LSTM,单元尺寸d均设置为128。

我们将词嵌入d_w的维数设置为64,将字符嵌入d_c的维数设置为128。我们使用多个宽度和过滤器(卷积内核宽度w \in {2,3,4})生成三个字符级嵌入。每个过滤器有64个过滤器),然后是随时间推移的最大池化层。然后,级联嵌入的维数为256。为了使以后的自注意过程中的维分解方便,我们使每个部分的维相等。网络中的所有参数均以均匀分布随机初始化(Sussillo和Abbott,2014年),并在训练过程中对其进行了微调。我们使用随机梯度下降算法(SGD)来更新参数。学习速度由Adam算法控制(Kingma和Ba,2014)。对模型进行最小批量大小为16的所有训练数据的训练。为了增强模型的泛化能力,将梯度裁剪的最大范数设置为5。我们还应用了图层归一化(Ba等等人,2016年),然后在输出和输入之间添加残差连接。同时,辍学率0.5应用于复发细胞投射层(Zaremba等人,2014)和每次注意力激活。

5.4 Independent Learning

表1和表2分别报告了针对插槽填充和意图检测的单独训练的结果。在独立的广告位填充任务中,我们将意图信息固定为数据集中的地面真相标签。但是在独立的意图检测任务上,与插槽标签没有交互作用。


表1比较了我们提出的架构和之前的工作之间的F1时隙填充分数。我们的模型取得了最先进的结果,并且在F1得分方面比以前的最佳模型高出0.56%。我们将模型的改进归因于以下原因:1)(Liu and Lane,2016a)中使用的注意力是香草注意力,用于计算解码状态。它不适合我们的模型,因为嵌入是由几个部分组成的。自我注意使模型能够共同关注来自不同表征部分的信息,从而更好地理解话语。2)意图增强的门层连接序列槽标签的语义,捕捉了两个任务之间的复杂交互。

表2将我们提出的模型的性能与先前报告的意图检测任务的结果进行了比较。我们的模型在分类错误率方面具有良好的性能,但不如Attention Encoder-Decoder(带有对齐输入)方法(Liu和Lane,2016a)。正如他们在(Liu and Lane,2016a)中描述的最新技术成果一样,他们基于注意力的模型基于单词级嵌入。在我们的模型中,我们引入了字符级嵌入来提高联合学习的性能。但是,针对意图分类的独立学习旨在获取话语的整体信息,而不是在乎特定单词的细节。我们在模型中引入的字符级嵌入对独立检测意图检测几乎没有什么伤害,因为这是两个标准之间性能的折衷。

5.5 Joint Learning

我们将我们的模型与以下基于联合学习的基线模型进行比较:

表3将我们的联合模型与先前工作的报告结果进行了比较。我们可以看到,我们的模型获得了最先进的结果,并且在插槽填充方面按F1评分优于之前的最佳结果,而在意图检测方面则以0.34%的优势超出了以前的最佳结果。这种改进具有统计学意义。此外,联合学习比单独学习可获得更好的结果。可以解释为这两个任务是高度相关的,并且彼此之间可以提高性能。插槽填充任务使模型能够学习更多有意义的表示,从而为共享参数的学习提供更多的监控信号。同样,意图也可用于确定插槽标签。

5.6 Ablation Study

进行消融研究是为了评估模型的每个部分是否以及如何对整个模型做出贡献。为了进一步评估用于联合学习的门控体系结构的进步,我们消除了模型中使用的一些技术。在本实验中,我们消除了三个重要组成部分并采用了不同的方法。请注意,所有变体均基于带有意图增强门的联合学习:

表4显示了我们的模型在ATIS数据集上的联合学习性能,每次删除一个模块。我们发现,基于我们的门机制,我们模型的所有变体都表现得很好。如表中所列,所有功能都有助于完成插槽填充和意图分类任务。

如果我们从整体模型中删除自我注意力,或者仅在意图增强的门控层中消除自我关注,性能就会急剧下降。结果可以解释为,自注意力机制分别计算上下文表示,并在相同方面增强了功能的交互。我们可以看到,自我注意力确实在很大程度上提高了绩效,这与以前的工作结果一致。

如果我们删除字符级嵌入而仅使用单词级嵌入,则F1得分下降了0.22%。尽管词级嵌入表示每个词的语义,但是字符级嵌入可以更好地解决语音外(OOV)问题,这对于确定插槽标签是必不可少的。

在未来的工作中,我们计划通过引入额外的知识来改进我们的模型。

6. 重点论文

7. 代码编写

# 后续追加代码分析

参考文献

  1. Li, C., Li, L., & Qi, J. (2018). A Self-Attentive Model with Gate Mechanism for Spoken Language Understanding. Emnlp.
上一篇下一篇

猜你喜欢

热点阅读