Transformer为什么一定要添加一个Positional Encoding模块?

之前老喜欢死记硬背transformer的网络架构,虽然内容并不复杂,但是发现这个transformer模块中的positional encoding在死记硬背的情况之下很容易被忽略。 为了更好地理解为什么transformer一定需要有一个positional encoding,简单推了一下公式先说结论:没有Positional Encoding的transformer架构具有置换等变性。 证明如下:1.

之前老喜欢死记硬背transformer的网络架构,虽然内容并不复杂,但是发现这个transformer模块中的positional encoding在死记硬背的情况之下很容易被忽略。为了更好地理解为什么transformer一定需要有一个positional encoding,简单推了一下公式

先说结论:没有Positional Encoding的transformer架构具有置换等变性。

证明如下:

1. 对self-attn的公式推导

Transformer为什么一定要添加一个Positional Encoding模块?Transformer为什么一定要添加一个Positional Encoding模块?

其中的是可训练的权重矩阵。首先计算Query和Key之间的点积,得到注意力权重矩阵:

Transformer为什么一定要添加一个Positional Encoding模块?

然后计算自注意力输出:

Transformer为什么一定要添加一个Positional Encoding模块?

2. 假设对输入进行置换

Transformer为什么一定要添加一个Positional Encoding模块?

置换后的Query, Key, Value的公式分别为:

Transformer为什么一定要添加一个Positional Encoding模块?

注意力矩阵的计算则变化为:

Transformer为什么一定要添加一个Positional Encoding模块?

由于P是置换矩阵,满足=,且P=I,所以:

Transformer为什么一定要添加一个Positional Encoding模块?

所以最终的输出可以这样写:

Transformer为什么一定要添加一个Positional Encoding模块?

这样就可以证明,transformer架构在没有Positional Encoding计算的情况下具有置换等变性,换句话说,输入序列中元素的排列方式不会影响模型对它们的处理方式,只是输出的顺序相应地改变。

3. 添加Positional Encoding之后的影响

加入Positional Encoding之后,置换后的输入为:

Transformer为什么一定要添加一个Positional Encoding模块?

由于P是固定的,加入Positional Encoding之后,输入序列的置换将导致模型的输出发生变化,模型能够区分不用的序列:

Transformer为什么一定要添加一个Positional Encoding模块?

从公式上看,在没有位置编码的情况下,自注意力机制的计算只涉及输入向量的内容,不涉及任何位置信息,且对输入序列的置换是等变的。

加入位置编码后,输入向量包含了位置信息,打破了自注意力机制的置换等变性,使模型能够对序列中的元素位置敏感。

给TA打赏
共{{data.count}}人
人已打赏
理论

Mamba与元学习双管齐下,打造新的语义补全方案!

2024-11-20 10:00:00

理论

多样任务真实数据,大模型在线购物基准Shopping MMLU开源|NeurIPS&KDD Cup 2024

2024-11-20 12:17:59

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
搜索