神经序列生成的同步双向推理
是自动化所张家俊老师发表于 TACL(Transactions of ACL是期刊) 2019 的论文,该论文研究的问题是在序列生成任务的解码过程中如何进行双向解码。文章提出一种新的 beam search 算法用于双向解码,提出了改进 transformer 进行双向解码的 BIFT model,在机器翻译和文本摘要任务上都取得明显的提升。文中分别给出了详细的实验,并附有开源实现代码。
Abstract
在本文中,我们提出了一种同步双向推理模型,它可以同时和交互地使用L2R和R2L解码生成输出。 我们首先介绍一种新颖的波束搜索算法,以同时适应L2R和R2L推理。 在推理期间的每个时间步长处,每个半波束分别保留来自L2R和R2L推断的假设,并且通过利用来自两个方向的已经预测的输出来生成每个假设。 L2R和R2L推断之间的相互作用是通过同步注意模型实现的,该模型试图在推理期间同时利用历史和未来的顺序预测。图1给出了所提出的同步双向推理模型的简单说明。 图1右侧的中间部分颜色是我们模型的核心。 L2R和R2L推断以彩色部分所示的隐式方式相互作用。 箭头表示信息传递流程。 黑色的实线箭头表示传统的历史背景依赖性,而彩色的虚线箭头表示依赖于其他推理方向的未来的上下文。
算法1显示了同步双向推理模型的波束搜索过程。 工作流程类似于单向波束搜索。 我们保留了三种列表。B用于存储完整的假设。 (B l-tmp,B r -tmp)和(B l-part,B r-part)用于分别在L2R和R2L推断的每个解码时间步长处维持临时和部分假设。 算法1中的第2-9行是波束搜索算法的主要部分。 在时间步长i,L2R和R2L推断并行但交互地执行以从先前时间步(第3-4行)扩展部分假设B i-1l-part和B i-1r-part。 然后,根据临时假设列表(B i-1l-tmp,Bi-1r-tmp)(第5-6行)更新完整的假设列表B和部分假设列表B il-part,Bir-part。
算法2和算法3分别详细描述了假设展开过程和假设更新过程。
transformer概述
Transformer也遵循编码器 - 解码器架构。 编码器包括L个相同的层,每个层由两个子层组成:自注意子层,后面跟着前馈子层。
解码器还包括L个相同的层。 每层有三个子层。第一层是蒙面自我关注机制(masked self-attention mechanism)。 第二个是解码器 - 编码器关注子层,第三个是前馈子层(在编码器和解码器中,对每一个子层执行残差连接和层归一化。)。
显然,关键部分是注意力机制(事实上,我们使用了多头注意,为了简单起见,我们只介绍了基本注意)。 这三种注意机制可以形式化为相同的公式。
image.png
其中q、K、V分别表示query,键列表和值列表。dk是键的维数。
对于编码器中的自注意,查询,键和值来自同一层。 例如,如果我们在第j个位置计算编码器中第一层的输出。 query是向量xj 。 键和值相同,都是embeding matrix x = [x0 ... xm-1]。 使用上述公式后跟前馈网络,我们可以得到第二层的表示。 在L层之后,我们获得输入上下文C = [h0,...,hm-1]。
译码器的mask自注意与编码器相似,只是在第i个位置的查询只能注意到第i个位置之前的位置,因为在自回归单向推理中,第i个位置之后的预测是不可用的。
image.png
编码器解码器的注意机制与基于lstm的Seq2Seq架构的注意机制相同。query是masked self-attention子层 z 的输出。键和值是相同的编码器上下文C。然后应用前馈子层以产生整个层的输出。 在L这样的层之后,我们获得最终的隐藏状态zis。 然后采用Softmax函数(等式8)来预测输出y i。 图3中的左侧部分描绘了变压器的整体架构。
conclusion
这项工作为序列生成任务提出了一个同步双向推理模型。我们首先提出了一种用于序列生成的同步双向波束搜索算法,其中从左到右和从右到左的解码并行但交互地执行。我们已经在基于LSTM和基于变压器的seq2seq架构上利用了同步双向推理模型。我们还提出并研究了两种参数优化策略。机器翻译和抽象概括的综合实验表明,我们提出的同步双向推理模型明显优于强基线。深入分析进一步表明,我们的模型确实可以在推理过程中充分利用历史和未来的预测。在未来的工作中,我们计划将我们的同步双向推理模型应用于其他顺序生成任务,如问答,聊天机器人和图像字幕。
网友评论