GoogLeNet的个人理解[通俗易懂]

GoogLeNet的个人理解[通俗易懂]先附上著名的网络结构GoogLeNet及其延伸版本,以便自己日后的学习。1.Inception[V1]:GoingDeeperwithConvolutions2.Inception[V2]:BatchNormalization:AcceleratingDeepNetworkTrainingbyReducingInternalCovariateShift

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

先附上著名的网络结构GoogLeNet及其延伸版本,以便自己日后的学习。

  1. Inception[V1]: Going Deeper with Convolutions
  2. Inception[V2]: Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
  3. Inception[V3]: Rethinking the Inception Architecture for Computer Vision
  4. Inception[V4]: Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning

在学习了Andrew Ng 的deeplearning.ai中的CNN课程时,顺着Ng的思路去了解了GoogLeNet这篇经典论文。GoogleNet提出了一个全新的深度CNN架构——Inception,无全连接层,可以节省运算的同时,减少了很多参数,参数数量是AlexNet的1/12,数量只有5 million,而且在ImageNet竞赛中取得了很好的成绩。
  文章在引文中提到了提高深度神经网络性能最直接的方式,那就是增加网络的规模:深度和宽度。但是这样做的话肯定存在很多问题,问题是什么呢?
  问题一:网络规模更大通常意味着需要更多的参数,这会使增大的网络更容易过拟合,尤其是在训练集的标注样本有限的情况下。
  问题二:使用计算资源的显著增加。
  紧接着,文章就这两个问题开展一系列的引用与讨论,提出论文的追求,那就是设计一个好的网络拓扑,最后引出了Inception架构,并且将Inception架构的设计初衷与思想诠释的比较到位。首先,肯定卷积神经网络的重要性,以及池化对于卷积效果的重要性,所以Inception架构的基础是CNN卷积操作。而就减小网络规模这一点来说,新的模型需要考虑一个新的网络架构,从如何近似卷积视觉网络的最优稀疏结构出发,进行探索与讨论。

Inception架构

我们来具体看Inception的架构(图1)。在这篇文章的Inception版本1中,创新点在于一层网络中存在多个不同尺度的卷积核,摒弃了AlexNet、VGG等传统著名网络的“一条线”架构。升级版的Inception,也就是这篇文章提到的Inception架构中,加入多个1×1的“瓶颈”层,来保留空间维度, 降低深度,在池化之后采用1×1卷积核来减少池化后的深度,从而主要达到减小规模的目的。
  我简单的进行了两个版本Inception的操作数运算,步骤如下:


GoogLeNet的个人理解[通俗易懂]
  如果采用(a)的架构,假设在这一个Inception架构中,上一层输入的尺寸大小是28×28×256,采用1×1,3×3,5×5三种不同尺度的卷积核和3×3的max池化来进行该层的计算输出,那么在该层中卷积操作的ops次数计算如下:

			[1×1 conv,128] 28×28×128×1×1×256
			[3×3 conv,192] 28×28×192×3×3×256
			[5×5 conv,192] 28×28×96×5×5×256

Total:854M ops。对于[1×1 conv,128],28×28×128×1×1×256的计算是怎么来的呢?首先对于输入尺寸为28×28×256的矩阵来说,1×1卷积核实际大小是:1×1×256,每进行一次卷积,就进行了1×1×256次运算,那么一个卷积核需要进行28×28次卷积,而一共有128个不同的1×1卷积核,所以总的运算次数为28×28×1×1×256×128。


GoogLeNet的个人理解[通俗易懂]
  如果采用(b)的架构,同样假设在这一个Inception架构中,上一层输入的尺寸大小是28×28×256,采用1×1,3×3,5×5三种不同尺度的卷积核和3×3的max池化来进行该层的计算输出,但是在进行以上卷积之前,在3×3和5×5卷积操作的前一步,加入1×1的“瓶颈”层,来保留空间维度, 降低深度;在池化之后采用1×1卷积核来减少池化后的深度。那么在该层中卷积操作的ops次数计算如下:

			[1×1 conv,64] 28×28×64×1×1×256
			[3×3 conv,64] 28×28×64×1×1×256
			[5×5 conv,128] 28×28×128×1×1×256
			[1×1 conv,192] 28×28×192×3×3×64
			[3×3 conv,96] 28×28×96×5×5×64
			[5×5 conv,64] 28×28×64×1×1×256

Total:358M ops。可以看到,虽然网络的复杂程度加大了,但是总的运算次数减小到之前的1/3。
  Inception网络是一个由上述类型的模块互相堆叠组成的网络,从而形成了GoogLeNet。GoogLeNet是一个具有22层网络的深度学习架构,当然这22层指的是拥有权重的层,如图所示GoogLeNet的整体架构。


GoogLeNet的个人理解[通俗易懂]
  在中间层采用辅助分类器(Auxiliary Classification),增加了两个Loss来保证梯度回传消失的情况,这种设计结构用来减少梯度消失,ResNet是减少梯度爆炸。从中我们可以学习到一个点在于:梯度消失解决办法可以是在中间增加额外信号。

创新点

GoogLeNet的创新点都是围绕减少深度和提高性能来设计的。

  1. 借鉴NiN(Network in Network)中提出的思想,采用1×1 conv 来保持空间维度的同时,降低深度,也就是降低通道数量,同时1×1 conv还可以为你的网络增强非线性。
  2. 横向的卷积核排列设计,使得多个不同size的卷积核能够得到图像当中不同cluster的信息 ,我们称之为“多尺度”。这样融合了不同尺度的卷积以及池化,一个模块一层就可以得到多个尺度的信息,下一阶段也可以同时从不同尺度中提取的特征,可以进行多维度特征的融合,所以效果更好。把计算力拓宽,也避免了太深训练梯度弥散的问题。
  3. 对深度相对较大的网络来说,梯度反向传播能够通过所有层的能力就会降低。文中指出:“在这个任务上,更浅网络的强大性能表明网络中部层产生的特征应该是非常有识别力的”。通过将辅助分类器添加到这些中间层,可以提高较低阶段分类器的判别力,这是在提供正则化的同时克服梯度消失问题。后面的实验表明辅助网络的影响相对较小(约0.5),只需要其中一个辅助分类器就能取得同样的效果。
  4. 较高层会捕获较高的抽象特征,其空间集中度会减少。这表明随着网络转移到更高层,Inception架构中3×3和5×5卷积的比例应该会增加。而到最后一个卷积层出来的全连接,由全局平均池化替代了,减少了参数,节约了计算量。

我的思考

Inception中为什么要加入池化呢?是因为池化操作对于目前卷积网络的成功至关重要,因此建议在每个Inception中添加一个并行池化,采用步长为2的最大池化层将网络分辨率减半,应该也应该具有额外的效果。
  论文中提到“Inception结构中所有的滤波器是学习到的”,怎么理解?其实,Inception的作用是代替人工来确定卷积层中过滤器的类型,或者确定是否需要创建卷积层或池化层。Inception网络不需要人为决定使用哪个fliter,或者是否需要池化,而是由网络自行确定(学习)这些参数,自行学习是否使用这些fliter或者池化,也就是说这些都是Hypeparameter。
  论文中提到了这样一句话:max-pooling layers result in loss of accurate spatial information,作者也意识到了最大池化会导致某些精确的空间信息丢失,但是他在这里仅仅提到了,没有去深入思考,这让我联想到了最近的一个新模型,CapsNet,神经网络提出者Hinton的新论文。其中的思想也很新颖,而且我对CapsNet能否与迁移学习相联系有着比较大的兴趣,正在尝试着跟从实验室学长去研究。

Google公司具有很多计算力超强的集群,可以反复验证各种架构设计的优越性,所以GoogleNet整体架构的最终版,也就是论文中所呈现的,应该是一个非常好、很具有影响力的深层网络架构。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170446.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • hook技术截取服务器信息,Windows Hook技术

    hook技术截取服务器信息,Windows Hook技术0x01简介有人称它为“钩子”,有人称它为“挂钩”技术。谈到钩子,很容易让人联想到在钓东西,比如鱼钩就用于钓鱼。编程技术的钩子也是在等待捕获系统中的某个消息或者动作。钩子的应用范围非常广泛,比如输入监控、API拦截、消息捕获、改变程序执行流程等方面。杀毒软件会用Hook技术钩住一些API函数,比如钩住注册表读写函数,从而防止病毒对注册表进行写入;病毒使用Hook技术有针对性的捕获键盘的输入,从而…

    2022年5月9日
    78
  • 电子设备日常使用总结

    电子设备日常使用总结

    2021年5月17日
    116
  • 视频地址获取

    软件具体名字就不说了哈,首先贴出视频的网页地址:http://www.365yg.com/a6542366077089743367/首先需要获取视频的videoId,直接请求该url,然后match匹配:Patternpattern=Pattern.compile("videoId:\'(.+)\’");Matchermatcher=pattern.ma…

    2022年4月8日
    59
  • 启动马达接线实物图_电机的星三角降压启动实物接线图怎么画?

    启动马达接线实物图_电机的星三角降压启动实物接线图怎么画?展开全部电机的星三角降压启动实物接线图如下:基本原理就32313133353236313431303231363533e4b893e5b19e31333365666265是:启动时先用Y型接法电路,使得电机加载电压为220V,这样减少系统负荷防止过载;电机启动后,改成三角型接法电路,使得电压为380V,进行正常运转。这样的起动电流只有全压起动时的1/3,有效保护电机以及电路系统,防止电流过载…

    2022年5月3日
    90
  • 吞噬星空是鸿蒙三部曲吗,星辰变吞噬星空盘龙三部有什么关系

    吞噬星空是鸿蒙三部曲吗,星辰变吞噬星空盘龙三部有什么关系三部小说之间的关系就说这三部小说都属于鸿蒙三部曲,其中的各个宇宙之间都有一定的联系。《星辰变》是在红袖网上连载的奇幻修真小说,作者是我吃西红柿。小说以一个庞大的修真世界为背景,讲述了主角秦羽不甘于没落、努力修炼跨越先天不足的劣势,一步步踏上强者之路,最终成为鸿蒙掌控者的故事。《吞噬星空》,是一部东方科幻类型的网络小说,小说签约授权首发连载于红袖网。小说已经完本,作者是我吃西红柿。小说主要讲述了地球…

    2022年6月16日
    119
  • sql server jdbc

    sql server jdbc

    2021年5月5日
    109

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号