【NLP】Universal Transformers详解

栏目: 编程工具 · 发布时间: 6年前

内容简介:上一篇transformer写了整整两周。。解读太慢了。。主要是自己也在理解,而且没有时间看源码,非常惭愧,如果哪里说错了希望大佬们可以提醒一下之前细细研究了attention和transformer之后,universal transformer读了一遍就理解了,缺乏之前基础的童鞋们请先移步:2.【NLP】Transformer详解

上一篇transformer写了整整两周。。解读太慢了。。主要是自己也在理解,而且没有时间看源码,非常惭愧,如果哪里说错了希望大佬们可以提醒一下

之前细细研究了attention和transformer之后,universal transformer读了一遍就理解了,缺乏之前基础的童鞋们请先移步:

  1. 【NLP】Attention原理和源码解析

2.【NLP】Transformer详解

Universal Transformer的产生是因为Transformer在实践上和理论上的两个缺点(参考上篇文章),universal代表的是computationally universal,即图灵完备(参考Transformer详解第三节)。主要的改动就是加上了循环,但不是时间上的循环,而是depth的循环。注意到Transformer模型其实分别用了6个layer,是fixed depth,而universal中应用了一个机制对循环的次数进行控制。

1. 模型结构

【NLP】Universal Transformers详解

模型的结构还是和传统Transformer很相似,这里就不重复解读了,主要讲一下universal transformer的几点改动:

1.1 Recurrent机制

在Transformer中,input在经过multihead self-attention后会进入fully connected层,这里则进入了Transition层,通过一个 共享权重 的transition function继续循环计算:

【NLP】Universal Transformers详解

这里纵向的position指的就是一个序列中各个symbol的位置(也就是在rnn中的time step),横向的time指的主要是计算上的先后顺序,比如一个序列 【NLP】Universal Transformers详解 ,先经过embedding表示成 【NLP】Universal Transformers详解 ,在经过一层attention+transition表示成 【NLP】Universal Transformers详解 。如果是rnn,那就要先计算 【NLP】Universal Transformers详解 ,再计算 【NLP】Universal Transformers详解【NLP】Universal Transformers详解 ,而transformer的self-attention可以同时计算 【NLP】Universal Transformers详解 ,再计算t+1的。

这样,每个self-attention+transition的输出 【NLP】Universal Transformers详解 可以表示为:

【NLP】Universal Transformers详解

【NLP】Universal Transformers详解

这里Transition function可以和之前一样是fully-connected layer,也可以是separable convolution layer。

1.2 Coordinate embeddings

Transformer的positional embedding只用考虑symbol的position就可以了,这里又多了一个time维度,所以每一次循环都会重新做一次coordinate embedding,图上没有表示出来,需要看源码确认一下。Embedding公式如下:

【NLP】Universal Transformers详解

【NLP】Universal Transformers详解

暂时还没想清楚为什么这么运算,想清楚了说一下。。

1.3 Adaptive Computation Time (ACT)

ACT可以调整计算步数,加入ACT机制的Universal transformer被称为Adaptive universal transformer。要注意的细节是,每个position的ACT是独立的,如果一个position a在t时刻被停止了, 【NLP】Universal Transformers详解 会被一直复制到最后一个position停止,当然也会设置一个最大时间,避免死循环。

2. 总结

Universal Transformer对transformer的缺点进行了改进,在问答、语言模型、翻译等任务上都有更好的效果,成为了新的seq2seq state-of-the-art模型。它的关键特性主要有两点:

  • Weight sharing:归纳偏置是关于目标函数的假设,CNN和RNN分别假设spatial translation invariace和time translation invariance,体现为CNN卷积核在空间上的权重共享和RNN单元在时间上的权重共享,所以universal transformer也增加了这种假设,使recurrent机制中的权重共享,在增加了模型表达力的同时更加接近rnn的inductive bias。
  • Conditional computation:通过加入ACT控制模型的计算次数,比固定depth的universal transformer取得了更好的结果

细读下来,还是有很多细节值得深挖,我浅挖了一下,各位感兴趣的再去多看看

划重点:computationally universal, inductive bias, coordinate embedding

以上。

【参考资料】:

  1. Universal Transformers
  2. 学界 | 谷歌的机器翻译模型 Transformer,现在可以用来做任何事了

以上所述就是小编给大家介绍的《【NLP】Universal Transformers详解》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Docker——容器与容器云

Docker——容器与容器云

浙江大学SEL实验室 / 人民邮电出版社 / 2015-9-1 / 89.00元

本书从实践者的角度,在讲解Docker高级实践技巧的同时,深入到源代码层次,为读者梳理出Docker容器技术和基于Docker的容器云技术(如Kubernetes)的实现方法和设计思路,帮助读者理解如何在实际场景中利用Docker解决问题并启发新的思考。全书包括两部分,第一部分深入解读Docker容器技术,包括Docker入门、架构总览、Docker容器核心原理解读,以及Docker高级实践技巧;......一起来看看 《Docker——容器与容器云》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具