Multi-Turn Dialogue Response Selection

A Sequential Matching Framework for Multi-turn Response Selection in Retrieval-based Chatbots

简介:针对多轮对话的response selection,关键在于如何选择上文相关信息进行建模。目前存在的模型大都单独对上文信息进行建模,忽略了response与context之间的交叉特征。作者提出了序列匹配模型(sequential matching framework (SMF)),计算context中每轮query与response的交互特征,然后通过时序模型RNN对交互特征进行建模,最后将时序模型的hidden state作为最终的特征用于计算模型匹配得分。实验结果证明,该模型取得了state of art的效果。

  • 将用户历史所有query通过表征函数f(.)进行编码,候选答案通过另一个表征函数f^{'}(.)进行编码
  • 用户多轮对话过程是一个时序过程,因此可以通过时序模型对历史query进行编码h(.)
  • 最后通过匹配函数m(.)融合时序模型输出h(.)和答案编码向量f^{'}(r)

Unified Framework Of Matching Model

匹配模型g(s,r)可以通过如下公式进行定义
g(s,r)=m(h(f(u_1),...,f(u_n)),f^{'}(r))

Deep Learning To Respond (DL2R) Architecture

\left\{\vec w_{v,1},...,{\vec w_{v,n_v}}\right\}代表词向量矩阵,因此句子的表示可以通过如下公式获得
f_{dl2r}(v)={\rm CNN}({\rm BiLSTM}(\vec w_{v,1},...,\vec w_{v,n_v}))
首先通过启发式的方法将context转换为s^{'}=\left\{v_1,...,v_o\right\}

  • 启发式的方法

    • no context, s^{'}={u_n}
    • whole context, s^{'}=\left\{u_1\boxplus...\boxplus u_n, u_n\right\}
    • add-one, s^{'}=\left\{u_1\boxplus u_n,...,u_{n-1}\boxplus u_n, u_n\right\}
    • drop-out, s^{'}=\left\{(c\backslash u_1)\boxplus u_n,...,(c\backslash u_{n-1})\boxplus u_n, u_n\right\}c\backslash u_i表示从context中排出u_i

    \boxplus代表胶状向量,拼接向量为一个长向量
    m_{dl2r}(s,r)=\sum \limits_{i=1}^{o}{\rm MLP}(f_{dl2r}(v_i)\boxplus f_{dl2r}(v_o)).{\rm MLP}(f_{dl2r}(v_i)\boxplus f_{dr2r}^{'}(r))

Multi-View匹配模型

f_w(u_i)=[\vec w_{u_i,1},...,\vec w_{u_i,n_i}]
f_u(u_i)={\rm CNN}(\vec w_{u_i,1},...,\vec w_{u_i,n_i})
f_{mv}(u_i)=\begin{Bmatrix}f_w(u_i),f_u(u_i)\end{Bmatrix}
其中,f_w(u_i)f_u(u_i)分别表示词粒度的特征和句子粒度的特征
同理,f_{mv}^{'}(r)可以通过如下公式计算
f_w^{'}(r)={\rm GRU}(\vec w_{r,1},...,\vec w_{u_r,n_r})
f_u^{'}(r)={\rm CNN}(\vec w_{r,1},...,\vec w_{u_r,n_r})
f_{mv}^{'}(r)=[f_{w}^{'}(r)^{\top},f_u^{'}(r)^{\top}]^{\top}
context特征可以通过如下公式计算
h_{mv}(f_{mv}(u_1),...,f_{mv}(u_n))=[h_w(f_w(u_1),...,f_w(u_n))^{\top},h_u(f_u(u_1),...,f_u(u_n))^{\top}]^{\top}
其中,词粒度的特征h_w(.)和句子粒度的特征h_u(.)可以通过如下公式计算
h_w(f_w(u_1),...,f_w(u_n))={\rm GRU}(f_w(u_1),...,f_w(u_n)])
h_u(f_u(u_1),...,f_u(u_n))={\rm GRU}(f_u(u_1),...,f_u(u_n))
模型的完整计算公式如下


其中,M1和M2代表特征的线性变化

SMF

简介:SMF模型与之前模型的主要区别:1.在模型的底层计算context中query与response的交叉信息;2.采用query与response交互作用的特征进行时序建模,这两个区别克服了现有模型的缺点。

  • 将context中每一个query与answer做线性变换f(u_i,r)

  • 将线性变换之后的输出做为时序模型的输入

  • 最后通过匹配函数m(.)融合时序模型输出h(.)

    SMF模型可以通过如下公式进行总结
    h_k=h^{'}(h_{k_1},f(u_k,r))
    g(s,r)=m(h(f(u_1,r),f(u_2,r),...,f(u_{n_i}r)))

Utterance-Response Matching

SCN

计算query和answer之间的词级相似度矩阵\rm M_1
e_{1,i,j}=e_{u,i}^{\top}.e_{r,j}
计算句子间的相似度矩阵\rm M_2。分别将context和response输入时序模型进行编码
\rm H_u=[h_{u,i},...,h_{u,n_u}]
\rm H_r=[h_{r,i},...,h_{r,n_r}]
e_{2,i,j}=h_{u,i}^{\top}\rm Ah_{r,j}
然后,将\rm M1\rm M2输入2D卷积神经网络
z^{0,f}=\mathbf M_f, f \in \left\{1,2\right\}
z^{(l,f)}=[z_{i,j}^{(l,f)}]_{I^{(l,f)}\times J^{(l,f)}}
z_{i,j}^{(l,f)}=\delta(\sum_{f^{'}=0}^{F_{l-1}}\sum_{s=0}^{r_w^{(l,f)}}\sum_{t=0}^{r_h^{(l,f)}}\mathbf W_{s,t}^{(l,f)}.z_{i+s,j+t}^{l-1,f^{'}} + \mathbf b^{l,k})
其中,在卷积神经网络之后,接一层max-pooling
z_{i,j}^{(l,f)}=\max \limits_{p_w^{l,f}>s\geq 0}\max \limits_{p_h^{(l,f)}>t \geq 0} z_{i+s,j+t}
最后,将max-pooling之后的特征进行拼接,并投影到低维特征空间
\mathbf v=\mathbf W_c[z_{0,0}^{l^{'},1},...,z_{I,J}^{l^{'},1},z_{0,0}^{l^{'},2},...,z_{I,J}^{l^{'},2}]+\mathbf b_c

SAN

权重矩阵计算如下
\omega_{i,j}=v^{\top}tanh(e_{u,j}^{\top}\mathbf W_{att1}e_{r,i}+\mathbf b_{att1})
\alpha_{i,j}=\frac{e^{\omega_{i,j}}}{\sum \limits_{j=1}^{n_u}e^{\omega_{i,j}}}
其中,\mathbf W_{att1}\mathbf b_{att1}是训练参数。\omega_{ij}代表context与response之间的相关程度。
ue_{r,i}之间的交叉矩阵计算公式
t_{1,i}=(\sum \limits_{j=1}^{n_u}\alpha_{i,j}e_{u,j})\bigodot e_{r,i}
其中,\bigodot代表Hadamard product。
同理,可以对句子粒度的特征执行相似处理得到
\omega_{i,j}^{'}=v^{'\top}tanh(h_{u,j}^{\top}\mathbf W_{att2}h_{r,i}+\mathbf b_{att2})
a_{i,j}^{'}=\frac{e^{\omega_{i,j}^{'}}}{\sum \limits_{j=1}^{n_u}e^{\omega_{i,j}^{'}}}
t_{2,i}=\sum \limits_{j=1} ^{n_u}(a_{i,j}^{'}h_{u,j})\bigodot h_{r,i}
在获得词粒度和句子粒度的特征之后,将这两类特征进行拼接输入时序模型
t_i=[t_{1,i}^{\top},t_{2,i}^{\top}]
\mathbf T=[t_1,...,t_{n_r}]
\mathbf v=\rm GRU(\mathbf T)

  • Matching Accumulation
    SCN和SAN模型都采用GRU作为时序模型对特征进行编码,通过标准时序模型的门函数加强重要特征的权值,减少不重要信息带来的影响。

  • Matching Prediction

    • Last State
      第一个方法就是直接取时序模型的最后一个状态h_n做为匹配得分。该方式基于上下文的重要特征通过GRU门函数之后,被编码在向量h_n
      m_{last}(h_1,...,h_n)=\rm softmax(\mathbf W_1h_n+\mathbf b_1)
      其中,\mathbf W_1\mathbf b_1为参数向量

    • Static Average
      第二个方法通过所有hidden states的位置进行加权,如下:
      m_{static}(h_1,...,h_n)=\rm softmax(\mathbf W_s(\sum_{i=1}^n w_i h_i) + \mathbf b_s)
      w_i是第i个hidden state的权值,一旦{\left\{w_i\right\}}^n_{i=1}确定,对于任何(s, r)都是固定的,因此我们称之为static average。与第一种方式相比,static average可以利用更多的信息,避免信息的损失。

    • Dynamic Average
      与static average相似,我们同样采用所有hidden states来计算匹配得分。不同之处在于,由hidden state和query向量通过attention机制动态计算。不同的上下文,将会计算得到不同的权值,因此称之为dynamic average。
      t_i=t_s^{\top}tanh(\mathbf W_{d1}h_{u,n_u}+\mathbf W_{d2}h_i+\mathbf b_{d1})
      \alpha_i=\frac{exp(t_i)}{\sum_i exp(t_i)}$ $m(h_1,...,h_n)=\rm softmax(\mathbf W_d(\sum_{i=1}^n \alpha_ih_i)+\mathbf b_{d2})
      其中,t_s是训练中学习的虚拟上下文向量。

Multi-Turn Response Selection for Chatbots with Deep Attention Matching Network

简介:受Transformer的启发,作者从2个方面扩展了attention mechanism:1)通过叠加self-attention,作者构建了不同粒度的文本片段表示;2)通过context与response利用attention抽取真正匹配的文本片段。实验结果证明,该模型的效果远远优于目前的state-of-the-art模型。

  • Attentive Module


Attentive Module有三个输入:query sentence、key sentence和value sentence。Attentive Module首先计算query sentence与key sentence的相似矩阵,然后将attention结果应用在value sentence中
Att(Q,k)=[{\rm softmax}(\frac{Q[i].K^{\rm T}}{\sqrt{d}})]_{i=0}^{n_Q-1}
V_{att}=Att(Q,K).V \in R^{n_Q \times d}
Q=[e_i]_{i=0}^{n_Q-1},K=[e_i]_{i=0}^{n_k-1},V=[e_i]_{i=0}^{n_v-1}
其中,n_Qn_Kn_V代表句子中词的个数,e_i代表d维的embedding向量,n_Kn_V相等。
融合了词之间的语义信息之后,将V_{att}[i]Q[i]相加,从而得到一个新的词表示。为了避免梯度消失和梯度爆炸的问题,模型接了一层layer normalization;然后,输入前馈神经网络FFN,激活函数为ReLU
{\rm FFN}(x)=max(0, xW_1+b_1)W_2+b_2
参考residual network,将{\rm FFN}(x)x相加({\rm FFN}(x)x维度相同)作为最终的特征。

  • Representation
    \mathbf U_i^{l+1}={\mathbf AttentiveModule}({\mathbf U}_i^l,{\mathbf U}_i^l,{\mathbf U}_i^l)
    \mathbf R^{l+1}={\mathbf AttentiveModule}({\mathbf R}^l,{\mathbf R}^l,{\mathbf R}^l)
    其中,l \in \left\{0,L-1\right\}。至此得到了不同粒度的表示[\mathbf U_i^0,...,\mathbf U_i^{\rm L}][\mathbf R^0,...,\mathbf R^{\rm L}]

  • Utterance-Response Matching
    根据不同层l之间的词粒度表示,通过如下公式计算context与response之间相关性
    {\mathbf M}_{self}^{u_i,r,l}=\left\{{{\mathbf U}_i^l[k]^{\rm T}.{\mathbf R}^l[t]}\right\}_{n_{u_i} \times n_r}
    cross-attention顾名思义,即是在attention计算阶段就计算context与response之间的相关性
    \tilde{\mathbf U}_i^l={\rm AttentiveModule}(\mathbf U_i^l, \mathbf R^l, \mathbf R^l)
    \tilde{\mathbf R}_i^l={\rm AttentiveModule}(\mathbf R^l, \mathbf U_i^l, \mathbf U_i^l)
    \mathbf M_{cross}^{u_i, r,l}=\left\{\tilde{\mathbf U}_i^l[k]^{\rm T}.\tilde{\mathbf R}^l[t]\right\}_{n_{u_i} \times n_r}

  • Aggregation
    至此,我们得到了一个三维的特征表示
    \mathbf Q=\left\{Q_{i,k,t}\right\}_{n \times n_{u_i} \times n_r}
    其中,n表示Attentive Modulue的深度,n_{u_i}表示context中第i轮utterance词的个数,n_r表示response词的个数。每一个pixel的定义如下
    Q_{i,k,t}=[\mathbf M_{self}^{u_i,r,l}[k,t]]_{l=0}^{\rm L} \oplus [\mathbf M_{cross}^{u_i, r, l}[k, t]]_{l=0}^{\rm L}
    其中,\oplus表示concatenation。接着,作者通过2层3D的CNN抽取文本的匹配的特征,然后flatten特征之后将其输入单层的多层感知机
    g(c,r)=\delta(W_3f_{match}(c,r)+b_3)
    其中,\delta代表sigmoid函数,表示该r是否为正确的答案。

  • DAM模型的损失函数为负对数损失函数
    p(y|c,r)=g(c,r)y+(1-g(c,r))(1-y)
    {\rm L}(.)=-\sum \limits_{(c,r,y) \in D}log(p(y|c,r))

A Context-aware Attention Network for Interactive Question Answering

简介:该论文对多轮问答的建模与其他工作稍有不同,网络结构分为三部分:Question Module、Input Module和Answer Module。Question Module负责对当前问题进行特征编码;Input Module负责对上文信息进行特征编码;Answer Module负责对答案进行编码。同时为了获得上文信息与当前问题的关联性,通过Question Module计算得到特征u与Input Module计算相关矩阵,保留相关信息,忽略不相关信息。同时为了更好的回答用户的问题,对于不确定的问题,模型并不直接给出答案,而是通过反问的方式,让用户明确自己的问题,然后加入该用户反馈之后再进行回答。实验结果证明,该模型取得了比目前state-of-art更好的效果。

  • Question Module
    首先,对question采用时序模型GRU进行特征编码
    g_j^q={\rm GRU}_w(g_{j-1}^q,x_j^q)
    然后,通过self-attention对每个词的输出进行加权,获得最终的question表示。
    \gamma_j={\rm softmax}(v^{\rm T}g_j^q)
    \mathbf u=\mathbf W_{ch}\sum \limits_{j=1}^{N_q} \gamma_j g_j^q+b_c^{(q)}

  • Input Module
    对上文句子的每个词采用时序模型GRU进行特征编码
    \mathbf h_i^t={\rm GRU}_w(\mathbf h_{i-1}^t,\mathbf x_i^t)
    为了添加上句特征,这里采用2层的FFN对上句特征输出和当前GRU状态进行投影
    \mathbf e_i^t=\delta(\mathbf W_{ee}tanh(\mathbf W_{es}\mathbf s_{t-1} + \mathbf W_{eh}\mathbf h_i^t+\mathbf b_e^{(1)}) + \mathbf b_e^{(2)})
    在获得每个词的表示之后,通过question的特征对当前句子进行attention计算,统计句子每个词的相关度,然后通过加权求和的方式获得句子的特征表示。
    \alpha_i^t={\rm softmax}(\mathbf u^{\rm T}\mathbf e_i^{t})
    \mathbf y_t=\sum\limits_{i=1}^{N_t}\alpha_i^t \mathbf h_i^t
    现在我们得到了上文每个句子的特征表示,接下来我们需要对所有上文句子表示进行处理。因为用户的问题都是具有时序关系的,因此这里采用时序模型GRU对上文所有句子进行编码,然后通过question进行attention计算,并加权求和得到最后的上文特征输出。
    \mathbf s_t={\rm GRU}_s(\mathbf s_{t-1},\mathbf y_t)
    \beta_t={\rm softmax}(\mathbf u^{T}\mathbf s_t)
    \mathbf m=\sum\limits_{t=1}^{N}\mathbf {\beta}_t\mathbf s_t

  • Answer Module
    答案生成模块分为两部分:Answer Generation和Interactive Mechanism。

    • Answer Generation:根据当前question的特征输出u和上文特征输出m直接生成答案;
    • Interactive Mechanism:则是在不确定Answer Generation能很好回答用户问题时,给出问题的补充问法,从而让用户说的更加完整。
  • Answer Generation
    答案生成模块相对比较简单,对um相加然后通过一个时序模型GRU进行decoder。
    \hat x_k ={\rm softmax}(\mathbf W_{od}\mathbf z_k+\mathbf b_o)
    \mathbf z_k={\rm GRU}_d(\mathbf z_{k-1},[\mathbf m + \mathbf u;\hat {\mathbf {x}}_{k-1}])

  • Interactive Mechanism
    对用户反馈的文本进行时序编码,然后直接求和(这里假设所有词具有同等重要权重)
    g_d^f={\rm GUR}_w(\mathbf{g}_{d-1}^f,\mathbf x_d^f)
    \mathbf f=\frac{1}{N_f}\sum\limits_{d=1}^{N_f} g_d^f
    最后将计算获得的反馈表征用于生成答案。通过用户反馈我们可以判断上文不同句子的重要程度,因此可以通过该反馈表征更新上文权重。
    \mathbf r=tanh(\mathbf W_{rf}\mathbf f+\mathbf b_r^{(f)}
    \beta_t={\rm softmax}(\mathbf u^{T}\mathbf s_t+\mathbf r^{\rm T}\mathbf s_t)

Enhanced Sequential Representation Augmented with Utterance-level Attention for Response Selection

简介:基于检索的聊天机器人,针对多轮问答场景,充分利用句子粒度的表征和词粒度的表征是非常重要的。句子的特征表示包括:通过句子粒度attention获得的Sentence Embedding、位置信息表示和用户信息表示。接着通过sentence-level attention判断最相关的utterances。实验结果证明,该模型的效果优于baseline model。

  • Dual Encoder
    context的特征表示为C=\left\{c_1,c_2,...,c_p\right\},response的特征表示为R=\left\{r_1^k,r_2^k,...,r_q^k\right\}。context与response共享时序模型,因此有
    \vec h_t^w={\rm GRU}(\vec h_{t-1}^{w},w_t)
    \overleftarrow{h}_t^w={\rm GRU}(\overleftarrow{h}_{t+1}^w,w_t)
    其中,w=\left\{c,r^k\right\}。然后对前后向的输出进行concat
    h_t^w=[\overrightarrow{h}_t^w;\overleftarrow{h}_t^w]

  • Attention Layer
    在对词进行编码之后,通过dot attention计算context与response之间词的相似矩阵
    e_{ij}^k=(h_i^c)^{\rm T}h_j^{r^k}
    对重要的词赋于更高的权重,词权重的计算如下
    \tilde{c}_i^k=\sum \limits_{j=1}^q \frac{exp(e_{ij}^k)}{\sum \limits_{s=1}^q exp(e_{is}^k)}h_j^{r^k}
    \tilde r_j^k=\sum \limits_{i=1}^p\frac{exp(e_{ij}^k)}{\sum \limits_{s=1}^p exp(e_{sj}^k)}h_i^c
    至此,我们获得了各自的词对齐特征,因此我们对词编码之后的特征进行增广
    \bar{c}_i=h_i^c, \bar{r}_j^k=h_j^{r^k}
    m_c^k=[\bar c;\tilde{c}^k;\bar c - \tilde c^k;\bar c \bigodot \tilde c^k]
    m_r^k=[\bar r;\tilde{r}^k;\bar r - \tilde r^k;\bar r \bigodot \tilde r^k]

  • Aggregation Layer
    由于词之间包含了词上下文关系,因此这里采用了双向的GRU模型来对词粒度的上下文进行建模
    \overrightarrow{v}_{c,t}^k={\rm GRU}(\overrightarrow{v}_{c,t-1}^k, m_{c,t}^k)
    \overleftarrow{v}_{c,t}^k={\rm GRU}(\overleftarrow{v}_{c,t+1}^k, m_{c,t}^k)
    v_{c,t}^k=[\overrightarrow{v}_{c,t}^k;\overleftarrow{v}_{c,t}^k]

  • Pooling Layer
    由于我们最终需要的是句子的表示,因此一个必然的操作就是pooling,这里选择了max-pooling和last hidden组成了pooling layer
    v_{c,max}^k=\max \limits_{i=1}^p v_{c,i}^k
    v_{r,max}^k=\max \limits_{j=1}^p v_{r,j}^k
    v^k=[v_{c,max}^k;v_{r,max}^k;v_{c,p}^k;v_{r,q}^k]

Utterance-level Attention Layer
  • utterance embeddings


    • Sentence Embedding
      句子表示由2部分组成:word embedding求平均和时序模型的句子编码

    • Position Embedding
      多轮对话中,utterances的位置信息是非常重要的特征。最近的utterances与response有更高的相关性,因此作者将Sentence Embedding和Position Embedding进行拼接来丰富句子的特征。

    • User Embedding
      针对2个用户的多轮对话,每个用户都有自己的角色和目的。因此作者对参与者的角色进行one-hot,然后与Sentence Embedding进行拼接。
      将utterance embedding输入时序模型(GRU)对句子进行编码获得多轮表示D,然后通过bilinear attention对context与response进行匹配
      s_k=D^{\rm T}WR_k
      u_{att_i}=\frac{exp(s_i)}{\sum \limits_{k=1}^lexp(s_k)}R_i

  • Prediction Layer
    词粒度表示v^k和句子粒度表示u_{att_k}拼接到一个向量中,然后输入一层的前馈神经网络,激活函数为{\rm ReLU}

Sequential Attention-based Network for Noetic End-to-End Response Selection

简介:目前处理上下文的模型大部分都是hierarchy-based methods,因此不可避免的问题就是需要选择加入上文的轮数。如果轮数设置较大,上文相对较短的会话不可避免就会大量补零;同时如果设置太小,可能会因为上文信息不够,而导致语义不清。
针对上述问题,本文作者直接将上文信息拼接到一个段文本中,因此将上下文匹配的问题转化为单句匹配问题了。由于把所有的上文信息都拼接到了一段文本中,从而该段文本不可避免会引入大量的噪声,因此如果提取文本中的关键信息,然后与response进行匹配是本文的关键所在。

  • Input Encoding
    文章采用了各种不同的word embedding,然后对每个词的word embedding进行concatenate得到一个维度较高,信息量较大的词向量E(c_i)=[E_1(c_i),E_2(c_i),...,E_k(c_i)];最后通过一个前馈神经网络进行降维d_{e_1}+d_{e_2}+...+d_{e_k} \rightarrow d_h
    将context向量拼接为一个长文本\mathbf c=(c_1,c_2,...,c_m),response向量为\mathbf r=(r_1,r_2,...,r_n)。为了获得上下文信息,文章采用了双向的时序模型(BILSTM)对向量进行编码
    \mathbf c_i^{s}={\rm BiLSTM}_1(\mathbf E(\mathbf c),i)
    \mathbf r_j^{s}={\rm BiLSTM}_1(\mathbf E(\mathbf r),j)

  • Local Matching
    context与response的交叉特征是判断两者之间匹配度的重要因子,cross-attention计算公式如下
    e_{ij}=(\mathbf c_i^{s})^{\rm T}\mathbf r_j^{s}
    首先,通过cross-attention可以得到soft alignment,对齐向量包含了context与response的局部相关性
    \alpha_{ij}=\frac{\rm exp(e_{ij})}{\sum \limits_{k=1}^{n}\rm exp(e_{ik})}, \mathbf c_i^{d}=\sum \limits_{j=1}^{n}\alpha_{ij}\mathbf r_j^s
    \beta_{ij}=\frac{exp(e_{ij})}{\sum\limits_{k=1}^{m}exp(e_{kj})}, \mathbf r_j^d=\sum\limits_{i=1}^m\beta_{ij}\mathbf c_i^s
    然后,通过<\mathbf c_i^s, \mathbf c_i^d>可以获得增广特征
    \mathbf c_i^l={\rm F}([\mathbf c_i^s;\mathbf c_i^d;\mathbf c_i^s-\mathbf c_i^d;\mathbf c_i^s \bigodot \mathbf c_i^d])
    \mathbf r_j^l={\rm F}([\mathbf r_j^s;\mathbf r_j^d;\mathbf r_j^s-\mathbf r_j^d;\mathbf r_j^s \bigodot \mathbf r_j^d])
    其中,{\rm F}是一层的前馈神经网络,激活函数为\rm ReLU

  • Matching Composition
    通过时序模型组合匹配特征
    \mathbf c_i^v={\rm BiLSTM}_2(\mathbf c^l,i)
    \mathbf r_j^v={\rm BiLSTM}_2(\mathbf r^l,j)
    然后,通过max-pooling和mean-pooling抽取时序特征
    y={\rm MLP}([\mathbf c_{max}^v;\mathbf c_{mean}^v;\mathbf r_{max}^v;\mathbf r_{mean}^v]
    最后,将特征输入MLP计算匹配得分,MLP为一层的前馈神经网络,激活函数为tanh,最后对输出取softmax。

Sentence-encoding based methods

在处理大量候选response的任务时,直接使用ESIM模型耗时过高,因此作者采用了相对简单的孪生网络对response进行粗筛,之后再对粗筛的结果使用ESIM进行rerank。


采用ESIM模型相同的输入编码方式,然后对时序模型的输出进行加权求和

其中,,是权重矩阵,是一个可调的多头参数。
句子向量可以通过权重矩阵对时序模型输出加权求和计算得到

最后,通过concat、difference和 the element-wise products对特征进行增广

Multi-level Context Response Matching in Retrieval-Based Dialog Systems

简介:本文对比的基线是Dual Encoder和SMN模型,从word-level和sentence-level两个角度进行建模。该工作的出发点更多的是simplicity 和 efficiency,因此在结构上并未突出特别的创新点。

  • Sequence Encoding
    首先,将context concatenate到一个向量。然后,对context与response进行embedding稠密化,然后通过时序模型LSTM进行编码,这里取时序模型的last hidden作为最终输出,即c^{'}=h_{c,n}r^{'}=h_{r,n}

  • Sequence Level Similarity
    s=c^{'}\bigotimes r^{'}
    其中,\bigotimes代表向量叉积。s代表CR之间的相似度。

  • Word Level Similarity
    {\rm WLSM}_{i,j}=e_{ij}.e_{rj}
    其中,.代表dot product。至此,得到了一个相似矩阵,作者通过另一个时序模型将相似矩阵转换为向量t=h_n^{'} \in R^ll代表隐藏层的维度,h_n^{'}代表last hidden)。

  • Response Score
    P(R|C)={\rm sigmoid}(W^{'}.(s\bigotimes t)+b)
    其中,\bigotimes代表concatenation。

Deep Hybrid Networks Based Response Selection Fro Multi-Turn Dialogue Systems

简介:作者提出了deep hybrid network (DHN)抽取上下文信息。首先,通过每个utterance与response计算相似矩阵;然后,将多个相似矩阵进行concatenation得到一个大mathing matrix。最后,通过若干层的深度卷积block抽取高维matching feature。本文的创新点更多的是将CliqueNet模型应用到multi-turn dialogue中,其他无太大创新点。

  • Multi-turn Context Representation
    首先,计算每个utterance与response的匹配矩阵
    {\mathbf M_{u_i,r}}=\mathbf U_i.\mathbf S_1.\mathbf R^{T}
    其中,\mathbf U_i=[e_{u_i}^1,e_{u_i}^2,...,e_{u_i}^{n_{u_i}}]R=[e_r^1,e_r^2,...,e_r^{n_r}]
    另外,通过时序模型RNN编码句子中词的上下文关系,然后再次计算utterance与response之间的匹配矩阵
    z_{u_i}^t=\mathbf W_1.\delta(\mathbf W_2 e_{u_i}^t+ \mathbf W_3 z_{u_i}^{t-1}+b_1)+b_2
    \bar{\mathbf{M}}_{u_i, r}=\bar{\mathbf{U}}_i.\mathbf{S}_2.\vec{\mathbf{R}}^{\rm T}
    其中,\bar{\mathbf U}_i=[z_{u_i}^1,z_{u_i}^2,...,z_{u_i}^{n_{u_i}}]。最终,多轮context的特征表示为
    \mathbf{M}=[\mathbf{M}_{u_1,r};...\mathbf{M}_{u_n,r};\bar{M}_{u_1,r};...\bar{\mathbf{M}}_{u_n,r}]
    其中,\mathbf M \in R^{L \times P \times P}

  • Context-aware Matching


    本文Matching Module完全参考CliqueNet网络的设计结构,Matching Module包含若干卷积block,每个block分为2阶段。第一阶段,跟DenseNet就是相同的前馈结构,每一层都将合并来自前面所有层的输出。第二个阶段,每个卷积层需要合并的内容包含:比自己深的卷积层第一阶段的特征图,比自己浅的卷积层第二阶段的特征图。
    x_{i,2}=g(\sum\limits_{l<i}\mathbf W_{li}*x_{l,2}+\sum\limits_{m>i}\mathbf W_{mi}*x_{m,1})
    其中,g是一个非线性变换函数,包含了BN-ReLU-Conv_{3 \times 3}^k*表示卷积,+表示concatenation。
    作者这里叠加了三层block,每一层block包含了原始输入和第二阶段获得的特征。每个block第二部分的输出经过transition layer(BN-ReLU-AP-Conv_{1 \times 1}^k,其中AP是一个average pooling层)处理之后作为下一个block的输入。将所有block输出特征池化之后,构成了最终的匹配向量m

  • Aggregation

    获得匹配向量之后,通过一层全连接层,然后softmax获得匹配概率。最后利用交叉墒作为模型的损失函数
    L=-\sum\limits_{i=1}^N[y_i log(g(s_i,r_i))+(1-y_i)log(1-g(s_i,r_i))]

Knowledge-incorporating ESIM models for Response Selection in Retrieval-based Dialog Systems

简介:论文参考ESIM模型结构,将多轮utterance拼接到一段文本中,然后做单轮匹配。本文另一个重要的点在于融合进外部信息来丰富匹配的特征,比如:Ubuntu手册页的命令描述。通过结合更多的外部信息来获得更有的结果。

  • Word Representation Layer
    word representation由两部分组成:word embedding和character-composed embedding。其中,word embedding包含了Glove word embedding和word2vec向量(在训练数据上预训练得到);另外,character-composed embedding通过拼接BiLSTM前向和后向的final state。

  • Context representation layer
    输入包含三部分:context、response和外部知识(ubuntu手册页的命令描述)。采用BiLSTM模型对文本进行编码,三部分输入共享模型参数
    \bar a_i={\rm BiLSTM}(\bar{a}_{i-1},w_i),1\leq i\leq m
    \bar b_j={\rm BiLSTM}(\bar b_{j-1},w_j),1\leq j \leq n

  • Attention matching layer

    • Attention Matching Layer同样分为三部分:
      • response与外部信息
      • context与外部信息
      • context与response

    对context与response编码向量计算attention,然后加权求和得到对齐表示
    \tilde a_i=\sum\limits_{j=1}^n \frac{E_{ij}}{\sum\limits_{k=1}^n exp(E_{ik})}\bar b_j,1 \leq i \leq m
    \tilde b_j=\sum\limits_{i=1}^m \frac{E_{ij}}{\sum\limits_{k=1}^m exp(E_{ik})}\bar a_i,1 \leq j \leq n
    其中,E_{ij}=\bar a_j^{\rm T} \bar b_j计算context与response之间的相似度。
    有了对齐向量之后,一个通用的做法就是通过concatenation、difference和element-wise product对特征进行增广
    m_a^i=[\bar a_i,\tilde a_i;\bar a_i-\tilde a_i;\bar a_i \bigodot \tilde a_i],1 \leq i \leq m
    m_b^i=[\bar b_i,\tilde b_i;\bar b_i-\tilde b_i;\bar b_i \bigodot \tilde b_i],1 \leq i \leq n
    最后,我们得到\left\{\rm dialog-context、candidate-response和external-information\right\}

  • Matching aggregation layer
    Aggregation Layer采用另一个BiLSTM模型对向量进行编码
    v_i^a={\rm BiLSTM}(v_{i-1}^a,m_i^a),1 \leq i \leq m
    v_j^b={\rm BiLSTM}(v_{j-1}^b,m_i^b),1 \leq j \leq n

  • Pooling layer
    池化层采用max-pooling和final state组合得到最终的向量,最后将v输入全连接层得到最终的相似度
    v_{max}^a=\max \limits_{i=1}^m v_i^a
    v_{max}^b=\max \limits_{j=1}^n v_j^b
    v=[v_{max}^a;v_{max}^b;v_{last}^a;v_{last}^b]

End-to-end Gated Self-attentive Memory Network for Dialog Response Selection

简介:作者提出了Gated Self-attentive Memory Network用于在模型训练中融合历史会话和外部领域知识,通过self-attention加强utterance与对话历史(或外部领域知识)的联系。论文的出发点在于通过end-to-end的方式,更好的融合外部的知识提升模型的效果;同时借鉴transformer的网络结构,利用self-attention加强utterance的表征能力。

  • Bi-RNN based Utterance Encoding


特征编码层为BiRNN,并且对时序模型正向和反向的last hidden进行concatenate。

  • Memory Attention


输入向量为\mathbf X=[x_1,...,x_J],memory向量为\mathbf M=[m_1,...,m_K],其中\mathbf X\in R^{J\times D}, \mathbf M \in R^{K\times D}。输出向量为
\mathbf O={\rm Softmax}(\mathbf X\phi_1(\mathbf M)^{\rm T})\phi_2(\mathbf M)
其中,\phi_1\phi_2是不同的{\rm Bi-RNN}

  • Gated Memory Attention


参考前人的工作,作者采用gating mechanism对输入和memory输出进行融合
O^{'}=G.X+(1-G).O
其中,G是激活函数为sigmoid的全连接神经网络层。

  • End-to-end GSMN


论文设计了多个hop,并且每个hop参数独立。对多个utterance进行求和得到最后的向量c

  • External Knowledge Encoding
    作者通过向量表示外部领域知识的key-value pair。例如:({k_1,k_2,...,k_M}, {v_1,v_2,...,v_N}) k_i代表key中的第i个token,v_i代表value中的第i个token。最终的向量表示为word embedding求平均[\sum\limits_{i=1}^M \psi(k_i), \sum\limits_{i=1}^{N}\psi(v_i)]

  • Dialog History and Response Relevance
    获得context的特征和response的特征之后,通过双线性变化计算匹配度
    sim(c,a_j)=c^t.M.a_j
    Pr(j|c)=e^{sim(c,a_j)}
    其中,M是训练参数。在获得context与response的相似匹配向量之后,通过softmax转换为概率分布。

Interactive Matching Network for Multi-Turn Response Selection in Retrieval-Based Chatbots

简介:作者提出了一种新的神经网络框架:IMN(interactive matching network),用于多轮对话的答案选择。模型同时使用了字符向量和词向量用于解决问答系统常见的OOV(out-of-vocabulary)问题,参考ELMO模型作者设计了multi-layer RNNs,然后将context中所有query拼接为单句,并计算与response之间的交叉信息,以此丰富模型的特征,最后通过一个时序模型聚合文本特征。实验结果证明,该模型获得了state-of-the-art的效果。

  • Word Representation Layer
    参考前人经验,作者同时采用word-level embedding和character-level embedding(采用cnn模型对字符特征进行编码得到词粒度的特征)

  • Sentence Encoding Layer
    参考ELMO模型的设计,本文采用BILSTM作为block抽取句子特征,在L个block之后,对每个block的输出进行加权求和作为词的编码特征。
    u_{k,i}^{l}={\rm BILSTM}(U_{k}^{l-1},i),i \in \left\{1,...,l_{u_k}\right\}
    r_{j}^{l}={\rm BILSTM}(R^{l-1},j),j \in \left\{1,...,l_r\right\}
    {\mathbf u}_{k,i}^{enc}=\sum \limits_{l=1}^{L}{w_l\mathbf u_{k,i}^l},i \in \left\{1,...,l_{u_k}\right\}
    {\mathbf r_j^{enc}}=\sum \limits_{l=1}^{L}w_l\mathbf r_j^l,j \in \left\{1,...,l_r\right\}
    其中,w_l为attention权值,在模型训练过程中学习得到。

  • Matching Layer
    之前大量的论文已经证明,response与context之间的交叉特征是一个非常重要的特征。基于多轮对话的answer selection最重要的一个点就是如何选择相关信息,并且过滤不相关的噪声。
    首先,将历史所有会话按照词粒度特征进行拼接
    \mathbf C^{enc}=Concatenate(\left\{\mathbf U_k^{enc}\right\}_{k=1}^{n})
    然后,计算response与context的相似矩阵
    e_{ij}=(\mathbf c_i^{enc})^{T}.\mathbf r_j^{enc}
    获得相似矩阵之后,我们就可以分别计算response和context的对齐特征。
    \bar{ \mathbf c}_i^{enc}=\sum \limits_{j=1}^{l_r}\frac{exp(e_{ij})}{\sum \limits_{k=1}^{l_r}exp(e_{ik})}\mathbf r_j^{enc},i \in \left\{1,...,l_c\right\}
    \bar{\mathbf r}_j^{enc}=\sum \limits_{i=1}^{l_c}\frac{exp(e_{ij})}{\sum \limits_{k=1}^{l_c}exp(e_{kj})}\mathbf c_i^{enc},j \in \left\{1,...,l_r\right\}

    最后,通过concat、differences 和 the element-wise products对特征进行增广。
    \mathbf C^{mat}=[\mathbf C^{enc};\bar{ \mathbf C}^{enc};\mathbf C^{enc} - \bar{\mathbf C}^{enc};\mathbf C^{enc} \bigodot \bar{\mathbf C}^{enc}]
    \mathbf R^{mat} = [\mathbf R^{enc};\bar{\mathbf R}^{enc};\mathbf R^{enc}-\bar{\mathbf R}^{enc};\mathbf R^{enc} \bigodot \bar{\mathbf R}^{enc}]
    至此,交叉特征计算完成。下一步就是将context特征转换回单句格式。
    \left\{\mathbf U_k^{mat}\right\}_{k=1}^{n}=Separate(\mathbf C^{mat})

  • Aggregation Layer
    聚合层常见的设计是在RNN之后接一个pooling层,文章这里稍作修改,采用max-pooling和last hidden的拼接特征作为输出。需要注意,这里context和response共享BILSTM模型。
    \mathbf u_{k,i}={\rm BILSTM}(\mathbf U_k^{mat},i),i \in \left\{1,...,l_{u_k}\right\})
    \mathbf r_j={\rm BILSTM}(\mathbf R^{mat},j),j \in \left\{1,...,l_r\right\}
    {\mathbf u}_k^{agr}=[{\mathbf u}_{k,max};{\mathbf u}_{k,l_{u_k}}],k \in \left\{1,...,n\right\}
    \mathbf r^{agr}=[\mathbf r_{max};\mathbf r_{l_r}]
    在获得各个句子的输出特征之后,通过一个时序模型抽取最终的聚合特征。
    \mathbf c_k={\rm BILSTM}(\mathbf U^{agr},k),k \in \left\{1,...,n\right\}
    \mathbf c^{agr}=[\mathbf c_{max};\mathbf c_n]
    最后,将context聚合特征和response特征拼接作为prediction layer的输入特征。
    \mathbf m=[\mathbf c^{agr};\mathbf r^{agr}]

  • Prediction Layer
    这里采用multi-layer perceptron (MLP)作为最后一层,返回匹配得分。

  • Training Criteria
    最后通过计算交叉墒对模型进行迭代计算
    \mathcal {L}(\mathcal {D},\Theta)=-\sum \limits_{(c,r,y)\in D}[ylog(g(c,r))+(1-y)log(1-g(c,r))]

总结

  • 目前多轮问答已经被广泛的研究并应用于生产。大体可以总结为如下几类
    • 多轮utterance拼接到一个utterance,将多轮问题转换为单轮匹配问题
    • 分层建模:先得到句子的表示,然后在通过时序模型对多轮进行建模
    • 将问题分为三部分:历史会话、当前会话和response
    • 加入外部信息丰富模型的特征
  • 模型结构可以总结为
    • Transformer替换Bi-LSTM或者Bi-GRU
    • 参考Residual-net和Dense-net,将模型的层数由单层扩展到多层

Future work

  • reinforcement learning
  • multi-task
  • deep network
  • adversarial learning
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,688评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,559评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,749评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,581评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,741评论 3 271
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,684评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,122评论 2 292
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,847评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,441评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,939评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,333评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,783评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,275评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,830评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,444评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,553评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,618评论 2 249

推荐阅读更多精彩内容