AmoebaNet,论文的全名是Regularized Evolution for Image Classifier Architecture Search,是一篇比较早的采用进化算法来做NAS的论文。
进化算法是传统人工智能中的一种群体启发式优化算法,它模拟生物学在自然界中的仿生原理,通过选择、交叉、变异等方式,一代又一代更新和进化,最终收敛于最优解的过程。
AmoebaNet是由谷歌团队Real等人提出的一种基于年龄进化算法的神经网络架构搜索。为了解决网络架构参数无法通过验证集精度的梯度传播来更新,之前的一些学者提出了用强化学习的思想来优化controller RNN。与强化学习相似,进化算法同样也不需要计算损失函数或者目标函数的梯度传播,甚至不需要目标函数是可导的,只需要一些简单易操作的编码处理,就可以优化目标函数。
在AmoebaNet里,采用的是遗传算法的一个变种,叫做年龄进化算法。群体中的每一个个体,代表着一种子网络,而个体的编码空间(或者说是搜索空间),则是支持直接引用NASNet的Cell和Block的设计,每一个个体,代表着对Cell的编码。
下图是AmoebaNet年龄进化算法的流程。
图1. AmoebaNet的年龄进化算法流程图
算法的步骤为:
- 随机初始化P个个体 的种群(也就是P个子网络),训练和验证这P个子网络获得它