Andrew Ng's deeplearning Course4Week2 Deep convolutional models(深度卷积网络:实例探究)

来源:互联网 发布:php商城哪个好 编辑:程序博客网 时间:2024/06/05 23:26

一、经典网络

1.LeNet-5


LeNet-5的结构为conv->pool->conv->pool->fc->fc->output。在LeCun写这篇论文的时候,这里的激活函数采用的是sigmoid和tanh,不过现在也可以使用ReLU。还有一个优点是参数相对来说不多。

2.Alex-net 


AlexNet的结构为conv->pool->conv->pool->conv->conv->conv->pool->fc->fc->output。与LeNet相似,但是参数更加多,且使用的激活函数为ReLU。

3.VGG


VGG-16采用的结构为conv->pool->conv->pool->conv->pool->conv->pool->conv->pool->fc->fc->softmax。VGG-16专注于构建卷积层,16的意思是共有16个卷积层和全连接层。优点:拥有相对一致的网络结构。缺点:需要训练的特征数量非常巨大。

二、ResNet 残差网络

1.残差块


残差块就是指的在a[L]->linear->ReLU(a[L+1])->linear->ReLU(a[L+2])中,把a[L]的值直接给a[L+2]用,跳过了a[L+1],因此a[L+2]=g(z[L+2] + a[L])。skip connection(跳远连接)指的是跳过的不是一层,而是多层。

2.残差网络


由一个个残差块组成的神经网络叫作残差网络。在一个很深很深的深度网络中,理想的训练损失情况是越来越小,但是实际情况是在一段时间的减少后,损失会开始慢慢变大,但应用了ResNet网络后,可以减少连接的臃肿,使训练损失处于不断下降的趋势。

3.为什么残差网络效果在深度网络中比较好


如上图所示,有个很大的神经网络,在应用了残差网络后,其中,a[L+2] = g(z[L+2] + a[L]) = g(w[L+2]a[L+1] + b[L+2] + a[L]),假设对w[L+2]和b[L+2]应用权重衰减,使得这2个等于0,同时应用的激活函数为ReLU函数,参数非负。那么原式就等于g(a[L]) = a[L],也就意味着虽然a[L]和a[L+2]中间隔着一层,但是由a[L]到a[L+2]是很容易的。因此ResNet网络的优点就是这些残差块学习恒等函数非常容易,网络性能不会受到影响,有时甚至效率更高。(如果a[L]和a[L+2]不是同一个维度的,那么还需在a[L]前加一个权重Ws)

三、1*1卷积


1*1卷积有2个好处,第一个好处是之前的pool过滤器控制的是高度和宽度的变化,而1*1卷积可以减少或保持或增加输入层中的信道数量不变,也就是可以控制channel的变化。降维后可以降低参数个数,减少训练成本。

第二个是加入了非线性激活函数ReLU,提升了网络的表达能力。

四、Inception神经网络


Inception的好处就是你不用自己去选择用1*1还是3*3还是5*5还是池化的过滤器,而是让网络自己去选择,将这些叠加在一起,网络自己去挑选合适的匹配。

下面我们来看一下计算成本的问题:


我们以上面的5*5过滤器为例,计算成本大致是 28*28*32  X 5*5*192 ≈120million


但是假如我们在5*5之前使用之前提到的1*1卷积,那么计算成本就大致为28*28*16*192 + 28*28*32*5*5*16 = 12.4million,相比之前的120million,那是大幅度的减少了。因此使用1*1卷积可以降低训练计算的成本。

1.inception模块


一个inception模块由类似于上图的构成组成,1*1、3*3、5*5、maxpool,由于之前说到的好处,我们在3*3和5*5之前添加一个1*1CONV,并且为了最后能将这4个的通道拼接在一起,maxpool需要使用same,保持长宽保持不变,但same后通道将与之前的一致,这样导致通道较多,因此我们加一个1*1CONV来缩小通道。

2.Inception网络


由很多个inception模块组成的网络叫inception网络,在这其中有2个分支比较有特点,就是上图中绿框所示,这些分支包含了隐藏层,并且通过隐藏层来做出预测,确保了即便是隐藏单元和中间层,也参与了特征计算,这起到了一种调整的效果,并且能防止网络发生过拟合。

五、如何快速有效的训练自己的网络

1.迁移学习


可以从网上下载人家已经训练好的网络,将Softmax之前的权重冻结,只训练自己需要的Softmax,这样可以大大减轻你自己训练时的负担;如果你有较多的数据,你也可以加深自己的网络结果,多加几层来训练;如果你的数据足够足够多,你也可以直接将人家的网络权重替代掉自己的权重随机初始化,然后后面的网络完全由自己来训练实现。

2.数据增强

在计算机视觉方面,数据不够多可能会造成性能的好坏差异。

我们常用的数据增强有图片镜像,图片裁剪,更改图片的颜色(因为有时在不同的灯光照耀下,图片的颜色可能会不同,这样可以使得对于不同颜色的鲁棒性更好)。

阅读全文
0 0
原创粉丝点击