作者 | 姜雨帆
编辑 | 唐里
当人工设计的神经网络结构在各项任务上都取得了很好的成绩之后,人类开始思考如何自动设计网络结构。
研究人员在2016年提出了神经网络的结构搜索(NAS),旨在从海量的神经网络结构中通过搜索的方式得到一个最优的网络结构。如果采用随机搜索的策略,搜索代价极高。为此,人们提出了不同的搜索策略来指导网络结构搜索。其中,最成功的策略当属强化学习和演化算法,在图像领域都得到了优秀的网络结构。但这些搜索方法需要的计算资源仍不是普通的研究机构可以负担起的。例如在图像识别任务CIFAR-10上搜索到一个性能优秀的结构需要使用450块GPU搜索3-4天。
最近,研究人员从不同的角度出发,提出了可微分的神经网络结构搜索方法,该方法通过将离散的网络结构参数连续化,在训练过程中使用梯度下降的方法对结构参数进行更新,得到最终的网络结构。该方法极大提高了网络结构搜索的效率。将上述任务的时间缩短至4块GPU 搜索1天。
可微分的网络结构搜索方法将待搜索的单元定义成一个有向无环图。每两个节点之间有多条边相连,每条边代表不同函数操作。为了能让离散的搜索空间可导,我们为每个操作引入一个权重,使用归一化的方法对每种函数操的选择进行松弛。在训练过程中使用梯度下降的方法对权重进行更新,最后选取权重较大的操作作为最终的结构,可参见下图左:
尽管可微分的网络结构搜索在保证网络性能的前提下,大大提高了搜索效率,但该方法仍存在一定的局限。在原方法中,归一化操作仅作用在两个节点之间的操作,而来自不同节点之间的操作不可比。这样的限制可能会导致局部偏置问题,使得网络训练无法收敛。
针对上述问题,本文对可微分的网络结构搜索方法进行改进。我们移除了原方法中存在的局部限制,对每一个节点的所有的输入边进行全局归一化操作,如上图右,减少网络中‘局部偏置’的影响。经过实验分析,我们改进的方法在保证网络性能的前提下,进一步提高网络搜索的效率以及稳定性。后续将对该方法的思想和实现作具体介绍。
方法描述
可微分的网络结构搜索方法面向的是一个单元模块,类似循环神经网络的一个循环单元,或者卷积神经网络的卷积单元,最终将搜索得到的单元堆叠成整个神经网络。针对语言建模的任务,我们对循环神经网络的循环单元进行搜索。
对于输入序列,我们通过循环神经单元获得每个时刻的状态输出。这样每个循环单元就可以表示成:,其中t为时刻,为循环神经单元内部的变换操作。结构搜索的目的就是通过自动的方法找到一个性能优秀的。
每个神经网络单元,可以表示成一个有向无环图。每个有向无环图中包含N个有序节点,节点之间有多条边相连,每条边代表节点之间的函数操作,这些操作是预先定义好的。对于循环神经网络,这些操作包括多种激活函数,例如sigmoid、tanh、relu等等,我们用 表示节点i和节点j之间的操作,每个节点的内部包含一个线性变换的参数矩阵。每个节点的值等于所有前序节点(j<i)的加和,对于节点i,它的状态值可以定义为。
对于节点i和节点j之间的所有操作 ,可微分的网络结构搜索为每个操作都赋予一个权重。在搜索过程中对权重进行更新,最后选取权重最大的操作作为最终的操作。因此,我们可以重新对上式进行定义,为每个操作加入一个权重,表示如下。
式中 代表每个操作的权重,在可微分的网络结构搜索方法中, 由节点i和节点j之间所有操作进行归一化得到,公式如下。
其中可以看作是模型参数,用来计算每个操作的权重。这样就能把离散的网络结构搜索问题转化为学习连续参数的问题,然后可以使用梯度下降的方法对参数进行更新。从上面的公式中也可以看出,权重是由节点i和节点j之间所有的操作归一化得到。这样就很容易造成局部偏置问题,像图模型中一样。此外,这种方式还对搜索空间产生了限制,我们不得不从每对节点之间都要选一个操作出来。因此,我们移除了这个限制和偏置,我们对每个节点所有的输入操作进行归一化,对于节点i和节点j间一个操作的权重。
这样做就考虑了所有的每个节点所有的输入,而不是仅考虑到局部的输入,避免了局部偏置的产生。此外,还可以搜索到原来可微分结构搜索方法搜索不到的结构,例如上图中右侧红色的部分。在最优结构选取的时候,我们与原来的方法基本保持一致。
实验分析
我们在语言模型和命名实体识别任务上对改进的可微分结构搜索方法进行验证,实验结果如下图所示。具体的实验配置可参见论文。
为了验证方法的有效性,我们使用四组不同随机种子对网络进行初始化。分别使用改进的方法和原方法进行结构搜索。每10轮对当前时刻的结构性能进行验证,平均性能如下图所示。
以上实验结果可以证明,我们改进的方法在保证网络性能的前提下,进一步提高网络搜索的效率以及稳定性。
最后,我们对搜索得到的网络结构进行了可视化,如下图所示。
图中上方的结构是通过语言模型任务搜索得到的,下面的结构是通过命名实体识别任务得到的。从图中可以看出,每个搜索得到的循环神经单元都是一个有向无环图,图中包含了有顺序的八个节点,节点之间靠不同的激活函数进行连接。我们看到,通过搜索得到的网络结构都十分复杂,无法通过手工设计出来。同时,不同的任务最终搜索得到的结构也是不同的,这可能是因为每个任务都有不同的偏置,这也进一步证明了研究网络结构搜索的必要性。
总结
本文对可微分的网络结构搜索方法进行改进,移除了原方法中归一化操作的局部限制。提高了结构搜索的效率和稳定性,在语言模型任务和命名实体识别任务上搜索到多个优秀的网络结构。在未来的工作中,我们将在更多的任务上进行网络结构的搜索。
论文链接:https://www.aclweb.org/anthology/D19-1367.pdf
姜雨帆,东北大学自然语言处理实验室研究生,研究方向为神经网络结构搜索、神经语言模型。
小牛翻译,核心成员来自东北大学自然语言处理实验室,由姚天顺教授创建于1980年,现由朱靖波教授、肖桐博士领导,长期从事计算语言学的相关研究工作,主要包括机器翻译、语言分析、文本挖掘等。团队研发的支持140种语言互译的小牛翻译系统已经得到广泛应用,并研发了小牛翻译云(https://niutrans.vip)让机器翻译技术赋能全球企业。
点击“阅读原文”加入 EMNLP 顶会交流小组