我已经有两年 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 一笔带过了。
文章目录
- Highlight
- Same parameters but different order
- Are Balanced Architectures Better?
- 怎么叠才好?
- Highlight
- Shuffle-Exchange Network
- Perfect Shuffle
- Neural Shuffle Exchange Network - Switch Unit
- Residual Shuffle Exchange Network
- Experiment(s)
- ALBERT
小细节
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
助教觉得很酷,稍微提一下。