Transformer的PE(position embedding),即位置编码理解

您所在的位置:网站首页 任天堂小游戏会爬楼梯的游戏是什么 Transformer的PE(position embedding),即位置编码理解

Transformer的PE(position embedding),即位置编码理解

2024-01-19 05:45| 来源: 网络整理| 查看: 265

背景:

最近要搞理论学习了,先前搞了大半年的工程,又要捡起一些理论原理,现在还是从transformer熟悉理解一下,争取吃透。 关于transformer的经典介绍和资料也一大堆,我就不展开来讲了,碰到了一些一时没太想明白的问题,就记一下,也当是重新理解一遍。

在这里插入图片描述 transformer的输入要么是词向量或是块状处理了的图像,分别用于自然语言处理和计算机视觉领域。 在自然语言处理中,原始的输入肯定是某种文字形式的语言,但是要送进机器处理要先进行编码,一般有word2vec等方式转化为词向量。

词向量之间需要有一个相对位置关系,如果全部不分序输入那处理肯定不方便,不同词之间组合意思也会发生变化,于是就要给词向量加位置信息。

普通的加一个位置信息,词量大时不利于计算,于是transformer里面用了一种位置编码方式,把位置信息作为词向量的一部分输入信息一起送入网络进行处理,而且获得了不错的效果,一开始位置编码也没太看明白,多看了一些资料后也有一些大致了解。

Transformer 中使用位置 Embedding 保存单词在序列中的相对或绝对位置。 在这里插入图片描述 这是位置向量函数的定义,经过多番解读,我现在的理解是:

1、表示方法:

假设某种语言的每个单词都可以嵌入成254个长度的向量,即一个单词的长度是254,

假设单词嵌入并且组成batch后,shape为(b,N,254),N是序列最大长度,即最长的一句话包含的单词个数为N,254是每个单词的嵌入向量长度,b是batch,为了便于组成batch(不同训练句子单词个数肯定不一样)进行训练,可以简单统计所有训练句子的单词个数,取最大即可,假设统计后发现待翻译句子最长是10个单词,那么编码器输入是10x254,batch为1 则输入维度是(1,10,254).

因为位置向量长度要和词向量相加,需要长度保持一致,所以位置向量的维度为(1,N,254),N表示N个单词对应的N个位置,每个位置采用254长度向量进行表示。 在这里插入图片描述

2、transformer采用sin-cos函数进行表示:

在这里插入图片描述 其中,pos对应N,范围是0~N,表示词向量长度为N的某个单词的位置 i 表示某个单词的表示向量的最小单位的位置,范围是0-253;d表示长度单词词向量长度的最大值,即254

进行单词表示时,把表示向量的最小单位按位置进行划分,偶数用sin表示,奇数用cos表示,按照位置顺序进行拼接

在这里插入图片描述 如上图,纵向是position,表示一个句子的长度,此处是50,说明该句子包含50个单词,即上面的N; 横向表示每个单词的词向量长度,此处是128,即上文的254. 另1/50的横向条表示一个单词,图中画了3条,对应3个单词。

下面几幅图同理: 在这里插入图片描述 在这里插入图片描述

附上几个有帮助的链接以供参考,是查找过程觉得比较有用的: https://zhuanlan.zhihu.com/p/338817680 https://zhuanlan.zhihu.com/p/308301901 https://kazemnejad.com/blog/transformer_architecture_positional_encoding/ http://jalammar.github.io/illustrated-transformer/



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3