Press "Enter" to skip to content

《Flow-based Transformer》论文阅读笔记

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

Source : ICML 2020: Learning to Encode Position for Transformer with Continuous Dynamical Model

 

Code : xuanqing94/FLOATER

 

Key insight : 针对Transformer的位置编码模块,作者提出了一种基于 连续动力系统 的位置编码方法:FLOATER。该方法用一个 神经常微分方程(Neural ODE) 建模了位置编码在不同位置索引上的演化过程,FLOATER具有如下特点:

Inductive: 显式引入了顺序性的归纳偏差,能够外推到任意长度的文本上去
Data-driven & Parameter Efficiency: 是一种数据驱动的编码方式,且额外增加的参数量与文本长度无关
Training Efficiency: sinusoidal encoding可以看作是FLOATER的一个特例,因此训练阶段可以使用预训练好的Transformer初始化FLOATER
Weight-sharing: 可以在不增大参数量的条件下将位置信息直接注入到每一层中

Introduction

 

RNN和LSTM通过按顺序读取输入序列的方式来包含顺序性归纳偏差,非自回归的Transformer由于其置换等价的特性 而对位置不够敏感,对于一些对位置信息要求较高的任务来说,如何有效地对Transformer编码位置信息是一个关键的问题。当前流行的位置编码主要包括如下三种解决方案:

 

1. Sinusoidal Encoding

 

Benefits:

 

 

    1. Smooth: 三角函数是光滑的:

 

 

 

 

    1. Inductive: 显式刻画了位置的顺序信息,可直接外推到长句子上。

 

 

Drawbacks:

 

 

    1. Parameter-free: 是预定义的函数,不包含可学习的参数,不够灵活。不过对于NMT这类对位置信息要求不太高的任务是够用的。另外,

Universal Transformer

ALBERT

    1. 发现可以在不增加参数量的前提下将sinusoidal encoding注入每一层可以提升模型表现:

 

 

 

2. Position Embedding

 

Benefits:

 

 

    1. Data-driven: 与词向量的学习类似,通过对各个位置构建一个

    1. 的映射得到位置嵌入矩阵

    1. ,模型直接从数据中自动学习位置编码。比起sinusoidal encoding,position embedding更适合词汇级任务(BERT、

RoBERTa

    1. )。由于额外参数量较大,还没有人尝试将position embedding应用到每一层上去。

 

 

Drawbacks:

 

 

    1. Bounded: 需要额外增加

    1. 的参数量,且参数量增长速度为

    1. ,因此需要预先指定输入文本的最大长度(如BERT、RoBERTa设定的

    1. ),所以无法给出

 

    1. Non-smooth: 和词一样,不同位置的编码是独立训练得到的,然而位置和词并不完全对等,因为词汇的索引是根据词典的编排顺序来的,每个词是独立的,而位置索引天生就有顺序性。因此这样的方式不能充分建模位置的顺序关系,模型只能分辨出两个位置的不同,而不知道它们的相对关系是什幺。

 

 

3. Relative Encoding

 

Benefits:

 

 

    1. Data-driven: 是从数据中学习的

 

    1. Unbounded: 更直接地建模了词与词之间的相对位置关系,适用于长句子的位置编码(

Transformer-XL

    1. )

 

 

Drawbacks:

 

 

    1. Less flexible: 需要额外增加

    1. 的参数量,因此需要预先指定最大相对距离

    1. 防止参数量过大,这导致了距离大于

    1. 的token之间位置依赖关系的丢失。

 

    1. Non-smooth: 学习到的位置编码不光滑,但个人认为位置编码的不光滑并不代表实际效果就不好。

 

4. complex embedding

 

在本文发表的早些时候, ICLR 2020: Encoding word order in complex embeddings 提出了一种以单词 和该单词所在位置 为自变量的连续复值函数来联合编码词汇和位置信息:

 

 

其中振幅 ,波长 ,相位 均为需要学习的参数, 可以用预训练词向量来初始化。这篇文章想解决的问题和本文是相似的,但分别采用的是完全不同的方法,不同的方法各有优缺点,由于实验数据集的不同,也无法对比它们的实际效果。

 

Benefits: 该位置编码函数能够使得同一个单词在相邻的位置有相似的向量表示,能够满足位置的一些基本性质,另外,通过训练 ,模型还拥有动态调节单词 对位置的敏感程度的能力。

 

Drawbacks: 该方法将嵌入矩阵的规模增大了三倍,显着增加了参数量。

 

FLOw-bAsed TransformER (FLOATER)

 

综上,本文作者认为一个好的位置编码应满足如下的三个条件:

Inductive: 能够处理比训练过程中看到的任何序列都长的序列
Data-driven: 位置编码应该从数据中学习(learnable)
Parameter Efficient: 位置编码引入的额外参数量应该不受文本长度的影响,模型尺寸的过度增加会影响泛化能力

本文提出了一种将位置编码建模为一个连续动力系统的方法,该方法几乎克服了上述编码方式的所有缺点, 一方面显式引入了顺序性的归纳偏差,另一方面位置编码是通过训练得到的,且每个位置的编码不是独立学习的,另外额外增加的参数量不会随着序列的长度而变化,且能够自然外推到长句子上。

Position Encoding with Dynamical Systems

 

Transformer中的位置编码可以看作是一个离散序列 ,我们可以将该序列连续化为 ,为了建立序列的自相关性,我们使用常微分方程(Neural ODE)构建一个连续动力系统:

 

 

它的积分形式应该更好理解:

 

 

系统的初始状态为 是一个由 定义的神经网络,其输入为 。给定合适的初始状态 和演化规则 ,常微分方程存在唯一解。

 

离散的位置编码 可以通过取 上的值得到,我们可以简单地将 设为 ,其中 是一个超参数。这样,我们就可以根据 解出

 

 

在训练时采用 Adjoint Method 计算 的梯度:

 

 

被称为adjoint state,可以通过求解adjoint equation得到:

 

 

作者在NMT任务上使用步长为 的Runge-Kutta法,在 GLUERACE 基准任务上使用中点法来求解上述方程。

Parameter Sharing among Blocks

 

之前提到可以在Transformer的每一层都注入位置信息,不过该方法只适用于sinusoidal embedding,因为每增加一层的位置信息,用于位置编码的参数量就会加倍,虽然可以让每一层共享参数,但这样做的话每一层的位置编码都会是一样的,不会带来什幺额外信息。

 

但作者提出的连续动力系统能够在共享参数的同时,使得每一层的位置编码是不一样的,这是因为虽然每一层的 是一样的,但是初始状态可以不同 ,这样求解得到每一层的位置编码就是不一样的:

 

 

其中每一层的Neural ODE共享参数:

 

 

但是作者在文中并没有给出 的取值方法。

 

Compatibility and Warm-start Training

 

作者发现sinusoidal encoding可以看作是FLOATER的一个特例:

 

 

因此可以考虑将其用于模型训练的参数初始化。原始Transformer每一层的查询矩阵 可以表示为

 

 

其中 为sinusoidal encoding,我们可以以同样的方式表示FLOATER,并将其分解为sinusoidal encoding和偏置项之和:

 

 

因此FLOATER等价于在原始Transformer的基础上给sinusoidal encoding加上额外的偏置项 ,所以可以考虑直接对偏置项建模:

 

 

然后设定每个位置的编码的偏置为 ,可以发现,当 时, ,此时FLOATER就退化为sinusoidal encoding。

 

这样,FLOATER就和原始Transformer是兼容的,我们知道原始Transformer没有自回归结构,训练是非常快的,而加入了Neural ODE模块后的FLOATER训练速度会显着下降,所以我们可以用预训练好的模型来初始化FLOATER,然后直接在下游任务上微调模型,而不用从头训练FLOATER,这样也可以直接对比作者提出的方法是否能在原模型的基础上带来进一步改进。

 

Experimental Results

 

作者从机器翻译、语言理解和问答三个方向测试了FLOATER模型,对于机器翻译任务,作者将原始Transformer作为基础模型,对于语言理解和问答任务,作者将RoBERTa作为基础模型。模型均设置完全相同的超参数和checkpoint,唯一的不同就是在fine-tune阶段,FLOATER需要优化位置编码中的Neural ODE。

 

Neural Machine Translation

 

Transformer采用的位置编码为sinusoidal encoding,实验结果表明不同位置编码方式的有效性排序为FLOATER sinusoidal encoding position embedding。另外可以注意到对每一层都注入位置信息会带来性能的提升,然而Fixed-length Position Embedding是例外,这是由于引入的额外参数过多会导致模型过拟合。

Language Understanding andQuestion Answering

 

RoBERTa采用的位置编码为position embedding,因此具有输入文本长度限制 ,可惜以RoBERTa作为初始化模型的FLOATER并不能突破这个长度限制,因为FLOATER训练得到的是偏置项,而不是完整的位置编码。实验表明FLOATER能够取得与RoBERTa相近或更好的结果,尤其是在大模型上,FLOATER的优势更明显。

More Discussions and Analysis

 

How inductive is FLOATER?

 

为了研究FLOATER的泛化能力有多好,作者从WMT14 En-De数据集中取出短句( ,占数据集的98.6%)训练模型,并在长句上测试模型,测试结果表明FLOATER在长句翻译的表现上显着优于其他位置编码方式。

Is RNN a good alternative to model the dynamics?

 

RNN和Continuous Dynamical Model有很多相似之处,它们都有递归的特性和外推的能力,因此作者也尝试了用RNN来做位置编码:

 

 

其中 分别代表第 个位置的位置编码和输入, 可以是scalar,也可以是vector,作者认为将其表示为sinusoidal vetor更好,最终实验结果显示FLOATER更具有优势。不过作者认为将vector作为输入更好,却没有在相同参数量下与FLOATER作对比。

What does each position encoding look like?

 

下图展示了不同位置编码方式得到的编码矩阵,可以注意到position encoding底部几乎是常数,这是由于训练集中长文本太少,位置编码得不到充分的训练,而FLOATER的编码看起来更光滑,RNN存在梯度消失问题,低维度的位置特征没有得到充分学习。

Remarks on Training and Testing Efficiency

 

Neural ODE带来的额外时间开销是不容忽视的,即使选择简单的 (两个全连接层+一个非线性变换层)也会大大增加时间开销。因为Neural ODE需要调用微分方程求解器求解,难以充分利用GPU的并行计算能力。

 

实际上,作者尝试只对偏置建模,使用原始Transformer来初始化FLOATER也是为了避免从头训练模型,另外作者还通过用小权重初始化 ,以及单独训练位置编码层,增大位置编码层的学习率,测试时使用预先计算的位置编码等手段来减少时间开销。最终,与原始Transformer相比,FLOATER只增加了20%-30%的训练时间。

 

Discussing

本文应该是少数几篇将Neural ODE用于NLP的论文,一方面是由于自然语言高度离散化的特点,流形假设可能并不实用,另一方面,Neural ODE目前尚处于理论发展阶段,还没有得到广泛的应用,不像深度学习那样已经探索出了非常多的有效的正则和优化技巧。 Understanding and Improving Transformer From a Multi-Particle Dynamic System Point of View 曾利用动力系统来解释并优化Transformer,取得了不错的结果。
就位置编码的后续处理方式来说,本文依旧选择将位置编码向量和词向量相加,但 TENER 指出这种方式可能会导致位置编码信息在后续变换中丢失,同时已经有不少论文探索了位置编码的其他融合方式。从这个角度来看,complex embedding似乎更高明一些。
Transformer的模型容量是很大的,RoBERTa就指出只要给模型提供更多的数据,训练更长的时间,模型就能得到进一步的性能提升。可以猜测,当模型的体量越来越大,数据越来越丰富,模型有能力直接从数据中学习位置信息时,更先进的位置编码方式所拥有的改进空间可能会越来越小。

Reference

 

香侬读 | 基于连续动态系统学习更加灵活的位置编码

 

一起读论文 | Complex-order: 一种新的位置编码方式

 

Encoding Word Order in Complex Embeddings

 

Transformer的物理解释

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注