论文:Sequicity: Simplifying Task-oriented Dialogue Systems with Single Sequence-to-sequence Architectures
首先先明确一个概念,在管道型(pipeline)对话系统中一般会将对话系统拆分成几个模块,在不同文章中其叫法也不尽相同,比如自然语言理解(NLU)模块有时也被叫做user intent calssifier,对话管理模块(DM)中包含对话状态追踪(dialogue state tracking, DST)和对话策略学习(dialogue policy learning, DPL),其中DST有时也被称作belief tracking,对话状态(dialogue state)也被称作置信状态(belief state),自然语言生成(NLG)模块有时也被叫做response generator。
1 belief spans & Sequicity framework
这篇文章提出了一个基于sequence-to-sequence(seq2seq)模型的方法用于对话状态跟踪(dialogue state tracking/belief tracking),该方法可同时解决对话任务以及生成 系统的回复。他们提出了一个叫做 belief spans(bspan) 的text spans用来追踪state(也可笼统理解为slot-value),并由此设计了叫做 Sequicity framework 的框架,并将其实例化为 Two Stage CopyNet(TSCP),且实验表明TSCP在两个大规模数据集上比用来对比的baseline要更好,包括处理一些词汇表之外的情况(out-of-vocabulary, OOV)。
其实其思想很简单,就是把一个分类问题转化为了一个seq2seq的问题。(Wen et al., 2017b)将语义槽值视为分类的标签,这篇文章则是将语义槽的值记为text spans(即这里的bspan),之后再对其进行解码。举例说明:
![](https://img-blog.csdnimg.cn/20200924142058743.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4MjU1ODI5,size_16,color_FFFFFF,t_70)
user语句中的语义槽可以分为两类:informable和requestable,比如上图中的食物类型、价格如何就属于informable,而地址电话就属于requestable,在bspans中分别将其记在<Inf></Inf>和<Req></Req>之间。在第t轮对话中,将用户的语句记为 U t U_t Ut,bspans记作 B t B_t Bt,系统回复记作 R t R_t Rt。在第t轮对话中,需要知道 B t − 1 , R t − 1 , U t B_{t-1},R_{t-1},U_t Bt−1,Rt−1,Ut,由此生成 B t , R t B_t,R_t Bt,Rt,将其分被视为两个序列 B t − 1 R t − 1 U t B_{t-1}R_{t-1}U_t Bt−1Rt−1Ut和 B t R t B_tR_t BtRt,这便转换成了一个seq2seq问题,注意,其中 B t B_t Bt仅仅依赖于序列 B t − 1 R t − 1 U t B_{t-1}R_{t-1}U_t Bt−1Rt−1Ut,而 R t R_t Rt还需要基于 B t B_t Bt和在知识库中的搜索结果 k t k_t kt, B 0 B_0 B0和 R 0 R_0 R0可初始化为空序列。
在知识库中搜索时,得到的
k
t
k_t
kt会有三种情况:有多个匹配、一个精确匹配以及无匹配,这也会使得相应的系统回复不同。比如当用户询问一家徽菜馆,当查询时有多个匹配时,系统应该在回复中加上一些约束条件,比如价格距离之类的;而当有一个精确匹配时,系统应该回复用户需要的信息;而当没有匹配时系统应该告知用户并尝试一些不同的约束条件。如上面所说,这里的seq2seq解码可分为两个阶段:首先
B
t
−
1
R
t
−
1
U
t
B_{t-1}R_{t-1}U_t
Bt−1Rt−1Ut可以一块编码,但解码阶段首先先无条件的解码
B
t
B_t
Bt,然后暂停解码基于
B
t
B_t
Bt搜索知识库得到
k
t
k_t
kt,之后继续解码出
R
t
R_t
Rt,解码过程可概括为式(1-1)和(1-2)。
B
t
=
s
e
q
2
s
e
q
(
B
t
−
1
R
t
−
1
U
t
∣
0
,
0
)
(1-1)
B_t=seq2seq(B_{t-1}R_{t-1}U_t|0,0)\tag{1-1}
Bt=seq2seq(Bt−1Rt−1Ut∣0,0)(1-1)
R
t
=
s
e
q
2
s
e
q
(
B
t
−
1
R
t
−
1
U
t
∣
B
t
,
k
t
)
(1-2)
R_t=seq2seq(B_{t-1}R_{t-1}U_t|B_t,k_t)\tag{1-2}
Rt=seq2seq(Bt−1Rt−1Ut∣Bt,kt)(1-2)
2 Two Stage CopyNet(TSCP)
这篇文章还举出了一个较为简单的Sequicity framework的实例:Two Stage CopyNet(TSCP)。这里 B t B_t Bt占据了目标序列 Y Y Y的前 m ′ m^{'} m′个字符,其余的被 R t R_t Rt占据,即 R t = y 1 y 2 . . . y m ′ , R t = y m ′ + 1 . . . y m R_t=y_1y_2...y_{m^{'}},R_t=y_{m^{'}+1}...y_m Rt=y1y2...ym′,Rt=ym′+1...ym。TSCP是改进(Gu et al., 2016)的CopyNet得到的,原因是作者观察到生成目标序列时常常需要copy输入序列的一些字符。
这里补充下原文对Encoder-Decoder seq2seq模型的描述。如今很多seq2seq模型会去采用encoder-decoder的架构,即给定一个原序列
X
=
x
1
x
2
.
.
.
x
n
X=x_1x_2...x_n
X=x1x2...xn,编码网络会将其表示成隐藏状态:
H
(
x
)
=
h
1
(
x
)
h
2
(
x
)
.
.
.
h
n
(
x
)
H^{(x)}=h_1^{(x)}h_2^{(x)}...h_n^{(x)}
H(x)=h1(x)h2(x)...hn(x),之后解码网络根据这一隐藏状态
H
(
x
)
H^{(x)}
H(x)以及基于给定训练集解码得到目标序列
Y
=
y
1
y
2
.
.
.
y
m
Y=y_1y_2...y_m
Y=y1y2...ym(使得这一目标序列似然最大化)。截止到那时,结合了attention机制的RNN(Att-RNN)会被拿来做E-D框架的baseline,在encoder和decoder上各使用一个RNN。为了解码得到
y
j
y_j
yj,解码器的RNN用
y
i
−
1
y_{i-1}
yi−1来生成隐向量
h
j
(
y
)
h_j^{(y)}
hj(y),接着可分为以下三步来进行:
(1)计算所有
h
i
x
∈
H
(
x
)
h_i^{x}\in H^{(x)}
hix∈H(x)和
h
j
(
y
)
h_j^{(y)}
hj(y)的attention scores:
u
i
j
=
v
T
t
a
n
h
(
W
1
h
i
(
x
)
+
W
2
h
j
(
y
)
)
(2-1)
u_{ij}=v^{T}tanh(W_1h_i^{(x)}+W_2h_j^{(y)})\tag{2-1}
uij=vTtanh(W1hi(x)+W2hj(y))(2-1)
其中
v
∈
V
,
V
i
s
v
o
c
a
b
u
l
a
r
y
s
e
t
v\in V, V\ is\ vocabulary\ set
v∈V,V is vocabulary set
(2)结合相应的attention scores对
h
i
(
x
)
h_i^{(x)}
hi(x)加权求和得到
h
~
j
(
x
)
\widetilde{h}_j^{(x)}
h
j(x):
h
~
j
(
x
)
=
∑
i
=
1
n
e
u
i
j
∑
i
e
u
i
j
h
i
(
x
)
(2-2)
\widetilde{h}_j^{(x)}=\sum_{i=1}^{n}\frac{e^{u_{ij}}}{\sum_ie^{u_{ij}}}h_i^{(x)}\tag{2-2}
h
j(x)=i=1∑n∑ieuijeuijhi(x)(2-2)
(3)将
h
~
j
(
x
)
\widetilde{h}_j^{(x)}
h
j(x)和
h
j
(
y
)
h_j^{(y)}
hj(y)拼接成一个向量,再经过softmax映射到输出空间从而解码得到当前的字符
y
j
y_j
yj:
y
j
=
s
o
f
t
m
a
x
(
O
[
h
~
j
(
x
)
h
j
(
y
)
]
)
(2-3)
y_j = softmax(O\left[ \begin{matrix} \widetilde{h}_j^{(x)} \\ h_j^{(y)} \end{matrix} \right])\tag{2-3}
yj=softmax(O[h
j(x)hj(y)])(2-3)
在CopyNet中,对于
y
j
y_j
yj,除了用式(2-3)来计算出基于词汇集
V
V
V的概率分布
P
j
g
(
v
)
P_j^g(v)
Pjg(v)外,还要考虑一个额外的copy概率
P
j
c
(
v
)
P_j^c(v)
Pjc(v),(Gu et al., 2016)将解码空间扩大,由
V
V
V扩展到
V
⋃
X
V\bigcup X
V⋃X,并简单地将二者的和作为最后的概率分布,即
P
j
(
v
)
=
P
j
g
(
v
)
+
P
j
c
(
v
)
P_j(v)=P_j^g(v)+P_j^c(v)
Pj(v)=Pjg(v)+Pjc(v),但是问题来了,在Sequicity中直接使用CopyNet是不够的,因为
B
t
B_t
Bt和
R
t
R_t
Rt有不同的分布。所以TSCP分别采用了两个GRU来解码
B
t
B_t
Bt和
R
t
R_t
Rt。在第一个解码阶段,结合copy-attention机制用输入
X
X
X解码得到
B
t
B_t
Bt,并按照上面E-D seq2seq模型的描述方法得到生成概率,而对于每个词
v
∈
X
v\in X
v∈X其copy概率为:
P
j
c
(
v
)
=
1
Z
∑
i
:
x
i
=
v
∣
X
∣
e
ψ
(
x
i
)
,
j
≤
m
′
(2-4)
P_j^{c}(v)=\frac{1}{Z}\sum_{i:x_i=v}^{|X|}e^{\psi(x_i)},j\leq m^{'}\tag{2-4}
Pjc(v)=Z1i:xi=v∑∣X∣eψ(xi),j≤m′(2-4)
其中
Z
Z
Z是标准化项,
ψ
(
x
i
)
\psi(x_i)
ψ(xi)用来计算
x
i
x_i
xi的copy分数:
ψ
(
x
i
)
=
σ
(
h
i
(
x
)
T
W
c
)
h
j
(
y
)
,
j
≤
m
′
(2-5)
\psi(x_i)=\sigma(h_i^{(x)^T}W_c)h_j^{(y)}, j \leq m^{'}\tag{2-5}
ψ(xi)=σ(hi(x)TWc)hj(y),j≤m′(2-5)
在第二个解码阶段,将
B
t
B_t
Bt最后一个隐状态作为
R
t
R_t
RtGRU的初始隐状态。这里很明显要解码
R
t
R_t
Rt需要依赖
B
t
B_t
Bt,所以这一阶段解码过程是结合copy-attention机制用
B
t
B_t
Bt去解码,用
B
t
B_t
BtGRU得到的
h
1
,
.
.
.
,
h
m
′
h_1,...,h_{m^{'}}
h1,...,hm′来计算,这减少了搜索空间因为所有
X
X
X中和任务有关的信息已经被包含在
B
t
B_t
Bt中:
P
j
c
(
v
)
=
1
Z
∑
i
:
y
i
=
v
e
ψ
(
y
i
)
,
i
≤
m
′
<
j
≤
m
(2-6)
P_j^c(v)=\frac{1}{Z}\sum_{i:y_i=v}e^{\psi(y_i)},i\leq m^{'}<j\leq m\tag{2-6}
Pjc(v)=Z1i:yi=v∑eψ(yi),i≤m′<j≤m(2-6)
ψ
(
y
i
)
=
σ
(
h
i
(
y
)
T
W
c
)
h
j
(
y
)
,
i
≤
m
′
<
j
≤
m
(2-7)
\psi(y_i)=\sigma(h_i^{(y)^T }W_c)h_j^{(y)},i\leq m^{'}<j\leq m\tag{2-7}
ψ(yi)=σ(hi(y)TWc)hj(y),i≤m′<j≤m(2-7)
至于
k
t
k_t
kt因为有三种情况,所以将其设为一个三维的向量,并加到
y
j
y_j
yj中去,如(2-8)所示,再将其输入到GRU中产生
h
j
+
1
(
y
)
h_{j+1}^{(y)}
hj+1(y)。
y
j
′
=
[
y
i
k
t
]
,
j
∈
[
m
′
+
1
,
m
]
(2-8)
y_j^{'}=\left[ \begin{matrix} y_i\\ k_t \end{matrix} \right],j\in[m^{'}+1,m]\tag{2-8}
yj′=[yikt],j∈[m′+1,m](2-8)
以上就是全文的大致思路。
3 References
Tsung-Hsien Wen, David Vandyke, Nikola Mrksic, Milica Gasic, Lina M Rojas-Barahona, Pei-Hao Su, Stefan Ultes, and Steve Young. 2017b. A networkbased end-to-end trainable task-oriented dialogue system. EACL .
Jiatao Gu, Zhengdong Lu, Hang Li, and Victor OK Li. 2016. Incorporating copying mechanism in sequence-to-sequence learning. ACL .