4.卷积神经网络-第二周 深度卷积网络:实例探究

2.1 为什么要进行实例探究
神经网络的基本构件:卷积层,池化层和全连接层。通过探究实例,可以对如何构建有效的卷积神经网络更有感觉。
4.卷积神经网络-第二周 深度卷积网络:实例探究
2.2 经典网络
Lenet 不用padding
4.卷积神经网络-第二周 深度卷积网络:实例探究
这个神经网络有一种模式至今经常使用,那就是:一个或多个卷积层后面跟着一个池化层。
4.卷积神经网络-第二周 深度卷积网络:实例探究
AlexNet:用了2块GPU
作者:Alex Krizhevsky
原文是224,但在推导之后,用227更加合适。
4.卷积神经网络-第二周 深度卷积网络:实例探究
AlexNet比LeNet表现更为出色的原因是:使用了ReLU函数。
局部响应归一化层用的不多,且后来证实起不到太大作用。现在并不用LRN来训练网络。
VGG-16
没有那么多超参数,但参数还是蛮多的,有1.38亿。这是一种只需要专注于构建卷积层的简单网络。
same:same padding,进行的是same卷积。
优点:简化了神经网络结构,这里采用的都是大小为3*3,步长为1的filter。
4.卷积神经网络-第二周 深度卷积网络:实例探究
4.卷积神经网络-第二周 深度卷积网络:实例探究
也就是
4.卷积神经网络-第二周 深度卷积网络:实例探究
乘2表示进行两次卷积。
4.卷积神经网络-第二周 深度卷积网络:实例探究
将最后得到的7*7*512的特征图进行全连接操作,得到4096个单元。
VGG-16中的16含义:
指的是这个网络中,has 16 layers that have to weight.
VGG-16网络结构规整,a few conv layers + a pooling layer。池化层可以压缩图像的大小,卷积层的filter个数也存在着一定的规律。
VGG-16这篇文章揭示了随着网络的加深,图像的高度和宽度都在以一定规律不断缩小。每次pooling后,刚好缩小一半。而chanel数量在不断增加,而且是在每组卷积操作后,增加一倍。
也就是说,图像缩小的比例和通道增加的比例是有规律的。
VGG-19:2015年,Very deep convolutional networks for large-scale image recognition.
2.3 残差网络
4.卷积神经网络-第二周 深度卷积网络:实例探究
非常非常深的网络是很难训练的,因为存在梯度消失和梯度爆炸问题。
skip connections(跳远连接),which allows you to take the activation from one layer.(可以从某一网络层获取**),然后迅速反馈给另外一层,甚至是神经网络的更深层。
可以利用skip connections来构建能够训练深度网络的ResNets。
ResNets是由残差块构建的。
什么是残差块(Residual block)?
之前:
4.卷积神经网络-第二周 深度卷积网络:实例探究
在残差网络中,从a[l]到a[l+2]不是这样的。
通过拷贝的方式走捷径,a[l]的信息直接到达神经网络的深层,不再沿着主路径传递。加上了a[l],产生了一个残差块。这条捷径是在进行ReLU非线性**之前加上的。位置是线性**之后,ReLU**之前。
捷径还有一个名字,skip connections,就是指a[l]跳过一层或者好几层,从而将信息传递到神经网络的更深层。
使用残差块能够训练更深的神经网络。所以构建一个ResNet网络就是通过很多这样的残差块,堆积在一起,形成一个深度神经网络。
4.卷积神经网络-第二周 深度卷积网络:实例探究
Plain network:普通网络
4.卷积神经网络-第二周 深度卷积网络:实例探究
把它变成ResNet的方法是加上所有的跳远连接,每两层添加一个捷径,构成一个残差块。
So,5个残差块连接在一起,构成了一个残差网络。
4.卷积神经网络-第二周 深度卷积网络:实例探究
残差网络有利于解决梯度消失和梯度爆炸问题,让我们在训练更深网络的同时,又能保证良好的性能。
2.4 残差网络为什么有用?
常识:通常来讲,网络在训练集上表现好,才能在dev和test上表现好。所以,至少在训练集上训练好ResNet是第一步。
如何在构建更深层次的ResNet网络的同时,还不降低它们在训练集上的效率?
一般而言,一个网络越深,它在训练集上训练网络的效率会有所减弱。
ResNET学习恒等函数,尽管多了2层,也只是把a[l]的值赋给a[l+2]。所以,给大型神经网络增加两层,不论是把残差块添加到神经网络的中间还是末端位置,it does not hurt performance。
残差网络起作用的主要原因是:
这些残差块学习恒等函数非常容易,可确定网络性能不会受到影响,很多时候甚至可以提升效率,至少不会降低网络效率了。
如果那些隐藏层学到了有用的信息,那么性能还能提升了呢!
4.卷积神经网络-第二周 深度卷积网络:实例探究
只需要添加skip connections就可以转换成为ResNet。
4.卷积神经网络-第二周 深度卷积网络:实例探究
上图中注意一点:如果使用L2正则化或weight decay,将会压缩w[l+2]的值,如果对b用weight decay,亦可以达到同样的效果。尽管在实际中,有时会对b应用weight decay,有时不会。w是真正要关注的关键项。
same convolution:make it easier to have this short circuit,并输出两个相同维度的向量。
如果输入和输出有不同的维度,如输入x是128,a[l]是256,再增加一个矩阵ws(256*128),其参数通过学习获得。
4.卷积神经网络-第二周 深度卷积网络:实例探究
2.5 网络中的网络以及1*1卷积
1*1convolution = Network in Network
对于6*6*1的图片来说,1*1卷积效果不佳。
但是对于6*6*32的图片来说,效果就好多了。
乘以32个权重,然后应用ReLU非线性函数,输出相应的结果。
4.卷积神经网络-第二周 深度卷积网络:实例探究
4.卷积神经网络-第二周 深度卷积网络:实例探究
4.卷积神经网络-第二周 深度卷积网络:实例探究
1*1卷积可以压缩通道数量并且减少计算。1*1卷积只是添加了非线性函数,当然,可以让网络学习更复杂的函数了
通过1*1卷积的简单操作来压缩或保持输入层的channel数,甚至是增加信道数量。
对于池化层,只是压缩了高度和宽度。而1*1卷积层可以压缩维度(通道数量)。
4.卷积神经网络-第二周 深度卷积网络:实例探究
2.6谷歌Inception网络简介
1*1卷积为神经网络添加了一个非线性函数(relu),and allow you to decrease, or keep the same ,or increase the number of channels.
Inception network motivation
1*3 or 3*3 or 5*5 ……帮助人们做决定。
构建卷积层时,要决定filter的大小:1*3,3*3,5*5,或者要不要添加池化层,而inception网络的可以做决定。虽然网络架构复杂,但表现很好。
inception网络或者inception层的作用就是代替人工来确定卷积层中的过滤器类型,或者确定是否需要创建卷积层或池化层。
用same convolution,保证维度不变。
如果不想要卷积层,可以使用池化层。为了匹配所有的维度,对max pooling进行了padding操作,这是一种特殊的池化形式。
Inception模块
4.卷积神经网络-第二周 深度卷积网络:实例探究
基本思想是inception网络不需要人为确定使用哪个过滤器size,或者是否需要池化,而是由网络自行确定这些参数。缺点是有一定的计算成本。
以5*5大小的filter为例,计算计算成本。
对于输出的每个数字来说,都要执行filter size次乘法运算。所以计算成本是每个输出值所需的乘法运算次数*输出值个数。
4.卷积神经网络-第二周 深度卷积网络:实例探究
接下来,用1*1 convolution来大大降低计算成本。
4.卷积神经网络-第二周 深度卷积网络:实例探究
2.7 Inception网络
如果在构建神经网络时不想决定filter尺寸,可以使用inception网络,应用各种类型的过滤器,只需要把输出结果连接起来。
进行池化,通道数量或者深度不变。不过,可以用1*1convolution降低通道数。这样就可以避免最后几乎池化层占据了所有的通道。
4.卷积神经网络-第二周 深度卷积网络:实例探究
这就是一个inception模块,将这些模块组合到一起就构成了inception网络。
4.卷积神经网络-第二周 深度卷积网络:实例探究
这里有一些额外的max pooling层,来修改height 和width的维度。
论文中的图是有一些小分支的。
4.卷积神经网络-第二周 深度卷积网络:实例探究
这些小分支所做的就是通过隐藏层来做出预测,实际上就是一个softmax输出,输出结果的标签。fc+softmax。该方法确保了即使是隐藏单元和中间层,也参与了特征计算,他们也能预测图片的分类。在inception网络中,起到一种调整的效果,并能防止网络发生过拟合。
这个网络实际上就是GoogLeNet。
2.8使用开源的实现方案
如何真正的去使用这些算法来构建自己的计算机视觉系统。
使用开放源码github
开发应用的常见工作流程:
先选择一个喜欢的架构,接着寻找一个开源实现,以此为基础开始构建。
2.9迁移学习
小训练集
4.卷积神经网络-第二周 深度卷积网络:实例探究
冻结前面层的参数,只需要训练和softmax层有关的参数。为了不训练前面层的参数,可能会有trainableParamete=0这样的参数。有时候也会有freeze = 1这样的参数。不同的框架,都允许指定训练特定层的权重。
当然,也可以把**值存储在disk中,然后再用disk中的值。
4.卷积神经网络-第二周 深度卷积网络:实例探究
更大的训练集怎么办呢?
这种情况,应该冻结更少的层,然后训练后面的层。如果输出单元不一,则需要构建自己的输出单元。可以取后面几层的权重用作初始化,然后从这里开始梯度下降。或者直接去掉这几层,换成自己的隐藏单元和自己的soft max输出层。
4.卷积神经网络-第二周 深度卷积网络:实例探究
规律:如果有越多的数据,需要冻结的层数越少,能够训练的层数越多。
如果数据量特别大,则把整个网络的权重当作初始化(代替了随机初始化)。然后用梯度下降法训练整个网络,更新网络所有层的所有的权重。
2.10 数据扩充
数据增强:很少一起使用,因为太复杂了。数据增强
mirroring, random cropping, local warping(变形,扭曲),shearing(剪切),rotation.
色彩转换(color shifting):
4.卷积神经网络-第二周 深度卷积网络:实例探究
在实际中, RGB的值是根据某种概率分布来决定的。用这种color shifting的方法,可以对照片的颜色更改更具鲁棒性。
PCA color augmentation:PCA颜色增强,如果图片呈现紫色(红色+蓝色,绿色很少),然后PCA颜色增强算法就会对红色和蓝色增减很多,绿色变化相对少些,使得总体的颜色保持一致。
2.11计算机视觉现状
4.卷积神经网络-第二周 深度卷积网络:实例探究
multi-crop是一种将数据扩展应用到测试图像的形式。
center crop 和四角crop + 镜像
4.卷积神经网络-第二周 深度卷积网络:实例探究
把这些加起来,就会有10种不同的图像crop,要做的是,通过分类器来运行这10张图,然后对结果进行平均。
如果有足够的计算预算,为提高基准效果可以
4.卷积神经网络-第二周 深度卷积网络:实例探究
集成,采用不同的网络,占用了更多的计算机内存,不能对权重做平均,而是对最后的结果值做平均。
multi-crop虽然只有一个网络,但是运行时间还是比较慢的哦。
注意:
在构建生产系统时,不推荐使用这些方法,尽管他们在基准和竞赛上做的很好。
4.卷积神经网络-第二周 深度卷积网络:实例探究