我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。
已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-notes
本节内容综述
- 本节课由助教
纪伯翰讲解。本次演讲的标题为“New Architecture”。 - 助教建议:一般,我们不要一顿乱用 trick ,往往会失败;我们应该先尝试使用 SOTA 的模型,然后思考其表现优秀的原因。
 - 复习了 Transformer 的架构。
 - 进入第一个结构:Sandwich transformer。
 - 第二个结构:Universal Transformer。
 - 接下来的结构:Residual Shuffle Exchange Network。
 - 课间休息后,进入 BERT 。首先复习了 BERT 。
 - 接下来讲了 2019 年提出的 BERT 的变形,ALBERT 。
 - 之后是 Reformer 。
 - 最后的 Style GAN 一笔带过了。
 
文章目录
- 本节内容综述
 - 小细节
 
- Outline
 - Sandwich transformer
 
- Highlight
 - Same parameters but different order
 - Are Balanced Architectures Better?
 - 怎么叠才好?
 
- Universal Transformer
 
- Experiment(s)
 
- Lambda Question Answering Dataset
 - WMT 14 En-De translation task
 
- Residual Shuffle Exchange Network
 
- Highlight
 - Shuffle-Exchange Network
 - Perfect Shuffle
 - Neural Shuffle Exchange Network - Switch Unit
 - Residual Shuffle Exchange Network
 - Experiment(s)
 
- ALBERT
 
- 如何减少的参数?
 - Share Parameters Experiment(s)
 - ALBERT: Pre-training Task
 
- Reformer
 
- Hash Function
 - Reformer: Find a small set of candidates by hash function
 - Reversible Layer
 
- Style GAN
 
小细节
Outline
- RNN less structure
 
- Transformer
 
- Sandwich transformer
 - Universal Transformer
 
- Residual Shuffle Exchange Network
 - BERT
 
- ALBERT, Reformer
 
- StyleGAN
 
其实,现在已经很少有用 LSTM 的了,主要使用 Transformer 。
Sandwich transformer
Highlight
- models with more self-attention toward the bottom and more feed-forward sub-layers toward the top tend to perform better in general.
 - No extra parameters, memory requirement.
 

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

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

在 Model 比较靠近 input 的层,叠加比较多的 self-attention ,发现结果会比较好。
在比较靠近 output 层,叠加比较多的 forward ,结果会比较好。
怎么叠才好?

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

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

 原本的Transformer的演算法 algorithm task的任务,结果会有些差。
因此 Universal Transformer :
- 把同样一组 weight 使用在不同层上;
 - 使用 Dynamic Halting ,不同的字使用的模型深度不同,至于具体多少深度,由模型自己决定。
 
之所以叫做 Universal ,是指“有足够GPU就能做所有事”。因为深度很吃 GPU 。不同的 token 对不同的深度有要求。
Experiment(s)
- Lambda Question Answering Dataset
 - WMT 14 En-De translation task
 
Lambda Question Answering Dataset

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

发现,有了 Universal Transformer 与 Dynamic Halting ,效果会更好。
WMT 14 En-De translation task

总结起来,就是 Universal Transformer 可以自适应结构,可以根据不同情况自调整深度。
Residual Shuffle Exchange Network
Highlight
- Less parameters compare to other models for the same tasks.
 - Sequence processing in O(n log n)Time, specialize application on long sequence.
 - Shuffle &Exchange operators capture distant informations replace attention.
 
Shuffle-Exchange Network

每个 Switch unit 都会吃两个 input 。
Perfect Shuffle

如图,Perfect Shuffle 如交叉洗牌。

与结构的关系如上图。
Neural Shuffle Exchange Network - Switch Unit
来看看上面的 “黄色框框” 里面是什么东西。

如上,输入两个元素,会有两条通路:
- 上面的通路,做一个非线性转换;
 - 下面的通路,做一个 swapHalf 。

swapHalf 如上。 

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

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

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

总体架构如上。
Experiment(s)
- Lambda Question Answering Dataset
 - MusicNet Dataset
 - Multiplication Task
 - Sort Task
 - Adding Task
 

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

还做了一个实验:一个11G的内存,对于不同长度的输入,承载力是多少呢?可见:
- 4x longer sequence than Neural Shuffle-exchange Network
 - 128x longer sequence than Universal Transformer
 
ALBERT
一个小版的BERT(A Light BERT)。

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

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

除了 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)

如上,分享了参数,其表现也没有怎么变差。
ALBERT: Pre-training Task

ALBERT的预训练与 BERT 也不太相同。
其在句子拼接时,要求考虑句子的顺序。
Reformer



对于正常的 self-attention ,其运算如图。
问题是,如果 input sequence 很长,其成本( O ( n 2 ) O(n^2) O(n2))将很高。
Hash Function

可以通过 Hash Function ,来选择对一部分输入做 attention 。
Reformer: Find a small set of candidates by hash function

Reversible Layer

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

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










