Transformer中的Position Embedding和RNN/CNN中的Position Encoding的区别

区别:Position Embedding是学习式,Position Encoding是固定式

Transformer的结构是基于Self-Attention的,与RNN/CNN不同,不包含序列信息,但是序列信息又极其重要,为了融合序列信息,就需要位置编码了

Transformer的论文提出了两种编码方式:学习式固定式

学习式

定义:当做可训练参数随机初始化,比如最长512,编码维度768,则随机初始化一个512x768矩阵,让其随训练进行更新,目前的BERT、GPT等预训练模型都是通过这种方式获得位置编码

缺点:不可扩展,即如果预训练最大长度为512,则最多能处理512长度的句子

固定式

通过公式直接计算,例如Transformer通过三角函数直接计算得到

使用周期函数表示位置编码有两个理由,一个是参考二进制,二是可以轻松学到相对位置(任意位置的编码都可以通过前面某个位置编码的线性表示得到,可以通过cos加法和sin加法规则证明,这也是PE同时使用cos和sin的原因)

三角函数中使用10000的原因,确保循环周期足够大,以便于编码足够长的文本(其实就是这样做实验效果更好)

posted @ 2022-09-07 17:38  君君姐  阅读(346)  评论(0编辑  收藏  举报