我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。


已经有人记了笔记(很用心,强烈推荐):​​https://github.com/Sakura-gh/ML-notes​

本节内容综述

  1. 本节课由助教​​纪伯翰​​讲解。本次演讲的标题为“New Architecture”。
  2. 助教建议:一般,我们不要一顿乱用 trick ,往往会失败;我们应该先尝试使用 SOTA 的模型,然后思考其表现优秀的原因。
  3. 复习了 Transformer 的架构。
  4. 进入第一个结构:Sandwich transformer。
  5. 第二个结构:Universal Transformer。
  6. 接下来的结构:Residual Shuffle Exchange Network。
  7. 课间休息后,进入 BERT 。首先复习了 BERT 。
  8. 接下来讲了 2019 年提出的 BERT 的变形,ALBERT 。
  9. 之后是 Reformer 。
  10. 最后的 Style GAN 一笔带过了。


文章目录


小细节

Outline

  • RNN less structure
  • Transformer
  • Sandwich transformer
  • Universal Transformer
  • Residual Shuffle Exchange Network
  • BERT
  • ALBERT, Reformer
  • StyleGAN

其实,现在已经很少有用 LSTM 的了,主要使用 Transformer 。

Sandwich transformer

Highlight

  1. models with more self-attention toward the bottom and more feed-forward sub-layers toward the top tend to perform better in general.
  2. No extra parameters, memory requirement.

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_机器学习

如上,s 代表 self-attention ;f 代表 forward 。假设我们知道输出长度,我们改变 s 与 f 的顺序,首先输入足够的信息,会改进表现。

Same parameters but different order

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_机器学习_02

同样的参数量,改变模型中层数的不同顺序,发现其非常的不稳定。

Are Balanced Architectures Better?

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_机器学习_03

在 Model 比较靠近 input 的层,叠加比较多的 self-attention ,发现结果会比较好。

在比较靠近 output 层,叠加比较多的 forward ,结果会比较好。

怎么叠才好?

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_transformer_04

如上,前后到底叠多少才好?设计了16个模型,依次实验。

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_transformer_05

可见,前后取6,表现是最好的。

Universal Transformer

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_机器学习_06

原本的Transformer的​​演算法 algorithm task​​的任务,结果会有些差。

因此 Universal Transformer :

  • 把同样一组 weight 使用在不同层上;
  • 使用 Dynamic Halting ,不同的字使用的模型深度不同,至于具体多少深度,由模型自己决定。

之所以叫做 Universal ,是指“有足够GPU就能做所有事”。因为深度很吃 GPU 。不同的 token 对不同的深度有要求。

Experiment(s)

  1. Lambda Question Answering Dataset
  2. WMT 14 En-De translation task
Lambda Question Answering Dataset

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_机器学习_07

模型需要阅读内容,回答问题,答案在内容中。

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_人工智能_08

发现,有了 Universal Transformer 与 Dynamic Halting ,效果会更好。

WMT 14 En-De translation task

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_transformer_09

总结起来,就是 Universal Transformer 可以自适应结构,可以根据不同情况自调整深度。

Residual Shuffle Exchange Network

Highlight

  1. Less parameters compare to other models for the same tasks.
  2. Sequence processing in O(n log n)Time, specialize application on long sequence.
  3. Shuffle &Exchange operators capture distant informations replace attention.

Shuffle-Exchange Network

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_transformer_10

每个 Switch unit 都会吃两个 input 。

Perfect Shuffle

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_transformer_11

如图,Perfect Shuffle 如交叉洗牌。

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_人工智能_12

与结构的关系如上图。

Neural Shuffle Exchange Network - Switch Unit

来看看上面的 “黄色框框” 里面是什么东西。

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_transformer_13

如上,输入两个元素,会有两条通路:

  • 上面的通路,做一个非线性转换;
  • 下面的通路,做一个 swapHalf 。
    【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_人工智能_14
    swapHalf 如上。

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_人工智能_15

如上, u u u 相当于 GRU 的 reset gate ,在总的运算式中决定有多少内容参与翻转。

Residual Shuffle Exchange Network

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_人工智能_16

而新作品中,简化了 Switch Unit 中的运算。共同点是,两个输入的信息会被部分交换。

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_深度学习_17

此外,这两篇文章使用也不是 Shuffle-Exchange network ,而是 Benes network (在后两层多做了镜像操作)。

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_人工智能_18

总体架构如上。

Experiment(s)

  1. Lambda Question Answering Dataset
  2. MusicNet Dataset
  3. Multiplication Task
  4. Sort Task
  5. Adding Task

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_nlp_19

如上,实验结果想强调的是,其用了非常少的参数量,得到了很高的准确率。

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_机器学习_20

还做了一个实验:一个11G的内存,对于不同长度的输入,承载力是多少呢?可见:

  • 4x longer sequence than Neural Shuffle-exchange Network
  • 128x longer sequence than Universal Transformer

ALBERT

一个小版的BERT(A Light BERT)。

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_transformer_21

如上,ALBERT的每一层都 share 同一个参数。

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_transformer_22

如上。对于同等结构的 BERT 其减少了参数。

如何减少的参数?

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_人工智能_23

除了 share weight ,还有在词向量映射层面。

如上,原本,在构建词到向量的映射中,BERT构建了一个 30000 × 768 30000\times 768 30000×768的矩阵;而在ALBERT中,将这个映射拆解成2步: 30000 × 128 + 128 × 768 30000\times 128+ 128\times 768 30000×128+128×768。

Share Parameters Experiment(s)

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_nlp_24

如上,分享了参数,其表现也没有怎么变差。

ALBERT: Pre-training Task

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_机器学习_25

ALBERT的预训练与 BERT 也不太相同。

其在句子拼接时,要求考虑句子的顺序。

Reformer

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_transformer_26

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_人工智能_27

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_nlp_28

对于正常的 self-attention ,其运算如图。

问题是,如果 input sequence 很长,其成本( O ( n 2 ) O(n^2) O(n2))将很高。

Hash Function

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_nlp_29

可以通过 Hash Function ,来选择对一部分输入做 attention 。

Reformer: Find a small set of candidates by hash function

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_深度学习_30

Reversible Layer

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_机器学习_31

只要记住最后一层的 embedding 就好。用最后一层回推 gradient 就好。不需要保存 12 层的计算图。

Style GAN

【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture_深度学习_32

助教觉得很酷,稍微提一下。