读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)。当时,该图有较大概率成为一个连通分量。
(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相关推荐
- Bilinear CNN与 Randomly Wired Neural Network
最近主要学习了两篇论文以及相关的代码. 1.Bilinear CNN 这篇论文主要是在细粒度分类上应用的,在全连接层之前,在所有的卷积计算完成之后,进行的Bilinear计算,关键的代码如下: def ...
- Convolutional Neural Networks for Visual Recognition
http://cs231n.github.io/ 里面有很多相当好的文章 http://cs231n.github.io/convolutional-networks/ Table of Cont ...
- Convolutional Neural Networks for Visual Recognition 8
Convolutional Neural Networks (CNNs / ConvNets) 前面做了如此漫长的铺垫,现在终于来到了课程的重点.Convolutional Neural Networ ...
- Convolutional Neural Networks for Visual Recognition 1
Introduction 这是斯坦福计算机视觉大牛李菲菲最新开设的一门关于deep learning在计算机视觉领域的相关应用的课程.这个课程重点介绍了deep learning里的一种比较流行的模型 ...
- 读《Linking Convolutional Neural Networks with Graph Convolutional Networks: Application in Pulmonary》
2019 摘要 通过CNN+GCN分离动脉静脉 -------------------------- imgDirPath = './data/Orient/DemoRightUpper05CTPA' ...
- Python Numpy学习手册(翻译自斯坦福大学 CS231n: Convolutional Neural Networks for Visual Recognition)
1.Python简介 Python是一种高级的动态类型化多范例编程语言,也类似伪代码,举个例子,对数据排序 def quicksort(arr):if len(arr) <= 1:return ...
- Graph Convolutional Neural Networks for Predicting Drug-Target Interactions
1. 摘要 2. 数据集 DUDE数据集改进 DUDE-chemBl负样本数据集 最大无偏数据集(MUV) 3. 图构建 pocket graph molecuar graph 4. 口袋pretra ...
- Deep Neural Networks的Tricks
Here we will introduce these extensive implementation details, i.e., tricks or tips, for building an ...
- Paper:《Generating Sequences With Recurrent Neural Networks》的翻译和解读
Paper:<Generating Sequences With Recurrent Neural Networks>的翻译和解读 目录 Generating Sequences With ...
最新文章
- ucosii事件控制块------消息邮箱与消息队列
- acwing算法题--多重背包问题一
- 一名拿到阿里offer的Java程序员分享三轮面试经验
- 开发第一个Meeting App
- win8远程访问mysql_Windows 安装 mysql8.0 配置远程访问
- 在网页中嵌入任意字体(特殊字体/自定义字体)的解决方案
- python3 写入excel_Python3 读、写Excel文件的操作方法
- mysql 查询递归自身,mysql 递归查新
- 计算机电源故障维修方法,atx电源维修方法 atx电源常见故障【详细介绍】
- Android之Scroller详解讲解-真正了解滚动处理
- KITTI数据集下载(百度云)
- 个人隐私保护条例_史上最严的个人数据保护条例来了!看完你就明白GDPR是什么了...
- DM8数据库安装与实时主备搭建
- 全国省市区县 MySQL 数据库 含行政区划编码 名称 父级行政区划编码 基于国家统计局2017年3月发布数据
- 醉了,什么是鸡尾酒排序?
- 33岁开始我们该做些什么
- Python风轮绘制
- 福建高职单招计算机基础知识,2015年福建省高职单招计算机专业模拟试卷
- 卷积神经网络实战一 水果分类
- 川教版计算机四年级上教案,川教版小学英语四年级上下册 -同步课本学习机