resnext相对于其前辈,采用了分组卷积的思想,最初这一思想在AlexNet被提出,是为了分担计算压力,然而后来发现,它还可以提升网络性能,简直是一举两得。

不过,resnext并不完全等价于原有的resnet,很显然,在分组之后,虽然参数和计算量更少了,但各个group之间失去了信息联系。如果能让group之间重新恢复信息流通,resnext的性能是否能够进一步上升呢?Shufflenet证明了这一点。

那么,为何shufflenet会被设计成这个样子呢?我们来对比一下普通卷积和channel shuffle卷积的区别。在普通卷积中,对每一个小窗口来说,输入是一个w*h*Cin的立方体,而输出则是1*1*Cout ,其计算本质上是一个全连接网络,只不过相对于整个图像来说,这个全连接在空间上是局部的。而Shufflenet,就是对这个局部的全连接的优化。

让我们从另一个角度重新理解一下shufflenet: 对于一个单层全连接,假设其输入神经元为128个,输出神经元也是128个,那么矩阵乘法其实是在做这样一件事情:让128个输出神经元每一个都融合到来自所有128个输入神经元的所有信息。最直接,最简单,也最原始的做法是,让每一个输出神经元都直接和每一个输入神经元连接。于是我们需要128*128 = 16384个参数。有没有更加“经济”的方法呢?这时候,我想到了六度分离理论。

六度分离(六度区隔)理论(Six Degrees of Separation):“你和任何一个陌生人之间所间隔的人不会超过五个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”根据这个理论,你和世界上的任何一个人之间只隔着五个人,不管对方在哪个国家,属哪类人种,是哪种肤色。

深度神经网络,本质上也是一个信息传输的过程。对输入神经元来说,我们并不需要把信息“告诉”每一个输出神经元,而需要告诉其中一部分输出神经元就够了,然后让输出神经元之间再互相“转告”。比如对上面的例子来说,我们可以这样操作:

  1. 第一步,把输出分成16组,每一组8个神经元。
  2. 第二步,我们只需要128*16=2048个参数,就可以让每一组输出神经元得知输入神经元的信息。(详细解释一下,输入神经元128个,输出到16个组,所以每个输入神经元只需要16个连接,连接到对应输出组里,所以总参数是128*16。输出神经元每个组有8个神经元,平均分配给128个输入神经元,反过来相当于输入神经元被分成了16个组。)
  3. 第三步,在输出神经元每一组内部的8个神经元之间完成一次信息交流。看到这里,你会发现这个操作有点类似于卷积之于全连接,不过和空间卷积不同的是,对输出神经元来说,每个神经元代表了完全不同的特征,这也就意味着并不能重用参数。所以,因为我们有16组,就需要16组独立的参数:16*8*8 = 1024

于是我们在总的参数为 2048+1024 =3072个的情况下,完成了和之前同样的操作。相比16384个参数,只占3072/16384 = 0.1875,不到五分之一。

上述分组方法并非唯一的分组方法,比如第一层参数改为128*32,而第二层仍然分为16组,这样输出层每一组就有两个神经元来自输入的同一组。

对于具体实现来说,在分组参数网上的情况下,上述操作有各种不同的实现方式,都是相互完全等价的,shufflenet中采取的做法是最容易实现的一种方式。在shufflenet中,首先对输入做了分组,比如分成8组,每组16个神经元,先进行一次分组卷积,需要8*16*16 = 2048个参数,随后,8组之间进行channel shuffle,重新得到16个组,每一组的8个神经元,分别来自原来的8个组里,再次进行分组卷积,需要16*8*8 = 1024个参数。

另外,虽然我用六度分离理论来类比,其实这里相当于只是“二度分离”。

那么,总参数减少了这么多,有没有弊病呢?其实并没有,或者说可以忽略:对于全连接来说,每一个输出神经元直接接受了来自所有输入神经元的信息。而使用了channel shuffle操作之后,每个输出神经元接收到的输入的信息来自同一组所有神经元的融合——而融合之前,只拥有直接来自于输入层的部分信息。从另一个角度讲,对于每一个输入神经元,它把信息分布式表示成了一个16维的向量,分别分配给16组输出的每组8个神经元,理论上这样是完全可行的。

根据前面的分析可以发现,shufflenet中的思想并不局限于优化resnext,它可以应用在任何 Y = W*X的映射。并且前面说了,shufflenet其实只用到了二度分离,并非六度分离,我们还有没有更加经济高效的做法呢?我们的大脑如此节能,又是采用了什么样的结构?也许,下一个设计离我们的大脑已经不远了

ResNext、ShuffleNet——与六度分离理论相关推荐

  1. 六度分离理论、150法则与弱链接

    六度分离理论.150法则与弱链接 社会性网络的理论基础源于六度理论/六度分隔理论/六度分离理论,(六度分隔理论,Six Degrees of Separation)和150法则(Rule Of 150 ...

  2. 六度分离理论、150法则与弱链接 (转载)

    六度分离理论 1967年,哈佛大学的心理学教授Stanley Milgram(1933-1984)想要描绘一个连结人与社区的人际连系网.做过一次连锁信实验,结果发现了"六度分隔"现 ...

  3. “六度分离”理论——最短路问题

    问题描述: 1967年,美国著名的社会学家斯坦利·米尔格兰姆提出了一个名为"小世界现象(small world phenomenon)"的著名假说,大意是说,任何2个素不相识的人中 ...

  4. 【项目二、蜂巢检测项目】一、串讲各类经典的卷积网络:InceptionV1-V4、ResNetV1-V2、MobileNetV1-V3、ShuffleNetV1-V2、ResNeXt、Xception

    目录 前言 一.InceptionV1-V4 1.1.InceptionV1(GoogLeNet) - 2014 1.2.InceptionV2.InceptionV3 - 2015 1.3.Ince ...

  5. hdu 六度分离 floyd

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1869 题意分析:比较简单的最短路算法,最后只需判断最远两点距离是否大于7即可. /*六度分离Time ...

  6. 六度分离(HDU-1869)

    Problem Description 1967年,美国著名的社会学家斯坦利·米尔格兰姆提出了一个名为"小世界现象(small world phenomenon)"的著名假说,大意 ...

  7. 杭电1869六度分离

    六度分离 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  8. HDU1869 六度分离【Dijkstra算法】

    六度分离 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  9. 六度分离(hdu1869,floyd最短路)

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=29015#problem/D http://acm.hdu.edu.cn/showprob ...

最新文章

  1. SNMP高速扫描器braa
  2. centos7 docker
  3. 移动端隐藏滚动条(最全面)
  4. MathType使用中的四个小技巧
  5. opencv 直方图
  6. goroutine 相关知识8
  7. BOSON cisco设备模拟器6.0+注册机
  8. oracle 042 第八章:管理数据和并发处理
  9. 为什么有些网站域名不以www开头?什么是二级域名?
  10. ffmpeg学习笔记1-----udp流多路节目实现分离
  11. 锐捷——DCHP动态分配IP地址
  12. HTML面试题七:b标签和strong标签,i标签和em标签的区别
  13. c语言八字码,C语言之测八字 - 课件/论文下载 - 电子技术论坛 - 广受欢迎的专业电子论坛!...
  14. Hackintosh Dell vostro 5460 alpha v1.0 版本
  15. 继勒索病毒“永恒之蓝”445端口被封之后,在公网实现smb文件共享
  16. 微信小程序开发——设置默认图片、错误加载图片
  17. 两个正数相乘或相加,为什么结果是负数。/Java基本数据类型介绍
  18. 推荐一款免费的内网穿透工具ngrok
  19. 微信的常用设备 只能看到android,安卓手机撤回的微信图片可以查看啦,赶紧学起来...
  20. 道一云与畅捷通T+对接集成获取报销信息列表=>凭证创建

热门文章

  1. CNAME记录与MX记录冲突的解决方法
  2. 设计一款可视化记录摩尔斯电码解码器,可以通过音频识别不同速度的摩尔斯电码
  3. max-width min-width max-height min-height
  4. 整机压力测试_app的压力测试怎么做呢?
  5. 计算机显示windows update,我的电脑显示“系统管理员已禁用Windows Update”这要如何解决...
  6. Python入门习题大全—— 3 的倍数
  7. mysql事件示例_卓象程序员:Mysql数据库事件使用与示例
  8. 【论文阅读】DCAN: Deep Contour-Aware Networks for Accurate Gland Segmentation
  9. Python顺序与选择结构
  10. PHP之MySQL笔记3