Tensorflow

CNN/RNN/Transformer比较

2020-06-25  本文已影响0人  京漂的小程序媛儿

内容摘自https://zhuanlan.zhihu.com/p/54743941

1.NLP四大任务

2.RNN

2.1 RNN为什么在NLP流行并占据主导地位呢?

1、适合解决线性序列问题;2、可以接纳不定长输入;3、LSTM三门的引入,捕获长距离依赖能力加强。

2.2 RNN面临的问题

RNN本身的序列依赖结构对于大规模并行计算来说相当之不友好。
为什么并行差?因为s(t)的计算依赖于s(t-1),且不同step的隐层之间全连接。就是说T时刻某个隐层神经元与T-1时刻所有隐层神经元都有连接。

2.3 RNN如何改造

方案1:各隐层神经元之间并行计算
首先,T时刻和T-1时刻是不可能并行计算的,但是可以把T时刻与T-1时刻的神经元全连接改成单连接,使得各隐层之间并行计算。



缺点在于:并行程度上限低。
方案2:间歇打断各step之间的连接



每隔2个时间步打断一次,通过层深来建立远距离特征之间的联系。类似于CNN。
缺点在于:本质上是CNN,速度又比CNN慢。

3.CNN

3.1 CNN的问题

早期的CNN问题在于:单层卷积无法捕获远距离特征,受感受野限制。
通过把CNN做深和跳跃覆盖来解决这一问题。
Pooling层会抛弃位置信息,造成信息损失。

3.1 CNN跳跃覆盖


Dilated CNN,需要精心调节参数搭配,保证所有可能组合都被覆盖到。

3.2 做深CNN

3.3 抛弃Pooling层,辅助Skip Connection,引入GLU,在输入层加position embedding

4.Transformer

1.不是只有self-attention在起作用

能让Transformer效果好的,不仅仅是Self attention,这个Block里所有元素,包括Multi-head self attention,Skip connection,LayerNorm,FF一起在发挥作用。

5.RNN,CNN,Transformer的特征抽取能力比较

5.1 比较维度

1、句法特征提取能力
2、语义特征提取能力;
3、长距离特征捕获能力;
4、任务综合特征抽取能力;
5、并行计算能力及运行效率

5.2 句法特征抽取能力

CNN强于RNN

5.3 语义特征提取能力

比较三者在‘考察语义类能力的任务’上的表现,比如翻译。Transformer >> RNN == CNN

5.4 长距离特征捕获能力

比较三者在“主语-谓语一致性检测”任务上的能力。Transformer == RNN >> CNN
对于Transformer来说,Multi-head attention的head数量严重影响NLP任务中Long-range特征捕获能力:结论是head越多越有利于捕获long-range特征。

5.5 任务综合特征抽取能力

在众多NLP任务上的表现,选择机器翻译,因为它是考验NLP各项处理能力综合要求最高的任务。
Transformer >> RNN == CNN

5.6 并行计算能力及运行效率


transformer实际的计算复杂度是self-attention+全连接。self-attention是n平方d,全连接是d平方n。RNN是d平方n,CNN是kd平方*n,k是kernel size。
从复杂度上来说,单个Transformer Block计算量大于单层RNN和CNN。
但是结合可并行,实际运行效率:Transformer Base最快,CNN次之,再次Transformer Big,最慢的是RNN。RNN比前两者慢了3倍到几十倍之间。

6.RNN和CNN向Transformer靠拢

6.1 寄居蟹策略

即用双向RNN或CNN替掉self attention,把RNN或者CNN塞到Transformer Block。



6.2 效果



1、逐步加入Transformer的各个构件,效果不断稳定提升;
2、但与Transformer相比,性能仍然有差距。

上一篇下一篇

猜你喜欢

热点阅读