论文阅读Practical Block-wise Neural Network Architecture Generation

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31390999/article/details/84779360

这篇论文只要通过强化学习中的Q-learning来搜索最优的神经网络的block构架方法。大多数的CNN都是人工设计的,有大量的超参数需要选择,而以前提出的自动网络设计方法往往效果不好or需要花费大量的时间,而且只能解决特定的任务,不能很好的泛化。因此提出了blockQNN。

主要思路是设计了一个block structure:因为以前的方法需要很大的搜索空间,而本文提出一种基于block-wise的网络搜索框架。即神经网络是由若干个block搭建而成的(这部分是人为设计的)。

具体方法是因为CNN包含前馈计算过程,可以用有向无环图表示它,即每个节点对应于CNN中的层,而有向边代表从一个层到另一个层的数据流。首先设计一个网络结构代码NSC,如下图所示,左边的是多支连接,右边为短连接。在这里我们定义了一个五维向量。第一个元素是指他所在的块的编号,第二个是指他这个块会所代表的含义,一共有七种。第三个是他卷积核的大小,第四个,第五个是他的前驱。 需要注意的是如果是终止节点,没有前驱,如果前驱只有一个,那么pred2为0。除了使用NSC,本文还使用另一种方法减少搜索空间,即将Relu,Convolution,BN组合成Convolutional cell RCC.(欲活化卷积细胞)

本文专注于学习网络块的整个拓扑结构以提升性能。

第二部分是使用Q-learning寻找网络结构,使用分布式异构的框架进行训练,同时搜索多个block架构并训练来产生reward,然后更新Q.虽然我们通过专注于构建网络块来挤占整个网络设计的搜索空间,但仍有大量可能的结构需要寻找。 因此,我们采用强化学习而非随机抽样进行自动设计。 我们的方法基于Q学习,这是一种强化学习,涉及代理人应该如何采取行动以最大化累积奖励。 Q学习模型由代理,状态和一组动作组成。stage 即前面提到的NSC,action是接下来那一层的决策。

我们要找最大的期望,期望可以表示为以下式子,递归贝尔曼方程。可以改写为后面的那个式子,其中其中α是确定新获得的信息如何覆盖旧信息的学习率,γ是衡量未来奖励重要性的折扣因子。 rt表示当前状态st观察到的中间奖励,而sT表示最终状态,即终 端层。 rT是相应的验证准确度,以前的方法没有考虑到rT,导致开始的时候收敛慢。

分布式训练

它由三部分组成:主节点,控制器节点和计算节点。 代理首先在主节点中对一批块结构进行采样。 然后,我们将它们存储在一个控制器节点中,该节点使用块结构来构建整个网络并将这些网络分配给计算节点。具体地,在每个计算节点上并行地训练网络,并且将验证准确性作为控制器节点的奖励返回给更新代理。

第三部分是early-stopping,是为了进一步加强学习过程,并且防止提前停止对准确率的影响,在reward中进入了FLOPS和Density的影响。

实验 A,B是无限参数,S是最佳的一个

猜你喜欢

转载自blog.csdn.net/qq_31390999/article/details/84779360