深度学习被引起关注是在2012年,用神经网络训练的一个分类模型在ImagNet上取得了第一名,而且其分类精度比第二名高出10多个点,当时所使用的模型为AlexNet,现在看来其为一个比较简单的网络,而且只有比较浅的八层网络,但是在当时来讲已经很了不起了。这也就引发了后面对神经网络研究的两个方向,以提高网络的分类精度:1.网络变得更深更宽(Going Deeper);2.减少网络中存在的冗余性(Eliminate the Redundancy)。

研究增加网络的深度(Going Deeper)。比如VGGNet,通过增加更多的卷积层和全连接层,变成了一个19层的网络,随着网络深度的加深,会发现带来的训练上的问题:过拟合、梯度消失、梯度爆炸等问题,使得后面的信息不能很好的反馈到前面。基于这些问题,出现了一些新的网络模型:

GoogLeNet提出了inception模块,该模块实现:使用1x1的卷积来进行升维度和降维;多尺寸同时卷积后聚合,并且用了中间层的监督信息,使得信息可以很快的进行反馈。

相继出现的还有Highway、ResNet(前后信息和交融起来)、DenseNet等等。

研究减少网络冗余(Eliminate the Redundancy)。随着网络模型的加深和更宽之后,计算量和memory会越来越大,而在实际的应用中,考虑更多的是如何可以应用一个小的model就可以达到好的分类效果,这就要研究如何减少网络中存在的冗余性。

神经网络中用的最多的操作是卷积,把输入信息设定为矩阵向量,卷积操作就相当于矩阵相乘,一种减少冗余的操作是采用核(kernels)操作,将高维度特征用低维度数据映射,来完成部分线性不可分问题,同时保持在低维度进行运算,从而提高了效率。例如用二值化,就会把矩阵的相乘变成矩阵相加减的运算,或者将其变成整型,通过一些量化的方式将一些相互接近的值采用同一个值来表示。另外一种就是把矩阵行或列减少,减少输入的channel。还有一种是把这个channel变成一个稀疏的(sparse)的矩阵,那么计算量和memory就会随之减少,其中现在很火IGC(Interleaved Group Convolutions)就是采用 structured sparse的结构。

对于一个传统的卷积,假设input channel是六个, 然后output channel是六个,假若卷积为5x5,那么complexity为6x5x5x6,group convolution会将其分为两组,对每一组分别做卷积,那么每一组的complexity为3x5x5x3,总的complexity为2x(3x5x5x3),这样计算量和memory就减少了,但是带来的问题是两组之间没有特征相融,所以需要考虑将特征融合加入进去,提出了第二个IGC,也就是IGCV1,希望第一个group convolution不同组的channel可以在第二个group convolution里融合在一组,这样对于每一个output channel与所有的input channel都是相连的。如果将一个传统的卷积替换为IGC的话,就可以获得相当于原来1/2的memory和计算量的更高精度结果。同时比较了ImageNet上的一个实验,用的18层的ResNets网络,将其卷积变成IGC,获得了在memory更少和计算量更少的情况下,训练误差和验证误差都得到了降低。

另外一个相关的工作是Xception,用一个1x1的卷积,再接一个channel 3x3的卷积,这是一个特例的IGC,把第一个group convolution的组数等于channel数,第二个group convolution的group数等于1。实验比较之后,发现不是在极端的第二个group convolution的group数等于1的情况分类精度最高,而是在第二个group convolution的group数等于2的时候分类精度最高,不过第二个group convolution的计算量还是比较大,所以又进一步的将其中的卷积用IGC来替换,也就是IGCV2,同样的中间网络中的所有output channel与所有的input channel都是相连的。

IGCV2实际上是由一连串的group convolution组成的,在设计的时候需要满足两点:1.矩阵的形式不变,核(kernel)操作矩阵依然是一个稠密(dense)矩阵;2.前后group convolution互补,也就是在前面group convolution里不同组的channel,在后面的group convolution要在同一个组里面,这样最终得到的卷积矩阵也会是一个dense的矩阵。

通过实验比较,在同样的参数量的情况下,通过变换不同的参数,实验表明的满足前后group convolution互补的情况下,最终的结果是最好的。

在模型宽度一样的情况下,如何去选择各种参数,使得模型的参数量最少,也就是Balance condition。当Balance condition满足的时候,可以通过公式计算出参数量。

经过比较,IGCV2能够比IGCV1有更好的提高性能。而且实验表明,IGCV2在小model的情况,对性能的提升是很明显的。

IGCV3

本质上解决了低秩矩阵解决和IGCV2的问题。

将传统的卷积通过group convolution,提出了IGC的单元,把传统的卷积替换为IGC,可以获得一个更小、更快、更准的model。

信息来自:CVPR 2018 中国论文分享会

报告人:张婷  微软研究院

报告题目:Interleaved Structured Sparse Convolutional Neural Networks

论文 IGCV1:Interleaved Group Convolutions for Deep Neural Networks

论文 IGCV2:Interleaved Structured Sparse Convolutional Neural Networks

代码1:Deep Merge-and-Run Nets:https://github.com/zlmzju/fusenet

代码2:Interleaved group convolutions:https://github.com/hellozting/interleavedGroupConvolutons

IGC(Interleaved Group Convolutions)的更多相关文章

  1. elasticsearch 多列 聚合(sql group by)

    文档数据格式 {"zone_id":"1","user_id":"100008","try_deliver_t ...

  2. 取出分组后每组的第一条记录(不用group by)按时间排序

    --操作日志表 CREATE TABLE [dbo].[JobLog]( [JobLogId] [int] IDENTITY(1,1) NOT NULL, [FunctionId] [nvarchar ...

  3. MMORPG大型游戏设计与开发(服务器 AI 概述)

    游戏世界中我们拥有许多对象,常见的就是角色自身以及怪物和NPC,我们可以见到怪物和NPC拥有许多的行为,比如说怪物常常见到敌对的玩家就会攻击一样,又如一些NPC来游戏世界中走来走去,又有些怪物和NPC ...

  4. 【DC010沙龙年度合集】顶尖Hacking技术盛宴(文末福利)

    岁末盘点,让我们一起回顾2017年DEFCON GROUP 010带来的那些最前端的Hacker技术,体验原汁原味的mini DEFCON黑客大会,满满的干货帮你开启Hacker技术大门     &g ...

  5. 介绍Oracle自带的一些ASM维护工具 (kfod/kfed/amdu)

    1.前言 ASM(Automatic Storage Management)是Oracle主推的一种面向Oracle的存储解决方式,它是一个管理卷组或者文件系统的软件.眼下已经被RAC环境广泛使用,可 ...

  6. 【ASM】介绍Oracle自带的一些ASM维护工具 (kfod/kfed/amdu)

    转自:http://blog.csdn.net/wenzhongyan/article/details/47043253 非常感谢作者的文章,很有价值!至此转载,非常感谢 1.前言 ASM(Autom ...

  7. 论文笔记-IGCV3:Interleaved Low-Rank Group Convolutions for Efficient Deep Neural Networks

    论文笔记-IGCV3:Interleaved Low-Rank Group Convolutions for Efficient Deep Neural Networks 2018年07月11日 14 ...

  8. Linux 组配置文件(/etc/group)

    一.概述 Linux 组配置(/etc/group)文件分为4个字段,分别为: 组名.组密码.GID和组成员. 二.示例 用户apple和banana的默认组为fruit. [root@titan ~ ...

  9. APUE 2 - 进程组(process group) 会话(session) job

    进程组(process group) 进程组顾名思义是指一个或多个进程的集合.他们通常与同一个job(可以从同一个终端接收信号)相关联.每个进程组拥有一个唯一的Process Group Id.可以使 ...

随机推荐

  1. IntelliJ IDEA 删除自定义的 Maven 框架依赖

    IntelliJ IDEA 删除自定义的 Maven 框架依赖 IntelliJ Idea中添加Maven Archetype,但是IntelliJ Idea中并没有提供删除的方法. windows中 ...

  2. day55——django引入、小型django(socket包装的服务器)

    day55 吴超老师Django总网页:https://www.cnblogs.com/clschao/articles/10526431.html 请求(网址访问,提交数据等等) request 响 ...

  3. 一句话比较两种算法的优越性[蓝桥杯,LeetCode]

    动态规划 166 数学 155 字符串 146 树 120 哈希表 119 深度优先搜索 109 二分查找 79 贪心算法 64 双指针 59 广度优先搜索 54 栈 53 回溯算法 49 设计 41 ...

  4. java知识精要(二)

    java知识精要(一) 集合 Iterable v.s. Iterator 两者都是接口,在Collection继承的是Iterable. Iterable表达了集合具备迭代访问的能力,而Iterat ...

  5. 设置elasticsearch的默认分区数和副本数

    日志是从logstash传输给ES的,但是logstash配置中只能配置host和index,所以只能在es中进行配置 但是在es配置文件中配置,也就是新增如下参数的话会报错:node setting ...

  6. PHP获取前台传过来的时间年份,进行处理。

    在做时间区间用到一个方法,以方便在数据库中用in()的使用,这个是我同事给我的,我先保存好,以后还可以的用到. /*处理起终年月,返回中间的月份以供数据库查询使用 * @param $yearl 起始 ...

  7. 安卓自定义View基础 --坐标系,角度弧度,颜色

    转自:https://www.gcssloop.com/customview/CustomViewIndex/ 1.坐标系 2.角度弧度 3.颜色 一.屏幕坐标系和数学坐标系的区别 由于移动设备一般定 ...

  8. [golang]使用gomail发邮件(在Go中发送电子邮件的最佳方式)

    1 前言 定义邮箱服务器连接信息,如果是网易邮箱 pass填密码,qq邮箱填授权码(客户端专用密码). gomail包: go get gopkg.in/gomail.v2 更多功能可以参考 http ...

  9. Matlab责任链模式

    责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦,本人根据https://www.ru ...

  10. Python学习日记(三十二) hmac检验客户端的合法性和socketsever模块

    Hmac模块 其实这个模块类似hashlib模块,它能将一些重要的信息通过算法加密成密文,让信息更具有安全性. 关于hmac加密算法的了解:它的全名是哈希运算消息认证码(Hash-based Mess ...