深度学习 15. 全连接和区域连接,fully connected 和 local connected, 解释说明(最简单的解释)

原创 2017年04月24日 18:01:36

本文为原创文章转载必须注明本文出处以及附上 本文地址超链接  以及 博主博客地址http://blog.csdn.NET/qq_20259459  和 作者邮箱( jinweizhi93@gmai.com )。

(如果喜欢本文,欢迎大家关注我的博客或者动手点个赞,有需要可以邮件联系我)



最近一段时间,我们几个人一直在讨论一个简单的和平时不太注意的问题,也争执了一段时间,所以我觉得有必要在博客中也为大家解释说明一下这个问题,也许大家也遇到或者不知道这个问题准确的解释。这个问题就是fully connected 和 local connected的区别。

相信学过神经网络的各位都会知道有一个知识点就是MLP和CNN的区别:
1. MLP是fully connected layer. 而CNN是local connected layer.
2. MLP没有weights share. 而CNN有。
其实这两点是一点,因为fully connected layer就是没有weights share的。

所以我们可以说fully connected layer的特点就是没有weights share.但是在学习MLP的时候我们又知道MLP的nodes的连接方式是点对点的,也就是1x1的size。正是因为这点,才导致大家的分歧。因为在传统的CNN中我们也会用到fully connected layer,同时也有个比较有误导性的就是CNN的FC layer往往都是1x1的filter size。

正因为这样所以许多人认为1x1的filter size就是fully connected.我在网络上找了许多相关解释,不少人在解释1x1的filter size的时候认为其就是fully connected.然而这是错误的。



我们知道CNN可以说是MLP的一种特例,但是CNN强大的拟合能力和自身的抑制能力目前为止还没有数学理论去证明,但是其优秀的结果总是颠覆更传统的一些神经网络。正因如此所以深度学习现在是大热到不行,不过为了证明CNN所具有超强的学习能力,有人已经做了相关的研究并发表在nature杂志上面,研究中作者打乱原来的label然后进行训练,却发现CNN还是可以提取正确的信息,这种研究虽然还是没有在数学上给予解释,但是已经可以证明CNN的强大的学习能力是存在的。

而在相对传统的CNN中,我们一直还在使用fully connected layer(比如AlexNet和VGGNet等),尽管在新的GoogleNet中FClayer已经被去除了。但是我们还是可以看到MLP这种原始神经网络的影响,以及其具有的一定的能力性。

所以我们往往会忽略一些FC的问题,因为它一直都存在于我们的使用中,一直那么的自然。久而久之我们会产生简单的把1x1就是等于fully connected的这种认知错误。



这里我将给大家一个简单的判断fully connected的方法:
1. 对于neuron的连接(点对点的连接)都是fully connected.(这里其实就是MLP)
2. 对于有filter的network,不是看filter的size,而是看output的feature map的size。如果output feature map的size是1x1xN的话这个layer就是fully connected layer。

这里解释一下第二个判断方法:
1. 1x1的filter size不一定是fully connected。比如input size是10x10x100,filter size是1x1x100,重复50次,则该layer的总weights是:1x1x100x50。

2. 1x1的filter size如果要是fully connected,则input size必须是1x1。关于这一点我们在前面使用matconvnet的时候有介绍过,fc的input size如果不是1x1就会出错。

3. input size是10x10的时候却是fully connected的情况:这里我们的output size肯定是1x1,且我们的filter size肯定是10x10。

因此我们也可以将第二点总结为:
filter size等于input size则是fully connected。



说到这里可能有人不太相信,因为大家可能根深蒂固的认为1x1的情况就是fully connected。其实有个很好的例子可以佐证我的说法:GoogleNet



这里是几种经典CNN的比较图,我们知道最导致网络冗杂和承重就是FC layer。所以GoogleNet虽然比AlexNet更加深度,但是却具有更加小的memory(weights)。 因为我们都知道GoogleNet是去掉了FC layer,所以才能在性能上大幅提升。但是我们可以看GoogleNet的构造,我们发现GoogleNet还是有1x1的filter size,而且有多个layer是存在1x1 filter的,因此这里可以证明我们不能通过1x1的filter size就认定是fully connected只要input size不是1x1,那么1x1的filter也是具有weights share的

但是在NiN的paper中,作者将Relu替换为MLP,这里就是fully connected,因为是点对点的连接。所以我们一定不要被其混淆,以至于认为1x1就是fully connected。

其实这个问题本身并不是很难理解,但是就是会有一些潜意识的理所当然会导致我们认知错误。
最重要还是需要去理解这些定义的含义,而不是自己通过想象去理解。



最后我再一次总结一下这篇文章的内容:
1. fully connected没有weights share。
2. 对于neuron的连接(点对点的连接)都是fully connected.(MLP)
3. Convolution中当filter size等于input size时,就是fully connected,此时的output size为1x1xN。
4. 当1x1不等于input size的时候,1x1一样具备weights share的能力。

但大家还是需要自己再去理解一下这个问题,仔细理解一下其中的道理。





本文为原创文章转载必须注明本文出处以及附上 本文地址超链接  以及 博主博客地址http://blog.csdn.NET/qq_20259459  和 作者邮箱( jinweizhi93@gmai.com )。

(如果喜欢本文,欢迎大家关注我的博客或者动手点个赞,有需要可以邮件联系我)

版权声明:本文为博主原创文章,转载必须注明是转载文章和原文超链接以及作者信息。 https://blog.csdn.net/qq_20259459/article/details/70598929

详解卷积神经网络(CNN)

卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。...
  • qq_25762497
  • qq_25762497
  • 2016-04-04 00:02:34
  • 36087

C++卷积神经网络实例:tiny_cnn代码详解(7)——fully_connected_layer层结构类分析

  之前的博文中已经将卷积层、下采样层进行了分析,在这篇博文中我们对最后一个顶层层结构fully_connected_layer类(全连接层)进行分析:  一、卷积神经网路中的全连接层  在卷积神经网...
  • u013088062
  • u013088062
  • 2016-03-16 08:56:07
  • 6698

CS231n笔记2--Fully Connected Neural Network与Activation Function

Fully Connected Neural Network与Activation Function神经网络–Fully Connect Neural Network一个最简单的神经网络 hw,b=...
  • u012767526
  • u012767526
  • 2016-05-14 01:15:30
  • 3480

fully connected layer as 1x1 convolution

Quoting Lecun’s post: In Convolutional Nets, there is no such thing as “fully-connected layers”. T...
  • visionfans
  • visionfans
  • 2015-09-07 19:07:53
  • 1450

tensorflow学习fully_connected_feed.py

# Copyright 2015 The TensorFlow Authors. All Rights Reserved. # # Licensed under the Apache License,...
  • baidu_15113429
  • baidu_15113429
  • 2017-10-17 16:00:43
  • 142

Tensorflow:fully_connected_feed.py运行报错

Traceback (most recent call last): File “fully_connected_feed.py”, line 279, in tf.app.run(...
  • z644041867
  • z644041867
  • 2017-12-02 17:35:35
  • 352

fully_connected_feed代码说明

对fully_connected_feed.py的代码进行说明,包括模型保存和加载(可用于模型在线预测与更新),tensorboard生成。...
  • stranger_huang
  • stranger_huang
  • 2017-05-01 21:20:08
  • 1541

CS231n Assignment2--Fully-connected Neural Network

课程网址:http://cs231n.github.io/assignments2016/assignment2/ 主要目的是保存一下一个比较完整的全连接神经网络代码,不带说明了,代码说明也...
  • Andrewseu
  • Andrewseu
  • 2017-02-26 20:39:11
  • 972

#cs231n#Assignment2:FullyConnectedNets.ipynb

根据自己的理解和参考资料实现了一下 FullyConnectedNets.ipynbFully-Connected Neural NetsIn the previous homework you i...
  • SPARKKKK
  • SPARKKKK
  • 2017-03-19 10:20:22
  • 1155

从零开始编写深度学习库(二)FullyconnecteLayer CPU编写

一、C++实现 //y=x*w+b static void CFullyconnecteLayer::forward(const Eigen::MatrixXf &inputs, const Eig...
  • hjimce
  • hjimce
  • 2017-05-11 15:04:28
  • 1131
收藏助手
不良信息举报
您举报文章:深度学习 15. 全连接和区域连接,fully connected 和 local connected, 解释说明(最简单的解释)
举报原因:
原因补充:

(最多只允许输入30个字)