论文-Global-Locally Self-Attentive

2019-11-07  本文已影响0人  魏鹏飞

1. 简称

论文《Global-Locally Self-Attentive Dialogue State Tracker》简称GLAD,作者Victor Zhong(Salesforce Research),经典的对话状态追踪论文。

2. 摘要

对话状态追踪是面向任务对话系统的重要组成部分,它在给定对话上下文情况下估计用户目标和请求。

本文中,我们提出了一种全局-局部自注意对话状态追踪(GLAD),它通过全局-局部模块学习用户话语和以前的系统动作的表示。

我们的模型使用全局模块来共享不同类型(称为槽)的对话状态的估计器之间的参数,并使用局部模块来学习槽特定的特征。

我们证明了,这改进了对稀有状态的追踪,并在WOZDSTC2状态跟踪任务上实现了最先进的性能。

3. 核心

3.1 数据集样例介绍
带有注释的回合状态的示例对话,用户在其中预订一家餐厅

对话状态跟踪(DST)是对话系统的重要组成部分。

在DST中,对话状态跟踪器。使用当前用户话语和会话历史来估计会话的状态。然后,对话系统使用这个已建立的状态来计划下一个动作并响应用户。

DST中的状态通常由一组请求和联合目标组成。

以餐厅预订任务为例:

3.2 Global-Locally Self-Attentive Encoder
Global-locally self-attentive encoder.

考虑相对于特定插槽s对序列进行编码的过程。设n表示序列中的字数,d_{emb}表示嵌入的维数,X∈R^{n\times d_{emb}}表示与序列中的字相对应的字嵌入。

我们使用全局双向LSTM产生X的全局编码H^g
H^g=biLSTM^g(X)\in R^{n \times d_{rnn}}\tag{3.2.1}

其中d_{rnn}LSTM状态的维度。

考虑到时隙s,我们使用局部双向LSTM类似地产生X的局部编码H^s
H^s=biLSTM^s(X)\in R^{n \times d_{rnn}}\tag{3.2.2}

两个LSTM的输出通过混合函数组合以产生X的全局-局部编码H
H=\beta^sH^s+(1-\beta^s)H^g\in R^{n \times d_{rnn}}\tag{3.2.3}

这里,标量β^s是特定于槽s的0和1之间的学习参数。接下来,我们计算H上的全局-局部自我注意上下文c。Self-attention或intra-attention是计算自然语言处理任务的可变长度序列上的摘要上下文的有效方法。

在我们的例子中,我们使用全局self-attention模块来计算对通用状态跟踪有用的注意力上下文,以及使用局部self-attention模块来计算特定于槽的注意力上下文。

对于每个第i个元素H_i,我们计算标量self-attention得分a^g_i,该分数使用Softmax函数在所有元素上进行次序归一化。
a_i^g=W^gH_i+b^g\in R \\ p^g=softmax(a^g)\in R^n \tag{3.2.4}

然后,全局self-attention上下文c^g是每个元素H_i的总和,由对应的归一化全局self-attention得分p^g_i加权。
c^g=\sum_ip_i^gH_i\in R^{d_{rnn}}\tag{3.2.5}

我们同样计算局部self-attention上下文c^s
a_i^s=W^sH_i+b^s\in R \\ p^s=softmax(a^s)\in R^n \\ c^s=\sum_ip_i^sH_i\in R^{d_{rnn}} \tag{3.2.6}

全局-局部自我注意上下文c是混合的:
c=\beta^sc^s+(1-\beta^s)c^g\in R^{d_{rnn}}\tag{3.2.7}

为了便于阐述,我们定义了多值编码器函数encode(X)
encode: X \Rightarrow H, c\tag{3.2.8}

该函数将序列X映射到编码H和自注意(self-attention)上下文c

3.3 The Global-Locally Self-Attentive Dialogue State Tracker(Encoder module + Scoring module)
The Global-Locally Self-Attentive Dialogue State Tracker.

Encoding module:
定义了全局-局部自注意(self-attention)编码器之后,我们现在为用户话语(user utterence)、先前的系统操作(system actions)和考虑中的时隙-值(slot-value)对构建表示。

U表示用户话语的单词嵌入,A_j表示第j个先前系统动作的单词嵌入(e.g. request(price range)),并且V表示考虑中的那些时隙-值对(e.g. food=french)。
我们有:
H^{utt},c^{utt}=encode(U) \\ H_j^{act},c_j^{act}=encode(A_j) \\ H^{val},c^{val}=encode(V) \tag{3.3.1}

Scoring module:
直观地,我们可以通过检查两个输入源来确定用户是否表达了所考虑的槽值对。

其中m是用户话语中的字数。分数y^{utt}指示用户话语表达该值的程度。

除了真实的动作之外,我们为每个回合引入了一个哨兵动作,这允许注意力机制忽略先前的系统动作。分数y^{act}指示先前操作表达该值的程度。然后,最终分数y是两个分数y^{utt}y^{act}之间的加权和,通过Sigmoid函数\sigma进行归一化。
y=\sigma(y^{utt}+wy^{act})\in R\tag{3.3.4}

此处,权重w是一个可学习参数。

4. 实验

评估结果1
评估结果2

5. 重点论文

6. 代码编写

本文源码地址:https://github.com/salesforce/glad

# 后续追加代码分析

参考文献

  1. Zhong, V., Xiong, C., & Socher, R. (2018). Global-Locally Self-Attentive Dialogue State Tracker. CoRR.
上一篇 下一篇

猜你喜欢

热点阅读