神经结构自动设计

摘自《机器之心》

该结构使用了200个V100GPU,可能是伏特级的计算卡。

神经结构自动设计通常分为两类:强化学习和进化算法。强化学习中结构的组件选择被认为是一个行为,一系列的行为定义了一个神经网络结构,开发集准确度用作奖赏。进化算法中,通过变异和结构组件的重新联合进行搜索,有更好性能的结构会被挑选出来。这些方法工作于离散空间。

神经架构优化(neural architecture optimization,NAO )的核心是一个编码器模型,负责将神经网络架构映射到一个连续表示,在连续表示上建立一个回归模型来逼近架构的最终性能,这里值得注意的是,回归模型类似于之前研究中的性能预测器 [4, 27, 11]。新方法与之的区别在于如何利用性能预测器:之前的研究 [27] 使用性能预测器作为启发来选择已生成的架构,以加速搜索过程,而新方法直接优化模块,并通过梯度下降获得更好网络的连续表示(图 1 中间底部黑色箭头)。然后利用优化的表示来产生预测性能更好的新神经网络架构。为了实现这一点,NAO 的另一个关键模块被设计成解码器,从连续表示中恢复离散架构(图 1 右侧红框箭头)。解码器是配备了注意力机制的 LSTM 模型,可以实现精准恢复。这三个组件(即编码器、性能预测器和解码器)在多任务设置中接受联合训练,这有利于连续表示:恢复架构的解码器目标能进一步改善架构嵌入的质量,更有效地预测性能。

算法:

输入:初始候选结构集X,初始结构集Xeval = X。结构性能S为空集。种子结构数目K,步长yita,优化次数L。

第一步:训练包含于X的每个结构x,估计以获取开发集性能Seval={sx},将Seval并入S以扩大S;

第二步:使用X和S,通过最小化损失,训练编码器E,性能预测器f和解码器;

第三步:从X中挑选性能最好的K个结构,构成种子结构集Xseed;

第四步:对于Xseed中的每个结构,基于编码器E和性能预测器f获得一个更好的表示ex`。定义表示增强集E`={ex`};

第五步:使用解码器从ex`解码x`,将这些新结构组成一个新结构集,设置为Xeval,使用该结构集扩张X。

重复以上过程,直到迭代完成。

挑选最好性能的结构。

猜你喜欢

转载自blog.csdn.net/weareu/article/details/82317115