关于Transformer的具体内容,可以访问:https://www.cnblogs.com/mj-selina/p/12369797.html

简介
Transformer是Google Brain2017年提出的一种模型,它的编码能力超越了RNN,但是对于长距离依赖的建模能力依然不足。为解决长距离依赖问题,Google Brain提出了Transformer-XL模型(XL是extra long的意思),不仅能够获取长距离依赖,而且解决了文本碎片化的问题。Transformer-XL是基于vanilla Transformer进行创新的,它不仅能比vanilla Transformer处理4.5倍长的长距离依赖关系,而且在评估期间要比vanilla Transformers快1800倍。
注1:文本碎片化是vanilla Transformer中会遇到的问题,因为vanilla Transformer只能处理固定长度的序列,如果序列过长,会将其切割成两个或者多个序列,如果序列之间存在语义关系,而vanilla Transformer在编码的时候会丢失这种语义关系(在编码时,序列与序列之间不产生信息交换),产生文本碎片化问题。

Vanilla Transformer
VanillaTransformer输入固定长度的序列,如果输入序列比规定的长度长,则会将输入序列不考虑语义的切割成多个segment,如下图(a)所示。这种不考虑语义的切割方法,会导致文本碎片化问题,每个segment只能获取到自己的语义信息,而丢失之前segment的语义信息。
而在评估时,vanilla模型只会考虑同样长度的segment,一般它会取最后一个位置的隐向量作为输出。如下图(b)所示,在预测输出时,模型每次会向右移动一步,并根据新的segment片段预测此刻的单词。这种使用当前序列重新预测的方法,会导致计算量大增,预测速度较慢,且不能利用更早的信息。

Transformer-XL
1、片段级递归机制(segment-level recurrence mechanism):在Transformer中引入了循环机制,在训练当前segment的时候,会保存并使用上一个segment每一层的输出向量。这样就可以利用之前segment的信息,提高Transformer长期依赖的能力,在训练时前一个segment的输出只参与前向计算,而不参与反向传播。

如上图所示,可以看出,在训练当前segment时,Transformer-XL会利用前一个segment的信息(图中绿色线段)。如果GPU内存允许,可以使用前多个segment的信息。
循环机制的另一个优点是测试速度快,它每次可以前进一个segment的距离,而不是像vanilla一样,一次只能前进一个表征。

2、相对位置编码(Relative Positional Encodings):Transformer中使用一个序列的绝对位置计算positional encoding,再与单词的encoding相加即可。但是Transformer-XL中,将序列分成多个segment,每个segment都会存在相同位置的Embedding,positional encoding的位置信息就失去了意义。因此Transformer-XL提出了相对位置编码,在计算当前位置隐向量的时候,考虑其互相依赖的token的位置关系。具体做法是,在计算attention score的时候,只考虑query向量与key向量的相对位置关系,并将这种相对位置关系加入到每一层Transformer的attention的计算中,具体的计算法师如下:
(1)内容权重:没有添加原始位置编码的原始分数
(2)相对于当前内容的位置偏差:指从前一个seglment的第一个位置(假设index为0)到当前segment的当前word的位置(假设index为k),则位置偏差为k-t,并对位置偏差使用正弦函数进行位置向量计算
(3)可学习的全局内容偏差:该模型添加了一个可学习的向量,用于调整其他表征内容(Kj)的重要性
(4)可学习的全局偏差:另一个可学习向量,仅根据表征之间的距离调整重要性(例如,最后一个词可能比前一个segment中的词更重要)

关于相对位置的具体计算方法,可以看[4]

参考资料:
[1] https://zhuanlan.zhihu.com/p/70745925
[2] https://www.infoq.cn/article/wt-KaTfcsAv9E7exzIkF
[3] https://zhuanlan.zhihu.com/p/84159401
[4] http://www.linzehui.me/2019/05/07/%E4%BB%A3%E7%A0%81%E7%9B%B8%E5%85%B3/%E5%85%B3%E4%BA%8Etransformer-xl%E4%B8%ADrel-shift%E5%AE%9E%E7%8E%B0%E7%9A%84%E8%A7%A3%E8%AF%BB/

[NLP]Transformer-XL论文解读的更多相关文章

  1. NLP论文解读:无需模板且高效的语言微调模型(上)

    原创作者 | 苏菲 论文题目: Prompt-free and Efficient Language Model Fine-Tuning 论文作者: Rabeeh Karimi Mahabadi 论文 ...

  2. [论文解读] 阿里DIEN整体代码结构

    [论文解读] 阿里DIEN整体代码结构 目录 [论文解读] 阿里DIEN整体代码结构 0x00 摘要 0x01 文件简介 0x02 总体架构 0x03 总体代码 0x04 模型基类 4.1 基本逻辑 ...

  3. 注意力论文解读(1) | Non-local Neural Network | CVPR2018 | 已复现

    文章转自微信公众号:[机器学习炼丹术] 参考目录: 目录 0 概述 1 主要内容 1.1 Non local的优势 1.2 pytorch复现 1.3 代码解读 1.4 论文解读 2 总结 论文名称: ...

  4. 论文解读丨表格识别模型TableMaster

    摘要:在此解决方案中把表格识别分成了四个部分:表格结构序列识别.文字检测.文字识别.单元格和文字框对齐.其中表格结构序列识别用到的模型是基于Master修改的,文字检测模型用到的是PSENet,文字识 ...

  5. 人工智能论文解读精选 | PRGC:一种新的联合关系抽取模型

    NLP论文解读 原创•作者 | 小欣   论文标题:PRGC: Potential Relation and Global Correspondence Based Joint Relational ...

  6. itemKNN发展史----推荐系统的三篇重要的论文解读

    itemKNN发展史----推荐系统的三篇重要的论文解读 本文用到的符号标识 1.Item-based CF 基本过程: 计算相似度矩阵 Cosine相似度 皮尔逊相似系数 参数聚合进行推荐 根据用户 ...

  7. CVPR2019 | Mask Scoring R-CNN 论文解读

    Mask Scoring R-CNN CVPR2019 | Mask Scoring R-CNN 论文解读 作者 | 文永亮 研究方向 | 目标检测.GAN 推荐理由: 本文解读的是一篇发表于CVPR ...

  8. AAAI2019 | 基于区域分解集成的目标检测 论文解读

    Object Detection based on Region Decomposition and Assembly AAAI2019 | 基于区域分解集成的目标检测 论文解读 作者 | 文永亮 学 ...

  9. Gaussian field consensus论文解读及MATLAB实现

    Gaussian field consensus论文解读及MATLAB实现 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.Introduction ...

  10. zz扔掉anchor!真正的CenterNet——Objects as Points论文解读

    首发于深度学习那些事 已关注写文章   扔掉anchor!真正的CenterNet——Objects as Points论文解读 OLDPAN 不明觉厉的人工智障程序员 ​关注他 JustDoIT 等 ...

随机推荐

  1. Educational Codeforces Round 80 (Rated for Div. 2)(A-E)

    C D E 这三道题感觉挺好       决定程序是否能通过优化在要求的时间内完成,程序运行时间为t,你可以选择花X天来优化,优化后程序的运行时间为t/(x+1)取上整,花费的时间为程序运行时间加上优 ...

  2. PIE-SDK For C++ Geometry的坐标转换

    1. 基于SpatialReference对象的坐标转换 1.1 示例简介 Geometry类是所有几何形体对象的父类,它是一个抽象类,IGeometry接口定义了所有的几何对象都有的方法和属性. 下 ...

  3. 前端开发 css、less编写规范

    壹 ❀ 引 早在大半年前,我在负责整理定义了前端组JavaScript开发规范与less.css样式开发规范.一直想将两个规范整理成文章,但在整理了JavaScript规范后,我花了较多的时间在学习J ...

  4. 使用vim打开文件的16进制形式,编辑和全文替换

    1.先用vim打开文件的二进制形式,如果不以二进制可能会产生转换错误. vim -b file-to-open.dat 2.用xxd把文件转换成十六进制格式 :%!xxd 现在就可以对待普通文本一样查 ...

  5. brew 安装 yarn 时候失败

    1.mac 安装 brew install yarn 报错 Error: Failure while executing; `git config --local --replace-all home ...

  6. gulp-css-spriter 雪碧图合并

    相信做前端的同学都做过这样的事情,为优化图片,减少请求会把拿到切好的图标图片,通过ps(或者其他工具)把图片合并到一张图里面,再通过css定位把对于的样式写出来引用的html里面.gulp-css-s ...

  7. 2019ICPC南昌站E.Bob's Problem

    题意: 一张图,n个点,m条边分为黑边和白边,黑边任意选,白边只能选k条,在保持整张图连通的情况下使得所选变的权值和最大 解析: 因为边权全部是正值,所以可以把黑边全选上,缩点之后对各个连通块和白边进 ...

  8. 《深入理解java虚拟机》读书笔记十——第十一章

    第十一章  晚期(运行期)优化 1.HotSpot虚拟机内的即时编译 解释器与编译器: 许多Java虚拟机的执行引擎在执行Java代码的时候都有解释执行(通过解释器执行)和编译执行(通过即时编译器产生 ...

  9. docker部署mysql Navicat远程连接

    docker部署mysql Navicat远程连接 docker search mysql   查看mysql镜像(是去dockerHub网站搜素镜像,遇到问题可以去该网站查看官方文档,纯英文文档估计 ...

  10. Vue中封装axios

    参考: https://www.jianshu.com/p/7a9fbcbb1114 https://www.cnblogs.com/dreamcc/p/10752604.html 一.安装axios ...