原文链接: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)。当时,该图有较大概率成为一个连通分量。

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

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

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

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

在COCO object detection上:

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

读Exploring Randomly Wired Neural Networks for Image Recognition相关推荐

  1. Bilinear CNN与 Randomly Wired Neural Network

    最近主要学习了两篇论文以及相关的代码. 1.Bilinear CNN 这篇论文主要是在细粒度分类上应用的,在全连接层之前,在所有的卷积计算完成之后,进行的Bilinear计算,关键的代码如下: def ...

  2. Convolutional Neural Networks for Visual Recognition

    http://cs231n.github.io/   里面有很多相当好的文章 http://cs231n.github.io/convolutional-networks/ Table of Cont ...

  3. Convolutional Neural Networks for Visual Recognition 8

    Convolutional Neural Networks (CNNs / ConvNets) 前面做了如此漫长的铺垫,现在终于来到了课程的重点.Convolutional Neural Networ ...

  4. Convolutional Neural Networks for Visual Recognition 1

    Introduction 这是斯坦福计算机视觉大牛李菲菲最新开设的一门关于deep learning在计算机视觉领域的相关应用的课程.这个课程重点介绍了deep learning里的一种比较流行的模型 ...

  5. 读《Linking Convolutional Neural Networks with Graph Convolutional Networks: Application in Pulmonary》

    2019 摘要 通过CNN+GCN分离动脉静脉 -------------------------- imgDirPath = './data/Orient/DemoRightUpper05CTPA' ...

  6. Python Numpy学习手册(翻译自斯坦福大学 CS231n: Convolutional Neural Networks for Visual Recognition)

    1.Python简介 Python是一种高级的动态类型化多范例编程语言,也类似伪代码,举个例子,对数据排序 def quicksort(arr):if len(arr) <= 1:return ...

  7. Graph Convolutional Neural Networks for Predicting Drug-Target Interactions

    1. 摘要 2. 数据集 DUDE数据集改进 DUDE-chemBl负样本数据集 最大无偏数据集(MUV) 3. 图构建 pocket graph molecuar graph 4. 口袋pretra ...

  8. Deep Neural Networks的Tricks

    Here we will introduce these extensive implementation details, i.e., tricks or tips, for building an ...

  9. Paper:《Generating Sequences With Recurrent Neural Networks》的翻译和解读

    Paper:<Generating Sequences With Recurrent Neural Networks>的翻译和解读 目录 Generating Sequences With ...

最新文章

  1. ucosii事件控制块------消息邮箱与消息队列
  2. acwing算法题--多重背包问题一
  3. 一名拿到阿里offer的Java程序员分享三轮面试经验
  4. 开发第一个Meeting App
  5. win8远程访问mysql_Windows 安装 mysql8.0 配置远程访问
  6. 在网页中嵌入任意字体(特殊字体/自定义字体)的解决方案
  7. python3 写入excel_Python3 读、写Excel文件的操作方法
  8. mysql 查询递归自身,mysql 递归查新
  9. 计算机电源故障维修方法,atx电源维修方法 atx电源常见故障【详细介绍】
  10. Android之Scroller详解讲解-真正了解滚动处理
  11. KITTI数据集下载(百度云)
  12. 个人隐私保护条例_史上最严的个人数据保护条例来了!看完你就明白GDPR是什么了...
  13. DM8数据库安装与实时主备搭建
  14. 全国省市区县 MySQL 数据库 含行政区划编码 名称 父级行政区划编码 基于国家统计局2017年3月发布数据
  15. 醉了,什么是鸡尾酒排序?
  16. 33岁开始我们该做些什么
  17. Python风轮绘制
  18. 福建高职单招计算机基础知识,2015年福建省高职单招计算机专业模拟试卷
  19. 卷积神经网络实战一 水果分类
  20. 川教版计算机四年级上教案,川教版小学英语四年级上下册 -同步课本学习机

热门文章

  1. 6个座位办公室最佳位置_办公室座位风水
  2. React官方文档自学笔记
  3. xp系统怎么启动任务计划服务器,windowsXP操作系统如何设置计划任务
  4. 化合物半导体晶格常数汇总
  5. 豆瓣电影,电视剧DM实战
  6. 如何防止关联,求一个小号多开工具?
  7. 年轻时为养家累坏腰椎,老了该怎么护腰呢
  8. 弹载计算机标准,弹载计算机
  9. 美通企业日报 | 护照含金量迎来亚洲时代;沃尔沃集团联网交通设备交付一百万台...
  10. Android Studio 蓝牙通信BlueTooth