©作者 | Hanscal
研究方向 | 知识图谱、对话系统
论文标题:
DialogVED: A Pre-trained Latent Variable Encoder-Decoder Model for Dialog Response Generation
https://openreview.net/forum?id=WuVA5LBX5zf
对话回复生成中有一个众所周知的一对多问题,即单个对话上下文可以跟随多个合理的回复。现有的工作引入了潜变量来模拟这个问题。最近,PLATO 在预训练对话模型中引入了离散隐变量,并在多个下游响应生成任务中展示了显著的性能提升。除了离散潜变量外,连续潜变量也通常用于建模对话系统中的一对多映射,但将连续隐变量与大规模语言预训练结合的潜力却很少有人探索。
模型结构
▲ 屏蔽词预测的交叉熵损失函数
LSM 是 log softmax 函数。
隐变量
直观上,引入隐变量可以提供了分层的生成方式,即利用隐变量确定高级语义,然后进行解码以生成句子级别的句法和词汇细节。与变分自编码器类似,主要最小化以下两个损失项:重建损失(或负对数似然)和 K-L 正则化项:
▲ 重建损失函数
▲ KL正则化项
由于在训练过程中,KL 损失会迅速下降到 0(KL 消失或后验坍塌),隐变量空间失去表达能力,于是本文中引入了两种方法来改善 KL 散度消失这种情况,一种是 Free Bits,在 KL 损失中引入 Hinge loss 范式,即在损失函数中加入一个常量 λ,另一种是 Bag-of-words predicting,阻碍模型以自回归的范式来进行预测词而引入的损失函数。
在 Free Bits 中,为了能让更多的信息被编码到隐变量里,让 KL 项的每一维都 “保留一点空间”。具体来说,如果这一维的 KL 值太小,就不去优化它,等到它增大超过一个阈值再优化。
在 Bag-of-words Predicting 中,让隐变量以非自回归方式预测响应中的单词,即鼓励隐变量中可以尽可能包含回复的词汇信息。这个方法可以看做是增大了重建损失的权重,让模型更多去关注优化重建损失项。
▲ 第一种是Free Bits Loss,第二种是Bag-of-words Loss
作者在上下文的开头添加了一个特殊的分类标记 [CLS],其对应的隐状态表示用于表示全局的对话上下文。假设隐向量的后验分布为正态分布,并使用 MLP 层将 [CLS] 对应的应状态映射为隐空间的均值和对数方差,通过对该正态分布进行抽样,即可得到对应的隐变量,之后将这个隐变量输入到解码器中。
到此可以看到,损失函数由 4 项构成:1)编码器端的遮盖语言损失;2)基于未来预测的 n-ngram 响应生成损失;3)隐变量先验分布和后验分布的 K-L 散度损失;4)词袋预测损失。
解码器
总结
参考文献
[1] DialogVED: A Pre-trained Latent Variable Encoder-Decoder Model for Dialog Response Generation
[2] Prophetnet: Predicting future n-gram for sequence-to-sequence pre-training
[3] Optimus: Organizing sentences via pre-trained modeling of a latent space
独家定制炼丹中/Fine-Tuning
超超超超超大鼠标垫
限量 200 份
扫码回复「鼠标垫」
立即免费参与领取
👇👇👇
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧