transformer中的位置嵌入

本文详细解释了Transformer模型中位置嵌入的作用,它用于弥补模型无循环结构而无法捕捉序列信息的问题。通过sine和cosine函数的线性变换创建位置嵌入,使模型能够学习到位置依赖关系和自然语言的时序特性。位置嵌入的周期性变化在不同维度上产生独特的纹理,帮助模型理解输入序列的顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文为《Attention Is All You Need》精读中的一个拓展

论文- 《Attention Is All You Need》

由于transformer模型没有循环神经网络的迭代操作, 所以我们必须提供每个字的位置信息给transformer, 才能识别出语言中的顺序关系。

现在定义一个位置嵌入的概念,也就是现在定义一个位置嵌入的概念, 也就是𝑝𝑜𝑠𝑖𝑡𝑖𝑜𝑛𝑎𝑙 𝑒𝑛𝑐𝑜𝑑𝑖𝑛𝑔, 位置嵌入的维度为[𝑚𝑎𝑥 𝑠𝑒𝑞𝑢𝑒𝑛𝑐𝑒 𝑙𝑒𝑛𝑔𝑡ℎ, 𝑒𝑚𝑏𝑒𝑑𝑑𝑖𝑛𝑔 𝑑𝑖𝑚𝑒𝑛𝑠𝑖𝑜𝑛], 嵌入的维度同词向量的维度, 𝑚𝑎𝑥 𝑠𝑒𝑞𝑢𝑒𝑛𝑐𝑒 𝑙𝑒𝑛𝑔𝑡ℎ属于超参数, 指的是限定的最大单个句长.

注意, 我们一般以字为单位训练transformer模型, 也就是说我们不用分词了, 首先我们要初始化字向量为[𝑣𝑜𝑐𝑎𝑏 𝑠𝑖𝑧𝑒, 𝑒𝑚𝑏𝑒𝑑𝑑𝑖𝑛𝑔 𝑑𝑖𝑚𝑒𝑛𝑠𝑖𝑜𝑛], 𝑣𝑜𝑐𝑎𝑏 𝑠𝑖𝑧𝑒为总共的字库数量, 𝑒𝑚𝑏𝑒𝑑𝑑𝑖𝑛𝑔 𝑑𝑖𝑚𝑒𝑛𝑠𝑖𝑜𝑛为字向量的维度, 也是每个字的数学表达.

好吧,如果这里开始不懂了, 我们就拿我们的例子来看一下子:
在这里插入图片描述
论文里面使用了sine和cosine函数的线性变换来提供给模型的位置信息:
在这里插入图片描述
上式中p o s pospos指的是句中字的位置, 取值范围是[ 0 , m a x s e q u e n c e l e n g t h ) [0, \ max \ sequence \ length)[0, max sequence length), i ii指的是词向量的维度, 取值范围是[ 0 , e m b e d d i n g d i m e n s i o n ) [0, \ embedding \ dimension)[0, embedding dimension), 上面有s i n sinsin和c o s coscos一组公式, 也就是对应着e m b e d d i n g d i m e n s i o n embedding \ dimensionembedding dimension维度的一组奇数和偶数的序号的维度, 例如0 , 1 0, 10,1一组, 2 , 3 2, 32,3一组, 分别用上面的s i n sinsin和c o s coscos函数做处理, 从而产生不同的周期性变化, 而位置嵌入在e m b e d d i n g d i m e n s i o n embedding \ dimensionembedding dimension维度上随着维度序号增大, 周期变化会越来越慢, 而产生一种包含位置信息的纹理, 就像论文原文中第六页讲的
在这里插入图片描述
位置嵌入函数的周期从2 π 2 \pi2π到10000 ∗ 2 π 10000 * 2 \pi10000∗2π变化, 而每一个位置在e m b e d d i n g d i m e n s i o n embedding \ dimensionembedding dimension维度上都会得到不同周期的s i n sinsin和c o s coscos函数的取值组合, 从而产生独一的纹理位置信息, 模

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值