-->

AI内参_128_122_计算机视觉领域的深度学习模型二VGG_GoogleNet

你好,我是洪亮杰。

今天我和你分享的主题是计算机视觉领域的深度学习模型。

之二VGG和google net在上一期的分享中,我们通过一篇经典论文讲了alex net这个模型。

可以说,这篇文章是深度学习在计算机视觉领域发挥作用的奠基之作。

Alex net在二零一二年发表之后,研究界对这个模型做了很多改进网络,使得这个模型得到了不著优化,特别是在image net上的表现获得了显著提升。

首先我们就来看看针对alex net模型的两个重要改进,分别是VGG和google net.我们要分享的第一篇论文题目是用于大规模图像识别的深度卷积网络。

这篇文章的作者都来自于英国牛津大学的视觉几何实验室,简称VGG,所以文章提出的模型也被叫做VGG网络。

到目前为止,这篇论文的引用次数已经多达了一万四千次。

首先我们来简单了解一下这篇论文的作者,第一作者叫卡伦。

西蒙彦发表论文的时候,他在牛津大学计算机系攻读博士学位之后,西蒙彦加入了谷歌在deep mat任职,继续从事深度学习的研究。

第二,作者叫安德鲁兹。

泽曼是牛津大学计算机系的教授,是计算机视觉领域的学术权威。

他曾经三次被授予计算机视觉最高荣誉。

马尔奖这篇论文的主要贡献是什么呢?一个重要贡献就是研究如何把之前的模型,例如alex net加深层次,从而能够拥有更好的模型泛化能力,最终实现更小的分类错误率。

为了更好的理解这篇文章的贡献,我们来回忆一下alex net的架构。

Alex net拥有八层神经网络,分别是五层、卷积层和三层全连通层。

Alex net之所以能够有效的进行训练,是因为这个模型利用了线性整流函数数据增强以及jorop net的手段。

这些方法让alex net能够达到八层。

但是学术界一直研来都认为,从理论上看,神经网络应该是层数越多,泛化能力越好。

而且在理论上一个八层的神经网络完全可以加到十八层或者八十层。

但是,在现实中,梯度消失和过拟合等情况来加深神经网络变得非常困难。

在这篇论文中,VGG网络就尝试从alex net出发,看能否加入更多的神经网络层数,来达到更好的模型。

结果那VGG是怎么做到加深神经网络层数的呢?总体来说,VGG对卷积层的过滤器进行了更改,达到了十九层的网络结构。

从结果上看,和alex net相比,VGG在image net t的错误率要降低差不多一半。

所以说这是第一个真正意义上达达了深深层网网络构构VGG过滤器上着手更改。

我们具体从改变细节究竟竟哪些呢?简单来说就是在卷积层中,仅仅仅使三层以三的接受受使,使得每一层都常效果。

我们可以从整个形象上来理解,认为这是一组非常瘦的网络架构。

在卷积层之后是三层全联通层以及最后一层进行分类任务的层。

一个细节是,VGG放弃了我们之前介绍的alex net中引入的一个叫局部响应归一化的技术。

原因是这个技巧并没有真正带来模型效果的提升。

Vgg架构在训练上的一个要点是,先从一个小的结构开始。

我们可以理解为,首先训练一个alex net,然后利用训练的结果来初始化更深结构的网络。

作者们发现,采用这种初始训练的办法要比完全从随机状态初始化模型训练的更加稳定。

我们要分享的第二篇论文题目是更深层的卷积。

因为这篇论文的作者基本都来自于谷歌,所以文章提出的模型有时候又叫做google net.这篇论文拥有八千多次的应用数,google net不仅和VGG一样,再把架构做深上下文章,而且在模型的效率上比alex net更加优秀。

作者们利用了比alex net少十二倍的参数,才更深的架构上达到了更好的效果。

Google net创新的重点是在网络架构上和alex net以及VGG都不同的是,google net的作者们认为,更加合适的网络架构不是简单做就相同的卷积层叠加起来,然后再把相同的全连通层叠加。

如果我们需要更深的架构,必须从原理上对网络架构有一个不同的理解。

作者们认为,网络结构必须走向稀疏化,才能够达到更深层次、更高效的目的。

那么,能否直接用稀疏结构来进行网络的架构呢?过去的经验表明,这条路并不那么直观。

第一,直接利用稀疏的结构所表达的网络结构效果并不好。

第二,这样做就无法利用现代的硬件,特别是GPU的加速功能。

现在的GPU之所以能够高效的处理视觉特代的g系列,类似的问题,主要的原因就是快速的紧密矩阵运算,所以直接使用稀疏结构有一定的挑战。

这篇论文的核心思想,就是希望用一组局部的紧密结构来逼近理想中的最优的稀疏化结构,从而能够在计算上达到高效率。

同时,在理论思想上能够利用稀疏化结构来达到更深的网络架构。

这种局部模块被作者们称作为inception模块,什么意思呢?传统上卷积层都是直接叠加起来的,而这篇论文提出的exception模块,其实就是让卷积层能够在水平方向上排列起来,然后整个模块再进行垂直方向的叠加。

至于水平方向排列多少个卷积层垂直方向排列多少个exception模块,都是采用经验、试错的方式来进行实验的这篇论文。

最终提出的google net有二十二层网络结构。

如果把所有的平行结构都算上的话,整个网络超过了一百层。

为了能够在这么深的结构上训练模型,作者们还采用了一种方法,那就是在中间的一些层次中插入分类器。

相比之下,我们之前遇到过的网络结构都是在最后一层才有一个分类器。

分类器层的特点就是最终的标签信息会在这里被利用。

也就是说,分类的准确性或者说是图片中物体究竟是什么,都会被这个标签信息所涵盖。

在中间层加入分类器,其实就是希望标签信息能够正确引导中间层的目标,并且能够让梯度依然有效。

经过在实验中,google net模型可以说是达到了非常好的效果。

在二零一四年的image net竞赛中,google net和VGG分裂比赛的第一名和第二名两个模型之间的差距仅有不到一个百分点。

今天我为你讲了两篇基于深度学习的经典论文,讨论了两个模型VGG和google net这两个模型在alex net的基础做了不少的革新。

一起来回顾一下要点。

第一,VGG模型对卷积层的过滤器进行了更改,实现了十九层的网络结构,可以说是第一个真正意义上达到了深层的网络结构。

第二,google net模型的创新是在网络架构上利用稀疏化结构达到了更深的网络架构。

最后给你留一个思考题,总结和比较VGG和google net这两个模型。

我们看到了深度模型研发的一个什么趋势呢?欢迎你给我留言,和我一起讨论。