随着深度学习技术的广泛使用,人们对于如何自动对神经网络结构进行设计产生了浓厚的兴趣,研究人员希望能够通过数据驱动的方式对模型结构进行搜索,更加自动地找到能够拟合当前任务的最佳网络结构。具体来说,网络结构搜索的目标在于能够根据含有n个训练样本的数据集(其中和为第i个样本中的观察数据和目标标签值)中找到最佳的拟合模型â ,这个过程可以被描述为如下形式:其中为向模型 a 中输入观察数据后,模型对于标签的预测概率。而神经网络模型本质上可以看作是对数据进行拟合的函数,因此预测概率的过程可以表示为。从模型 a 的计算公式中我们可以看到,对于最佳模型结构的搜索,实际上可以看作是对中 a 所进行的优化过程。但正如前文所提到的,网络结构作为一个函数,本身是离散的,它很难通过最优化方法直接对其进行处理。不过,反观网络结构本身,我们不难发现其具有两个非常重要的特点:无穷不可枚举和离散不可微分。而从这两个特点出发,我们很容易发现其实在之前的其他任务中,我们已经有很多对这类变量进行优化的经验,比如说自然语言处理中对词汇的建模。词汇从语言学的角度出发,实际上也是无穷无尽的,同时词汇和词汇之间本身不存在直接的关联。而在通过深度学习的方式对其进行处理的时候,已经对这两个问题进行了解决。我们通过诸如BPE等编码方式将词汇建模为子词模型,这种方法对词汇一级的建模颗粒度进行了调整,使得计算机仅需处理有限个语言片段即可对词汇本身进行表示。而针对离散化的问题,研究人员则采用将其映射到高维空间的方法,使得原本彼此独立的词汇能够通过语境学习到彼此之间的关联,同时为模型使用梯度下降等最优化方法进行优化提供了可能。与自然语言处理任务中词汇的表示相比,如何对网络结构本身进行建模,使得其能够利用已有的优化算法找到最佳的模型结构,我们同样可以从与词汇类似的角度对其进行思考。针对模型结构数量繁多、无法一一列举的问题,研究人员对网络结构表示的颗粒度进行探索,希望能够找到合理的搜索单元来对模型空间进行表征。由于网络结构本身实际上可以看作是一个比较复杂的函数映射,而对于向量空间中的函数而言,其最小的颗粒度无外乎就是矩阵的基本操作,如加(减)法、线性变换、矩阵乘法、转置以及各类非线性变换等。理论上我们完全可以使用这些操作作为网络结构表示中的最小单元,但由于其颗粒度过于微小,每个网络结构均将被表示为非常细小的局部操作,在现有算力条件下,很难直接对其进行优化。因此,目前网络结构搜索的方法中,往往会选取上述操作中的部分操作(如非线性变换等)作为搜索对象,或者根据经验将部分操作捏合成局部结构进行搜索(如注意力网络、前馈神经网络等)。这些操作实际上很难如向量空间中的基本操作那样完整地表示所有可能的结构,因此这种“有损”的方式仅仅是现阶段受算力限制下的折中策略,这种有损环境下网络结构空间往往被称作搜索空间,是全体结构空间的一个子集。另外,对于模型结构离散化的问题,在网络结构搜索任务中同样需要对其进行重新表示,这部分所要表示的内容实际上就是我们上一步中所选择的最小搜索单元,而具体来说,如何对这些局部操作(或结构)进行代数化的表示,目前依旧没有一个固定的策略,主流的方法往往会将这些结构通过标量或向量的方式进行建模。