摘要
预训练语言模型的最新进展显示出能显着改善神经响应生成。但是,现有方法通常将对话上下文视为由字符组成的线性序列,并通过token-level自注意力来学习生成下一个单词。这些token-level编码阻碍了语句中discourse-level交互的连贯性。本文提出了DialogBERT,这是一种新的对话响应生成模型,能够增强先前的基于PLM的对话模型。DialogBERT采用分层 Transformer架构。为了有效地捕捉语句中的discourse-level的一致性,我们提出了两个训练目标,与原始BERT训练相比包含了 masked utterance regression 和 distributed utterance order ranking。在三个多轮对话数据集上的实验表明,在定量评估方面,我们的方法优于BART和DialoGPT等基线。人类评估表明,DialogBERT与基线相比,能生成更加连贯,信息丰富和类似人的响应。
1.介绍
开放领域多轮对话建模是自然语言处理领域的主要研究课题。然而,为给定的对话上下文生成具有连贯性且信息丰富的响应仍然是一个挑战。学习对话语句丰富和鲁棒的上下文表示是一个关键挑战,也称为将对话上下文编码为一个能充分捕获语义向量(例如,主题和意图)的挑战。
基于Transformer架构的大规模预训练语言模型最近在各种NLP任务中取得了显着的成功。因此,越来越多的工作旨在使用预训练语言模型进行对话建模。例如,DialoGPT扩展了GPT-2以在大规模对话语料库上生成对话响应。Meena在大规模的多轮对话上使用Evolved Transformer训练了一个 sequence-to-sequence 模型。Facebook开发的Blender提供了一个在人类评估中表现良好的开放式聊天机器人配方。
但是,现有的预训练对话模型通常将对话上下文视为由字符组成的线性序列,并通过token-level自注意力来学习生成下一个单词。这种方法的一个问题是,语句之间的高级关系很难使用单词一级语义来捕获。例如,语句“coffee please”和“here you are”(如图1所示)之间的discourse-level关系是显而易见的,但通过单词一级的比较,如<coffee, you>和<please, are>,都掩盖了更高一级的关系。此外,这种token-level自注意力是低效的,因为它需要在上下文中的每个单词和解码器中的所有单词进行交互,而无视它们的距离和语义单位。
为了缓减上述问题,我们提出了DialogBERT,这是一种新的对话响应生成模型。DialogBERT采用分层Transformer结构来表示对话上下文。它首先通过一个Transformer编码器编码对话语句,然后再使用一个discourse-level Transformer来编码语句向量,从而获得整个对话上下文的表示。为了有效地捕获语句之间的discourse-level连贯性,我们提出了两个类似于原始BERT的训练目标:1)masked context regression,该目标首先随机选择一个语句进行mask,然后直接预测被mask语句的编码向量;2)distributed utterance order ranking,通过Learning-to-Rank神经网络,该目标将随机打乱的对话语句恢复成一个连贯的对话上下文。
我们在流行的多轮对话数据集中评估了DialogBERT,即Weibo,MultiWOZ和DailyDialog。实验结果表明,DialogBERT在困惑度,BLEU分和NIST分三个方面都优于基线。人类评估证明了我们的模型在捕获discourse-level语义的优势,且能生成更合理的对话响应。
2.相关工作
本工作与(1)预训练语言模型,(2)预训练的对话模型,以及(3)采用辅助多任务目标来改进预训练语言模型,这三个工作密切相关。
Pre-trained Language Models。该框架是逐渐从词向量和上下文词嵌入模型发展而来的。最近的工作在基于Transformers的大规模预训练模型上,探索了各种架构和训练目标。近期的工作提出了使用语料模式破坏的降噪自编码器。
Pre-trained Models for Dialogue Generation。预训练语言模型在对话响应生成上取得了巨大成功。具体而言,Budzianowski and Vulic (2019) 在任务型对话上探索了基于预训练语言模型Transformers。Wolf et al. (2019b) 还提出采用辅助无监督目标进行对话语言模型预训练。Henderson et al. (2019) 探索了使用预训练transformers抽取对话表示。
另一个重要的工作涉及设计特定的基于Transformer的架构,以捕获对话结构并直接在对话语料库上预训练这些架构。Mehri et al. (2019) 提出了一个分层的Transformer模型和各种无监督目标,用于预训练对话语句的上下文语义。DialogBERT与 Mehri et al. (2019)提出的方法在结构和目标上都是不同的。 DialogBERT包含一个上下文编码器,来建模对话连贯性,而Mehri et al. (2019)提出直接优化语句编码器。
最后,对话生成的新兴趋势探讨了在大规模对话语料上直接进行了基于Transformer语言模型预训练的可行性。最近的工作,如DialoGPT,Meena和Blender,都展示了在开放领域训练基于Transformer的语言生成器的强大性能。
Multi-task Learning for Pre-training。我们的工作也与辅助多任务学习有关,这能够增强语言模型的预训练。观点是使用了一个补充的目标来指导预训练模型。一种方法是通过标注数据来增加语言建模。ERNIE2是一种连续的多任务学习框架,联合有监督和无监督目标来增强语言理解。HIBERT提出使用屏蔽句子解码机制来训练分层BERT架构,以建模文档,其中目标是预测整个删除的句子。我们的工作与HIBERT的不同在于:(1)我们是使用真实语句编码来匹配mask的上下文句子表示;(2)我们提出了预测语句顺序这一新的训练目标。ELECTRA探索了同时使用判别和生成目标来学习语言建模。
3.方法
令 D = ( u 1 , u 2 , . . . , u T ) \mathcal D=(u_1,u_2,...,u_T) D=(u1,u2,...,uT)表示一个对话,其中用 C = ( u 1 , u 2 , . . . , u T − 1 ) \mathcal C=(u_1,u_2,...,u_{T-1}) C=(u1,u2,...,uT−1)表示对话上下文(即对话历史), u T u_T uT是响应。在 C \mathcal C C中的 u i = ( w 1 i , w 2 i , . . . , w ∣ u i ∣ i ) u_i=(w^i_1,w^i_2,...,w^i_{|u_i|}) ui=(w1i,w2i,...,w∣ui∣i)是一个语句,其中 w j i w^i_j wji是 u i u_i ui中的第 j j j个词。给定上下文 C \mathcal C C,我们的目标是生成与 C \mathcal C C相关的下一个语句(响应) u T u_T uT。因此,我们希望模型能够具备两个目标:1)能够学习对话上下文 C \mathcal C C的表示;2)能够学习给定 C \mathcal C C来生成 u T u_T uT的条件概率。
3.1 Hierarchical Transformer Encoder
为了使
C
C
C的表示的更好,我们使用分层Transformer编码器架构。如图1所示,两个Transformer编码器是分层嵌套的:(1)语句编码器
f
θ
(
⋅
)
f_{θ}(·)
fθ(⋅)将
C
\mathcal C
C中的每个语句编码为一个向量;(2)上下文编码器
g
φ
(
⋅
)
g_φ(·)
gφ(⋅)基于语句表示来学习上下文表示。两个编码器都基于(Vaswani et al. 2017)中描述的Transformer编码器。
对于每个
u
i
=
(
w
1
i
,
w
2
i
,
.
.
.
,
w
∣
u
i
∣
i
)
u_i=(w^i_1,w^i_2,...,w^i_{|u_i|})
ui=(w1i,w2i,...,w∣ui∣i),受BERT语言建模预训练策略的启发,我们在第一和最后一个位置分别添加
[
C
L
S
]
[CLS]
[CLS]和
[
S
E
P
]
[SEP]
[SEP]字符。因此,
w
1
i
=
[
C
L
S
]
w^i_1=[CLS]
w1i=[CLS]和
w
∣
u
i
∣
i
=
[
S
E
P
]
w^i_{|u_i|}=[SEP]
w∣ui∣i=[SEP]。 然后,通过嵌入层将
u
i
u_i
ui映射到连续空间上:
e
i
=
(
w
1
i
+
p
1
,
w
2
i
+
p
2
,
.
.
.
,
w
∣
u
i
∣
i
+
p
∣
u
i
∣
)
(1)
\textbf e_i=(\textbf w^i_1+\textbf p_1,\textbf w^i_2+\textbf p_2,...,\textbf w^i_{|u_i|}+\textbf p_{|u_i|})\tag{1}
ei=(w1i+p1,w2i+p2,...,w∣ui∣i+p∣ui∣)(1)
其中
w
j
i
\textbf w^i_j
wji和
p
j
\textbf p_j
pj分别是
w
j
i
w^i_j
wji的单词和位置嵌入。然后,语句编码器
f
θ
(
⋅
)
f_θ(·)
fθ(⋅)将
e
i
\textbf e_i
ei转换为隐藏表示列表
(
u
1
i
,
u
2
i
,
.
.
.
,
u
∣
u
i
∣
i
)
(\textbf u^i_1,\textbf u^i_2,...,\textbf u^i_{|u_i|})
(u1i,u2i,...,u∣ui∣i):
u
1
i
,
.
.
.
,
u
∣
u
i
∣
i
=
f
θ
(
e
i
)
.
(2)
\textbf u^i_1,...,\textbf u^i_{|u_i|}=f_{\theta}(\textbf e_i).\tag{2}
u1i,...,u∣ui∣i=fθ(ei).(2)
我们使用第一个隐藏表示
u
1
i
\textbf u^i_1
u1i(即
[
C
L
S
]
[CLS]
[CLS]字符的表示)作为语句
u
i
u_i
ui的表示。类似于
u
i
u_i
ui中每个单词的表示,我们同样考虑了语句的位置。因此,
u
i
u_i
ui的最终表示是
u
i
=
u
1
i
+
p
i
\textbf u_i =\textbf u^i_1+\textbf p_i
ui=u1i+pi。
类似于语句编码器,上下文编码器
g
φ
(
⋅
)
g_φ(·)
gφ(⋅)是在语句表示上应用的另一个Transformer编码器。如图1所示,在编码语句之后,上下文编码器将语句表示序列
(
u
1
,
u
2
,
.
.
.
,
u
∣
C
∣
)
(\textbf u_1,\textbf u_2,...,\textbf u_{|\mathcal C|})
(u1,u2,...,u∣C∣)转换为上下文相关的语句表示
(
h
1
,
h
2
,
.
.
.
,
h
∣
C
∣
)
(\textbf h_1,\textbf h_2,...,\textbf h_{|\mathcal C|})
(h1,h2,...,h∣C∣):
H
=
h
1
,
.
.
.
,
h
∣
C
∣
=
g
φ
(
u
1
,
.
.
.
,
u
∣
C
∣
)
(3)
\textbf H=\textbf h_1,...,\textbf h_{|\mathcal C|}=g_φ(\textbf u_1,...,\textbf u_{|\mathcal C|})\tag{3}
H=h1,...,h∣C∣=gφ(u1,...,u∣C∣)(3)
等式3是使用分层双向Transformer编码器编码对话上下文的最终输出。
上面的分层Transformer架构是HIBERT在文档生成中使用的。虽然两种方法都以分层方式编码文本,但我们的目标和训练方法都显着不同。HIBERT专为文档摘要而设计,通过对训练文档中被MASK的句子进行逐字解码。相比之下,DialogBERT有两个专门为对话连贯性建模而设计的新损失项,即masked utterance regression和distributed utterance order ranking。
在下一节中,我们将介绍DialogBERT的无监督训练目标。
3.2 Training Objectives
为了在对话上下文中捕获discourse-level的连贯性,除了响应生成的传统目标之外,我们提出了两种受BERT启发的新目标,以下三子节将依次描述这些目标。
3.2.1 Next Utterance Generation (NUG)
作为响应生成的主要目标,我们的第一个训练目标是在给定对话上下文的条件下生成下一个语句(即响应)。如图1所示,我们首先将分层编码器应用于上下文
C
\mathcal C
C并获得其上下文相关的语句表示
(
h
1
,
h
2
,
.
.
.
,
h
∣
C
∣
)
(\textbf h_1,\textbf h_2,...,\textbf h_{|\mathcal C|})
(h1,h2,...,h∣C∣)。然后,再使用Transformer解码器
p
ψ
(
⋅
)
p_ψ(·)
pψ(⋅)生成下一个语句
u
T
=
(
w
1
T
,
.
.
.
,
w
N
T
)
u_T=(w^T_1,...,w^T_N)
uT=(w1T,...,wNT),其中
w
1
T
w^T_1
w1T也是一个与语句编码器一致的
[
C
L
S
]
[CLS]
[CLS]字符。解码器基于
w
1
T
,
.
.
.
,
w
j
−
1
T
w^T_1,...,w^T_{j-1}
w1T,...,wj−1T和
h
1
,
.
.
.
,
h
∣
C
∣
\textbf h_1,...,\textbf h_{|\mathcal C|}
h1,...,h∣C∣,来估计下面的概率分布,以预测语句中的每一个单词
w
j
T
w^T_j
wjT:
p
(
u
T
∣
C
,
θ
,
ϕ
,
ψ
)
=
∏
j
=
1
N
p
ψ
(
w
j
T
∣
w
<
j
T
,
H
)
,
(4)
p(u_T|\mathcal C,\theta,\phi,ψ)=\prod^N_{j=1}p_{ψ}(w^T_j|w^T_{\lt j},\textbf H),\tag{4}
p(uT∣C,θ,ϕ,ψ)=j=1∏Npψ(wjT∣w<jT,H),(4)
其中
N
N
N表示用于解码的最大序列长度,而
θ
θ
θ,
φ
φ
φ和
ψ
ψ
ψ分别表示语句编码器,上下文编码器和解码器的模型参数。
最后,NUG任务旨在最大限度地减少解码器中的交叉熵损失:
L
d
e
c
(
θ
,
φ
,
ψ
∣
w
1
T
,
.
.
.
,
w
N
T
,
C
)
=
−
∑
i
=
1
N
l
o
g
p
ψ
(
w
i
T
∣
w
<
i
T
,
H
)
(5)
\mathcal L_{dec}(\theta,φ,ψ|w^T_1,...,w^T_N,\mathcal C)\\ =-\sum^N_{i=1}log~p_{ψ}(w^T_i|w^T_{\lt i},\textbf H)\tag{5}
Ldec(θ,φ,ψ∣w1T,...,wNT,C)=−i=1∑Nlog pψ(wiT∣w<iT,H)(5)
3.2.2 Masked Utterance Regression (MUR)
与BERT中的MLM类似,我们将masked utterance regression作为增强上下文表示学习的辅助任务(图2)。给定对话上下文
C
=
(
u
1
,
u
2
,
.
.
.
,
u
T
−
1
)
\mathcal C=(u_1,u_2,...,u_{T-1})
C=(u1,u2,...,uT−1),我们随机选择
C
\mathcal C
C中的一个话语,并且,被选中的话语进行如下处理:1)有80%的概率,用屏蔽语句
[
C
L
S
,
M
A
S
K
,
S
E
P
]
[CLS,MASK,SEP]
[CLS,MASK,SEP]替换;2)有10%的概率保持不变,以便在测试期间(不使用屏蔽语句)模拟输入上下文;3)有10%的概率随机从训练集中选择语句进行替换。
在获得屏蔽上下文
C
~
=
(
u
~
1
,
u
~
2
,
.
.
.
,
u
~
∣
c
∣
)
\tilde C=(\tilde u_1,\tilde u_2,...,\tilde u_{|c|})
C~=(u~1,u~2,...,u~∣c∣)后,我们基于
C
~
\tilde C
C~预测原始的语句向量。 我们首先将分层编码器应用于
C
~
\tilde C
C~并获得其上下文相关的语句表示
(
h
~
1
,
h
~
2
,
.
.
.
,
h
~
∣
C
∣
)
(\tilde {\textbf h}_1,\tilde {\textbf h}_2,...,\tilde {\textbf h}_{|\mathcal C|})
(h~1,h~2,...,h~∣C∣)。然后,我们使用一个全连接的神经网络将这些表示转回原始的语句向量:
u
^
i
=
W
h
~
i
+
b
(6)
\hat {\textbf u}_i=\textbf W\tilde {\textbf h}_i+\textbf b\tag{6}
u^i=Wh~i+b(6)
其中
u
^
i
\hat{\textbf u}_i
u^i表示预测的原始语句矢量,
W
\textbf W
W和
b
\textbf b
b是可训练参数。
最后,该目标旨在最小化被屏蔽语句的估计表示与原始向量之间的均方误差(MSE):
L
m
u
r
(
θ
,
ϕ
,
W
,
b
∣
u
~
1
,
.
.
.
,
u
~
∣
C
∣
,
C
,
C
~
)
=
1
∣
C
~
∖
C
∣
∑
u
i
∈
C
~
∖
C
∣
∣
u
i
^
−
u
i
∣
∣
2
2
(7)
\mathcal L_{mur}(\theta,\phi,\textbf W,\textbf b|\tilde {\textbf u}_1,...,\tilde {\textbf u}_{|\mathcal C|},\mathcal C,\mathcal {\tilde C})\\ =\frac{1}{|\mathcal {\tilde C}\setminus \mathcal C|}\sum_{u_i\in \mathcal {\tilde C}\setminus \mathcal C}||\hat{\textbf u_i}-\textbf u_i||^2_2\tag{7}
Lmur(θ,ϕ,W,b∣u~1,...,u~∣C∣,C,C~)=∣C~∖C∣1ui∈C~∖C∑∣∣ui^−ui∣∣22(7)
其中
C
~
∖
C
\mathcal {\tilde C}\setminus \mathcal C
C~∖C表示被屏蔽的语句集合,
θ
θ
θ,
ϕ
\phi
ϕ,
W
\textbf W
W和
b
\textbf b
b是可训练参数。