读文章笔记(二):模型结构优化前沿动态综述
公众号东大自然语言处理实验室文章链接: link.
- NLP领域神经网络结构的发展历程:
- 相关模型总结分析,NLP领域模型结构的整体趋势
- 神经网络模型结构优化的趋势主要有三点:
提升模型表示能力:
-
局部依赖建模:现有的自注意力机制更加关注前后单词,无法很好地捕获局部依赖,例如表示短语信息。
针对这一问题,一类解决方法是引入卷积操作,通过CNN捕获局部特征,与自注意力的全局特征进行融合,如Convolutional Self-attention (Yang et al., NAACL 2019);或者是在自注意力层后直接堆叠卷积层,如Conformer (Gulati et al., arXiv 2020)
另一类方法是设计多分支结构,在Transformer提出不久就有很多相关工作,例如Lite Transformer (Wu et al., ICLR 2020) 提出的通过卷积分支提取局部特征、自注意力分支提取全局特征;Evolved Transformer (So et al., ICML 2019) 通过自动结构搜索,得到了多两个注意力分支并行和两个卷积操作并行的分支结构。 -
长序列建模:能够提供更丰富的语义信息,对于长序列建模,传统的模型有很大的缺陷,例如自注意力复杂度随序列长度平方增长,其高显存占用的问题阻碍了模型的应用。传统做法将序列切分为较短的片段,这样就忽略了长距离的依赖。
为此一些工作在Transformer中引入记忆机制,使用定长的向量表示变长的上下文信息,比较典型的有Transformer-XL (Yang et al., ACL 2019) 和Compressive Transformer (Rae et al., ICLR 2020)。
也有一些工作聚焦在稀疏注意力机制的设计上,相较于自注意力计算序列中任意两个元素的关系,这些稀疏注意力模式只计算一些局部的信息,包括局部敏感注意力 (Reformer, Kitaev et al., ICLR 2020)、随机注意力 (Synthesizer, Tay et al., arXiv 2020)、窗口和全局结合的注意力等 (Longformer, Beltagy et al., arXiv 2020)。
-
位置和结构信息编码
原始的自注意力机制难以捕获词序信息,为此许多工作针对其使用的绝对位置编码提出了改进。包括通过树结构编码相对位置 (SPR, Wang et al., EMNLP 2019)、通过连续动态系统和ODE学习编码位置 (FLOATER, Liu et al., ICML 2020) 以及将位置向量的连续函数扩展到复数域 (Complex embeddings, Wang et al., ICLR 2020)等。
而对于结构信息,也有大量相关工作通过添加额外的编码模块来对其进行建模,例如Tree Transformer (Wang et al., EMNLP 2019) 使用额外的结构注意力操作捕获句法和语法信息。
-
深层网络建模问题
早期的深层网络方面的工作包括Transparent Attention (Bapna et al., EMNLP 2018) 和Depth Growing (Wu et al., ACL 2019) 都成功地训练了较深的网络,需要注意的是Transformer中的一层网络:包含了注意力计算、前馈神经网络、残差连接和层正则化等多个模块。
深层网络建模中有两大关键性因素:局部网络结构调整与合适的训练方式。首先介绍一些局部性的网络结构调整的工作,例如Transformer-DLCL (Wang et al., ACL 2019) 中提及的将层正则化位置调整到每一层网络的输入更有利于深层网络的梯度传播,能够有效地训练深层Transformer模型。此外,在此基础上提出的Transformer-DLCL模型能够动态地融合包括词嵌入层在内的中间层表示,进一步提高了信息的传递效率,取得了更好的翻译性能。
在此基础上,多尺度协调网络 (Wei et al., ACL 2020) 使用分块机制并加入GRU连接来控制不同块的信息流通,成功训练了48层的Transformer模型。
对于训练方式的工作探索也收获了很好的结果。例如由浅入深地训练深层网络 (Li et al., EMNLP 2020),核心思想是复用底层的网络参数。先训练浅层的网络,通过相应的拷贝策略来堆叠网络并继续训练。
除此之外,也有一些工作通过改进参数初始化来训练深层网络,而不需要修改结构。典型的一些工作包括Depth-wise (Zhang et al., EMNLP 2019) 和Lipschitz Constrained (Xu et al., ACL 2020) 等。
提升模型运行效率:
- 层级结构剪枝
典型的相关工作是样本自适应网络结构,包括FastBERT (Liu et al., ACL 2020)、Depth Adaptive Transformer (Elbayad et al., ICLR 2020) 和LayerDrop (Fan et al., ICLR 2020)等。这类网络结构在推断时能够根据输入自动选择模型的部分层进行计算,而跳过其余层,达到加速和减少参数量的目的。
- 低秩分解
这类方法通过矩阵分解的方法提升计算效率,例如Adaptive Input Representations (Baevski et al., ICLR 2019) 提出词频自适应表示,词频越高则对应的词向量维度越大,反之越小,显著减少了词向量矩阵大小。
- 减少冗余计算
例如Sharing Attention Weights (Xiao et al., IJCAI 2019)提出的基于相似度共享不同层的注意力输出,前文提到的针对长序列建模的一些工作也能够有效减少模型的计算复杂度。
CPU设备上深而窄的网络结构更加有效,而GPU设备上宽而浅的网络结构更合适。