论文笔记--Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context

news/2024/4/19 0:07:47

论文笔记--Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context

  • 1. 文章简介
  • 2. 文章概括
  • 3 文章重点技术
    • 3.1 Segment-Level Recurrence with State Reuse
    • 3.2 相对位置编码
  • 4. 文章亮点
  • 5. 原文传送门

1. 文章简介

  • 标题:Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context
  • 作者:Zihang Dai, Zhilin Yang, Yiming Yang, Jaime Carbonell, Quoc V. Le, Ruslan Salakhutdinov
  • 日期:2019
  • 期刊:arxiv preprint

2. 文章概括

  传统的RNN常常面临梯度消失或爆炸的问题,LSTM的提出在一定程度上有所缓解,但实验表明LSTM只能有效利用200个左右上下文单词信息。Transformer的提出可以充分利用上下文的信息,但受限于输入的固定长度,一般为256,512等。Al-Fou提出的character-level的Transformer可以将输入分为不同的segment,但不同的segment之间没有交互:比如输入被划分为 s 1 , … , s L s_1, \dots, s_L s1,,sL s L + 1 , … , s N s_{L+1}, \dots, s_N sL+1,,sN两个片段,则模型无法利用到 t < L + 1 t<L+1 t<L+1的信息来预测 S L + 1 S_{L+1} SL+1,从而第二个片段开始位置的几个token则变得很难预测。
  为了解决上述问题,文章提出了一种类似RNN的循环机制Transformer:Transformer-XL,可有效处理长文本输入。且文章提出了适应于Transformer-XL的位置编码方法:相对位置编码。实验表明,Transformer-XL在多个数据集上取得了SOTA结果。

3 文章重点技术

3.1 Segment-Level Recurrence with State Reuse

  为了解决Context Fragmentation(基于segmentation的方法无法实现segmentation之间的交互)和fixed length(输入大小受限)的问题。文章将循环机制引入到Transformer架构。训练阶段,上一个文本片段(segment)的隐藏层状态被固定(不参与梯度更新)并缓存,在下一个片段中作为扩展的上下文使用。整体架构如下图所示:
整体架构
  具体来说,令 s τ = [ x τ 1 , … , x τ L ] s_\tau = [x_{\tau_1}, \dots, x_{\tau_L}] sτ=[xτ1,,xτL]为第 τ \tau τ个片段,其中 L L L为每个片段接收的最大输入长度。则在计算第 τ + 1 \tau + 1 τ+1个片段的第 n n n个隐藏层 h τ + 1 n h_{\tau + 1}^n hτ+1n时,我们首先通过当前片段和上一个片段的第 n − 1 n-1 n1个片段的隐藏层得到候选隐藏层 h ~ τ + 1 n − 1 = S t o p G r a d i e n t ( h τ n − 1 ) + h τ + 1 n − 1 \tilde{h}_{\tau+1}^{n-1} = StopGradient(h_{\tau}^{n-1}) + h_{\tau + 1}^{n-1} h~τ+1n1=StopGradient(hτn1)+hτ+1n1,然后通过候选隐藏层更新当前Transformer的Q, K ,V: q τ + 1 n , k τ + 1 n , v τ + 1 n = h τ + 1 n − 1 W q T , h ~ τ + 1 n − 1 W k T , h ~ τ + 1 n − 1 W v T q_{\tau+1}^n,k_{\tau+1}^n,v_{\tau+1}^n = h_{\tau + 1}^{n-1}W_q^T, \tilde{h}_{\tau+1}^{n-1} W_k^T, \tilde{h}_{\tau+1}^{n-1} W_v^T qτ+1n,kτ+1n,vτ+1n=hτ+1n1WqT,h~τ+1n1WkT,h~τ+1n1WvT,注意到key和value向量由上下文和当前词共同确定,从而引入了上一个segment的信息,而query向量只有当前隐藏层确定。再由Q, K, V计算得到当前层的 h τ + 1 n h_{\tau+1}^n hτ+1n,即注意力分数。
  上述方法可以有效解决长文本依赖问题,且不丢失上下文信息。此外在评估阶段模型无需重新计算前面片段的表征,从而速率更高。另一方面,我们可以很容易地使用前面多个segment的上下文信息,从而文本依赖不局限于前一个segment。

3.2 相对位置编码

  注意到,按照上述分割方式传入到模型每个segment的位置编码均为从1 到 L L L,无法有效区分不同segment的信息。从而文章提出了relative positional encoding,即相对位置编码。具体地,文章预先定义了一个不可学习的位置编码矩阵(sinusoid) R ∈ R L × d \mathcal{R}\in\mathbb{R}^{L\times d} RRL×d。其中行 R i R_i Ri表示相对位置为 i i i的两个向量之间的位置编码向量,即当query和key之间距离为i时直接用 R i R_i Ri来作为其位置编码,和词向量嵌入进行拼接。
  为了使用相对位置编码,文章对Transformer的注意力计算公式进行了优化。传统的Transformer计算方式为 Q T K = ( W Q ( E x + U ) ) T ( W K ( E x + U ) ) Q^TK = (W^Q(E_x + U))^T (W^K(E_x + U)) QTK=(WQ(Ex+U))T(WK(Ex+U)),其中 E x , U E_x, U Ex,U分别表示词向量和位置向量,则 q i q_i qi k j k_j kj之间的注意力分数为 A i , j a b s = E x i T W q T W k E x j + E x i T W q T U j + U i T W q T W k E x j + U i T W q T W k U j A_{i,j}^{abs} = E_{x_i}^TW_q^T W_kE_{x_j} + E_{x_i}^TW_q^T U_j + U_i^TW_q^T W_kE_{x_j} + U_i^TW_q^T W_kU_j Ai,jabs=ExiTWqTWkExj+ExiTWqTUj+UiTWqTWkExj+UiTWqTWkUj。我们将其优化为 A i , j r e l = E x i T W q T W k , E E x j + E x i T W k , R T R i − j + u T W q T W k , E E x j + v T W q T W k , R R i − j A_{i,j}^{rel} = E_{x_i}^TW_q^T W_{k, E}E_{x_j} + E_{x_i}^TW_{k, R}^T R_{i-j} + u^TW_q^T W_{k, E}E_{x_j} + v^TW_q^T W_{k, R}R_{i-j} Ai,jrel=ExiTWqTWk,EExj+ExiTWk,RTRij+uTWqTWk,EExj+vTWqTWk,RRij,上述四项分别代表1)基于内容的寻址 2)内容有关的位置偏差 3)整体内容偏差 4)整体位置偏差。

4. 文章亮点

  文章有效解决了NLP中长文本依赖捕获问题,且有效避免了context-fragmenation问题。多个数值实验表明,文章在长文本、短文本的下游任务中表现出色,且相比于RNN-LMs在评估过程中提升了效率,可作为未来NLP长文本任务中的一项可靠工具。

5. 原文传送门

Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context


https://dhexx.cn/news/show-4628030.html

相关文章

Golang每日一练(leetDay0086) 回文链表、删除链表节点

目录 234. 回文链表 Palindrome Linked-list &#x1f31f; 237. 删除链表中的节点 Delete Node In a Linked-list &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练…

MMPose(openmmlab AI实战营二期第一节)

链接&#xff1a;人体关键点检测与MMPose_哔哩哔哩_bilibili 赶了个进度&#xff0c;实际上没听到&#xff0c;一个方向被浓缩成50分钟是有点难度。后续有需要再回顾吧 人体姿态估计&#xff1a;识别人体关键点坐标。模式识别任务&#xff0c;难点是始终在变化。以关键点连线…

软件外包开发的测试用例

软件测试用例是一组详细的步骤、输入数据、预期结果和实际结果&#xff0c;用于验证软件是否满足特定需求或功能。编写测试用例的目的是确保软件的质量和性能。今天和大家分享编写软件测试用例的一般步骤&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;…

数据库关系操作集合

文章目录 传统集合运算1:联合&#xff08;UNION&#xff09;2:差集&#xff08;EXCEPT 或 MINUS 或 LEFT JOIN&&IS NULL&#xff09;3:交集&#xff08;INTERSECT或INNER JOIN&#xff09;4:笛卡尔积&#xff08;JOIN&#xff09; 专门集合运算1:选择&#xff08;SELEC…

Anolis OS8 磁盘扩容

最近学习的时候&#xff0c;使用Vmware安装了AnolisOS8进行测试&#xff0c;随着学习的深入&#xff0c;组件安装越来越多&#xff0c;磁盘不够用了&#xff0c;但是安装的组件又太多&#xff0c;重新装个虚拟机又得重新装各种组件。所以决定对磁盘进行扩容&#xff0c;在这里做…

JVM那些事 (含经典面试题)

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 前言: 1. JVM&#xff1a;Java 虚拟机&#x…

《商用密码应用与安全性评估》第四章密码应用安全性评估实施要点4.5密码应用安全性评估测评工具

目录 测评工具使用和管理要求 测评工具体系 通用测评工具 专用测评工具 典型测评工具概述 测评工具使用和管理要求 测评过程中使用的专用测评工具应通过国家密码管理局的审批或者经检测认证合格。为确保工具测试结果的准确可信&#xff0c;测评机构应确认使用的专用工具是最…

2023/06/03 软件PM入门学习(二)

视频参考地址&#xff1a; B站闫波软件项目管理视频学习. 视频资源&#xff1a;video P3 本篇重点&#xff1a;过程、CMMI 简书日更计划同步记录&#x1f3c3;… 杂 项目管理五要素 技术、方法、团队建设、信息、沟通 战略角度 人员&#xff08;people&#xff09;问题 &am…

Linux账号管理与ACL权限设定(一)

Linux的账号与群组 Linux系统中&#xff0c;关于账号和群组&#xff0c;实际记录的是UID和GID的数字&#xff1b; 关于账号有两个非常重要的文件&#xff1a;/etc/passwd 和 /etc/shadow &#xff1b; /etc/passwd 文件结构&#xff1a; 账号名称&#xff1a;密码&#xff…

【内网穿透】Linux本地搭建GitLab服务器

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar内网穿透5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 转载自cpolar极点云文章&#xff1a;Linux搭建GitLab私有仓库&#xff0c;并内网穿透实…