Transformer-XL框架

引入

Transformer-XL超长上下文的注意力模型,出自CMU和Google Brain在2019年1月发表的论文:《Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context》。其中XL是extra long的缩写,意为额外长度。论文地址:https://arxiv.org/pdf/1901.02860.pdf 先简单举例Transformer XL与Transformer 的区别。比如有以下数据:

“小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。”
如果把序列长度设为十个字,代入模型时数据被切分为:
“小说是以刻画人物形象”(序列一)
“为中,通过完整的故”(序列二)
……

在训练第二个序列时,它的意思是不完整的,Transformer计算第二个序列中的第三字“心”时只能通过前两个字“为中”作为输入计算,而Transformer-XL可以把序列一中的十个字同时作为输入。

切分,尤其当英文中使用字符作为序列中的元素时,如果一个单词被切成两部分,分别位于前后两个序列中,必然影响模型效果。Transformer-XL让之前的序列也能参与到当前序列的预测中来,由此解决了长序列依赖问题,以及序列切断问题。

Transformer-XL既不像GPT-2一样使用海量数据训练,也没像ERNIE加入自然语言相关领域的知识,它主要通过改进模型的架构提高性能。它在字符级和词的级别上表现都很好(第一个在这两方面都超过RNN的自注意力模型),该方案不仅能应用于自然语言处理,在其它序列问题中也能发挥很好的效果。测试证明其在小数据集上也表现优异。

原理

Transformer模型用Self-Attention自注意力机制替换了循环网络RNN,而Transformer-XL再次使用RNN,处理序列之间的连续性。Transformer XL有两点重要创新:循环机制(Recurrence Mechanism)和相对位置编码(Relative Positional Encoding)。

循环机制

尽管Transformer模型可以处理较长的上下文关系,但仍需要在训练时将文章切分成固定长度的序列,再代入模型。而模型学到的也是各序列内部的规律。

  • 若不切分,字串太长,尤其是以字符为单位时,计算注意力过于复杂。
  • 按标点或按段切分,使程序效率下降。
  • 按固定长度切分后,前后的语义被切断。

Transformer XL在输入数据的每个段上仍使用自注意力方法,并使用循环机制来学习连续段之间的依赖关系。

图片摘自论文

Transformer模型的依赖关系如上图(a)中的灰色线条所示,在每个序列中,当前层的输入取决于前一层的输出;Transformer-XL模型的依赖关系又加入了绿色连线,使当前层的输入取决于本序列和前一序列前一层的输出。具体公式如下:

其中h为隐藏层,n为层数,r为序列数,W为模型参数。

式一计算当前第n-1隐藏层时,考虑了当前序列r上一个序列r-1的隐藏层值,其中SG意为stands for stop-gradient停止计算梯度,这样即运用了前一序列生成的数据,又不对其反向传播调参,节省了算力;中括号里的圆圈为连接两个隐藏层。

式二计算注意力所需的q,k,v,q用于查询当前位置,k用于提供相关位置信息,v用于提供相关位置的值。其中k和v使用了包括上个序列信息的隐藏层,而查询q只与当前序列相关。另外,第n个层是通过前一个序列和当前序列的n-1层算出来的,这和基础的循环网络RNN有所不同。

式三将q,k,v代入Transformer算法,计算隐藏层n。

上述方法在计算过程中保留了前一个序列的隐藏层输出h,使得评价过程中不需要每次从头计算,也节约了算力。

相对位置编码

每个序列有其各自的位置编码,当使用多个序列作为输入时,则会出现位置冲突的问题。解决方法是将序列内部的绝对位置编码变为相对位置编码,并把在一开始计算位置编码,移到注意力打分时做计算。直觉上看,相对位置比绝对位置更重要,比如上例中“整”的前一个位置是“完”,一定比“整”在位置八时第七位置是“完”更合理。

具体方法是修改计算Attention的算法:

上式中E表示词嵌入,U表示绝对位置信息,R为相对位置信息,W为模型参数,i是查询元素,j是相关元素。

式四使用绝对位置计算,先将词嵌入E和绝对位置U相加后,与参数相乘计算重要性权重,第二行将其展开。

式五使用相对位置计算,首先用相对位置R代替绝对位置U;由于不需要绝对位置Ui, 引入了u,v参数,取代UiTWqT;另外将参数Wk拆分成了Wk,E和Wk,R。式五又可分为四部分,含义分别是:

(a) j的内容相对于i的影响
(b) i与j的距离对于i的影响
(c) j的内容相对于整体的影响
(d) i与j的距离对于整体的影响

相对编码和循环网络二者结合后才能提升模型效果。如果只加循环网络,则前一序列的位置编码可能与当前序列的位置编码混淆;如果只使用相对位置编码,那么无法解决句子的截断问题。

代码

Git代码地址:
https://github.com/kimiyoung/transformer-xl

作者提供了Tensorflow、PyTorch两种代码实现,以Pytorch为例,其模型实现在pytorch/mem_transformer.py代码中,其模型的代码几乎是transformer代码量的两倍,但命令名规则一致。

层结构、注意力、位置编码与基本的Transformer模型大同小异,改进的核心在:保存之前隐藏层数据的mems和计算相对位置的Rel*LearnableMultiHeadAttn部分。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容