当前位置: 代码迷 >> 综合 >> 【论文笔记】Simplifying Task-oriented Dialogue Systems with Single Sequence-to-sequence Architectures
  详细解决方案

【论文笔记】Simplifying Task-oriented Dialogue Systems with Single Sequence-to-sequence Architectures

热度:78   发布时间:2024-02-23 07:46:47.0

论文: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),之后再对其进行解码。举例说明:

图1 belief spans实例

user语句中的语义槽可以分为两类:informable和requestable,比如上图中的食物类型、价格如何就属于informable,而地址电话就属于requestable,在bspans中分别将其记在<Inf></Inf>和<Req></Req>之间。在第t轮对话中,将用户的语句记为UtU_tUt?,bspans记作BtB_tBt?,系统回复记作RtR_tRt?。在第t轮对话中,需要知道Bt?1,Rt?1,UtB_{t-1},R_{t-1},U_tBt?1?,Rt?1?,Ut?,由此生成Bt,RtB_t,R_tBt?,Rt?,将其分被视为两个序列Bt?1Rt?1UtB_{t-1}R_{t-1}U_tBt?1?Rt?1?Ut?BtRtB_tR_tBt?Rt?,这便转换成了一个seq2seq问题,注意,其中BtB_tBt?仅仅依赖于序列Bt?1Rt?1UtB_{t-1}R_{t-1}U_tBt?1?Rt?1?Ut?,而RtR_tRt?还需要基于BtB_tBt?和在知识库中的搜索结果ktk_tkt?B0B_0B0?R0R_0R0?可初始化为空序列。

在知识库中搜索时,得到的ktk_tkt?会有三种情况:有多个匹配、一个精确匹配以及无匹配,这也会使得相应的系统回复不同。比如当用户询问一家徽菜馆,当查询时有多个匹配时,系统应该在回复中加上一些约束条件,比如价格距离之类的;而当有一个精确匹配时,系统应该回复用户需要的信息;而当没有匹配时系统应该告知用户并尝试一些不同的约束条件。如上面所说,这里的seq2seq解码可分为两个阶段:首先Bt?1Rt?1UtB_{t-1}R_{t-1}U_tBt?1?Rt?1?Ut?可以一块编码,但解码阶段首先先无条件的解码BtB_tBt?,然后暂停解码基于BtB_tBt?搜索知识库得到ktk_tkt?,之后继续解码出RtR_tRt?,解码过程可概括为式(1-1)和(1-2)。
Bt=seq2seq(Bt?1Rt?1Ut∣0,0)(1-1)B_t=seq2seq(B_{t-1}R_{t-1}U_t|0,0)\tag{1-1} Bt?=seq2seq(Bt?1?Rt?1?Ut?0,0)(1-1)
Rt=seq2seq(Bt?1Rt?1Ut∣Bt,kt)(1-2)R_t=seq2seq(B_{t-1}R_{t-1}U_t|B_t,k_t)\tag{1-2} Rt?=seq2seq(Bt?1?Rt?1?Ut?Bt?,kt?)(1-2)

?
?
?
?
?

2 Two Stage CopyNet(TSCP)

这篇文章还举出了一个较为简单的Sequicity framework的实例:Two Stage CopyNet(TSCP)。这里BtB_tBt?占据了目标序列YYY的前m′m^{'}m个字符,其余的被RtR_tRt?占据,即Rt=y1y2...ym′,Rt=ym′+1...ymR_t=y_1y_2...y_{m^{'}},R_t=y_{m^{'}+1}...y_mRt?=y1?y2?...ym?,Rt?=ym+1?...ym?。TSCP是改进(Gu et al., 2016)的CopyNet得到的,原因是作者观察到生成目标序列时常常需要copy输入序列的一些字符

这里补充下原文对Encoder-Decoder seq2seq模型的描述。如今很多seq2seq模型会去采用encoder-decoder的架构,即给定一个原序列X=x1x2...xnX=x_1x_2...x_nX=x1?x2?...xn?,编码网络会将其表示成隐藏状态:H(x)=h1(x)h2(x)...hn(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=y1y2...ymY=y_1y_2...y_mY=y1?y2?...ym?(使得这一目标序列似然最大化)。截止到那时,结合了attention机制的RNN(Att-RNN)会被拿来做E-D框架的baseline,在encoder和decoder上各使用一个RNN。为了解码得到yjy_jyj?,解码器的RNN用yi?1y_{i-1}yi?1?来生成隐向量hj(y)h_j^{(y)}hj(y)?,接着可分为以下三步来进行:
(1)计算所有hix∈H(x)h_i^{x}\in H^{(x)}hix?H(x)hj(y)h_j^{(y)}hj(y)?的attention scores:
uij=vTtanh(W1hi(x)+W2hj(y))(2-1)u_{ij}=v^{T}tanh(W_1h_i^{(x)}+W_2h_j^{(y)})\tag{2-1} uij?=vTtanh(W1?hi(x)?+W2?hj(y)?)(2-1)
其中v∈V,Visvocabularysetv\in V, V\ is\ vocabulary\ setvV,V is vocabulary set
(2)结合相应的attention scores对hi(x)h_i^{(x)}hi(x)?加权求和得到h~j(x)\widetilde{h}_j^{(x)}h j(x)?:
h~j(x)=∑i=1neuij∑ieuijhi(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=1n?i?euij?euij??hi(x)?(2-2)
(3)将h~j(x)\widetilde{h}_j^{(x)}h j(x)?hj(y)h_j^{(y)}hj(y)?拼接成一个向量,再经过softmax映射到输出空间从而解码得到当前的字符yjy_jyj?:
yj=softmax(O[h~j(x)hj(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中,对于yjy_jyj?,除了用式(2-3)来计算出基于词汇集VVV的概率分布Pjg(v)P_j^g(v)Pjg?(v)外,还要考虑一个额外的copy概率Pjc(v)P_j^c(v)Pjc?(v),(Gu et al., 2016)将解码空间扩大,由VVV扩展到V?XV\bigcup XV?X,并简单地将二者的和作为最后的概率分布,即Pj(v)=Pjg(v)+Pjc(v)P_j(v)=P_j^g(v)+P_j^c(v)Pj?(v)=Pjg?(v)+Pjc?(v)但是问题来了,在Sequicity中直接使用CopyNet是不够的,因为BtB_tBt?RtR_tRt?有不同的分布。所以TSCP分别采用了两个GRU来解码BtB_tBt?RtR_tRt?在第一个解码阶段结合copy-attention机制用输入XXX解码得到BtB_tBt?,并按照上面E-D seq2seq模型的描述方法得到生成概率,而对于每个词v∈Xv\in XvX其copy概率为:
Pjc(v)=1Z∑i:xi=v∣X∣eψ(xi),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)=Z1?i:xi?=vX?eψ(xi?),jm(2-4)
其中ZZZ是标准化项,ψ(xi)\psi(x_i)ψ(xi?)用来计算xix_ixi?的copy分数:
ψ(xi)=σ(hi(x)TWc)hj(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)T?Wc?)hj(y)?,jm(2-5)

在第二个解码阶段,将BtB_tBt?最后一个隐状态作为RtR_tRt?GRU的初始隐状态。这里很明显要解码RtR_tRt?需要依赖BtB_tBt?,所以这一阶段解码过程是结合copy-attention机制用BtB_tBt?去解码,用BtB_tBt?GRU得到的h1,...,hm′h_1,...,h_{m^{'}}h1?,...,hm?来计算,这减少了搜索空间因为所有XXX中和任务有关的信息已经被包含在BtB_tBt?中:
Pjc(v)=1Z∑i:yi=veψ(yi),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)=Z1?i:yi?=v?eψ(yi?),im<jm(2-6)

ψ(yi)=σ(hi(y)TWc)hj(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)T?Wc?)hj(y)?,im<jm(2-7)
至于ktk_tkt?因为有三种情况,所以将其设为一个三维的向量,并加到yjy_jyj?中去,如(2-8)所示,再将其输入到GRU中产生hj+1(y)h_{j+1}^{(y)}hj+1(y)?
yj′=[yikt],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?=[yi?kt??],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 .

  相关解决方案