论文笔记-Vanilla Transformer:Character-Level Language Modeling with Deeper Self-Attention
论文笔记-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=1∏LPr(ti∣t0:i−1)
像原先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相关推荐
- 【读论文】Character-Level Language Modeling with Deeper Self-Attention(Vanilla Transformer)
当初读这篇论文的目的只有1个:在读Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context这篇文章时,关于infe ...
- Assignment | 05-week1 -Character level language model - Dinosaurus land
该系列仅在原课程基础上课后作业部分添加个人学习笔记,如有错误,还请批评指教.- ZJ Coursera 课程 |deeplearning.ai |网易云课堂 CSDN:http://blog.csdn ...
- 17.深度学习练习:Character level language model - Dinosaurus land
本文节选自吴恩达老师<深度学习专项课程>编程作业,在此表示感谢. 课程链接:https://www.deeplearning.ai/deep-learning-specialization ...
- 序列模型第一周作业2: Character level language model - Dinosaurus land
来自吴恩达深度学习系列视频:序列模型第一周作业2: Character level language model - Dinosaurus land.如果英文对你说有困难,你可以参照[中文][吴恩达课 ...
- 《Character-Level Language Modeling with Deeper Self-Attention》文献阅读
本博文基于<Character-Level Language Modeling with Deeper Self-Attention>这篇文章进行讲解,该文章发表在2019年的AAAI会议 ...
- 论文笔记二 Positive, Negative and Neutral: Modeling Implicit Feedback inSession-based News Recommendatio。
目录 一 论文简介 论文名称 :Positive, Negative and Neutral: Modeling Implicit Feedback in 中文名称:积极.消极和中立:在基于会话的新 ...
- 论文笔记 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 事件生成 ...
- [论文笔记] 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 ...
- NLP-生成模型-2018:Vanilla Transformer【将长文本序列划截断为多个固定长度的段;段与段之间没有上下文依赖性;无法建模字符之间超过固定长度的依赖,关系导致上下文碎片化】
一.Vanilla Transformer的结构 首先,作者要解决的问题是字级别的LM,相比词级别的LM,字级别LM明显需要依赖的距离特别长,比如说一句话某个位置是应该使用she还是he,是依赖于前面 ...
最新文章
- 地铁闸门会夹伤人吗_男子被夹地铁屏蔽门与列车之间,现场画面太惊险!
- node.js将buffer对象转换为json对象
- python操作excel命令_python操作Excel读写(使用xlrd和xlrt)[转帖]
- leetcode算法—无重复字符的最长子串 Longest Substring Without Repeating Characters
- 10个顶级的CSS和Javascript动画框架推荐
- 昔日“宅男最爱”、视频播放器之王破产清算:4.5万元商标拍到950万元
- 《JavaScript高级程序设计(第2版)》
- 什么是AJAX (转贴)
- iOS 简易音乐播放界面
- 【电商】电商后台设计—电商产品的用户体系
- Euraka学习笔记
- 项目管理 之一 软件开发生命周期(软件开发过程、瀑布模型、敏捷开发等)
- 制图利器—MapGIS10.5制图版体验
- 客户分析表格怎么做 财务合并报表培训 5分钟看懂财务报表
- 推荐尽可能看Paul Deitel的英文原著《C how to Program, Sixth Edition》
- 安装Kubuntu至U盘
- python有趣小程序春节祝福-Python自动回复微信好新年祝福
- 平安人寿优+计划广纳英才,平安代理人实现职涯发展
- mysql和jdbc(韩)
- 测试应该知道的知识-python检查死链
热门文章
- Spring详解(超全面)
- 什么是wildfly
- 第二个MFC实例:GPA计算器
- torch_geometric.utils.k_hop_subgraph
- php生成excel到服务器,php如何异步生成excel文件并保存到服务器
- 一个系列搞懂Mysql数据库12:从实践sql语句优化开始
- 用js来写一个478呼吸动画来做393的默想吧-用js来写一个478呼吸动画
- heartbeat: ha.cf配置文件中文详解
- VBA 数值-文本转换
- 拼多多报活动没有流量怎么办 拼多多活动流量少是什么原因