网络结构搜索技术近些年获得了广泛的关注,但是其搜索空间往往被限缩在元结构内部(循环单元或卷积单元等),缺乏对模型整体架构的学习。
针对此问题,来自东北大学自然语言处理实验室和小牛技术创新中心的研究者提出一种能够同时对元结构内以及元结构之间连接进行搜索的方法(ESS),从而获得更适用于当前任务的模型结构。本文旨在拓展网络结构搜索的搜索空间。
实验部分以循环神经网络为例,在语言模型的 PTB、WikiText-103 集合中取得了优异的成绩,其中 PTB 数据上达到了目前业内最优的结果。
此外,研究者将语言模型任务中搜索到的模型结构迁移到 NER、Chunking 等任务中同样获得了突出的性能,这使得大规模预搜索网络结构成为了可能。
论文链接:https://arxiv.org/pdf/2005.02593.pdf
网络结构搜索(Neural Architecture Search)
机器学习(Machine Learning)在基于统计的学习方法(Statistical Learning)之后已经在包括图像、语音、信号处理等领域中获得了非常优异的成绩。同样对于自然语言处理(Natural Language Processing)任务而言,机器学习的方法也得到了广泛的认可,其中尤其值得一提的是人工神经网络(Artificial Neural Network)这项技术,几乎席卷了整个自然语言处理的各项任务。
而对于目前的基于神经网络技术的各项任务而言,主要过程是由研究人员去手动地探索新的网络结构,比如我们常见的 RNN(Recurrent neural network)、CNN(Convolutional Neural Network)等结构。但这样做实际上是一个偏向于结构工程的方式,我们把研究人员束缚起来不断地去 “设计” 更好的结构,而模型的好与坏主要取决于人对指定任务的理解以及想象力,整个过程也非常耗时。因此一些研究人员就开始考虑能否让神经网络能够像学习参数一样自动地去学习模型结构,所以就有了这样一个机器学习的分支,网络结构搜索(Neural Architecture Search:NAS)。
机器学习、自然语言处理与网络结构搜索的关系。
那么网络结构搜索是如何学习到一个适合于当前任务的结构呢?假定世界上所有的潜在的神经网络结构所组成的集合为网络结构空间(Architecture Space),最理想的搜索方式应该是在该空间中寻找得到最适合于当前任务的模型结构。但由于神经网络中节点数目、节点间的连接方式的不可枚举性,如果在不加任何限制的情况下进行模型结构的搜索几乎是一个不可能完成的任务。
因此在实际的网络结构搜索过程中,研究人员通常会对结构空间进行了一个裁剪,根据先验知识在结构空间内人为划定了一个搜索空间(Search Space),它是整个神经网络结构空间的子集,会对节点数量、节点间连接方式等进行预先限定。
接下来就可以通过指定的搜索策略(Search Strategy)在空间中进行结构搜索,目前比较流行的搜索策略包括如基于强化学习(Reinforcement Learning)、遗传算法(Genetic Algorithm)以及梯度的方式(Gradient-based method)等。搜索策略的核心目标为提供一种方式,能够根据当前时刻找到的模型结构来决定下一个最有潜力的模型结构。
此外,每当找到一个结构的时候通常要去对其进行一个性能评价(Evaluation Criteria)来确定当前状态下找到的模型结构性能如何。但由于在进行结构搜索的过程中会产生海量的中间结构,因此系统无法先对每个中间结构都进行完整地进行参数训练后再进行评估,其的时间代价过于庞大,因此如何快速地了解到当前状态下的模型性能优劣,也是网络结构搜索任务中非常重要的一个问题。
之后系统通过不断循环进行结构搜索和性能评估这两个过程,当模型性能不再提升时停止搜索,这就是整个的 NAS 的过程,如下图所示:
网络结构搜索的整体过程。
面向自然语言处理任务的网络结构搜索
前文提到,对于自然语言处理任务而言,近些年也有很多研究人员尝试通过网络结构搜索的方式对模型结构进行探索,目前大多数研究均基于循环神经网络的框架进行搜索,更近一步来说实际上目前的方法大多是针对循环单元进行的,即下图中所展示的区域,这种结构搜索的方式也被叫做元结构内(intra-cell)的搜索。
循环神经网络中的元结构内连接。
这种方式确实能够在朴素的循环神经网络框架下找到一个更好的元结构。但是,对于每个元结构的之间的连接却简单地限制为仅仅接受上一时刻元结构的输出以及当前时刻的输入,这将大幅度限制结构搜索的表示空间,使得最适用于当前任务的模型结构可能并不落在我们的搜索空间内,即使采用最优的搜索策略也无法找到合适的结构。
因此研究者在本文中希望扩大结构搜索的空间,把元结构之间(inter-cell)的连接方式也纳入搜索过程中,如下图所示:
循环神经网络中的元结构间连接。
基于拓展搜索空间(Extended Search Space)的网络结构搜索
整体框架
对于同时对元结构内以及元结构之间连接进行搜索的方法,研究者称之为做基于拓展搜索空间的网络结构搜索(Extended Search Space:ESS),在这个拓展的搜索空间中需要搜的结构包括两部分,分别为元结构内的连接方式以及元结构之间的连接方式。
而为使系统在搜索过程中能够兼顾两部分的结构,这里提出一种联合训练的方法。这种方法思路很简单,它把整体结构的搜索拆成两阶段的训练问题。具体来说在模型结构搜索的过程中,系统将交替搜索元结构内部和元结构之间的连接,当任一方结构在相邻若干次不再发生变化时停止该方训练,另一方继续训练至收敛,整个过程如下图所示。
对元结构内以及元结构之间的连接方式进行联合搜索。
搜索空间及策略
那么接下来的问题就是如何学习这两部分的结构,由于循环神经网络是一个时序展开的网络结构,因此在结构搜索的过程中将其聚焦到其中的某一个时刻进行介绍。
循环神经网络结构搜索中各部分结构的输入输出。
对于元结构内部的结构搜索,它的输入沿用之前元结构学习的方式进行,输入有两个,分别为是隐层状态和输入向量,对应着上图中紫色方块部分,公式如下:
其中结构搜索的过程中需要去学习的部分为函数。
而对于元结构之间的连接方式,从上图中可以看到,其在输入和隐藏层状态两个方向上都存在,对应着图中粉色圆圈部分。理论上来说,这两部分所能接收到的输入为当前状态下可获取到的全部信息。对隐藏层状态而言,它能够获取到之前时刻所有的隐藏层状态以及输入,对输入方向也是同样的道理,二者计算方式如下:
在结构搜索过程中需要学习的就是函数和。但在实际使用中,过早时刻的表示信息实际上对当前时刻的作用相对较小,在考虑到算力的情况下会给予前序时刻的信息设置一个窗口,其大小为一个超参数。
接下来一个问题就是如何对元结构内部()以及元结构(和)之间的结构进行搜索,这里研究者沿用基于梯度的搜索策略(DARTS),并使其能够在元结构间连接的任务上进行搜索。
具体来说,基于梯度的结构搜索方法将待搜索的网络结构看作是有向无环图(Directed Acyclic Graph:DAG),在结构搜索的过程中在预先定义的超网络上对结构进行搜索,其中每一个中间节点可以接收全部前序节点的输入,两个节点之间的信息通过线性()、非线性变换()进行,具体操作如下:
其中为网络结构搜索中待学习的各个操作(非线性变换)的权重。最终结构的输出为全部中间节点输出的平均值:
对于元结构之间连接的学习而言,其输入信息相对元结构内部的学习要更加多元,我们很难期待一个系统能够在没有任何指导的情况下对丰富的输入信息进行有效处理。因此对需要搜索的结构表示进行重构,根据输入信息的来源将其分为两个部分并各自独立地进行结构搜索(方法如前文所述)。对于两部分结构最终输出(和),研究者通过按位相乘的方式得到结构的最终输出,具体如下:
其中和为根据信息来源为输入向量所分的组别,整体的结构如下图所示:
重构后的结构搜索示意。
对于不同位置的搜索,研究者采用不同分类方式,如下表所示:
不同位置的结构搜索对于输入信息的分类策略。
可以看到,除了元结构间的搜索(和),元结构内的连接搜索()同样可以看作是上述方法的特例。
循环神经网络中元结构内部以及元结构之间结构搜索示意。
具体来说,对于元结构内部的连接学习,初始节点将对隐藏层信息以及输入信息进行整合,整合的过程如下:
之后研究者设定一下元结构内部结构中有多少个节点,如前文所述,对于每个节点它都能接受从之前所有节点的输出。比如说图里设置了三个节点、和。最后将每个中间节点的输出做一个平均,得到最终的输出。
可以看到,在基于梯度的搜索策略中,待搜索的整体结构实际上根据先验知识固定好的,而我们要学习的实际上是节点之间的连接方式,也就是图中黑色虚线箭头和红色箭头部。具体做法就是在操作的候选池中选择最适合于当前位置的操作,比如其中包括 sigmoid、relu,tanh 等,研究者为每个操作赋予一个权重,在训练过程中通过这个权重的学习来获得每两个节点之间连接的方式。
而对于元结构之间的连接方式与元结构内连接的学习方式类似,这里研究者以输入方向的元结构学习为例进行介绍,也就是我们去学习函数的结构。
为降低搜索压力,这里对待搜索的结构进行一个简化,输入信息只接受当前时刻的输入,即,而隐层状态则开一个窗口,大小为 3,也就是其接受、以及。因此整体结构仅需对部分进行搜索,最终结构的输出为:
对于部分的内部节点,则接收、以及的输出,而最终输出的节点同样为全部中间节点输出的平均。
实验
面向语言模型任务的结构搜索
研究者在多个语言模型的任务上进行结构的搜索,实验结果如下:
语言模型任务(PTB 和 WikiText-103)上 ESS 方法搜索得到的结构同其他结构的性能对比。
可以看到,不论是相比人工定义的网络结构而言还是其他的结构搜索方法,基于拓展搜索空间的结构搜索均能获得一个明显的性能提升。在 PTB 集合上本研究提出的方法(ESS)相对之前性能最好的模型(Mogrifier LSTM)大概在困惑度(Perplexity)指标上能再下降 4 个点左右(越低越好)。对于 WikiText-103(WT-103)的数据,基于拓展搜索空间的方法相对基于循环神经网络的结构(QRNN 以及 Hebbian+Cache)而言同样可以获得一定程度的提升。
另外我们可以看到仅搜索元结构之间的连接相比仅搜索元结构内部的连接而言,性能上会更有优势(PTB 数据集中 DARTS 和 ESS-inter-cell 的比较),这一点也证明了元结构之间连接在结构搜索过程中非常重要。
另外从上表中可以看到,虽然基于拓展搜索空间的方法相比基于其他循环神经网络模型而言获得了明显的提升,但是相比 Transformer 的模型而言性能上依旧还存在很大的不足,该问题主要由于基础架构的问题,Transformer 模型凭借注意力机制,能够对语言建模任务中远距离依赖具有更好的处理,相对循环神经网络而言还是具有较大优势。但本文所提出的基于拓展搜索空间的结构搜索本身并不限制在循环神经网络的框架中使用,对于基于 Transformer 的结构同样可以进行有效地搜索。
性能提升分析
另外,研究者对比了一下将元结构之间连接方式纳入搜索空间中为语言建模任务所带来的实质帮助。
在引入元结构间搜索后校验集中不同词损失值的变化。
上表中左侧表示的是校验集中性能提升最多的词有哪些,我们可以看到提升多的部分这些大多集中在稀缺词中。而右侧这栏中研究者按照词频排了个序,可以看到对于高频词而言模型性能提升并不高。从这里可以观察到,同时搜索元结构内部连接和元结构之间连接的方式对于文本中稀缺词的建模可以起到更多助益。
模型结构迁移
另外研究者也将 WikiText-103 数据集中搜索到的模型结构移植到其他的自然语言处理任务中,包括 NER、Chunking 等任务,性能均获得不同程度的提升,如下表(CoNLL-2003 NER task)所示:
CoNLL-2003 命名实体识别任务性能。
这个发现预示着即使是对于稀缺资源的任务,同样可以利用富资源任务上搜索到的模型进行移植,这就使得使用大规模数据对网络结构的预搜索成为可能。
结构可视化对比
此外研究者还对比了一下在用元结构之间连接学习和不用的时候搜索到的模型结构的差异,如下图所示:
在语言模型任务上搜索得到的模型结构可视化。
整体上可以看到,当我们进行元结构之间连接的搜索的时候,得到的元结构内部连接先对而言更浅一些,这是因为元结构之间连接实际上缓解了内部结构的压力,不需要过于深层的网络的他进行建模。
作者及团队介绍
论文第一作者李垠桥为东北大学自然语言处理实验室 2018 级博士生,其研究方向包括神经网络结构搜索、机器翻译、模型加速等,并在 ACL、IJCAI、NLPCC、中文信息学报等会议、杂志发表学术论文若干。
研究团队为小牛翻译,核心成员来自东北大学自然语言处理实验室,由姚天顺教授创建于 1980 年,现由朱靖波教授、肖桐博士领导,长期从事计算语言学的相关研究工作,主要包括机器翻译、语言分析、文本挖掘等。团队研发的小牛翻译系统已经得到广泛应用,目前支持 187 种语言互译,通过小牛翻译云平台(https://niutrans.vip)让机器翻译技术赋能全球企业。