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

人工智能 新闻
没有Positional Encoding的transformer架构具有置换等变性。

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

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

证明如下:

1. 对self-attn的公式推导

图片图片

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

图片

然后计算自注意力输出:

图片

2. 假设对输入进行置换

图片

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

图片

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

图片

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

图片

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

图片

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

3. 添加Positional Encoding之后的影响

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

图片

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

图片

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

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

责任编辑:张燕妮 来源: 自动驾驶之心
相关推荐

2021-03-05 11:02:14

iOS 14.5苹果更新

2011-05-10 15:51:34

SEO

2022-04-24 09:54:24

ProxyReflect前端

2018-08-24 09:02:26

2022-01-10 13:06:13

微服务API网关

2017-10-16 12:52:51

2024-02-22 14:22:17

数字化转型企业架构

2024-11-13 00:58:28

2024-10-10 05:00:00

2019-01-29 11:02:30

消息中间件Java互联网

2018-07-02 08:57:27

码农业务程序员

2017-08-17 11:11:41

深度学习弱智能机器学习

2022-05-26 09:24:09

volatile懒汉模式

2022-06-01 16:17:00

互联网Web3区块链

2020-12-23 13:29:15

微服务架构面试官

2019-12-31 09:43:54

微服务JavaDocker

2018-06-05 09:14:42

Redis分布式场景

2022-03-21 07:40:08

线程池Executors方式

2024-05-14 08:11:56

ReactuseState造轮子
点赞
收藏

51CTO技术栈公众号