15.4 基于结构搜索的翻译模型优化 537
15.4 基于结构搜索的翻译模型优化
理想中,人们希望计算机能够自动地找到最适用于当前任务的神经网络模型
构。这种方法也被称作神经架构搜索Neural Architecture Search),在神经网络模型
中有时也被称作神经网络结构搜索,或简称网络结构搜索
[839, 840, 841]
15.4.1 网络结构搜索
网络结构搜索属于自动机器学习Automated Machine Learning的范畴,其目的
是根据对应任务上的数据找到最合适的模型结构。在这个过程中,模型结构就像
经网参数动地来。15.26(a) 展示设计 Transformer
编码器的局部结构,15.26(b) 给出对该结构使用进化算法优化后得到的结构
[798]
以看到,使用网络结构搜索方法得到的模型中,出现了与人工设计的结构不同的
层连接,同时还搜索到了全新的多分支结构,这种结构也是人工不易设计出来的。
层标准化
层标准化
8 头自注意力:512
+
+
卷积 1 × 1512
卷积 1 × 12048
ReLU
(a) Transformer 编码器中若干块的结构
层标准化
层标准化
层标准化
+
+
+
门控线性单元:512
卷积 1 × 12048 卷积 3 × 1256
ReLU ReLU
Sep 卷积 9 × 1256
(b) 使用结构搜索方法优化后的
Transformer 编码器中若干块的结构
激活函数
层标准化
宽卷积
注意力机制
非空间层
15.26 传统 Transformer 和通过网络结构搜索方法优化后的 Transformer
[798]
那么网络结构搜索究竟是一种什么样的技术呢?如15.27所示,在传统机器学
习方法中,研究人员需要设计大量的特征来描述待解决的问题,即“特征工程”
深度学习时代,神经网络模型可以完成特征的抽取和学习,但是却需要人工设计
经网络结构,这项工作仍然十分繁重。因此一些科研人员开始思考,能否将设计
型结构的工作也交由机器自动完成?深度学习方法中模型参数能够通过梯度下降
方式进行自动优化,那么模型结构是否可以也看做是一种特殊的参数,使用搜索
538 Chapter 15. 神经机器翻译结构优化 肖桐 朱靖波
法自动找到最适用于当前任务的模型结构?基于上述想法,网络结构搜索应运而生。
代,使
[842]
[843, 844, 845]
年,展,
络结构搜索技术在很多任务中受到关注。例如,网络结构搜索就很好地应用在语
建模上,并取得了很好的结果
[846, 847, 848]
下面将对网络结构搜索的基本方法和其在机
器翻译中的应用进行介绍。
输出 输出 输出
传统机器
学习
深度学习
深度学习和网
络结构搜索
训练数据
特征信息 模型结构
人工/自动收集
人工设计 人工设计
使用特征数据
中的信息进行
提取
使用提取的信息对
模型中的参数
进行训练
训练数据
模型结构
人工/自动收集
人工设计
使用模型数据
中的信息进行
提取
使用提取的信息对
模型中的参数
进行训练
训练数据
人工/自动收集
使用模型
数据
中的
信息
使用提取的信息对
模型中的参数
进行训练
使用数据模型
的结构进行搜索
15.27 机器学习范式对比
15.4.2 网络结构搜索的基本方法
对于网络结构搜索任务来说,目标是通过数据驱动的方式自动地找到最合适
模型结构。以有监督学习为例,给定训练集合 {(x
1
,y
1
),. .., (x
n
,y
n
)}(其中 x
i
表示的
是第 i 个样本的输入,y
i
表示该样本的答案,并假设 x
i
y
i
均为向量表示)网络结
构搜索过程可以被建模为根据数据找到最佳模型结构 ˆa 的过程,如下所示:
ˆa = arg max
a
n
X
i=1
P (y
i
|x
i
;a) (15.55)
其中,P (y
i
|x
i
;a) 为模型 a 观察到数据 x
i
后预测 y
i
的概率,而模型结构 a 本身可以看
作是输入 x 到输出 y 的映射函数。图15.28展示了网络结构搜索方法的主要流程,
中包括三个部分:设计搜索空间、选择搜索策略以及进行性能评估,下面将对上
各个部分进行简要介绍。
1. 搜索空间
对搜索空间建模是结构搜索任务中的基础部分。如15.29所示,结构空间中包
含着所有潜在的模型结构。图15.29结构之间的相似性为衡量指标对模型结构在搜
索空间中的相对位置进行了刻画,同时颜色的深浅表示了该结构在指定任务下的
能情况。可以看到对于特定任务来说,性能较好的模型结构往往会聚集在一起。
此,在研究人员设计搜索空间的时候,为了增加找到最优结构的可能性,往往会
据经验或者实验将易产出高性能模型结构的区域设定为搜索空间。以自然语言处
15.4 基于结构搜索的翻译模型优化 539
结构空间
1. 前馈神经网络
2. 卷积神经网络
3. 循环神经网络
4. Transformer 网络
...
设计
搜索
空间
搜索空间
循环神经网络
1. 普通 RNN 网络
2. LSTM 网络
3. GRU 网络
...
选择
搜索
策略
迭代结构搜索的过程
性能评估
h
t
h
t1
h
t+1
x
t
······
找到的模型结构
15.28 网络结构搜索的主要流程
任务为例,最初的网络结构搜索工作主要对基于循环神经网络构成的搜索空间进
探索
[839, 846, 849]
,而近些年, Transformer 的基上进结构索也起了
人员的广泛关注
[798, 850, 851]
结构空间
Reformer
Transformer-XL
Transformer-DLCL
Transformer
BERT
Transformer-ANN
Transformer-SAN
ALBERT
universal Transformer
基于注意力的结构
SRU
GRU
RNN
LSTM
Bi-LSTM
基于循环单元的结构
GoogleNet
ResNet
LeNet
CNN
AlexNet
VGG-Net
基于卷积单元的结构
颜色越深,表示模型对当前任务的建模能力越强
15.29 结构空间内结构之间的关系
另一个很重要的问题是如何表示一个络结构。在目前的结构搜索方法中,
常将模型结构分为整体框架和内部结构(元结构)两部分。整体框架将若干内部
构的输出按照特定的方式组织起来,最终得到模型输出。
整体框架。如图15.29所示,整体框架一般基于经验进行设计。比如,对于包括
540 Chapter 15. 神经机器翻译结构优化 肖桐 朱靖波
机器翻译在内的自然语言处理任务而言,一般会更倾向于使用循环神经网络或
Transformer 模型的相关结构作为搜索空间
[798, 839, 846]
内部结。对于内部结构的设计需要考虑到搜索过程中的最小搜索单元,以
搜索单元之间的连接方式。最小搜索单元指的是在结构搜索过程中可被选择的
最小独立计算单元,在不同搜索空间的设计中,最小搜索单元的颗粒度各有不
同,较小的搜索粒度主要包括如矩阵乘法、张量缩放等基本数学运算
[852]
更大
粒度的搜索单元包括常见的激活函数以及一些局部结构, ReLU注意力机
制等
[515, 847, 853]
不过,对于搜索颗粒度的问题,目前还缺乏有效的方法针对不同
任务进行自动优化。
2. 搜索策略
在定义好搜索空间之后,如何进行网络构的搜索也同样重要。该过程被称
搜索策略的设计,其主要目的是根据已找到的模型结构计算出下一个最有潜力的
型结构,为保证模型有效性,在一些方法中也会引入外部知识(如经验性的模型
构或张量运算规则)对搜索过程进行剪枝。目前常见的搜索策略一般包括基于进
算法的方法、基于强化学习的方法以及基于梯度的方法等等。
进化算法进化算法最初被用来对神经网络模型结构、以及其中的权重参数进行
优化
[842, 854, 855]
随着最优化算法的发展,近年来,对于网络参数的学习开始更多地
采用梯度下降的方式,但是进化算法依旧被用于对模型结构进行优化
[856, 857, 858]
从结构优化的角度来说,一般是将模型结构看做遗传算法中种群的个体,使用
轮盘赌或锦标赛等抽取方式,对种群中的结构进行取样并将取样得到的结构作
为亲本,之后通过亲本模型的突变产生新的模型结构,最终对这些新的模型结
构进行适应度评估。根据模型结构在校验集上的性能确定是否将其加入种群。
强化学。强化学习方法在第十三章已经进行了介绍,这里可以将神经网络
构的设计看做是一种序列生成任务,使用字符序列对网络结构进行表述
[839]
种方15.30示。
成,之后将生成的结构应用于对应的任务(如机器翻译、语言建模等),根据
模型在对应任务中的输出以及表现水平来进一步对智能体进行反馈,促使智能
体生成更适用于当前任务的模型结构。
基于梯度的方法这种方法的思想是在连续空间中对模型结构进行表
[846]
,通
常将模型结构建模为超网络中的结构参数,接下来使用基于梯度的方法对超网
络中的参数进行优化,最终根据其中的结构参数离散出最终的模型结构,达到
结构搜索的目的,整体过程如图15.31所示。基于梯度的方法十分高效,因此也
受到了很多关注
[847, 859, 860]
15.4 基于结构搜索的翻译模型优化 541
环境
智能体
(结构所应用于的任务)
(结构生成器)
奖励
(对输出结果的评价)
状态
(这个结构在任务中应
用后得到的输出结果)
动作
(生成一个结构)
15.30 基于强化学习的结构搜索
超网络
模型结构参数
网络参数
优化后的超网络
模型结构参数(已优化)
网络参数(已优化)
找到的模型结构
优化后的
超网络
根据结构参数
离散化结构
参数优化
15.31 基于梯度方法的结构搜索
3. 性能评估
由于结构搜索过程中会产生大量的中间结构,因此需要快速评估这些结构的
能优劣,以保证在搜索中可以有效地挑选高质量的模型结构。对于该问题,可以
以下三个方面来考虑:
数据以及超参数的调整具体来说,可以用少量的数据训练模型,以便快速评估
其性能
[861, 862]
在超参数的调整方面,也可以通过减少模型训练轮数、减少模型
的层数等方式来简化模型参数,达到加速训练、评估的目的
[840, 841, 863]
现有参数的继承及复用通过在现有的模型参数基础上,继续优化中间过程产生
的模型结构,来加待评模型收敛
[856, 857, 864]
。这种方无需头训
搜索过程中产生的中间结构,通过“热启动”的方式对模型参数进行优化,
够大幅减少性能评估过程的时间消耗。
模型性能的预这种式使训练中的能变曲线估模是否
有潜力,从而快速终止低性能模型的训练过程
[865, 866, 867]
15.4.3 机器翻译任务下的网络结构搜索
对于自然语言处理任务来说,大多数网结构搜索方法选择在语言建模、命
实体识别等任务上进行尝试
[847, 848]
。其中,大多数工作是在基于循环神经网络的模型
542 Chapter 15. 神经机器翻译结构优化 肖桐 朱靖波
结构上进行探索的,相较于目前在机器翻译领域中广泛使用的 Transformer 模型结构
来说,这些搜索到的结构在性能上并没有体现出绝对的优势。此外,由于机器翻译任
务的复杂性,针对基于 Transformer 的机器翻译模型的结构搜索方法会更少一些。不
过仍有部分工作在机器译任务上取得了很的表现。例如,在 WMT19 机器
比赛中,神经网络结构优化方法在多个任务上取得了很好的成绩
[868, 869]
。对于结构搜
索在机器翻译领域的应用,目前主要包括两个方面:分别是对模型性能的改进以
模型效率的优化。
1. 模型性能改进
索任务中一个非常要的目标是找到更加适用于当前任务模型结构。
目前来看,有两种思路:
搜索模型中的局部结构在机器翻译任务中,一种典型的局部模型结构搜索方法
是面向激活函数的搜索
[870]
该方法将激活函数看作是一元、二元函数的若干次
复合。例如,Swish 激活函数就是一种被找到的新的激活函数,如下:
f(x) = x ·δ(βx) (15.56)
δ(z) = (1 + exp(z))
1
(15.57)
相比于人工设计的激活函数 ReLU 言,Swish 函数在多个机器翻译任务取得
了不错的效果。
搜索模型中局部结构的组合在基于 Transformer 模型的网络结构搜索任务中,
的组方式习也了很关注,包括于进法的
方法和基于梯度对现有 Transformer 模型结构的改良
[798, 853]
。与前文所述的对局
良不同,此处地是有的工设来的部结行组
合,找到最佳的整体结构。在模型结构的表示方法上,这些方法会根据先验知
识为设定框架,传递先进化,
选位上的使用的搜策略搜索。外这法也
会在 Transformer 构中引入多分结构,一个索单元的输出以被多个
续单元所使用,这种方式有效扩大了结构搜索过程中的搜索空间,能够在现有
Transformer 结构的基础上找到更优的模型结构。
此外对模型结构中超参数的自动搜索同样能够有效提升模型的性能
[871]
,这种方
法在机器翻译中也有应用
[466]
2. 模型效率优化
网络结构搜索除了能够提高机器翻译模型性能之外,也能够优化模型的执行
率。从实用的角度出发,可以在进行结构搜索的同时考虑设备的计算能力,希望
到更适合运行设备的模型结构。同时,网络结构搜索也可以用来对大模型进行压缩,
15.4 基于结构搜索的翻译模型优化 543
增加其在推断过程中的效率,这方面的工作不仅限于在机器翻译模型上,也有部
工作对基于注意力机制的预训练模型进行压缩。
面向特定设备的模型结构优化。可以在结构优化的过程中将设备的算力作为一个
约束
[851]
具体来说,可以将搜索空间中各种结构建模在同一个超网络中,通过
权重共享的方式进行训练。使用设备算力约束子模型,并通过进化算法对子模
型进行搜索,搜索到适用于目标设备的模型结构。该方法搜索到的模型能够在
保证模型性能不变前提下获得较大的效率提升。
模型压。此外,在不考虑设备算力的情况下,也可以通过结构搜索方法对
Transformer 的预训练模型进行压缩。例如, Transformer 模型拆分为若干
小组件,然后通过基于采样的结构搜索方法对压缩后的模型结构进行搜索,
试找到最优且高效的推断模型
[872]
类似的,也可以在基于 BERT 的预训练模型
上通过结构搜索方法进行模型压缩,通过基于梯度的结构搜索方法,针对不同
的下游任务将 BERT 模型压缩为小模型
[850]
虽然由于算力等条件的限制,目前很多网络结构搜索方法并没有直接在机器
译任务中进行实验,但是这些方法并没有被限制在特定任务上。例如,可微分结
搜索方法被成功地用于学习更好的循环单元结构,这类方法完全可以应用在机器
译任务上。
此外,受到预训练模型的启发,网络结构预搜索可能是一个极具潜力的方向。
如,有研究人员在大规模语言模型上进行网络结构搜索
[847]
,然后将搜索到的模型结
构应用于更多的自然语言处理任务中,这种方式有效提升了模型结构的可复用性。
时,相较于使用受到特定任务限制的数据,使用大规模的单语数据可以更充分地
习语言的规律,进而更好地指导模型结构的设计。此外,对于机器翻译任务而言,
构的预搜索同样是一个值得关注的研究方向。