CNN卷积神经网络的改进(15年最新paper)
回归正题,今天要跟大家分享的是一些 Convolutional Neural Networks(CNN)的工作。
大家都知道,CNN 最早提出时,是以一定的人眼生理结构为基础,然后逐渐定下来了一些经典的架构——convolutional 和 pooling 的交替,最后再加上几个 fully-connected layers 用作最后做 prediction 等的输出。然而,假设我们能“反思”经典,深入剖析这些经典架构中的不同 component 的作用。甚至去改进它们,有时候可能有许多其它的发现。
所以,今天分享的内容,便是改进 CNN 的一些工作。
Striving For Simplicity:The All Convolutional Net
先说一篇探究 CNN 中不同 component 的重要性和作用的工作。这篇工作发表于 ICLR 2015。已经有一年多的时间了。
个人觉得它应该受到更大的关注。这篇工作最大的贡献是,把经典架构的 CNN 中的 pooling 层。用 stride convolutional 层给替换掉了,也就是去掉了 deterministic 层。而且,通过数学公式和实验结果证明。这种替换是全然不会损伤性能的。而增加 pooling 层,假设不慎,甚至是有伤性能的。
详细来看。CNN 中的每次 feature map 表达,都能够看做一个 W*H*N 的三维结构。在这个三维结构下,pooling 这种 subsampling 的操作,能够看成是一个用 p-norm(当 p 趋向于正无穷时,就是我们最常见的 max-pooling)当做 activation function 的 convolutional 操作。
有了这种解释。自然而然地,就会提出一个问题:那么引入这种 pooling 操作,有什么意义呢?真的有必要么?在过去的工作中,大家普遍觉得。pooling 层有三种可能的功效:(1)提取更 invariant 的 feature;(2)抽取更广范围的(global)的 feature——即 spatially dimension reduction;(3)更方便优化。这篇作者觉得,当中(2)是对 CNN 最重要的。基于此,它们就提出,那么我仅仅要在去掉 pooling 层的同一时候,保证这种 spatially dimension reduction——是否就能够构造出一个 all convolutional net。同一时候这个 net 的效果还不比 convolutional + pooling 交替的差?
最后,果然。如他们所料。它们的 all convolutional net 达到了甚至有时候超过了 state-of-art。同一时候他们还发现有时候增加 pooling 反而不如不加。这篇工作的另外一个贡献是他们提出了一种新的 visualizing CNN 的方法,效果更直观更有分辨性。总结来说,这篇工作提出的 all convolutional net 能够实现自主 downsampling,而且效果不差。其二。它不是在说 pooling 不好,我们一定要抛弃。而是对于 minimum necessary ingredients for CNN 进行了探究。
Network in Network
第一个要分享的是怎样去 replace pooling layer after convolutional layer,接下来要分享的是 replace fully-connected layer on the top of CNN。这个也是经典的 CNN 架构中的一个组成部分。
或许这个东西大家还不熟悉。可是提到还有一个词,大家就会很熟悉了。
那就是,dropout。已经有许多的工作。在 CNN 的 fully-connected layer 中。增加 dropout。来避免 overfitting。受此启示,后来又有了一个 sparse convolutional neural networks 的工作。然而。更具开创性的工作是。《Network in Network》这篇,提出了用 global averaging pooling layer 替代 fully-connected layer.
这种 global averaging pooling layer 显然,能够把 input/feature map 和 output/category,也就能够达到降低 overfitting 的作用(和 dropout 一样)。
如今。global average pooling 已经被用得很广泛,比方在《Going Deeper with Convolutions》中,作者指出:
We found that a move from fully connected
layers to average pooling improved the top-1 accuracy by
about 0.6%, however the use of dropout remained essential
even after removing the fully connected layers.
当然它也有它自己的一定弊端。比方 convergence 会变慢。可是关于 fully-connected layer 是否一定是必须的这个问题。却在被各种工作和各种场景探究。
比方 Google 去年很火的 inceptionism 的工作中。也放弃了 fully-connected layer。并达到了很好的效果。
所以,关于这点,小S 是觉得。我们不要光看表面的 dropout or global averaging pooling 这些技术,而是要去思考它们的共同之处和它们的原理。从它们带给网络结构的变化入手。或许如今来看,最初的结论还是对的,deeper is better。我们临时要解决的是怎样 deeper。
Spatial Transformer Networks
这篇是 NIPS 2015 中,来自 Google DeepMind 的工作。
这篇也被前几天 huho larochelle 评选出的 Top 10 arXiv 2015 Deep Learning Papers 收录(另外提一下。昨天看到这个评选,发现大部分我都写过笔记了。大家假设感兴趣,我能够单独整理一份,以供大家查阅)。
回到这篇工作上来。它主要是说,虽然 CNN 一直号称能够做 spatial invariant feature extraction,可是这种 invariant 是很有局限性的。
由于 CNN 的 max-pooling 首先仅仅是在一个很小的、rigid 的范围内(2×2 pixels)进行。其次即使是 stacked 以后,也须要很 deep 才干够得到大一点范围的 invariant feature,三者来说,相比 attention 那种仅仅能抽取 relevant 的 feature,我们须要的是更广范围的、更 canonical 的 features。
为此它们提出了一种新的全然 self-contained transformation module,能够增加在网络中的不论什么地方,灵活高效地提取 invariant image features.
详细上。这个 module 就叫做 Spatial Transformers,由三个部分组成: Localization Network, Grid generator 和 Sampler。Localization Network 很灵活,能够觉得是一个很 general 的进一步生成 feature map 和 map 相应的 parameter 的网络。因此,它不局限于用某一种特定的 network。可是它要求在 network 最后有一层 regression。由于须要将 feature map 的 parameter 输出到下一个部分:Grid generator。Grid generator 能够说是 Spatial Transformers 的核心,它主要就是生成一种“蒙版”,用于“抠图”(Photoshop 附体……)。Grid generator 定义了 Transformer function。这个 function 的决定了能不能提取好 invariant features。
假设是 regular grid。就好像一张四四方方没有倾斜的蒙版。是 affined grid。就能够把蒙版“扭曲”变换,从而提取出和这个蒙版“变换”一致的特征。
在这个工作中,仅仅须要六个參数就能够把 cropping, translation, rotation, scale and skew 这几种 transformation 都涵盖进去。还是很强大的;而最后的 Sampler 就很好理解了,就是用于把“图”抠出来。
这个工作有许多的长处:(1)它是 self-contained module,能够加在网络中的不论什么地方,加不论什么数量,不须要改变原网络;(2)它是 differentiable 的,所以能够直接进行各种 end-to-end 的训练。(3)它这个 differentiable simple and fast,所以不会使得原有网络变慢。(4)相比于 pooling 和 attention 机制,它抽取出的 invariant features 更 general。
Stacked What-Where Auto-encoders
这篇文章来自 NYU,Yann LeCun 组,已投稿到 ICLR 2016。
与之前整理过的 improving information flow in Seq2Seq between encoder-decoder 相似的是。这篇文章主要是改进了基于 CNN 的 encoder-decoder,并很 intuitive 的讨论了不同 regularizer 的差别。架构图能够直接看 Figure 1 的右側。会比較清晰。详细来讲,Stacked What-Where Auto-encoders(SWWAE) 基于前向 Convnet 和前向 Deconvnet,并将 max-pooling 的输出称为 “what”,事实上就是将 max function 的 content 和 position 传给下一层。同一时候,max-pooling 中的 position/location 信息,也就是 argmax function,作为 “where” 要“横向”传给 decoder。这样。在进行 decoder reconstruct 的过程时。则更能基于 where + what 的组合。进行 unpooling。
为了能让网络利用好 what 和 where,文章考虑了三种 loss,见公式(1),即传统的 discriminate loss,和新增的 input-level reconstruction loss for “what” 还有 intermediate-level reconstruction loss for “where”。
如上文所说。文章的 Section 3 很 intuitive,首先说明并解了为什么使用的是 soft version 的 max/argmax 去进行 ”what“ 和 ”where“;第二,讨论了为何增加 reconstruction loss 和这样一个 hybird loss function 更好(generalization 和 robustness);第三,说明了 intermediate loss 对于“what”“where”一起学习的重要性。
实验结果上来看,这种 SWWAE 模型 generate 出来的图片更清晰,更“干净”(clearer and cleaner)。
CNN卷积神经网络的改进(15年最新paper)的更多相关文章
- [转]Theano下用CNN(卷积神经网络)做车牌中文字符OCR
Theano下用CNN(卷积神经网络)做车牌中文字符OCR 原文地址:http://m.blog.csdn.net/article/details?id=50989742 之前时间一直在看 Micha ...
- day-16 CNN卷积神经网络算法之Max pooling池化操作学习
利用CNN卷积神经网络进行训练时,进行完卷积运算,还需要接着进行Max pooling池化操作,目的是在尽量不丢失图像特征前期下,对图像进行downsampling. 首先看下max pooling的 ...
- Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN
http://m.blog.csdn.net/blog/wu010555688/24487301 本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep le ...
- Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)
Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文, ...
- CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?
https://www.zhihu.com/question/34681168 CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别?修改 CNN(卷积神经网 ...
- CNN(卷积神经网络)、RNN(循环神经网络)、DNN,LSTM
http://cs231n.github.io/neural-networks-1 https://arxiv.org/pdf/1603.07285.pdf https://adeshpande3.g ...
- cnn(卷积神经网络)比较系统的讲解
本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep learning简介 [2]Deep Learning训练过程 [3]Deep Learning模型之 ...
- Keras(四)CNN 卷积神经网络 RNN 循环神经网络 原理及实例
CNN 卷积神经网络 卷积 池化 https://www.cnblogs.com/peng8098/p/nlp_16.html 中有介绍 以数据集MNIST构建一个卷积神经网路 from keras. ...
- TensorFlow——CNN卷积神经网络处理Mnist数据集
CNN卷积神经网络处理Mnist数据集 CNN模型结构: 输入层:Mnist数据集(28*28) 第一层卷积:感受视野5*5,步长为1,卷积核:32个 第一层池化:池化视野2*2,步长为2 第二层卷积 ...
随机推荐
- 迅为IMX6核心板开发平台智能交通解决方案
智能交通系统它是将先进的信息技术.数据通讯传输技术.电子传感技术.控制技术及计算机技术等有效地集成运用于整个地面交通管理系统而建立的一种在大范围内.全方位发挥作用的,实时.准确.高效的综合交通运输管理 ...
- 面试之Spring
一.IoC IoC(Inversion of Control):控制反转(是把传统上由程序代码直接操控的对象的生成交给了容器来实现, 通过容器来实现对象组件的装配和管理.所谓"控制反转&qu ...
- [实现] 利用 Seq2Seq 预测句子后续字词 (Pytorch)
最近有个任务:利用 RNN 进行句子补全,即给定一个不完整的句子,预测其后续的字词.本文使用了 Seq2Seq 模型,输入为5个中文字词,输出为一个中文字词. 目录 关于RNN 语料预处理 搭建数据集 ...
- stark组件之显示页面内容搭建(六)
之前主要介绍了前端页面list_fiter功能的显示,但是list_display功能的展示并没有过多介绍,这里介绍一下是如何实现的. 可以看到凡是蓝线圈起来的都是通过字段名反射一个个取出来的,红线的 ...
- 81-Gator Oscillator,加多摆动指标.(2015.7.1)
Gator Oscillator 加多摆动指标 Oscillator,加多摆动指标.(2015.7.1)" title="81-Gator Oscillator,加多摆动指标.(2 ...
- java读utf8 的txt文件,第一个字符为空或问号问题
参考:https://blog.csdn.net/yangzhichao888/article/details/79529756 https://blog.csdn.net/wangzhi291/ar ...
- 将cocos2dx 2.x.x从eclipse转移到Android Studio遇到的问题
cocos2dx 2.x.x从eclipse转移到Android Studio遇到的问题 可能我用不太习惯Android Studio才会遇到这么多问题,让老手们见笑了. cocos2dx的最新版本, ...
- ORACLE数据库查看执行计划的方法
一.什么是执行计划(explain plan) 执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述. 二.如何查看执行计划 1: 在PL/SQL下按F5查看执行计划.第三方工具toad等 ...
- 2018 & 微信小程序
2018 & 微信小程序 Wafer2 快速开发 Demo 本仓库是最简版的 Wafer2 开发套件,建议配合腾讯云微信小程序开发者工具解决方案一起使用.适用于想要使用 Wafer SDK 开 ...
- CSU 1554 SG Value (集合类的学习)
题目大意: 2种操作 1 a:往集合中添加一个元素a 2: 询问这个集合中的元素任意组合相加所不能得到的最小数的值 这道题总是不断地去找当前所能处的最小值能否被当前的最小值加上其前部的一堆可抵达数到达 ...