1 - V1

google团队在模型上,更多考虑的是实用性,也就是如何能让强大的深度学习模型能够用在嵌入式或者移动设备上。传统的想增强模型的方法无非就是深度和宽度,而如果简单的增加深度和宽度,那么带来的更大参数要训练和需要更强大的计算资源去计算。所以,google团队要做的就是如何在保证模型准确度的情况下减少模型参数。

解决模型复杂和计算资源两个问题的基本方法是:将全连接转换成稀疏连接的结构,甚至在卷积层中都希望有稀疏链接的结构。除了说这是模仿生物结构的一方面,这样的好处还有更加支持了arora等人的开创性的理论工作:arora等人认为如果数据集的概率分布可以通过一个非常大的,非常稀疏的dnn来表示,那么最优的网络拓扑模型可以通过分析最后一层的激活函数值的相关统计信息和对高相关性的输出做一个神经元聚类来逐层构建。虽然严格的数学证明需要非常强的假设,不过这个现状的确符合hebbian原则:神经元都是一起被激活的,如tica的结构一样。同样的该原则也给出了一些潜在的idea,即实际操作中可以适当放宽严格的约束条件(稀疏性,聚类准确度等等)。

然而现在的计算设备对于非均匀的稀疏的数据结构的数值计算并不高效。即使所需要的算数操作降低100倍之多也没用,因为主要的瓶颈在于值的查找和每次cache的失效,所以就算转换成稀疏矩阵的形式去计算也没有太大改善。而且当如果程序使用的还是不断改进的,高度调整的,为了更快计算密矩阵相乘的,不断的去压榨底层cpu和gpu的数值库,那么这两者之间的差距会进一步被拉大。

非均匀系数模型需要更老练的工程技术和计算设备来计算。当前大多数的视觉机器模型都是通过使用卷积来实现空间上的稀疏,然而在cnn的前层中卷积都被实现成到patch的密连接集合。虽然最早的cnn(lenet5)在特征维度上使用随机和稀疏连接,从而就能打破对称性,并有助于学习。然而后面又变成全连接是因为有利于并行计算,且统一的结构和大量的滤波器和更大的batch size都是为了使用更有效的密计算。

那么我们就想了,是否有一个结构能使用额外的稀疏性,即使在卷积层,并且在现有的设备上使用的还是现在常用的密集矩阵的计算方式。虽然在稀疏矩阵计算方面大量的文献都推荐将稀疏矩阵聚类成相对密集的子矩阵,从而在实际中能达到很好的结果。不过这并不表示可以在近期能用在非均匀稀疏的深度结构上。

所以从模型稀疏性角度出发,让模型在结构设计上尽可能的稀疏,即使是在传统的卷积层结构中,也要强化稀疏的重要性。
googlenet v1受到《network in network》和《Robust object recognition with cortex-like mechanisms》的启发,成功的提出了一个构建块模型,Inception。而且实验发现,在明显增加了深度和宽度的基础上,准确度没下降。

1.1 模型

inception结构主要的想法就是为了找出在卷积视觉网络中能够基于现有的密集组件去构成的一种最优的局部稀疏结构。

图1.1 inception模块
如图1.1,inception模块的好处是可以同时得到不同尺度的卷积,且能够同时馈送到下一层;且有\(1*1\)的帮助,能够允许在每个阶段显着增加单元数量,却不会让计算复杂性急剧上升。


图1.2 googlenet网络结构

图1.3 googlenet的网络参数结构图

图1.2中有2个辅助的子网络,这是因为对于很深的网络来说,BP传递残差的时候,最前面得到的梯度会越来越小,所以通过增加辅助子网络,有助于前面层也得到更大的梯度。其中2个辅助子网络在训练阶段存在,预测阶段就扔掉不参与预测。且2个子网络都以0.3的权重比例将最后的损失值加到主分类器上。
其中辅助子网络有如下结构:

  • 0 - 一个\(5*5\)大小尺寸的平均池化,stride为3,在4a上生成\(4*4*512\)的输出;在4d上生成\(4*4*528\)的输出;
  • 1 - 128个\(1*1\)的卷积核用来维度约间,使用的是Relu;
  • 2 - 一个1024个单元的全连接层,使用的是Relu;
  • 3 - 一个dropout层,其中的概率是70%;
  • 4 - 用softmax作为分类器。

参考文献:
[] - Thomas Serre, Lior Wolf, Stanley M. Bileschi, Maximilian Riesenhuber, and Tomaso Poggio. Robust object recognition with cortex-like mechanisms. IEEE Trans. Pattern Anal. Mach. Intell., 29(3):411–426, 2007.
[] - Min Lin, Qiang Chen, and Shuicheng Yan. Network in network. CoRR, abs/1312.4400, 2013
[] - Sanjeev Arora, Aditya Bhaskara, Rong Ge, and Tengyu Ma. Provable bounds for learning some deep representations. CoRR, abs/1310.6343, 2013.

Feature Extractor[googlenet v1]的更多相关文章

  1. Feature Extractor[inception v2 v3]

    0 - 背景 在经过了inception v1的基础上,google的人员还是觉得有维度约间的空间,在<Rethinking the Inception Architecture for Com ...

  2. Feature Extractor[content]

    0. AlexNet 1. VGG VGG网络相对来说,结构简单,通俗易懂,作者通过分析2013年imagenet的比赛的最好模型,并发现感受野还是小的好,然后再加上<network in ne ...

  3. Feature Extractor[ResNet]

    0. 背景 众所周知,深度学习,要的就是深度,VGG主要的工作贡献就是基于小卷积核的基础上,去探寻网络深度对结果的影响.而何恺明大神等人发现,不是随着网络深度增加,效果就好的,他们发现了一个违背直觉的 ...

  4. Feature Extractor[SENet]

    0.背景 这个模型是<Deep Learning高质量>群里的牛津大神Weidi Xie在介绍他们的VGG face2时候,看到对应的论文<VGGFace2: A dataset f ...

  5. Feature Extractor[VGG]

    0. 背景 Karen Simonyan等人在2014年参加Imagenet挑战赛的时候提出的深度卷积神经网络.作者通过对2013年的ILSVRC中最好的深度神经网络模型(他们最初的对应模型都是ale ...

  6. Feature Extractor[Inception v4]

    0. 背景 随着何凯明等人提出的ResNet v1,google这边坐不住了,他们基于inception v3的基础上,引入了残差结构,提出了inception-resnet-v1和inception ...

  7. Feature Extractor[ResNet v2]

    0. 背景 何凯明大神等人在提出了ResNet网络结构之后,对其做了进一步的分析工作,详细的分析了ResNet 构建块能起作用的本质所在.并通过一系列的实验来验证恒等映射的重要性,并由此提出了新的构建 ...

  8. Feature Extractor[DenseNet]

    0.背景 随着CNN变得越来越深,人们发现会有梯度消失的现象.这个问题主要是单路径的信息和梯度的传播,其中的激活函数都是非线性的,从而特别是乘法就可以使得随着层数越深,假设将传统的神经网络的每一层看成 ...

  9. 图像金字塔(pyramid)与 SIFT 图像特征提取(feature extractor)

    David Lowe(SIFT 的提出者) 0. 图像金字塔变换(matlab) matlab 对图像金字塔变换接口的支持(impyramid),十分简单好用. 其支持在reduce和expand两种 ...

随机推荐

  1. 也说Socket

    网上有大量socket相关文章,茫茫多,大多交代不清,最近自我整理了一下socket相关知识,附加了大量代码注释,先看效果. 上代码,客户端: Socket socket1 = null;//一个全局 ...

  2. SOD框架--系统概要

    SOD框架(源PDF.NETE框架)系统概要介绍 --核心三大功能(S,O,D): SQL-MAP XML SQL config and Map DAL SQL Map Entity ORM OQL( ...

  3. Android为TV端助力 布局、绘制、内存泄露、响应速度、listview和bitmap、线程优化以及一些优化的建议!

    1.布局优化 首先删除布局中无用的控件和层级,其次有选择地使用性能较低的viewgroup,比如布局中既可以使用RelativeLayout和LinearLayout,那我们就采用LinearLayo ...

  4. 编程经验点滴----巧妙解决 Oracle NClob 读写问题

    最近一个新项目中,尝试在 Oracle 数据库中使用 NCLOB 来保存大的 xml 字符串. 在代码自动生成工具(通过 JDBC 驱动程序,读数据库表结构,自动生成对应的 java 代码,包含增加. ...

  5. SQL中的ALL,ANY,SOME的用法

    准备两个表: --T1(2,3)--T2(1,2,3,4) --ALL,ANY,SOME 的子查询-- >ALL 父查询中的结果集大于子查询中每一个结果集中的值,则为真SELECT * FROM ...

  6. BurpSuit2.0专业版破解

    简介 Burp Suite 是用于攻击web 应用程序的集成平台.它包含了许多Burp工具,这些不同的burp工具通过协同工作,有效的分享信息,支持以某种工具中的信息为基础供另一种工具使用的方式发起攻 ...

  7. Django之--POST方法处理表单请求

    上一篇:Django之--MVC的Model 演示了如何使用GET方法处理表单请求,本文讲述直接在当前页面返回结果,并使用更常用的POST方法处理. 一.首先我们修改下page.html <!D ...

  8. Windows 命令行

     1.d: 进入d盘  2.dir(directory)   显示当前文件夹下的所有内容  3.md (make directory) +文件夹名 在当前文件夹下创建文件夹  4.rd (remove ...

  9. 第一次使用Open Live Writer维护BlogJava

    换了电脑,又重装了一堆东西,现在才把Open Live Writer整好.顺便记下几个心得: Open Live Writer已经没办法从网站上下载了,介绍个方法,可以把地址直接拷贝到迅雷里面,然后请 ...

  10. InfluxDB基本概念和操作

    InfluxDB基本概念 1.数据格式 在 InfluxDB 中,我们可以粗略的将要存入的一条数据看作一个虚拟的 key 和其对应的 value(field value).格式如下: 1 cpu_us ...