用神经结构搜索处理多样化的任务

147 阅读11分钟

DASH从CNN主干中每个卷积层的大量选项中有效地搜索出最佳内核大小和扩张率。由此产生的模型可以实现特定任务的特征提取,并且与手工设计的专家架构一样好用,使DASH成为处理像视觉这样的研究领域以外的各种任务的有效工具。

过去十年见证了机器学习(ML)在解决各种现实世界问题方面的成功,从面部识别和机器翻译到疾病诊断和蛋白质序列预测。然而,这些领域的进展涉及到设计和训练特定任务的神经网络的艰苦人工努力,利用大多数从业者无法获得的人力和计算资源。

与这种特定任务的方法相反,DeepMind的Perceiver IOGato以及谷歌的Pathway等通用模型已经被开发出来,可以同时解决一个以上的任务。然而,由于这些专有的预训练模型是不公开的,从业者甚至无法评估微调这些模型之一是否会对他们感兴趣的任务起作用。由于需要大量的计算和训练数据,从头开始独立开发一个通用的模型也是不可行的。

一个更容易获得的替代方案是自动机器学习(AutoML)领域,其目的是以最小的人力和计算资源为不同的任务获得高质量的模型,正如最近的一篇博文中所指出的。特别是,我们可以使用神经结构搜索(NAS)来自动设计不同学习问题的神经网络。事实上,与训练大规模的基于变压器的通用模型相比,许多高效的NAS算法(如DARTS)可以在单个GPU上运行,并需要几个小时来完成一个简单的任务。然而,虽然NAS在计算机视觉等研究充分的领域实现了快速有效的模型开发,但其在视觉以外领域的应用在很大程度上仍未得到探索。事实上,将NAS应用于更多样化的问题的一个主要困难是在考虑一个有足够表现力的神经网络集合和能够有效地在这个集合上进行搜索之间进行权衡。在这篇博文中,我们将介绍我们的方法,在NAS的表现力和效率之间找到一个合适的平衡。

我们即将发表的NeurIPS 2022论文中,我们开发了一种名为DASH的NAS方法,它可以生成和训练具有高预测精度的特定任务卷积神经网络(CNN)。我们的核心假设是,对于广泛的问题(尤其是那些非视觉输入的问题,如音频和蛋白质序列),只需为CNN中的卷积层寻找合适的核大小和扩张率,就可以实现高质量的特征提取,并产生与专家设计的模型相竞争的模型。由于众所周知的卷积作为特征提取器的有效性,再加上最近的工作证明了现代CNN在各种任务上的成功(例如,ConvNeXt模型的最先进的性能,它包含了变形金刚所使用的许多技术),我们明确地将重点放在扩展CNN的泛化能力上。

虽然不同内核的搜索空间很容易定义,但有效地搜索它是具有挑战性的,因为我们要考虑许多具有不同内核大小和扩张率的内核,这导致了可能架构的组合爆炸。为了解决这个问题,我们介绍了三种利用卷积和GPU上快速矩阵乘法的数学特性的技术。我们在跨越多个领域(视觉、音频、心电图、音乐、蛋白质、基因组学、宇宙射线和数学)、输入维度(一维和二维)和预测类型(点和密集)的10个不同任务上评估DASH。在搜索速度比现有NAS技术快10倍的同时,DASH在7/10任务的所有NAS基线和7/10任务的所有手工制作的专家模型中实现了最低的错误率。

在下文中,我们将首先讨论DASH是如何受到现有NAS工作的启发并与之不同的。然后,我们将介绍三个新的 "技巧",以提高在不同内核空间的搜索效率。最后,我们将介绍实证评估以证明DASH的有效性。

表达性 表达性与效率的权衡 NAS

大多数NAS方法有两个部分用于生成特定任务的模型:一个是定义所有候选网络的搜索空间,一个是探索搜索空间直到找到最终模型的搜索算法。当且仅当搜索空间具有足够的表现力时,才能为任意的新任务开发出有效的模型,但这也意味着我们需要更多的时间来探索空间中可能的架构集。

搜索空间的表现力和搜索算法的效率之间的这种矛盾在NAS研究中一直很突出。一方面,像DARTS这样以视觉为中心的方法是为了快速探索多种架构,但搜索空间仅限于具有(倒置的)残余块的模型,因此是高度针对视觉任务的。另一方面,像AutoML-ZeroXD这样的新方法旨在通过考虑高表现力的搜索空间来解决任意的任务,但相关的搜索算法往往在实践中是难以解决的。例如,XD试图用矩阵变换来替代现有网络中的层。矩阵搜索空间是连续的和广阔的,但即使对于像CIFAR-100这样简单的基准任务,优化它也是非常耗时的,这使得XD对于具有更多数据点或更大输入维度的不同任务来说是不切实际的。

为了弥补这一差距,我们提出了DASH,它将一个CNN固定为骨干,并搜索最佳内核配置。我们的直觉是,像ConvNeXtConv-Mixer这样的现代卷积模型足以与基于注意力的架构竞争,而不同的内核大小和扩张可以进一步加强不同问题的特征提取过程。例如,小的过滤器一般用于视觉任务,以检测低层次的特征,如边缘和角落,而大的内核通常对序列任务更有效,以模拟长距离的依赖关系。与传统的基于单元的NAS不同,它搜索一个操作块并将同一块的几个副本堆叠在一起,DASH更灵活,因为它将层操作与网络结构解耦:由于搜索的操作者可以从网络的开始到结束都不一样,不同颗粒度的特征可以被不同地处理。

提高NAS效率的 "内核技巧"

如上所述,我们寻求一个有足够表现力的(即大的)内核搜索空间,以确保存在能够有效提取不同任务特征的内核。为了实现这一目标,我们用以下聚合卷积算子取代主干网络中的每个卷积层:

S_bfAggConv_K,D=bfConv_k,dkinK,dinD,tag1label1S\_{bf AggConv\_{K, D}} = \\{bf Conv\_{k,d}| k\\in K, d\\in D\\}, \\tag{1}\\label{1}

其中 \(K\)和 \(D\)分别表示我们考虑的核大小和扩张的集合。在这个核空间上搜索的天真方法是使用DARTS的连续放松方案来计算输出(我们称这种方法为混合结果):

$$Bf AggConv_{K,D} (\mathbf{x}) :=\sum_{k\in K}\sum_{d\in D}\α_{k,d}\cdot\bf Conv(\mathbf{w}_{k,d})(\mathbf{x}), \tag{2}\label{2}$

其中 \(\mathbf{w}_{k,d}\)是内核权重, \(\alpha_{k, d}\)是结构参数。然而,DARTS只考虑了几个小尺寸和小扩张的核(用 \(k_{\max}\)=5, \(d_{\max}\)=2, 因此小 \(|K||D||\)),而我们的目标是搜索许多大核(例如,用 \(k_{\max}\)=11, \(d_{max\)=127, 大 \(|K||D|\))。这种表达能力的提高导致天真搜索的搜索成本大幅提高,其运行时间复杂度为\(O(n|K||D|)\),其中\(n\)为输入大小。

在下文中,我们将描述三种技术--内核混合、傅里叶卷积和克朗克扩张--DASH共同采用了这些技术来实现高效搜索。复杂度方面,DASH的高效搜索用一个(O(n\log n)\)复杂度取代了天真的搜索的(O(n|K||D|)\)复杂度,其中(\log n\)对于任何现实的(n\),包括长序列输入都是小的。从经验上看,后一种复杂度转化为明显改善的搜索速度,例如,在大的\(|K||D|||)系统中,DASH的搜索速度比DARTS快10倍左右(图1)。

图1.一个搜索历时的前向和后向的综合时间与搜索空间大小的关系,对于一维输入的情况下\(n = 1000\)。我们通过让 \(K = \{2p+1 | 1\leq p \leq c\}\)、 \(D = \{2^q-1 | 1\leq q \leq c\}\)和增加 \(c\)从1到7来改变搜索空间。随着聚合核大小 \(\bar{D}\)的增加,DASH曲线的增长比其他方法慢得多。

**技术1:混合权重。**我们首先观察到,方程2中的所有计算都是线性的,所以分配法也适用。因此,我们可以将内核结合起来,只计算一次卷积,而不是计算\(|K||D||)卷积:

bfAggConv_K,D(mathbfx)=bfConvleft(sum_kinKsum_dinDalpha_k,dcdotmathbfw_k,dright)(mathbfx)tag3label3bf AggConv\_{K, D}(\\mathbf{x})=\\bf Conv\\left(\\sum\_{k\\in K}\\sum\_{d\\in D} \\alpha\_{k, d}cdot\\mathbf{w}\_{k, d}\\right)(\\mathbf{x})。\\tag{3}label{3}

我们把这种方法称为混合加权法混合权重允许搜索复杂度取决于聚合核大小 \(\bar{D} := \max (k - 1)d + 1\),而不是 \(|K||D|\),但前者仍然随着搜索空间的扩大而扩大。我们能做得比这更好吗?

技巧2:傅里叶卷积。 想象一下, \(x\)是一个图像输入。然后,方程3在空间域中对像素值进行操作。或者,我们可以利用频域中像素值的变化率来更有效地计算卷积输出,利用著名的卷积定理:

bfAggConv_K,D(mathbfx)=mathbfF1bfdiagleft(mathbfF(sum_kinKsum_dinDalpha_k,dcdotmathbfw_k,d)right)mathbfFmathbfx.tag4label4bf AggConv\_{K,D}(\\mathbf{x})= \\mathbf{F}^{-1}\\bf diag\\left(\\mathbf{F}(\\sum\_{k\\in K}\\sum\_{d\\in D} \\alpha\_{k,d}\\cdot \\mathbf{w}\_{k,d})\\right) \\mathbf{F}\\mathbf{x}.\\tag{4}label{4}

其中 \(\mathbf{F}\)代表离散傅里叶变换。方程4允许我们消除对组合核大小的依赖,因为\(\mathbf{F}\)可以通过快速傅立叶变换在时间上应用(O(n\log n)\)。

**技术3:克朗克扩张。**最后,我们重点关注在搜索空间的一个子集里加速搜索,在这个子集里,核的大小(k\)是固定的,扩张率(d\)是变化的。为了在应用于输入之前扩张内核,我们需要在权重矩阵的相邻元素之间插入零。在GPU上的有效实现是利用克朗克乘积\(\otimes\)。例如,在2D中,我们可以引入一个稀疏的模式矩阵\(P\in \mathbb{R}^{d\times d}\),其条目除了左上角的条目\(P_{1,1}=1\)外,都是\(0\)的。然后,\(\mathbf{w}_{k,d} = \mathbf{w}_{k,1}\otimes P\)。扩张内核后,我们可以按照公式4进行操作。

NAS-Bench-360上的实证结果

图2.我们使用性能曲线来衡量DASH和其他NAS方法的总体性能(越高越好)。每条曲线都是一条对应于单一方法的曲线,并绘制了该方法比最佳方法差一个倍数系数的任务的比例,其中\(\tau\)是1到无限之间的域变量。DASH远在左上角,说明它很少是次优的,往往是最好的。

为了验证DASH在表达能力和效率之间找到了平衡点,我们在NAS-Bench-360的十个不同的任务上用Wide ResNet骨干网评估了它的性能。我们在图2中展示了DASH和NAS基线的性能曲线(一种比较不同方法的技术,同时揭示了排名和绝对性能特征)。准确的准确性指标可以在我们的论文中找到。我们强调以下的观察:

  • DASH在所有NAS基线中排名第一(并且在7/10的任务中超过了DARTS)。 它也主导了传统的非DL方法,如Auto-Sklearn和通用的模型,如Perceiver IO
  • DASH在7/10的任务上优于手工制作的专家模型。虽然专家网络的复杂程度因任务而异,但DASH在Darcy Flow等任务上的表现表明,它有能力与高度专业化的网络竞争,例如用于PDE求解的Fourier Neural Operator。这意味着为骨干网络配备特定任务的内核是在新领域开发模型的一个有前途的方法。
  • 从速度上看,DASH始终比DARTS快,其搜索过程往往只需要训练骨干网络所需时间的一小部分。 图3直观地显示了每种方法-任务组合的效率和效果之间的权衡。显而易见,在我们考虑的任务上,DASH比大多数NAS方法更快、更有效。

图3.在所有任务上比较-(\log\tau\)-速度的次优性与准确性。DASH集中在右上角表明它相对于其他方法有很强的功效-效率权衡。

除了Wide ResNet骨干网和NAS-Bench-360任务外,我们还验证了DASH在其他骨干网(包括TCNConvNeXt)以及大规模数据集(包括ImageNet)上的功效。特别是,DASH能够在ConvNeXt骨干网的基础上将ImageNet-1K的最高准确率提高1.5%(注意ConvNeXt本身就是通过手动调整内核大小开发的)。这些结果进一步证明了DASH是与骨干网无关的,它可以被用来用特定任务的内核来增强现代架构,从而有效地解决各种问题。

讨论和启示

在这篇博文中,我们认为AutoML的一个重要目标是发现有效的模型来解决我们在现实中可能遇到的各种学习问题。为此,我们提出了DASH,它可以有效地搜索特定任务的内核模式,并将其整合到现有的卷积骨架中。请看我们的论文代码库,以了解更多关于DASH的信息,或者在你自己的任务和骨干上尝试。

虽然DASH通过在NAS中找到表现力和效率之间的适当平衡,在获得高质量模型方面取得了进展,但我们认为它是早期的一步,是AutoML对不同任务的更大挑战的一部分。因此,我们想强调并鼓励参与正在进行的2022年NeurIPS上的AutoML十项全能竞赛。目前,我们正在努力实现DASH作为比赛的基线之一。同时,我们希望看到未来能有更多的自动化和实用的方法来处理不同的任务。