NIN (Network In Network)
Network In Network
论文Network In Network(Min Lin, ICLR2014).
传统CNN使用的线性滤波器是一种广义线性模型(Generalized linear model,GLM)。所以用CNN进行特征提取时,其实就隐含地假设了特征是线性可分的,可实际问题往往是难以线性可分的。CNN中通过堆加卷积过滤器来产生更高层的特征表示,作者想到了除了像之前一样堆加网络卷积层之外,还可以在卷积层里边做特殊的设计,使得网络能够在每个感受域提取更好的特征.
mlpconv
maxout能够拟合任何凸函数,也就能够拟合任何的激活函数(默认了激活函数都是凸的),而NIN想表明它不仅能够拟合任何凸函数,而且能够拟合任何函数,因为它本质上可以说是一个小型的全连接神经网络.
NIN使用多层感知器的原因是MLP的结构与CNN兼容,都可以使用反向传播训练,并且也是个深度模型,与特征重用的理念一致.将MLP构成的网络层称为一个mlpconv层.MLP可以拟合任意形式的函数,线性、非线性的都可以.
线性卷积层和mlpconv层的区别如图所示:

mlpconv中使用ReLU,并未替换掉激活函数,改变的只是卷积的方式:不再是element-wise形式的乘积,而是用非线性的MLP + ReLU完成。其目的是引入更多的非线性元素。
如下图的NIN结构:

第一个卷积核是11x11x3x96,因此在一个patch块上卷积的输出是1x1x96的feature map(一个96维的向量).在其后又接了一个MLP层,输出仍然是96.因此这个MLP层就等价于一个1 x 1 的卷积层,这样工程上任然按照之前的方式实现,不需要额外工作.
Global Average Pooling
传统的cnn是在较低层使用卷积,如分类任务中,最后的卷积层所得feature map被矢量化进行全连接层,然后使用softmax 回归进行分类。一般来说,在卷积的末端完成的卷积与传统分类器的桥接。全连接阶段易于过拟合,妨碍整个网络的泛化能力,一般应有一些规则方法来处理过拟合。
在传统CNN中很难解释最后的全连接层输出的类别信息的误差怎么传递给前边的卷积层.而global average pooling更容易解释.另外,全连接层容易过拟合,往往依赖于dropout等正则化手段.
global average pooling的概念非常简单,分类任务有多少个类别,就控制最终产生多少个feature map.对每个feature map的数值求平均作为某类别的置信度,类似FC层输出的特征向量,再经过softmax分类.其优点有:
- 参数数量减少,减轻过拟合(应用于AlexNet,模型230MB->29MB);
- 更符合卷积网络的结构,使feature map和类别信息直接映射;
- 求和取平均操作综合了空间信息,使得对输入的空间变换更鲁棒(与卷积层相连的FC按顺序对特征进行了重新编排(flatten),可能破坏了特征的位置信息).
- FC层输入的大小须固定,这限制了网络输入的图像大小.
FC与global average pooling的区别如下图:

可用于图像分类,目标检测等任务.
global average pooling实现使用Average Pooling,kernel_size是特征图的大小. caffe prototxt定义如下:
layers {
bottom: "cccp8"
top: "pool4"
name: "pool4"
type: POOLING
pooling_param {
pool: AVE
#kernel_size: 6
#stride: 1
#--旧版caffe需指定kernel_size&stride--
global_pooling: true
}
}
caffe在该论文之后加入了对global_pooling的支持,在pooling_param中指定global_pooling: true即可,不需要指定kernel大小,pad和stride大小(pad = 0 , stride = 1,否则会报错).kernel_size自动使用特征图的大小,代码:
if (global_pooling_) {
kernel_h_ = bottom[0]->height();
kernel_w_ = bottom[0]->width();
}
论文的caffe模型参数定义gist.
模型结构图
模型结构图源于绘制caffe prototxt模型结构的在线工具.
NIN (Network In Network)的更多相关文章
- 【论文翻译】NIN层论文中英对照翻译--(Network In Network)
[论文翻译]NIN层论文中英对照翻译--(Network In Network) [开始时间]2018.09.27 [完成时间]2018.10.03 [论文翻译]NIN层论文中英对照翻译--(Netw ...
- Deep Learning 24:读论文“Batch-normalized Maxout Network in Network”——mnist错误率为0.24%
读本篇论文“Batch-normalized Maxout Network in Network”的原因在它的mnist错误率为0.24%,世界排名第4.并且代码是用matlab写的,本人还没装caf ...
- Deep Learning 25:读论文“Network in Network”——ICLR 2014
论文Network in network (ICLR 2014)是对传统CNN的改进,传统的CNN就交替的卷积层和池化层的叠加,其中卷积层就是把上一层的输出与卷积核(即滤波器)卷积,是线性变换,然后再 ...
- Network In Network学习笔记
Network In Network学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/50458190 作者:hjimce 一.相关理论 本篇 ...
- Network in Network 2
<Network in Network>论文笔记 1.综述 这篇文章有两个很重要的观点: 1×1卷积的使用 文中提出使用mlpconv网络层替代传统的convolution层.mlp层实际 ...
- Network In Network——卷积神经网络的革新
Network In Network 是13年的一篇paper 引用:Lin M, Chen Q, Yan S. Network in network[J]. arXiv preprint arXiv ...
- 深度学习方法(十):卷积神经网络结构变化——Maxout Networks,Network In Network,Global Average Pooling
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 最近接下来几篇博文会回到神经网络结构 ...
- 论文笔记 《Maxout Networks》 && 《Network In Network》
论文笔记 <Maxout Networks> && <Network In Network> 发表于 2014-09-22 | 1条评论 出处 maxo ...
- 转载:Network In Network学习笔记
转载原文1:http://blog.csdn.net/hjimce/article/details/50458190 转载原文2:http://blog.csdn.net/mounty_fsc/art ...
随机推荐
- spring-boot+swagger实现WebApi文档
1.引用依赖包 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-s ...
- mysql 伪列
select @rownum:=@rownum+1 AS rownum,b.* from (SELECT @rownum:=0) r ,goods_description_new b
- Vue 列表渲染及条件渲染实战
条件渲染 有时候我们要根据数据的情况,决定标签是否进行显示或者有其他动作.最常见的就是,表格渲染的时候,如果表格没有数据,就显示无数据.如果有数据就显示表格数据. Vue 帮我们提供了一个v-if的指 ...
- Flexbox + js实现滑动拼图游戏
滑动拼图就是把一张图片分成几等份,打乱顺序(下图),然后通过滑动拼凑成一张完整的图片. 要实现一个拼图游戏,需要考虑怎样随机的打乱顺序,怎样交换两张图片的位置,等等.但是,使用了Flexbox布局以后 ...
- /etc/profile不生效问题
http://blog.csdn.net/cuker919/article/details/54178611
- final文案+美工展示
作业要求:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/1438 团队介绍:thunder 组成员及各位博客地址: 1.王航:htt ...
- 软件功能说明书beta修订
贪吃蛇(单词版)软件功能说明书beta修订 1 开发背景 “贪吃蛇”这个游戏对于80,90后的人来说是童年的记忆,可以将其说为是一个时代的经典,实现了传统贪吃蛇的游戏功能:现在人们对英语的重视程度越来 ...
- Fifteen scrum meeting 2015-11-21
最近几日因为其他作业着实拖延了很久更新工程进度. 闫昊: 完成:学习讨论区开发 即将进行:讨论区代码开发 唐彬: 完成:学习学习进度部分开发 即将进行:学习进度功能开发 史烨轩: 完成:学习下载功能设 ...
- java实验五实验报告
一.实验内容 Cmp传输与加解密 结对编程,一人服务器,一人客户端,服务器向客户端发送经RSA加密的密钥和用密钥加密的密文(使用DES算法),客户端负责接收加密后的密钥和密文,并解密得出明文. 二.实 ...
- Javascript实现大整数加法
记得之前面试还被问到过用两个字符串实现两个大整数相加,当时还特别好奇好好的整数相加,为什么要用字符串去执行.哈哈,感觉当时自己还是很无知的,面试官肯定特别的无奈.今天在刷算法的时候,无意中看到了为什么 ...