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 -- 单个编码器块

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


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


相关推荐
Raas1003 小时前
MAI Gateway(魔芋企业级AI网关)技术揭秘:AI网关支持哪些模型?从原理到落地
大数据·人工智能·网关·gateway·mai gateway·企业级产品
豪气的程序猿5 小时前
电商图片工作流怎么选?Lingko AI 对比折叠键盘主图与详情页
人工智能
小刘快学习5 小时前
把 AI 账单拆到部门:企业 AI 网关的精准分账思路
人工智能
米小虾5 小时前
你让监控模型读的思维链,可能是攻击者写好的剧本
人工智能
deepseek236 小时前
Iris 开源搜索智能体拆解:35B 与 397B 中文仅差 0.3 分,上下文管理胜过堆参数
人工智能·ai agent·开源模型
ai小陈6 小时前
CUDA Stream实战:让数据传输与GPU计算真正重叠
人工智能·深度学习·ai·pdf·云计算·gpu算力
residual_fan6 小时前
【学术论文】航空发动机故障诊断智能体:基于持续对比强化学习的动态优化方法
人工智能·算法·数据挖掘·数据分析
东风破_6 小时前
从 RAG 到 Agentic RAG:第二步,把复杂问题拆开再检索
人工智能
dehuisun6 小时前
第07篇:RAG+Agent 部署架构、资源评估与私有化方案
人工智能
米小虾6 小时前
拆给 8 个子智能体,只拿回 2.3 倍信息:多智能体分解的产出守恒律
人工智能·agent