论文阅读之RETHINKING POSITIONAL ENCODING IN LANGUAGE PRE-TRAINING

news2025/6/30 13:50:39

文章目录

  • 论文阅读
  • 总结
  • 参考

论文阅读

文章大概提出了两个问题:
1.对于原来的transformer或者bert的embedding中,直接将word embedding(词向量)和positional embedding (位置编码)相加是不合理的,因为二者是异构的信息资源,相加可能会带来随机的混合相关性,导致效果变差。
2.在Bert中的[CLS]标识符的位置信息和词向量的位置信息一概而论是不合理的。因为[CLS]的上下文表示将用作下游任务中句子的表示。由于[CLS]符号的作用不同于自然包含语义的常规单词,如果将其位置与句子中的单词位置相同,它将是无效的。例如,如果对这个符号应用相对位置编码,一些头部的注意力分布可能会偏向于前几个单词,这会影响整个句子的理解。

基于此,文章提出了一种 Untied Positional Encoding,这种联合位置编码方式能够解决上述的两个问题,并且通过消融实验证明方法的有效性。



首先回顾一下自注意力机制:
在这里插入图片描述
再回顾一下原始transformer的位置编码(绝对位置编码)的注意力权重的计算方式(2017)
在这里插入图片描述
在这里插入图片描述
了解transformer的话应该可以看得出,原始的transformer的位置编码是通过上述公式计算出来固定的,并不会随着训练而改变。

但是绝对位置编码对于模型捕获相对词序是无效的,因此就有了相对位置编码的方式(2018)
在这里插入图片描述
其中的α是可以训练的。

然后还有个简化版的相对位置编码(2019)
在这里插入图片描述
其中b是个可学习的参数。



因为bert是基于transformer encoder架构的用的就是绝对位置编码。
可以展开分析一下绝对位置编码:
在这里插入图片描述
原始Bert里token和segment应该是同构的,都表示语义,这里可以看成wi即可,position就是pi了。

那么绝对位置的注意力权重展开如下四项:
在这里插入图片描述

首先,很容易看出第一项和最后一项分别表征单词和位置位置关系。然而,投影矩阵WQ,l和WK,l在两项中是共享的。由于位置嵌入和单词嵌入编码显著不同的概念,将相同的投影应用于这样不同的信息是不合理的。

此外,我们还注意到,第二个和第三个术语使用位置(单词)作为query,以获得由单词(位置)组成的关键字。据我们所知,几乎没有证据表明这个词和它在句子中的位置有很强的相关性。此外,在BERT和最近开发的高级方法(如RoBERTa(Liu等人,2010))中,句子以随机方式进行修补。例如,在BERT中,每个输入包含多个句子,其中一些句子从其他文档中进行负采样,以形成下一个句子预测任务。

由于批处理的随机过程,单词甚至可能出现在任何位置,单词和位置之间的相关性可能很弱。为了进一步研究这一点,我们在预训练的BERT模型上可视化等式(6)中的四个相关性。我们发现第二项和第三项在位置上看起来是一致的,如图2所示。这一现象表明,单词和绝对位置之间没有强相关性3,使用这种有噪声的相关性可能对模型训练无效。

将这四项分别可视化得到如下结果:

在这里插入图片描述
这个是个bert的选了些句子结果画的图。
第一张是词和词之间的相关矩阵
第二张是词和位置信息的相关矩阵
第三张是位置信息和词的相关矩阵
第四张是位置和位置的相关矩阵

看图可以发现,2和3确实没什么相关性。



为了克服这些问题,文章建议通过使用不同的投影矩阵直接对一对单词或位置之间的关系进行建模,并删除中间的两个项。也就是说,使用:
在这里插入图片描述
就是说,文章另开一组位置权重,专门来对位置信息进行训练。

不仅如此,再融入前面提到的相对位置编码的思想:
在这里插入图片描述
联合位置编码一半已经介绍完了,目前已经解决第一个问题了,因为位置编码和词向量不能直接相加,因此这里就没相加了,而是重开一组权重去计算位置编码,直接加到注意力机制层。



那么接下来解决[CLS]位置编码和词向量一概而论的问题。

文章是这么设计的:
在这里插入图片描述
当i和j都不是[CLS]的时候,即正常单词之间,就使用上面得出的计算方法。
当[CLS]看别的词和别的词看[CLS]的时候,又是另外两组可学习得参数方式了。
如下图所示:

在这里插入图片描述
这样就将[CLS]的位置编码和普通单词的区分开来了。



那么
文章提出的TUPE如下:

在这里插入图片描述

在TUPE中,Transformer仅使用单词嵌入作为输入。在自我注意模块中,不同类型的相关性被分别计算以反映信息的不同方面,包括单词上下文相关性和绝对(和相对)位置相关性。每一种相关性都有自己的参数,并将被加在一起以生成注意力分布。进一步为[CLS]符号设置专门的位置相关性,以正确捕获句子的全局表示。在TUPE中,位置相关性和单词上下文相关性是分离的,并使用不同的参数进行计算。这种设计成功地消除了单词与位置(或位置与单词)相关性中的随机性,并提供了更多的表现力来表征一对单词或位置之间的关系。其次,TUPE使用不同的函数来计算[CLS]符号和其他位置之间的相关性。这种灵活性可以帮助模型学习整个句子的准确表示。

为了证明在这里面相对位置编码是有效的,实验尝试了绝对位置和相对位置
在这里插入图片描述
从结果上看,确实相对位置大多数情况都会好一些。
在这里插入图片描述

此时可视化出位置的相关性
在这里插入图片描述
看的出来主要有五种
在这里插入图片描述

总结

这篇文章的联合位置编码,发现其实并不复杂,就是去掉了两项无关项,给[CLS]相关的单独开了两组权重计算位置编码,然后加上相对位置编码。不过分析的过程是满详细的,可视化展示也是很不错,总结的也不错,主要是会感觉附带了一些思考的过程,让你觉得这文章说的确实有道理,最后结果也是好的,因此我感觉这是一篇很不错的文章。

参考

RETHINKING POSITIONAL ENCODING IN
LANGUAGE PRE-TRAINING

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2874.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Netty入门——组件(Channel)一

目录一、channel的主要作用二、EventLoop处理io任务代码示例2.1、服务端代码示例2.2、客户端代码示例2.3、服务端和客户端查看控制台输出结果三、ChannelFuture连接问题代码示例3.1、服务端代码示例3.2、客户端代码示例3.3、服务端和客户端查看控制台输出结果3.4、ChannelFutur…

MyBatis的二级缓存

MyBatis的二级缓存 二级缓存是SqlSessionFactory级别,通过同一个SqlSessionFactory创建的SqlSession查询的结果会被缓存;此后若再次执行相同的查询语句,结果就会从缓存中获取。 二级缓存开启的条件: 1.在核心配置文件中&#x…

软件测试:写一个好的测试用例

测试场景: 为登录功能设计测试用例 测试员为什么要会编测试用例 测试员的目标是要保证系统在各种场景下的功能是符合设计要求的。而测试用例就是测试员想到的测试场景。(这也是高级别的测试员即使不会代码也能找到较好工作的原因) 编写测试…

数据库2,DQL数据查询语言,表关联关系

目录 DQL数据查询语言 简单查询语句 计算列 别名 distinct消除重复行 条件查询 条件运算符 null值判断 枚举查询 模糊查询 分支查询 函数 字符串函数 聚合函数 排序查询 分组查询Group by 分页查询Limit 表关联关系 一对一关联 一对多与多对一 多对多关联 …

[CKA备考实验][ingress-nginx] 4.2 集群外访问POD

1.创建Deployments 部署方法请参照: https://blog.csdn.net/qq_33868661/article/details/127505429?spm1001.2014.3001.5501 apiVersion: apps/v1 kind: Deployment metadata:labels:name: deploy1annotations:name: deploy1name: deploy1namespace: default sp…

要么干要么滚!推特开始裁员了;深度学习产品应用·随书代码;可分离各种乐器音源的工具包;Transformer教程;前沿论文 | ShowMeAI资讯日报

👀日报合辑 | 📆电子月刊 | 🍩韩信子 📢 解散Twitter董事会,代码审查,裁员25%,收每月20美元认证费马斯克那些骚操作 埃隆马斯克 (Elon Musk) 抱着洗手池入主 Twitter 后,狂风骤雨已…

STM32入门——uKeil5 MDK 的使用(基于固件库)

文章目录1 Keil uVision5 MDK 是什么2 建立一个标准库函数工程2.1 前期准备2.2 建立工程2.3 建立组文件夹2.4 添加文件2.4 配置“魔术棒”选项卡2.5 建立 main 函数1 Keil uVision5 MDK 是什么 Keil 软件是一种统称,它包含编辑器、编译器、链接器、调试器等众多工具…

冰冰学习笔记:二叉搜索树

欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正。 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位…

堆外内存和堆内内存及虚引用的应用

目录 内存区域划分: 元空间 程序计数器 直接内存 对象的创建 对象的访问定位 判断对象是否存活 堆外内存 堆内内存的缺点以及引入堆外内存 为什么需要堆外内存? 如何分配堆外内存? 如何回收堆外内存? 1) System.gc()…

C语言函数章--第二弹(让冤种室友用你的函数,但不给他看函数源码)

前言 💖作者:龟龟不断向前 ✨简介:宁愿做一只不停跑的慢乌龟,也不想当一只三分钟热度的兔子。 👻专栏:C初阶知识点 👻工具分享: 刷题: 牛客网 leetcode笔记软件&#xff…

Error注入攻击

💪💪Error注入攻击1.创建漏洞环境2.漏洞攻击2.1判断是否有注入2.2信息收集2.3注入获取数据库名2.4注入获取表名2.5注入获取列名2.6注入获取信息3.sql靶场实战1.创建漏洞环境 💪💪第一步创建sql环境,直接再mysql下运行 …

Flutter——软件安装与环境配置

Flutter入门官网Flutter SDK下载创建Flutter项目在ios上运行第一个Flutter项目效果图代码总结官网 Flutter开发手册网址如下 Flutter SDK下载 下载地址 第一步:进入官网,选择自己相对应的系统 第二步:选择对应版本SDK并下载到本地 创建Flu…

electron调用dll文件

Electron 对系统层能力的使用可能比较弱,此时需要求助 Python、C、C# 等语言,通过 ffi-napi 库可以让 Node.js 使用 C dll,通过 electron-edge-js 库可以让 Node.js 使用 C# dll 1. 先确定dll文件是用什么语言写的. 使用peid 应用查看- 这个…

【Transformers】第 2 章:主题的实践介绍

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

Node.js | 基于 MongoDB 的简易用户管理系统

🖥️ NodeJS专栏:Node.js从入门到精通 🖥️ 博主的前端之路(源创征文一等奖作品):前端之行,任重道远(来自大三学长的万字自述) 🖥️ TypeScript知识总结&…

C++秋招经验贴

文章目录一、个人背景及秋招情况1.个人背景2.秋招情况二、求职C强相关开发岗位的准备过程以及一些建议1. 八股2. 力扣刷题3. 实习4. 项目三、总结一、个人背景及秋招情况 1.个人背景 本科:二本,材料专业   硕士:211硕,光学工程…

TI IWR1642毫米波雷达使用串口原始数据采集与分析

本文编辑:调皮哥的小助理 1.引言 如果文章能够给你带来价值,希望能够关注我。 如果文章能够让你学习到知识,希望你能够点个赞! 好了下面开始今天的学习内容吧。 今天给大家分享的是 《TI 的IWR1642毫米波雷达使用串口原始数据…

深度学习入门(十五)环境和分布偏移(了解)

深度学习入门(十五)环境和分布偏移前言环境和分布偏移教材1 分布偏移的类型1.1 协变量偏移1.2 标签偏移1.3 概念偏移2 分布偏移示例2.1医学诊断2.2 自动驾驶汽车2.3 非平稳分布2.4 更多轶事3 分布偏移纠正3.1 经验风险与实际风险3.2 协变量偏移纠正3.3 标…

MATLAB | 一起来感受数学之美叭

前两天去观摩了MATHWORKS官方举办的Mathematics is beautiful数学之美投票比赛,见到了很多非常惊艳的作品,在这里分享给大家让大家一同感受大神们的创造力,接下来由我来做全程解说。 虽然看起来代码都写好了,,&#x…

程序员眼中看到的网页是如何制作出来的?

一、认识网页 在学习之初,我们需要认识一下网页的概念,因为网页与我们的 html是息息相关的。 那么接下来我们来看一下,我们经常去通过浏览器查看的网页,它的本质是什么?在此我们需要去做一个对比。我们眼中看到的网页…