论文笔记-Vanilla Transformer:Character-Level Language Modeling with Deeper Self-Attention

  • 1. 介绍
  • 2. Character Transformer Model
  • 3. 3种辅助loss
    • 3.1 Multiple Positions
    • 3.2 Intermedia Layer Losses
    • 3.3 Multiple Targets
  • 4. 实验
    • 4.1 训练和数据
    • 4.2 结果(消融实验)
    • 4.3 Qualitative Analysis 定性分析
  • 参考

前段时间为了解决长文本分类的问题,即长距离依赖问题,依次就看了些相关论文。比如Transformer-XL、XLNet等,这篇Vanilla Transformer在Transformer-XL中被用来做对比,所以也看了下这篇论文,记录一下。

1. 介绍

论文名称为:Character-Level Language Modeling with Deeper Self-Attention,主要解决的是字符级语言模型。在使用Transformer之前,自然语言文本的Character-level modeling通常具有如下一些 挑战/困难

  • (1)模型学习单词需要“from scratch”从头开始
  • (2)自然文本表现出的长甚至超长距离依赖
  • (3)基于字符的序列长度比词级别的序列显著增加,需要更多的计算step

但Transformer由于其self-attention的核心,作者发现:

  • (1)transformer适合于长序列的语言建模。作者推测,transformer在这里的成功是由于它能够“快速”地在任意距离上传播信息(We speculate that the transformer’s success here is due to its ability to “quickly” propagate information over arbitrary distances)
  • (2)对basic transformer进行一些修改在这一领域(字符级语言模型)是有益的:增加3个辅助损失auxiliary losses
    • 【Multiple Positions】 at intermediate sequence positions
    • 【Intermedia Layer Losses】 from intermediate hidden representations
    • 【Multiple Targets】 at target positions multiple steps in the future

这些loss加速了收敛,并且使得训练更深的网络成为可能。

2. Character Transformer Model

语言模型:
Pr(t0:L)=P(t0)∏i=1LPr(ti∣t0:i−1)Pr(t_{0:L})=P(t_0)\prod\limits_{i=1}^L Pr(t_i|t_{0:i-1})Pr(t0:L)=P(t0)i=1LPr(tit0:i1)

像原先seq2seq架构的Transformer一样,在训练语言模型时,为了确保模型的预测仅条件依赖于过去的字符,所以也为attention layers添加了look-ahead mask,所以每个位置只可以关注到左侧。即使用的是原先seq2seq架构的Transformer的 decoder 部分结构

模型架构上基本就是堆叠的64层transformer layers,每个layer有2个head。一个transformer layer就是指包含multihead self-attention sub-layer + 2层全连接sub-layers的 feed-forward network。每层Transformer layer的hidden_size=512, feed-forward network的内层FFC的dim是2048。模型处理的序列长度为512。

原始的 transformer中使用了正弦信号作为position encoding,但是此论文中是有64层的深度网络,这种时间(序列)信号在传播时非常容易丢失,所以作者在模型的每层transformer layer 前都添加了a learned per-layer positional embedding,即每层都添加了可学习的位置embedding,每一层都不一样,假设有N层layers,每层有L长度的context positions,位置编码深度(embedding dim)为512,则光位置embedding就会有一共LxNx512L\,\text{x}\,N\,\text{x}\,512LxNx512个额外的(位置)参数。【每层都会将上一层的输出与pos embedding加在一起作为下一层的输入】【每层的pos embedding不是共享的】

所以说架构上没有提出什么特别新的,但是由于当模型深度很深,作者在最开始的实验中,只是有10层的时候,训练就已经非常有挑战性了,很慢的收敛以及非常低的准确率accuracy。于是作者提出增加3种辅助loss,分别是:

  • 【Multiple Positions】 intermediate positions
  • 【Intermedia Layer Losses】 intermediate layers
  • 【Multiple Targets】 and nonadjacent targets

论文指出增加这些辅助loss后,显著的加速了收敛。作者猜测这些loss不仅能加速收敛,还作为额外的正则化regularizer

3. 3种辅助loss

3.1 Multiple Positions

预测时不是指预测最后一个位置,而是序列的每个位置都进行预测,例如上图中t1,t2,t3,t4 4个位置都会产生预测然后都会计算loss。训练时,t1~t4产生的loss都不会decay,都是同等重要的。【这一类loss贯穿整个train的全部阶段,不发生衰减】

3.2 Intermedia Layer Losses

不仅最后一层会计算loss,作何对序列中所有中间位置的也添加了预测并也参与计算loss(见图3)。 随着训练的进展,低层被加权,对损失的贡献越来越小。 如果总共有n层,那么第lll个中间层在完成 l2n\frac{l}{2n}2nl 的训练后停止贡献任何损失。 在训练完成一半后,这个schedule会drop所有中间损失。【中间层的loss并不贯穿整个train始终,而是随着训练进行,逐渐衰减,衰减的方式是,一共有n层网络,当训练进行到l2n\frac{l}{2n}2nl 时停止计算第k层loss。也就是说当训练进行到一半的时候,所有的 中间层 都不再贡献loss】

3.3 Multiple Targets

在序列的每个位置,模型不仅对下一个token做预测,还会对下下一个token做预测。【但对于下下步的预测结果产生的loss是要发生衰减的,论文中该loss乘以0.5后再加入到整体的loss中】

4. 实验

4.1 训练和数据

  • prediction layers:logistic regression layers over the full 256 outputs
  • 由于参数(235 million)比语料大,所以为了regularize the model,添加了dropout=0.55 在attention和ReLU layers。
  • 使用momentum optimizer with 0.99 momentum
  • learning rate 固定:0.003
  • 训练:4 million steps

4.2 结果(消融实验)

从实验结果开看:【Multiple positions和Intermedia layer losses的增益最突出。】

4.3 Qualitative Analysis 定性分析

优点:
可以学到长距离依赖,can successfully copy over this long distance.

缺点:
计算量大,每次预测一个字符,前面都要重新计算,不能像RNN一样能记住之前的隐藏状态信息。

参考

[1] Character-Level Language Modeling with Deeper Self-Attention
[2] 【读论文】Character-Level Language Modeling with Deeper Self-Attention(Vanilla Transformer)

论文笔记-Vanilla Transformer:Character-Level Language Modeling with Deeper Self-Attention相关推荐

  1. 【读论文】Character-Level Language Modeling with Deeper Self-Attention(Vanilla Transformer)

    当初读这篇论文的目的只有1个:在读Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context这篇文章时,关于infe ...

  2. Assignment | 05-week1 -Character level language model - Dinosaurus land

    该系列仅在原课程基础上课后作业部分添加个人学习笔记,如有错误,还请批评指教.- ZJ Coursera 课程 |deeplearning.ai |网易云课堂 CSDN:http://blog.csdn ...

  3. 17.深度学习练习:Character level language model - Dinosaurus land

    本文节选自吴恩达老师<深度学习专项课程>编程作业,在此表示感谢. 课程链接:https://www.deeplearning.ai/deep-learning-specialization ...

  4. 序列模型第一周作业2: Character level language model - Dinosaurus land

    来自吴恩达深度学习系列视频:序列模型第一周作业2: Character level language model - Dinosaurus land.如果英文对你说有困难,你可以参照[中文][吴恩达课 ...

  5. 《Character-Level Language Modeling with Deeper Self-Attention》文献阅读

    本博文基于<Character-Level Language Modeling with Deeper Self-Attention>这篇文章进行讲解,该文章发表在2019年的AAAI会议 ...

  6. 论文笔记二 Positive, Negative and Neutral: Modeling Implicit Feedback inSession-based News Recommendatio。

    目录 一  论文简介 论文名称 :Positive, Negative and Neutral: Modeling Implicit Feedback in 中文名称:积极.消极和中立:在基于会话的新 ...

  7. 论文笔记 ACL 2019|Exploring Pre-trained Language Models for Event Extraction and Generation

    文章目录 1 简介 1.1 动机 1.2 创新 3 抽取模型 3.1 触发词抽取 3.2 论元抽取 3.3 确定论元区间 3.4 重新加权loss 4 训练数据生成 4.1 预处理 4.2 事件生成 ...

  8. [论文笔记] 2022-TKDE-Semantic and Structural View Fusion Modeling for Social Recommendation

    文章目录 1 摘要 2 介绍 3 问题定义 3.1 社会化推荐中的隐式关系 3.1.1 隐式用户关系 3.1.2 隐式物品关系 3.2 用于社会化推荐的元路径 3.3 元路径引导的图注意力网络 3.4 ...

  9. NLP-生成模型-2018:Vanilla Transformer【将长文本序列划截断为多个固定长度的段;段与段之间没有上下文依赖性;无法建模字符之间超过固定长度的依赖,关系导致上下文碎片化】

    一.Vanilla Transformer的结构 首先,作者要解决的问题是字级别的LM,相比词级别的LM,字级别LM明显需要依赖的距离特别长,比如说一句话某个位置是应该使用she还是he,是依赖于前面 ...

最新文章

  1. 地铁闸门会夹伤人吗_男子被夹地铁屏蔽门与列车之间,现场画面太惊险!
  2. node.js将buffer对象转换为json对象
  3. python操作excel命令_python操作Excel读写(使用xlrd和xlrt)[转帖]
  4. leetcode算法—无重复字符的最长子串 Longest Substring Without Repeating Characters
  5. 10个顶级的CSS和Javascript动画框架推荐
  6. 昔日“宅男最爱”、视频播放器之王破产清算:4.5万元商标拍到950万元
  7. 《JavaScript高级程序设计(第2版)》
  8. 什么是AJAX (转贴)
  9. iOS 简易音乐播放界面
  10. 【电商】电商后台设计—电商产品的用户体系
  11. Euraka学习笔记
  12. 项目管理 之一 软件开发生命周期(软件开发过程、瀑布模型、敏捷开发等)
  13. 制图利器—MapGIS10.5制图版体验
  14. 客户分析表格怎么做 财务合并报表培训 5分钟看懂财务报表
  15. 推荐尽可能看Paul Deitel的英文原著《C how to Program, Sixth Edition》
  16. 安装Kubuntu至U盘
  17. python有趣小程序春节祝福-Python自动回复微信好新年祝福
  18. 平安人寿优+计划广纳英才,平安代理人实现职涯发展
  19. mysql和jdbc(韩)
  20. 测试应该知道的知识-python检查死链

热门文章

  1. Spring详解(超全面)
  2. 什么是wildfly
  3. 第二个MFC实例:GPA计算器
  4. torch_geometric.utils.k_hop_subgraph
  5. php生成excel到服务器,php如何异步生成excel文件并保存到服务器
  6. 一个系列搞懂Mysql数据库12:从实践sql语句优化开始
  7. 用js来写一个478呼吸动画来做393的默想吧-用js来写一个478呼吸动画
  8. heartbeat: ha.cf配置文件中文详解
  9. VBA 数值-文本转换
  10. 拼多多报活动没有流量怎么办 拼多多活动流量少是什么原因