对Exploring RandomlyWired Neural Networks for Image Recognition的另类解读:披着随机搜索外衣的操作至上方法

探讨了使用随机图生成神经网络架构的方法,展示了这种方法在减少人为干预的同时,仍能获得与先进NAS方法相当甚至更好的性能。文章对比了三种随机图算法(ER, BA, WS)生成的网络,并分析了节点操作对网络性能的影响。

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

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

中文翻译:https://blog.youkuaiyun.com/weixin_37993251/article/details/89161502

参考的博客:xiaoiker的博客georgeandgeorge的博客

1.本文在探究什么问题?

NAS的出现使得人们真正意义上开始了对网络架构这一重要参数的机器学习过程。然而,目前的方法通常是选定一个网络生成器,随后用这个网络生成器学习如何搜索网络。

然而,就像ResNet和DenseNet中的布线模式一样,NAS网络生成器是手工设计的,允许的布线模式的空间被限制在所有可能的图的一个小子集中。也即,虽然搜索的层级提高了,但是我们还是没能跳出“制定一个网络->执行任务”的框架。而我们所期望的AutoDL,应当是机器能够摆脱人类的思想束缚,实现更优秀的性能。

所以,本文的核心思想,就是探究“有没有更优秀的网络生成器”。

2.本文做了什么?

我觉得,用经典的NASNet作对比,能够很好的说明本文的工作。

NASNet使用一个RNN网络生成隐含层(绿色和灰色节点)间的连接方式、操作(黄色)、操作结果的连接方式(绿色)。而生成的网络的训练结果会作为反馈修正RNN的参数。

而本文的网络,固定了每个节点的操作(黄色与绿色),只探索如何如何连接各个隐含层。

既然是探索固定数目的节点间的连接,那不就变成一个随机图问题了嘛!所以,本文使用了三种随机图方法:ER(p), BA(M), WS(K,P),每种方法都只包含一个或者两个参数,然后用枚举法,用不同的参数各生成5个结果(这些结果没有经过筛选,因此是完全随机的!),最后的结果如下图。

虽然图上柱子看着差挺多,但是发现:这种瞎连的方法生成的结果,方差都挺低(同一个生成器出来的结果精度几乎相同),而且精度还都挺高!(最好的几个结果优于SOTA的NAS方法生成的网络)而最重要的是,这些结果都来自于随机生成的网络!

其实上图中的结果差距这么小,我们完全可以概括一下他们:用数量固定的操作节点,连数量几乎固定的线,最终生成的结果几乎相同!再概括一下就是,在节点间随便画N根线,最后训出来的效果都差不多。(虽然原文的三种随机图方法还是有一定纪律性的)

那说明网络结构对你的精度贡献不大啊!到底啥大呢,想过去肯定是节点的操作啊!原文中有这样一张图:

这里浅绿色点是文中使用的操作的结果,方块菱形三角则是换了节点操作以后的结果。虽然原文一直在说“后面三种都差不多”,但重点明显应该是:你这第一个和剩余的差的(相比于不同网络结构的差)也太大了吧!

所以,本文的实验结果,与NASNet相比,有下面两个优势:

1.网络生成器完全不需要用子网络的结果训练,因为差距不大,完全可以枚举完成嘛!(训练耗时down)

2.子网络生成过程中的限制少,想怎么连就怎么连(多样性up,但并没用上,因为无论怎么连都差不多)

 

3.一个小小的启发

3.1节对我的思想有一个启示,首先记录在这里:

网络可以看成是输入参数到输出参数的映射,\beta=g(\alpha),其中函数g由网络的架构和其中的参数确定。

但同时,g也可以看作是一种概率分布。也即,\alpha的作用是从这个概率分布中获得一个确定的结果。

而我们训练网络的过程,实则是使这个分布,更加接近我们的预期。这个分布与我们的预期越接近,网络的性能便越高。

 从概率论的角度理解网络,有一种豁然开朗的感觉。

不过整个3.1节给人的感觉就是,说明了现在的网络生成器受到了诸多限制。

4.如何生成一个神经网络

这一部分我直接引用了georgeandgeorge的博客中的内容,他写的足够详细。而我补充的部分会通过斜体标注。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在这个网络中,手工设计的参数包括:网络的stage数量,节点数量,节点间连接数量(用来能和之前的算法进行比较);随机图算法ER(p), BA(M), WS(K,P)中的p,M,K,P这些参数(人工试错法,通过行/网格搜索实现)。这四个参数人工试错的结果如下图。

这里需要强调的是,在选定这些参数后,原文并没有再从这些参数生成的网络中进行选择,而是直接随机选择了这些确定参数的随机图算法生成的5个网络架构。而他们的实验表明,这些架构的结果都差不多!也即上图中的黑色线表示的方差都很小。

我们知道,调试神经网络的超参数是炼丹的关键。关于optimization,是否可以逐步做到AUTO_ML是我们关心的事情。对比经典NN和本文提出的这些随机生成的网络,实验结果表明这些随机网络不需要怎么调参(其他生成器还需要反复训一系列网络来更新生成器参数,而这里在确定p,M,K,P这些参数后就直接随机选择了),就能获得比较好的结果,更符合AUTO_ML的趋势。

4.实验结果

首先是从网络中随机移除一个点或随机移除一个边对网络精度的影响。这里个人觉得意义不大,有兴趣可以看下原文和翻译。

接下来是替换网络中的transform转换操作。这里其实很耐人寻味:虽然原文一直在对比这三个新操作,但是很明显:这三个新操作的性能都远不及原来的3x3分离卷积。也即,本文的这个方法能够取得如此成绩,与选择了恰当的节点操作密不可分。

 

Preface Acknowledgment Chapter 1—Introduction 1.1 Pattern Recognition Systems 1.2 Motivation For Artificial Neural Network Approach 1.3 A Prelude To Pattern Recognition 1.4 Statistical Pattern Recognition 1.5 Syntactic Pattern Recognition 1.6 The Character Recognition Problem 1.7 Organization Of Topics References And Bibliography Chapter 2—Neural Networks: An Overview 2.1 Motivation for Overviewing Biological Neural Networks 2.2 Background 2.3 Biological Neural Networks 2.4 Hierarchical Organization in the Brain 2.5 Historical Background 2.6 Artificial Neural Networks References and Bibliography Chapter 3—Preprocessing 3.1 General 3.2 Dealing with Input from a Scanned Image 3.3 Image Compression 3.3.1 Image Compression Example 3.4 Edge Detection 3.5 Skeletonizing 3.5.1 Thinning Example 3.6 Dealing with Input From a Tablet 3.7 Segmentation References and Bibliography Chapter 4—Feed-Forward Networks with Supervised Learning 4.1 Feed-Forward Multilayer Perceptron (FFMLP) Architecture 4.2 FFMLP in C++ 4.3 Training with Back Propagation 4.3.1 Back Propagation in C++ 4.4 A Primitive Example 4.5 Training Strategies and Avoiding Local Minima 4.6 Variations on Gradient Descent 4.6.1 Block Adaptive vs. Data Adaptive Gradient Descent 4.6.2 First-Order vs. Second-Order Gradient Descent 4.7 Topology 4.8 ACON vs. OCON 4.9 Overtraining and Generalization 4.10 Training Set Size and Network Size 4.11 Conjugate Gradient Method 4.12 ALOPEX References and Bibliography Chapter 5—Some Other Types of Neural Networks 5.1 General 5.2 Radial Basis Function Networks 5.2.1 Network Architecture 5.2.2 RBF Training 5.2.3 Applications of RBF Networks 5.3 Higher Order Neural Networks 5.3.1 Introduction 5.3.2 Architecture 5.3.3 Invariance to Geometric Transformations 5.3.4 An Example 5.3.5 Practical Applications References and Bibliography Chapter 6—Feature Extraction I: Geometric Features and Transformations 6.1 General 6.2 Geometric Features (Loops, Intersections, and Endpoints) 6.2.1 Intersections and Endpoints 6.2.2 Loops 6.3 Feature Maps 6.4 A Network Example Using Geometric Features 6.5 Feature Extraction Using Transformations 6.6 Fourier Descriptors 6.7 Gabor Transformations and Wavelets References And Bibliography Chapter 7—Feature Extraction II: Principal Component Analysis 7.1 Dimensionality Reduction 7.2 Principal Components 7.2.1 PCA Example 7.3 Karhunen-Loeve (K-L) Transformation 7.3.1 K-L Transformation Example 7.4 Principal Component Neural Networks 7.5 Applications References and Bibliography Chapter 8—Kohonen Networks and Learning Vector Quantization 8.1 General 8.2 The K-Means Algorithm 8.2.1 K-Means Example 8.3 An Introduction To The Kohonen Model 8.3.1 Kohonen Example 8.4 The Role Of Lateral Feedback 8.5 Kohonen Self-Organizing Feature Map 8.5.1 SOFM Example 8.6 Learning Vector Quantization 8.6.1 LVQ Example 8.7 Variations On LVQ 8.7.1 LVQ2 8.7.2 LVQ2.1 8.7.3 LVQ3 8.7.4 A Final Variation Of LVQ References And Bibliography Chapter 9—Neural Associative Memories and Hopfield Networks 9.1 General 9.2 Linear Associative Memory (LAM) 9.2.1 An Autoassociative LAM Example 9.3 Hopfield Networks 9.4 A Hopfield Example 9.5 Discussion 9.6 Bit Map Example 9.7 Bam Networks 9.8 A Bam Example References And Bibliography Chapter 10—Adaptive Resonance Theory (ART) 10.1 General 10.2 Discovering The Cluster Structure 10.3 Vector Quantization 10.3.1 VQ Example 1 10.3.2 VQ Example 2 10.3.3 VQ Example 3 10.4 Art Philosophy 10.5 The Stability-Plasticity Dilemma 10.6 ART1: Basic Operation 10.7 ART1: Algorithm 10.8 The Gain Control Mechanism 10.8.1 Gain Ccontrol Example 1 10.8.2 Gain Control Example 2 10.9 ART2 Model 10.10 Discussion 10.11 Applications References and Bibliography Chapter 11—Neocognitron 11.1 Introduction 11.2 Architecture 11.3 Example of a System with Sample Training Patterns References and Bibliography Chapter 12—Systems with Multiple Classifiers 12.1 General 12.2 A Framework for Combining Multiple Recognizers 12.3 Voting Schemes 12.4 The Confusion Matrix 12.5 Reliability 12.6 Some Empirical Approaches References and Bibliography Index
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值