NLP位置编码
- Learned Positional Embedding
- Sinusoidal Position Embedding
- Relative Position Representations
- 实验结果
- Transfomer-XL中的相对位置编码
- 实验结果
- Complex Embeddings
- 实验结果
- 位置特征与内容特征间的关系
- 去掉内容特征
- 将embedding相加改为拼接
- 拆分位置特征和内容特征
- 在测试时分别disable位置特征和内容特征
以Transfomer和Bert为首的一系列深度模型不断验证着Attention模式在NLP领域的成功。Attention模式与传统的RNN模式相比,优点确实很多。比如不受长距离约束,可以并行化加快速度等等。
一般来说,一个自然语言的句子,它所携带的信息 = 组成句子的词的信息 + 语法(or 语序)信息。
RNN看似只处理了词语的信息,但其实它是通过顺序输入的方式得到了词语间的语序信息,这种方式是优点是自然,不需要其他人工干预;但缺点是无法掌控获得的语序信息,而且RNN受长距离约束和难以并行等问题也是由顺序输入带来的。
Attention则摒弃了原始句子的自然语序,不同词间的信息交互不受自然语序的影响。但直接抛弃语序信息在很多任务里是不可取的,例如翻译任务,情感分类任务等。因此大部分采用Attention思想的模型需要配一个“位置编码”来保留句子的语序信息,这篇文章我们就来介绍一些比较常用的位置编码方式。
Learned Positional Embedding
BERT中使用的位置编码,随机初始化position embedding,然后随着模型训练得到更新。
优点:简单方便,无需额外开销
缺点:1.这样得到的位置编码是独立训练得到的,不同位置的编码向量没有明显的约束关系,因此只能建模绝对位置信息,不能建模不同位置之间的相对关系。
2.句子长度不能超出位置编码的范围
Sinusoidal Position Embedding
这是Transformer模型里用到的位置编码模式,对每一个位置,它的位置编码是:
首先我们注意到由于它的定义方式,可得:
重新记 ,那么:
即给定相对位移k,PE(pos+k)可以用PE(pos)的线性表示。
此外,根据Attention的计算方式,和这两个位置的相关性由描述:
下图是不同d(位置编码向量长度)下, 关于 的图像:
但这个的问题首先在于,是一个偶函数,也就是说等于或对位置相关性是没有影响的,但实际上,我们希望位置编码是可以区分前后的。
第二,在实际的Transfomer Attention计算中,input embedding首先需要经过一个线性映射:
因此真正使用的并不是,而是。初始化时均是随机初始化的,所以大概是:
注: 观察到和的每个值是在[-1,1]之间,因此把随机矩阵的值也取在[-1,1]
可以发现当线性变换矩阵是随机初始化时,就跟没有了清晰的相关性。
Note:使用Sinusoidal Position Embedding和Learned Positional Embedding在实验表现上区别不大,因此后面的一些论文如BERT,处于简便性考虑,采用的是Learned Positional Embedding
- 增加约束,是否可以在解决上述问题时,不影响模型其他方面的效果?
Relative Position Representations
Paper: Self-Attention with Relative Position Representations (Shaw et al.2018)
Transformer中的Self-attention可以记作:
由于上面提到的Sinusoidal Position Embedding会被后面隐藏层的线性变化扰乱其与相对位置的关系,因此一个自然的想法是在每个隐藏层都再加上相对位置编码的信息。因此Transfomer的研究人员又提出了Relative Position Representations(以下简称RPR),在其中设计了一个 Relative embedding table(假设句子长度为6):
将这个Relative embedding table记作,其中每个都是d维向量,那么带RPR的Self-attention变为:
其中也是一个跟形状一样的table。
结合公式不难发现,和的目的就是分别在计算和的时候加上一个相对位置量,比如对于句子“我喜欢吃苹果”,那么“吃”对于“我”的相对位置量就是,"喜"对于"欢"的相对位置量就是。论文设计的这个Relative embedding table其实就是要保证相对距离相同的两个位置间的相对位置量是一样的,在这个基础上矩阵和都是可以跟随模型训练而更新的。
而且论文还作了一个假设(后由实验验证),设置一个超参k,当相对距离大于k之后,就认为相对位置量不再随着相对距离的增大而变化,而是统一设为或者。
最后不同的Head之间的Relative embedding table是共享的,因此每一层的位置编码参数只有个。
##########################################################################################
与Sinusoidal Position Embedding比较
- 正余弦编码仅加在了embedding层,而如上面所论证的,初始的位置编码会在后面被线性变换所干扰。而RPR是在每一层计算attention时都加上了relative position embedding
- 其“缺点”是超出截断距离的相对位置量不再变化(受限于它的定义),而正余弦编码的好处正是不受限于相对位置的大小
##########################################################################################
实验结果
- 在 WMT14 英德数据集上 base model BLEU 提升了 0.3, big model 提升了 1.3
- Ablation 实验中,改变最大位置距离 k,显示 k 从 0-4 增大的过程 performance 有明显的提升,之后再增大 k 提升不明显
- Attention bias 中的相对项提高更多的 performance, 而 SoftMax 之后再 Value 上加的那个相对项提升的性能略少
Transfomer-XL中的相对位置编码
Paper: Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context(2019)
由于RPR的实验表明Value上加的相对位置编码对实验结果影响不大。因此Transfomer_XL中就直接放弃了对Value项的修改,而是专注于Attention Bias项:
其中和分别是词向量和位置编码。
Transfomer-XL中对上式做了以下修改:
- 将绝对位置编码改为相对位置编码,其中是固定的不可训练量,其定义同正余弦编码
- 由于已经将绝对位置编码改成了相对位置量,因此绝对位置量需要保证对所有其他位置来说是不变的,因此将第三项里面的整体替换成一个可训练量(因为是可训练的)。同理将第四项里的也替换成一个可训练量
- 将key的embedding和positional encoding 分别采用了不同的线性变换。其中对应于key的embedding的线性映射矩阵,对应与key的positional encoding的线性映射矩阵。
这样的得到的Attention Bias项具有了很好的解释性:
- 第一项 ,表示内容偏差
- 第二项 ,表示基于内容的位置偏差
- 第三项 ,表示基于位置的内容偏差
- 第四项, 表示位置偏差
与RPR的比较
将RPR的公式展开
只对应了Transfomer-XL中的第一项和第二项,所以Transfomer-XL中的位置编码可以说是RPR的拓展。而且Transfomer-XL使用了正余弦编码来表示相对位置量,因此它是不受限于数据长短的,而RPR中长度超过一定位置就只能截断。
##########################################################################################
实验结果
比较了原版Transformer和Transformer-XL,采用不同position encoding方式。
保证模型大小一致的前提下,Transformer-XL在采用自己的位置编码时,比采用RPR的位置编码,PPL减小了1.2
Complex Embeddings
Paper: Encoding word order in complex embeddings (2020)
前面几种位置编码方式依然是在“词向量+位置向量”的范畴里面探索位置向量可能的形式,而这篇论文直接跳出了这个框架,提出了一个全新的假设:
记一个单词在词表里的索引为,它在文章里的位置是。那么上面的对词向量和位置向量的表达方式可以记作:
其中
而Complex Embeddings里把拓展为一个光滑的二元函数:,展开变成:
下面将简记为g,因此是关于位置的函数。
为了使得能够体现位置间的相对关系,对任意我们希望存在一个函数 满足
也就是说可用和来表示。论文中为了简化问题,将限定为线性变换,i.e. 存在一个函数,满足。以上性质被称为Position-free offset transformation第二个性质比较trivial,要求是有界的,i.e.
接下来论文给出了一个满足以上两个性质的的等价形式:
##########################################################################################
proof: 充分性,由于满足Position-free offset transformation性质,
,不妨记
又因为有界,因此。得证。
必要性, 已知,那么不妨取,则有
因此Position-free offset transformation性得证。
再有,,因此有界性也得证。必要性证毕。
##########################################################################################
将写成极坐标形式
但当时,当 很大时,词向量将收敛到零向量,即无法对任意位置都计算出合理的词向量为了避免这种情况,论文中把取为1
所以
重新记为
其中都是可训练参数,论文通过实验发现直接将置零的效果比将其加入训练要好一点,因此我们只需要看
可解释性
- 只和词在词表中的索引有关,表示词的含义,和普通的词向量对应。
- 表示词对位置的敏感程度。当很小时,同一个词在不同位置的词向量几乎是常量。这时的复值词向量对位置不敏感,和普通的不考虑位置信息的词向量相似。当很大时,复值词向量对位置非常敏感,会随位置变化而剧烈变化。因此可以看作是调节词向量与位置向量比重的自适应参数
图中的p=,波浪线与虚线的交点即不同pos的取值,可以看出周期p与向量对位置的敏感度相关
与Sinusoidal Position Embedding的关系
Sinusoidal Position Embedding的定义为
将中的取为,那么
所以一定程度上Sinusoidal Position Embedding等级于是Complex Embeddings的一种特殊情况。
实验结果
##########################################################################################
实验1:文本分类,对比了不使用位置编码,使用可学习的位置编码(PE),使用三角函数计算得到的位置编码(TPE),不使用位置编码的复值词向量(Complex-vanilla)和本文提出的复值词向量(Complex-order)五种设置下FastText,LSTM,CNN和Transformer
结论:三角 PE 与 Train PE 几乎没什么区别。 Complex order 对模型有一定提升,但不是特别多
##########################################################################################
实验2:在WMT-16 EN-DE数据集上进行了机器翻译任务的实验
结论:使用复值词向量的Transformer相比一般的Transformer有1.3个BLEU的提升
##########################################################################################
实验3:在text8数据集上进行了语言模型实验
结论:使用复值词向量的Transformer-XL相较使用词向量加位置编码的Transformer-XL有明显提升
位置特征与内容特征间的关系
Paper: Constituency Parsing with a Self-Attentive Encoder
尽管这篇文章主要是提出了一种新型的句法分析模型。但其中关于位置编码的实验比较有趣,这里也记录一下。
我们都知道Transformer模型里的self-attentive结构如下:
其中,是内容特征,是位置特征。然后利用分别计算:
最后根据attention公式:
来获取带自注意力的特征。
去掉内容特征
为了了解位置特征和内容特征的relative importance,文章做了一个实验,在计算和的时候,只保留了位置特征,而去掉了内容特征,而计算仍保留了内容特征,即:
解释:相当于在计算每个词的attentive weight时,只考虑位置信息,而不考虑词语本身的信息。由于本文的任务是做句法分析,因此是在测试只考虑位置信息的attentive weight会对结果有多大的影响。
结果:F1 score只降了0.27
结论:由于多头结构的存在,即使attentive weight只考虑了位置信息,这个结构也相当于一个多层的cnn,而且value矩阵仍保留了内容特征,因此结果应该依然不错。但是只有这么小的drop依然出乎作者意料之外。
##########################################################################################
将embedding相加改为拼接
接下来,作者猜想直接将两种特征相加,可能会让其中一种信息占主导作用,模型不能很好的找到两种特征重要性的平衡。
事实上,观察注意力权重 ,不难发现:
其中的交叉项
因此这个实验里,作者尝试将两种特征由相加改成拼接的方式:,其他不变。
结果:比相加的方式还降了0.07个F1 score
结论:事实上,adding 和 concatenation 在高维度上的表现是差不多的,尤其是当结果会立马乘上一个矩阵之后,因为这样会混合里面的信息。
##########################################################################################
拆分位置特征和内容特征
拼接方法效果不行,文章中又尝试了一种新的分解方式,对于,将参数矩阵也进行拆分:
包括后面的也变成:
对于一个 attention head 来说,拆分后的情况如图所示,可以看成分别对 和
结果:F1 score提升了约0.5
结论:表明拆分不同类型的特征确实能得到一个不错的结果。
##########################################################################################
在测试时分别disable位置特征和内容特征
为了分析模型对内容和位置注意力的利用情况,作者又做了个实验,模型训练保持不变,但是在测试阶段,把内容注意力或位置注意力人为置零,即禁用。
结论:位置注意力相当重要,但是内容注意力也有一定帮助,尤其是在最后几层
Reference:
- 【工大SCIR笔记】浅谈Transformer模型中的位置表示
- Encoding word order in complex embeddings (2020)
- Constituency Parsing with a Self-Attensive Encoder