读Exploring Randomly Wired Neural Networks for Image Recognition

原文链接:https://arxiv.org/abs/1904.01569

项目地址:https://github.com/seungwonpark/RandWireNN

1.本文做了什么?

本文设计了一个神经网络生成器。用它能随机生成一些网络,像训练经典神经网络一样训练它们后,它们在分类任务上(对照ResNet)和目标检测任务上(对照Faster R-CNN,Detectron)的性能相比经典NN,竟能达到不相上下,甚至略胜一筹的地步,如下图所示。

2.如何生成一个神经网络呢?

这个神经网络是用图生成的。什么图呢,有向无环图(DAG)。为什么是有向的?方向指示了数据的流向。为什么是无环的?我觉得神经网络理想情况下是有环的,环起到一个循环数据的作用,它的存在使得数据复用率更高,从而使得神经网络更为精简。其实我们反复迭代去计算、去修正神经网络的参数,就好像把数据和网络放在一个大环里反复执行计算,所以传统神经网络里面反倒没有了环。

怎么生成一个DAG?先造一个图,再用启发式方法确定边的指向。

图由节点V和边E构成,图的复杂度取决于V和E的数目。作者选了3种造图的算法:

(1)ER算法:初始状态是N个节点0条边,对于每一对节点,以p的概率在其间连边,该模型可记做ER(p)。当p>\frac{ln(N)}{N}时,该图有较大概率成为一个连通分量。

(2)BA算法:初始状态是M个节点。依次添加新节点,每加一个节点,就加上M条边。新加的节点以一定概率连接到已有的节点v上,这个概率与v的度数相关。节点个数增加到N为止。该模型可记做BA(M)。

(3)WS算法:初始状态下,N个节点排成环状,每个节点与前后K/2个相邻节点相连(K是偶数)。以顺时针的顺序,对每个节点v,考察与它相连的第i个节点,以p的概率“重新连接”它。所谓“重新连接”,就是随机选取一个v以外的,当前没有与本节点相连的节点进行连接。重复该操作K/2次,得到新图。该模型可记做WS(K,P)。

如何将生成的无向图转化成DAG?

给这些节点编号,让所有边中编号小的节点指向编号大的节点。在ER图中,节点编号的顺序是随机的;在BA算法中,初始的M个节点编号是1-M随机的,之后的节点编号是依插入顺序的;在WS图中,节点序号是顺时针序。

如何将DAG映射成网络呢?

网络是由传送数据的数据流线路,以及处理数据流的运算模块构成的。前者与边构成映射,后者与节点构成映射,该思路是符合人们的直观认识的。

具体来说,边操作包含:将数据流从一个节点传递到另一个节点。节点操作由3个部分组成:

(1)aggregation(聚集):将输入数据流加权求和,权值是可学习的,且是正值。

(2)transformation(转换):将聚集的数据做卷积、激活等操作,本文中采用的是ReLU-Conv-BN操作。卷积部分是默认用类似Inception网络里的3x3 separable conv做的(yige 3x3深度可分离卷积结构后跟一个1x1卷积,可参考博客:https://blog.csdn.net/u012426298/article/details/80998547)

(3)distribution(分配):将加工过的数据输出到其他节点。

之所以这样设计节点和边的操作是因为这样的话有如下好处:

(1)保持了进出的通道数一致,这防止了某些出入度节点因为计算量较大而在网络中有更大影响力。

(2)保证了FLOPs和参数数目不变。

(3)聚集操作和分配操作几乎没有参数,这样使得FLOPs、参数数目和节点数目差不多呈线性正相关。

定义了这种映射关系之后,就要解决如何输入、输出的问题。解决方法也很图论,就是类似于流网络技术,额外添加一个输入节点、一个输出节点。

继续类比神经网络的结构,我们发现一个神经网络往往由多个部分组成,每个部分有着不同的结构,承担着不同的任务。我们将上述生成的一个“图”网络视作一个stage,而整个神经网络则由多个stage拼接而成。下面比较一下ResNet和与之类似的5-stage RandWire architecture的网络结构。

可以看到两者的大体结构是形成了对应关系的,而且在性能上随机连接网络在分类任务上的性能要好于ResNet。

接下来我们整合一下映射算法,定义一个映射g(\Theta,s),第一个参数指定了网络的stage数目,各stage残差块数目和深度/宽度/过滤器尺寸/激活函数类型等。第二个参数是个伪随机数种子(服从高斯分布),在g内部使用,使得同一个\Theta也能产生不同的网络。这就给了我们手动优化网络的空间(采用line/grid search处理这些参数域)。

我们知道,调试神经网络的超参数是炼丹的关键。关于optimization,是否可以逐步做到AUTO_ML是我们关心的事情。对比经典NN和本文提出的这些随机生成的网络,实验结果表明这些随机网络不需要怎么调参,就能获得比较好的结果,更符合AUTO_ML的趋势。

3.随机网络性能如何呢?

经过一系列的模型参数设置(WS(4,0.75)),在ImageNet的分类任务上:

在COCO object detection上:

可以说这种随机生成的网络确实具有较大的潜力的,未来会不会成为设计网络生成器的时代呢。原先我们将NN中的权重等参数建模,去求一个最优解。现在我们将NN也建成模型,在更大的空间里搜索最优解。这样的解会不会过拟合呢,哪些解能为神经科学研究提供参考呢,让我们拭目以待吧。

发布了22 篇原创文章 · 获赞 0 · 访问量 7401

猜你喜欢

转载自blog.csdn.net/georgeandgeorge/article/details/89289388