Google BERT入门(5)Transformer通过位置编码学习位置

文章目录

  • [6. Google BERT入门(5)Transformer通过位置编码学习位置](#6. Google BERT入门(5)Transformer通过位置编码学习位置)

6. Google BERT入门(5)Transformer通过位置编码学习位置

考虑输入句子"I love learning"。在RNN(Recurrent Neural Network,递归神经网络)中,我们逐词将句子输入网络。也就是说,首先输入单词"I",然后输入单词"love",等等。我们逐词输入句子,以便网络完全理解句子。但是,在transformer网络中,我们不遵循递归机制。所以,我们不是逐词输入句子,而是将句子中的所有单词并行输入网络。并行输入单词有助于减少训练时间,也有助于学习长期依赖关系。

然而,问题是由于我们并行输入单词到transformer中,如果单词顺序没有保留,它将如何理解句子的含义?要理解句子,单词顺序(句子中单词的位置)是重要的,对吧?是的,单词顺序非常重要,因为它有助于理解句子中每个单词的位置,这反过来又有助于理解句子的含义。

所以,我们应该向transformer提供一些关于单词顺序的信息,以便它能够理解句子。我们怎样才能做到这一点?现在,让我们更详细地探讨这个问题。

对于给定的句子"I love learning",首先,我们获取句子中每个单词的嵌入向量。设嵌入维度为dmodel。假设嵌入维度dmodel是4。那么,我们的输入矩阵维度将是[句子长度 x 嵌入维度] = [3 x 4]。

我们使用输入矩阵(嵌入矩阵)表示我们的输入句子"I love learning"。设输入矩阵如下:

图1.25 -- 输入矩阵

现在,如果我们直接将前面的输入矩阵传递给transformer,它无法理解单词顺序。所以,我们不是直接将输入矩阵喂给transformer,而是需要添加一些信息来指示单词顺序(单词的位置),以便我们的网络能够理解句子的含义。为此,我们引入了一种称为位置编码的技术。位置编码,顾名思义,是一种指示句子中单词位置(单词顺序)的编码。

位置编码矩阵P的维度与输入矩阵X相同。现在,在直接将输入矩阵(嵌入矩阵)喂给transformer之前,我们包含了位置编码。因此,我们简单地将位置编码矩阵加到嵌入矩阵上,然后作为输入喂给网络。现在,我们的输入矩阵不仅包含单词的嵌入,还包含句子中单词的位置:

图1.26 -- 将输入矩阵和位置编码矩阵相加

现在,我们很自然地要提出这样一个问题:位置编码矩阵究竟是如何计算的?transformer论文《Attention Is All You Need》的作者使用了正弦函数来计算位置编码,如下所示:

在这两个方程中,pos表示句子中单词的位置,而i表示嵌入的位置。让我们通过一个例子来理解这两个方程。使用前面的方程,我们可以写出以下内容:

图1.27 -- 计算位置编码矩阵

从前面的矩阵中,我们可以观察到,在位置编码中,当i是偶数时我们使用正弦函数,当i是奇数时我们使用余弦函数。简化前面的矩阵,我们可以写出以下内容:

图1.28 -- 计算位置编码矩阵

我们知道,在我们的输入句子中,单词"I"位于第0位,love位于第1位,learning位于第2位。代入值,我们可以写出以下内容:

图1.29 -- 计算位置编码矩阵

因此,我们的最终位置编码矩阵 是如下给出的:

图1.30 -- 位置编码矩阵

计算位置编码后,我们简单地对嵌入矩阵进行逐元素加法,并将修改后的输入矩阵喂给编码器。

现在,让我们重新审视我们的编码器架构。单个编码器块如下图所示。我们可以观察到,在直接将输入喂给编码器之前,首先我们获取输入嵌入(嵌入矩阵),然后我们将其与位置编码相加,然后将其作为输入喂给编码器:

图1.31 -- 单个编码器块

至此,我们了解了位置编码器是如何工作的;在上一节中,我们还学习了多头注意力子层是如何工作的。在下一节中,我们将学习编码器中的前馈网络子层是如何工作的。


感谢您的阅读,欢迎关注!


相关推荐
玩电脑的辣条哥21 分钟前
动态记忆网络 DeepMind的MEMO架构允许在推理时动态读写记忆矩阵,记忆容量提升40倍
人工智能
番茄老夫子1 小时前
宠物智能可穿戴产品调研报告
大数据·人工智能·宠物
lx7416026981 小时前
文章精读篇——用于遥感小样本语义分割的可学习Prompt
人工智能·学习·prompt
程序猿阿伟1 小时前
《解锁AI密码,机器人精准感知环境不再是梦!》
人工智能·机器人
cnbestec1 小时前
DEX-EE三指灵巧手:扩展AI与机器人研究的边界
人工智能·科技·机器人·欣佰特
AITIME论道1 小时前
即插即用Transformer、扩散模型、机器人规划、长文本检索增强生成 | Big Model Weekly 第57期...
人工智能·深度学习·transformer
云帆@1 小时前
deepseek-glm4-grpo训练
人工智能
mailangduoduo2 小时前
pytorch入门级项目--基于卷积神经网络的数字识别
人工智能·pytorch·cnn
量子-Alex3 小时前
【目标检测】【BiFPN】EfficientDet:Scalable and Efficient Object Detection
人工智能·目标检测·计算机视觉
Fansv5873 小时前
深度学习-7.超参数优化
人工智能·深度学习