首页 > 其他分享 >Transformer模型-Positional Encoding位置编码的简明介绍

Transformer模型-Positional Encoding位置编码的简明介绍

时间:2024-04-03 19:30:20浏览次数:25  
标签:编码 Transformer Encoding 模型 位置 pos Positional 单词 向量

今天介绍transformer模型的positional encoding 位置编码

背景

位置编码用于为序列中的每个标记或单词提供一个相对位置。在阅读句子时,每个单词都依赖于其周围的单词。例如,有些单词在不同的上下文中具有不同的含义,因此模型应该能够理解这些变化以及每个单词所依赖的上下文。一个例子是单词“trunk”。在一种情况下,它可以用来指大象用鼻子喝水;在另一种情况下,它可能指的是被闪电击中的树干。

由于模型使用长度为d_model的嵌入向量来表示每个单词,因此任何位置编码都必须与之兼容。使用整数来表示位置似乎很自然,比如第一个标记为0,第二个标记为1,以此类推。然而,这个数字很快就会增长,并且不容易添加到嵌入矩阵中。相反,我们为每个位置创建一个位置编码向量,这意味着可以创建一个位置编码矩阵来表示单词可能占据的所有位置。

在“Attention Is All You Need”这篇论文中,为了捕捉这种位置信息,作者提出了一种特殊的位置编码方法,利用正弦和余弦函数为序列中的每个位置生成唯一的向量。这种方法不仅避免了整数位置编码可能导致的问题(如快速增长的数值和难以整合到嵌入矩阵中),而且还为每个位置提供了标准化的、无需额外训练的独特表示。通过这种方式,模型可以更好地理解序列中单词的顺序和相互依赖关系,从而提高其处理自然语言任务的能力。

公式:


举例:

pos 代表位置,i 代表维度。

对于每个位置编码向量,每两个元素为一组,将偶数位置的元素设置为PE(pos, 2i),将奇数位置的元素设置为PE(pos, 2i+1)。然后重复这个过程,直到向量中有d_model个元素为止。

我们选择这个函数是因为我们假设它能让模型更容易地学习到按相对位置进行关注。对于任何固定的偏移量 kPE_{pos+k} 都可以表示为 PE_{pos} 的线性函数。这意味着模型可以通过学习不同位置编码之间的线性关系来理解序列中单词的相对位置。这种方法的好处是,无论序列有多长,模型都可以有效地利用位置信息,因为位置编码是通过正弦和余弦函数连续生成的,而不是依赖于离散的、有限的位置标记。

最后,把位置编码被添加到嵌入向量。

完整的流程如下:

原文链接:

https://medium.com/@hunter-j-phillips/positional-encoding-7a93db4109e6

标签:编码,Transformer,Encoding,模型,位置,pos,Positional,单词,向量
From: https://blog.csdn.net/ank1983/article/details/137194045

相关文章

  • Transformer学习-最简DEMO实现字符串转置
    Transformer学习-最简DEMO实现字符串转置一.代码二.参考三.输出背景:调试AI加速卡在Pytorch训练时的精度问题,搭建了一个简单的Transformer,设置随机种子,保证每次重训练loss完全一致,可以直接对比各算子的计算误差一.代码importosimportrandomimportnumpya......
  • Transformer简介
    参考:https://www.zhihu.com/tardis/bd/art/600773858?source_id=1001Transformer是谷歌在2017年的论文《AttentionIsAllYouNeed》中提出的,用于NLP的各项任务1、Transformer整体结构在机器翻译中,Transformer可以将一种语言翻译成另一种语言,如果把Transformer看成一个黑盒,那......
  • [Paper Reading] VQ-GAN: Taming Transformers for High-Resolution Image Synthesis
    名称[VQ-GAN](TamingTransformersforHigh-ResolutionImageSynthesis)时间:CVPR2021oral21.06机构:HeidelbergCollaboratoryforImageProcessing,IWR,HeidelbergUniversity,GermanyTL;DRTransformer优势在于能较好地长距离建模sequence数据,而CNN优势是天生对局部......
  • 视觉Transformer和Swin Transformer
    视觉Transformer概述ViT的基本结构:①输入图片首先被切分为固定尺寸的切片;②对展平的切片进行线性映射(通过矩阵乘法对维度进行变换);③为了保留切片的位置信息,在切片送入Transformer编码器之前,对每个切片加入位置编码信息;④Transformer编码器由L个Transformer模块组成,每个模......
  • 学习transformer模型-Dropout的简明介绍
    Dropout的定义和目的:Dropout是一种神经网络正则化技术,它在训练时以指定的概率丢弃一个单元(以及连接)p。这个想法是为了防止神经网络变得过于依赖特定连接的共同适应,因为这可能是过度拟合的症状。直观上,dropout可以被认为是创建一个隐式的神经网络集合。PyTorch的nn.Drop......
  • Transformer
    (self-attention)自注意力机制将词汇转化为向量表示,可以使用one-hot进行编码,但是这种编码方式认为所有的词之间是没有关系的还有一种方法是WordEmbedding,这种方法相似的词汇会聚集到一起。输入文字、声音和图等的输入都是一堆向量输出1、N->N(如词性标注)2、N->1(情绪......
  • 【 ICCV代码复现】Swin Transformer图像分类实战教程 (训练自己的数据集)
    SwinTransformer图像分类实战教程一、环境配置1.官方环境配置2.数据集结构二、修改配置等文件1.修改config.py2.修改build.py3.修改utils.py三、训练1.Train2.Evaluation四、常见报错1.TypeError:__init__()gotanunexpectedkeywordargument‘t_mul‘我用......
  • 词-词共现概率与Transformer
    1.词词共现概率    词-词共现概率是自然语言处理中的一个关键概念,它描述的是在一段文本或一个大型语料库中,任意两个词在同一上下文中共同出现的概率。具体来说,如果我们在分析语料库时发现词A和词B经常相邻出现或者在一定距离范围内出现,那么我们就说词A和词B具有较高的......
  • Transformer 预测过程 详解
    我们看到很多文章讲了transformer架构的高层概述,包括其中一些主要组件。但大部分文章没有讲整个预测过程是如何一步步进行的。让我们通过一个简单的例子来详细了解一下。在这个例子中,你将会看到一个翻译任务或者序列到序列任务,这恰好是transformer架构设计者最初的目标。你将......
  • Transformer逐层分解
    什么是Transformer?Transformer架构擅长处理文本数据,这些数据本身是有顺序的。他们将一个文本序列作为输入,并产生另一个文本序列作为输出。例如,讲一个输入的英语句子翻译成西班牙语。Transformer的核心部分,包含一个编码器层和解码器层的堆栈。为了避免混淆,我们把单个层称为编......