深度神经网络作为深度学习的基石,已在许多实际应用中获得成功,如图像分类,自然语言处理,语音识别等。网络可以直接从数据中提取特征,没有了原来复杂耗时的特征工程 。通常网络的性能取决于两方面:网络结构与权重。一方面,网络的权重可以学习得到。通过构建连续的损失函数,使用梯度算法最小化损失函数,当满足终止条件时,得到最优的权重。另一方面,对于获得最优结构,无法直接使用连续公式表示,并且也没有明确的函数衡量寻找最优结构的过程。目前表现最好的模型基本为人工设计的网络,这些网络模型需要拥有丰富的神经网络和图像处理知识的研究人员设计。实际上,大多数用户不满足这样的条件,神经结构搜索(neural architecture search,NAS)旨在自动化设计深度神经网络。数学上,NAS可以表示成由公式(1)表示的优化问题:
其中表示神经网络结构的搜索空间,
在训练集
上训练后,在fitness评估数据集
上测量结构A的性能。根据采用的优化算法,NAS算法可分为基于梯度的NAS算法,基于强化学习(RL)的NAS算法以及基于EC(Evolutionary Computing)的NAS算法(ENAS)。特别地,基于强化学习的算法即使在中等规模的数据集上,也需要上千张GPU卡,并且耗时数天。基于梯度的算法比RL算法更高效,但经常会找到病态的结构,并且基于梯度的算法需要构建supernet,这也需要专业的知识。ENAS算法利用EC技术解决NAS问题。EC是一种基于群体的计算方法,模拟种群的进化过程,来解决具有挑战性的优化问题。
不同于采用其他优化方式的NAS方法,ENAS根据优化过程中采用的搜索策略可以进一步的划分,如图1所示。进化计算技术中根据优化方法采用的搜索策略,可以分为进化算法(evolution algorithm),群体智能(swarm intelligence)和其他方法。目前论文研究中进化算法占绝大多数,进一步遗传算法(GA)又占一大部分,遗传编程(GP)和进化策略(ES)均属于进化算法。群体智能算法中又包括粒子群优化方法(PSO)和蚁群算法(ACO)。同时,在其他分类中也存在差分进化(DE),萤火虫算法(FA)等,算法具体介绍可以见群体更新一节。