1. 什么是位置嵌入向量
位置嵌入向量是Transformer兴起时就引入的一个概念。早期在处理文本信息时,词语之间是相关联的,只有具有一定位置关系的词语组合才能够表达一些正确的意思。
2. 在Transformer中是如何实现的?
在Transformer的训练过程中,我们将图片划分为一个patch序列作为输入。在开始阶段,Position Embedding作为一个可训练参数与patch embedding进行求和引入到网络中(实际上Transformer已经不能再称为网络)。
3. 什么是位置嵌入
Transformer 模型中的位置嵌入(position embedding)是一种机制,用来给模型提供关于序列中各个元素位置的信息。在原始的 Transformer 模型中,这是必要的,因为模型的主要构建块(如自注意力层)本身并不具备处理序列中元素位置关系的能力。
位置嵌入通常是以向量形式实现的,这些向量有与序列中的每个元素(例如,单词或者图像的patches)相同的维度。模型在处理输入之前,会将这些位置向量加到对应元素的嵌入(embedding)上。这样做的目的是让模型不仅能够学习输入元素的特征,还能学习元素在序列中的相对或绝对位置。
4. 举例
在很多网络资源中,已经就“为什么position embedding与sequences of image patches以求和的方式引入”做了很多详解。本处并不准备进行大量的公式推导,而是举一个简单的例子讲解“位置嵌入”的意义。
如图1所示,为一张训练图片,图像中是一辆车。假设我们在训练时,仅将该图像划分为三个patch进行输入,如图2所示。
在训练过程中,从简化的角度看,位置嵌入就是表征车头在车身左边,车尾在车身右侧,经过学习所得到的就是这种位置关系,具有这种位置关系的才会被检测为汽车。从另一方面,如图3和图4的位置关系,因为违反了这种位置关系,就不会被认作是一辆汽车。
当然,Transformer 通过位置嵌入学习的不仅仅是简单的“车头在车身前端,车尾在后端”的物理布局。它更倾向于学习如何在视觉上将各个图像块整合成一个有意义的整体(在这个例子中是一辆车)。这包括理解各个图像块之间的相对位置和视觉特征,以及如何将这些块组合起来构成一个连贯的对象。
图1 典型的训练数据(汽车)
图2 正确的位置关系(汽车)
图3 不正确的位置关系(非汽车)
图4 不正确的位置关系(非汽车类)