自动优化架构,这个算法能帮工程师设计神经网络
近日,NeurIPS 2019 近日在加拿大温哥华召开。腾讯 AI Lab 共 14 篇论文入选,位居国内企业前列。这也是腾讯 AI Lab 第四次参加 NeurIPS,会议期间,我们选取了一篇来自腾讯 AI Lab 的优秀论文进行解读。
在这篇由腾讯 AI Lab 主导,和华南理工大学合作完成的论文中,作者利用强化学习的方法学习了一种神经网络结构转换器。它能对任意的神经网络结构进行优化,将其转换为更紧凑、识别精度更高的结构。以下为论文的详细解读。
NAT: Neural Architecture Transformer for Accurate and Compact Architectures
论文链接:https://papers.nips.cc/paper/8362-nat-neural-architecture-transformer-for-accurate-and-compact-architectures.pdf
现有的深度神经网络结构要么是人工设计的,要么是通过神经网络结构搜索 (NAS) 方法自动搜索得到的。然而,这些网络结构可能包含许多冗余的计算操作,存在可优化的空间。为了实现网络结构的优化,作者提出了一个神经网络结构转换器(Neural Architecture Transformer,简称为 NAT)的方法。该方法可以用计算复杂度更低的计算操作代替网络结构中冗余的操作,从而实现性能提高的同时,保证不会引入额外的参数和计算量。
神经网络中的计算操作可以分为三类,即 S, N, O。其中,S 表示跳跃连接,N 表示为空连接(即两个节点之间没有连接),O 表示除了跳跃连接和空连接之外的其它操作(如:卷积、池化操作等)。显然,这三者计算量的大小顺序为:O>S>N。为了降低网络结构的计算复杂度,我们希望所学到的 NAT 用计算量更少的操作来代替原网络结构中的冗余操作。因此,NAT 遵循以下的转换规则:OàS, OàN, SàN。由于跳跃连接往往有助于提升模型的性能而且其引入的计算量非常少,因此 NAT 也允许 NàS。总之,NAT 的转换方案如下图所示。
具体来讲,对于任意一个服从分布p(·)的网络结构β,NAT 的目标为寻求找到,仅仅通过上述所允许的操作变化得到的,最优的结构α。这个优化问题可以写成:
其中:
- R(α│β)=R(α,w_α )-R(β,w_β ),R(α,w_α ) 表示最优参数为 w_α的网络结构α在验证集合上的性能;
- c(α)≤κ 是所得到的模型的计算开销的一个约束。
然而,直接获得最优的结构α是很困难的。因此,NAT 首先学习一个策略,然后从学到的策略中采样α,即α服从。为了学习策略π,我们解决以下优化问题:
为了解决该优化问题,作者采用了强化学习方法中的策略梯度方法。为此,需要构造一个合适的策略函数。由于网络结构β可以用 (X,A) 表示(其中 A 为邻接矩阵,X 为节点特征),来表示,作者在这里的策略π(α|β,θ) 采用了两层的图卷积神经网络(GCN),即:
其中,
此外文章采用了参数共享的方法来避免从头训练每个结构的参数。总体看来,优化思路就是对下面两步进行迭代优化:
1、更新神经网络参数 w,(利用了参数共享的思想):
2、更新θ,(利用最大熵鼓励探索):
其中第 2 步的流程示意图如下所示:
为了验证 NAT 的有效性,作者将 NAT 应用于人工设计的结构(如:VGG、ResNet、MobileNet)和 NAS 得到的结构(如:ENAS、DARTS、NAONet)。结果分别见表 1 和表 2 所示。
表 1. NAT 在人工设计的网络结构上的优化结果。
表 2. NAT 在 NAS 方法所得的网络结构上的优化结果。
从表 1 和表 2,可以观察到,在 ImageNet 数据集上,经过 NAT 优化后的模型都比原来的基准模型,在计算复杂度相近甚至更低的情况下,获得了更高的识别精度。
下面,对 NAT 优化后的模型结构进行可视化。图 1 和图 2 分别给出了 NAT 在人工和 NAS 所设计的网络结构上的优化结果。
图 1. NAT 在人工设计的网络结构上的优化结果。
如图 1 所示,对于人工设计的网络结构,NAT 引入额外的跳跃连接来提高识别精度。
图 2. NAT 在 NAS 设计的网络结构上的优化结果。