加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

【深度进修系列】用PaddlePaddle和Tensorflow实现GoogLeNet InceptionV2/V3/V

发布时间:2018-08-17 13:20:12 所属栏目:教程 来源:Charlotte77
导读:技能沙龙 | 邀您于8月25日与国美/AWS/转转三位专家配合切磋小措施电商拭魅战 上一篇文章我们引出了GoogLeNet InceptionV1的收集布局,这篇文章中我们会具体讲到Inception V2/V3/V4的成长过程以及它们的收集布局和亮点。 GoogLeNet Inception V2 GoogLeNet Inc
副问题[/!--empirenews.page--] 技能沙龙 | 邀您于8月25日与国美/AWS/转转三位专家配合切磋小措施电商拭魅战

上一篇文章我们引出了GoogLeNet InceptionV1的收集布局,这篇文章中我们会具体讲到Inception V2/V3/V4的成长过程以及它们的收集布局和亮点。


GoogLeNet Inception V2

GoogLeNet Inception V2在《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》呈现,最大亮点是提出了Batch Normalization要领,它起到以下浸染:

  • 行使较大的进修率而不消出格体谅诸如梯度爆炸或消散等优化题目;
  • 低落了模子结果对初始权重的依靠;
  • 可以加快收敛,必然水平上可以不行使Dropout这种低落收敛速率的要领,但却起到了正则化浸染进步了模子泛化性;
  • 纵然不行使ReLU也能缓解激活函数饱和题目;
  • 可以或许进修到从当前层到下一层的漫衍缩放( scaling (方差),shift (祈望))系数。

在呆板进修中,我们凡是会做一种假设:实习样本独立同漫衍(iid)且实习样本与测试样天职布同等,假如然实数据切合这个假设则模子结果也许会不错,反之亦然,这个在学术上叫Covariate Shift,以是从样本(外部)的角度说,对付神经收集也是一样的原理。从布局(内部)的角度说,因为神经收集由多层构成,样本在层与层之间边提特性边往前撒播,假如每层的输入漫衍纷歧致,那么势必造成要么模子结果欠好,要么进修速率较慢,学术上这个叫InternalCovariate Shift。

假设:yy为样本标注,X={x1,x2,x3,......}X={x1,x2,x3,......}为样本xx通过神经收集多少层后每层的输入;

理论上:p(x,y)p(x,y)的连系概率漫衍应该与荟萃XX中恣意一层输入的连系概率漫衍同等,如:p(x,y)=p(x1,y)p(x,y)=p(x1,y);

可是:p(x,y)=p(y|x)⋅p(x)p(x,y)=p(y|x)·p(x),个中前提概率p(y|x)p(y|x)是同等的,即p(y|x)=p(y|x1)=p(y|x1)=......p(y|x)=p(y|x1)=p(y|x1)=......,但因为神经收集每一层对输入漫衍的改变,导致边沿概率是纷歧致的,即p(x)≠p(x1)≠p(x2)......p(x)≠p(x1)≠p(x2)......,乃至跟着收集深度的加深,前面层细小的变革会导致后头层庞大的变革。

BN整个算法进程如下:

【深度进修系列】用PaddlePaddle和Tensorflow实现GoogLeNet InceptionV2/V3/V

  • 以batch的方法做实习,对m个样本求祈望和方差后对实习数据做白化,通过白化操纵可以去除特性相干性并把数据缩放在一个球体上,这么做的甜头既可以加速优化算法的优化速率也也许进步优化精度,一个直观的表明:

【深度进修系列】用PaddlePaddle和Tensorflow实现GoogLeNet InceptionV2/V3/V

左边是未做白化的原始可行域,右边是做了白化的可行域;

  • 当原始输入对模子进修更有利时可以或许恢复兴始输入(和残差收集有点神似):

【深度进修系列】用PaddlePaddle和Tensorflow实现GoogLeNet InceptionV2/V3/V

这里的参数γγ和σσ是必要进修的。

卷积神经收集中的BN

卷积收集中回收权重共享计策,每个feature map只有一对γγ和σσ必要进修。

【深度进修系列】用PaddlePaddle和Tensorflow实现GoogLeNet InceptionV2/V3/V


GoogLeNet Inception V3

GoogLeNet Inception V3在《Rethinking the Inception Architecture for Computer Vision》中提出(留意,在这篇论文中作者把该收集布局叫做v2版,我们以最终的v4版论文的分别为尺度),该论文的亮点在于:

  • 提出通用的收集布局计划准则
  • 引入卷积解析进步服从
  • 引入高效的feature map降维

收集布局计划的准则

前面也说过,深度进修收集的试探更多是个尝试科学,在尝试中人们总结出一些布局计划准则,但说真话我认为不必然都有实操性:

  • 停止特性暗示上的瓶颈,尤其在神经收集的前多少层 

神经收集包括一个自动提取特性的进程,譬喻多层卷积,直观并切合知识的领略:假如在收集初期特性提取的太粗,细节已经丢了,后续纵然布局再风雅也没法做有用暗示了;举个极度的例子:在宇宙平分辨一个星球,正常来说是通过由近及远,从衡宇、树木到海洋、大陆板块再到整个星球之后进入整个宇宙,假如我们一开始就直接拉远到宇宙,你会发明全部星球都是球体,没法区分哪个是地球哪个是水星。以是feature map的巨细应该是跟着层数的加深慢慢变小,但为了担保特性能获得有用暗示和组合其通道数目会逐渐增进。

下图违背了这个原则,刚开就始直接从35×35×320被抽样降维到了17×17×320,特性细节被大量丢失,纵然后头有Inception去做各类特性提取和组合也没用。

【深度进修系列】用PaddlePaddle和Tensorflow实现GoogLeNet InceptionV2/V3/V

  • 对付神经收集的某一层,通过更多的激活输出分支可以发生相互解耦的特性暗示,从而发生高阶稀少特性,从而加快收敛,留意下图的1×3和3×1激活输出:

【深度进修系列】用PaddlePaddle和Tensorflow实现GoogLeNet InceptionV2/V3/V

  • 公道行使维度缩减不会粉碎收集特性暗示手段反而能加速收敛速率,典范的譬喻通过两个3×3取代一个5×5的降维计策,不思量padding,用两个3×3取代一个5×5能节减1-(3×3+3×3)/(5×5)=28%的计较耗损。

【深度进修系列】用PaddlePaddle和Tensorflow实现GoogLeNet InceptionV2/V3/V

  • 以及一个n×n卷积核通过次序相连的两个1×n和n×1做降维(有点像矩阵解析),假如n=3,计较机能可以晋升1-(3+3)/9=33%,但假如思量高机能计较机能,这种解析也许会造成L1 cache miss率上升。

【深度进修系列】用PaddlePaddle和Tensorflow实现GoogLeNet InceptionV2/V3/V

  • 通过公道均衡收集的宽度和深度优化收集计较耗损(这句话尤其不具有实操性)。
  • 抽样降维,传统抽样要领为pooling+卷积操纵,为了防备呈现特性暗示的瓶颈,每每必要更多的卷积核,譬喻输入为n个d×d的feature map,共有k个卷积核,pooling时stride=2,为不呈现特性暗示瓶颈,每每k的取值为2n,通过引入inception module布局,即低落计较伟大度,又不会呈现特性暗示瓶颈,实现上有如下两种方法:

【深度进修系列】用PaddlePaddle和Tensorflow实现GoogLeNet InceptionV2/V3/V

滑腻样本标注

对付多分类的样本标注一样平常是one-hot的,譬喻[0,0,0,1],行使相同交错熵的丧失函数会使得模子进修中对ground truth标签分派过于置信的概率,而且因为ground truth标签的logit值与其他标签差距过大导致,呈现过拟合,导致低落泛化性。一种办理要领是加正则项,即对样本标签给个概率漫衍做调理,使得样本标注酿成“soft”的,譬喻[0.1,0.2,0.1,0.6],这种方法在尝试中低落了top-1和top-5的错误率0.2%。

收集布局

【深度进修系列】用PaddlePaddle和Tensorflow实现GoogLeNet InceptionV2/V3/V


GoogLeNet Inception V4

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读