最近在使用Transformer模型跑任务,正好加入了同学组织的一个暑期文献打卡群,于是决定假期每天读一篇文献,主要关于近两年对于Transformer模型应用的论文。阅读论文的笔记分享给大家~
7月18日
R-transformer : Recurrent neural network enhanced transformer
R-Transformer: Recurrent Neural Network Enhanced Transformer?arxiv.org 主要综合了RNN和Transformer两种模型的优点,提出了R-transformer
Transformer虽然在很多模型上表现出了很好的效果,但目前有两个比较致命的问题:
- 第一是对于位置的编码,虽然transformer引入了Position embedding,但是其效果并不好。并且对于具体的任务还需要设计具体的位置编码方式;
- 第二是多头注意力机制忽略了很多局部的特征
改进方法是:
将transformer的position embedding替换成局部的RNN,文章中称其为LocalRNN。具体来讲就是对一个序列,在每个位置的一个固定大小窗口范围内跑一个LocalRNN,将其局部的特征也表示到向量中,然后再按照transformer那样进行全局的多头attention和FeedForword

文章图片

文章图片
这个模型实际借鉴了TCN模型和标准transformer模型的思想。R-transformer借鉴了TCN层次化的思想,但在局部特征的提取方式上,TCN使用的是卷积核,而该模型使用了LocalRNN,这样可以更好地将位置信息进行提取。
通过以上改进,模型可以通过LocalRNN提取局部特征,弥补标准transformer在这方面的不足,同时在整体框架上依旧保持着transformer模型可并行的特点。
7月19日
Analyzing the structure of attention in a transformer language model Analyzing the Structure of Attention in a Transformer Language Model?arxiv.org 主要介绍了对于transformer attention可视化的方式。
【transformer论文_Transformer相关论文阅读笔记】文章介绍了从attention-head,model,neuron三个层面的可视化,可以从中看出query和key之间的attention关系。之后文章还介绍了对于依赖关系和attention距离的一些可视化。
这篇文章偏工程性,所以好像没有太多可以讲的,后面就看代码去了
7月20日
Hierarchical Attention: What really counts in various NLP task Hierarchical Attention: What Really Counts in Various NLP Tasks?arxiv.org 主要介绍了一种算层次化attention的方法,对于Vanilla Attention,计算query和所有keys的attention值,然后再对所有attention进行加权得到最终的attention。

文章图片
对于self-attention,则先计算d次self-attention,然后再对这d次加权得到最终的attention。

文章图片
通过数学证明可知这种方法好于前面两种经典的attention机制,具体证明过程就省去了,可以看原论文的Section 4
7月21日
An analysis of Encoder Representations in Transformer-Based Machine Translation https://www.aclweb.org/anthology/W18-5431?www.aclweb.org 主要研究了transformer中,模型表示的含义
在transformer模型中,有三种attention,分别为:
(1)encoder的self-attention,其中每一个位置都能attend到前一层的所有位置
(2)encoder-decoder的attention,其中decoder的每一个位置都能attend到上一encoder层的所有位置
(3)decoder的self-attention,其中每一个decoder的位置都能attend到之前的所有位置
作者通过以下几个实验研究了encoder的表示质量:
- 首先通过对于encoder权重的热感图来研究语言模式
- 其次通过从multi-head attention中提取的softmax权重来构建一棵输入句子的最大生成树
- 使用一个固定的encoder表示作为输入,来衡量对于不同任务,input features的重要性
- 可视化结果:

文章图片
- 推导树结构(Inducing Tree Structure):

文章图片
7月22日
Generating Wikipedia by Summarizing Long Sequences Generating Wikipedia by Summarizing Long Sequences?arxiv.org 主要介绍了一种多文本概括的方法
之前对于文本摘要的任务,主要采用的是从输入文档中选取句子或者短语,并没有产生新的文本。由于缺少大量的平行语料,这样的方式无法引入神经网络的方法。这个工作中,作者将一个Wiki的主题词和一系列参考文章作为输入,目标是一篇wiki百科文章。
由于输入的参考文章可能数量很多,所以在内存限制下无法训练一个端到端的模型。于是他们采取了两个步骤
(1)从输入中选取一些总结
(2)从这些总结中生成一篇文章
这仿照了人写一篇摘要时的思路:先画出文章中的重点部分,再产生总结
- 提取阶段
- Identity:直接选取最开始的L个tokens
- tf-idf
- TextBank
- SmBasic:使用词频作为对每次词语的打分,之后再根据词语的打分给句子评分
- 总结阶段
updating......