卷积神经网络课程笔记-基础理论(第一、二周)

所用图片仍然来源相关课件。

第一周 基本知识

1. 计算机视觉常解决问题:图像分类、目标检测、神经网络风格迁移(融合两张图像的特征)

2. 常用的边缘检测算子,卷积网络中的filter (kernel) 感觉和数字图像处理的滑动窗口差不多

最朴素的垂直边缘检测算子(左上角),依然只考虑filter中左端和右端的差异。通过修改权重(例如加强中间的影响),可得到许多的算子(sobel etc..)。进一步加深,一个filter中所有元素都对于边缘检测有影响,给每个元素都赋予一个权重去学习,是朝着检测更复杂特征的一步前进,这也是卷积网络中使用的filter的原型。

3. Padding:考虑步长为1的情况,假设利用3*3(f*f)的filter对于6*6(n*n)图像做卷积会得到一个4*4(n-0.5*(f-1)*2 = n-f+1)的图像。显然,这个操作存在着两个问题:(1)图像被缩小到了4*4。(2)原图像的边缘信息利用的很少。此时的解决方案在原图像(6*6)周围环绕着填充一层像素(通常用0),得到8*8图像,再进行卷积运算,得到的结果为6*6,使得图像并没有被压缩且边缘的信息也得到了一定的利用。当然,你也可以填充不止一层,p=1,2,3。

4. Valid convolution:n*n  f*f --- (n-f+1)*(n-f+1) p=0,即不使用padding

    Same convolution:卷积运算后,图像大小不改变 p=0.5*(f-1)

5. 步长(stride):filter每次移动的步长,除不尽则向下取整(floor)

6. 关于卷积(convolution)与互相关(cross-correlation):其实数学意义的卷积,在对于filter的权重计算之前,需要对filter里的元素有一个沿着正45度角对称的操作,也就是常说的翻转操作,而在深度学习领域,并没有进行翻转操作。从数学意义出发,这种不经过翻转而直接进行加权求和的方式称为互相关更为合适。但是在机器学习领域,这被默认的称为卷积。理解这一点就好。

7. 当图像有多个通道时,检测多个特征时,一张图简洁明了。

8. 卷积网络的一个特征:避免过拟合。假设使用10个3*3*3的过滤器提取特征(单个卷积层),这总共具备(3*3*3+1)=280个参数,无论输入数据多大,要处理的也就是这280个参数 。按道理,模型越复杂,那么过拟合的风险就会越高;数据越多,当然可以学习到的信息也就越多。这里并没有很好的理解。

9. 常见层种类:卷积层(convolution)、 池化层(pooling)、 全连接层(fully connected),顾名思义,将输入平整化得到一维向量后进行全连接,参数也最多。在整个网络中,由于卷积层的特性,下面会提到,因此大部分的参数常常集中于全连接层。

10. 关于卷积与池化的理解:表面看上去,二者似乎差不多,但是实际上却是不同的东西。首先直观意义上的不同:(1)池化常选的类型为最大池化与平均池化。(2)当有多通道时,池化是对单一通道进行池化,因此池化的结果仍然为多通道,且前后通道数一致。(3)池化的窗口大小常设置为偶数,而卷积为了满足中心对称性,常常设置为奇数。(4)池化层并不含权重和参数,仅仅包含超参数,而在统计网络层数常常只统计拥有参数的层,因此池化层和卷积层常作为一层作为标注。深一步看,我的理解是,卷积是具备数学意义的(虽然说少了一个所谓的翻转的过程),目的是为了得到特征的加权平均;而池化的作用更像是一个特征的筛选器,为了缩减样本大小,提升效率而设计。

11. 卷积层相对于全连接的优势:参数共享和稀疏连接。我觉得这也是为什么会采用卷积神经网络来进行图像处理的原因。

参数共享:在图像中,一个特征探测器在一个区域上有效,那么他同样也会在其他区域有效,因此每一次可以使用同一个参数的特征探测器对于整个图像进行探测

稀疏连接:输出图像的每一个参数,由filter中包含的元素所决定,而不是像全连接网络由所有元素决定。

第二周 经典网络介绍

1. 经典的网络: LeNet-5、 AlexNet、 VGG

(1)LeNet-5 年代比较早(80年代), 针对灰度图像设计 ,用作数字识别, 因此输出为(10,1)。

(2)AlexNet ,注意输出为(1000,1),同样也用作分类。

(3)VGG-16 ,16指包含的卷积层和全连接层的个数是16个 。结构平整, 但参数很多, 网络较深。 可以发现一个有趣的规律是通道数量的变化64-128-256-512 。

2. 残差网(Resdual Network)

注意下面这个等式(同时看上图中箭头的起点和终点)。残差网中通过跳跃连接(skip connection)这一巧妙的构思,达到前面层对于后面层的影响,而这两层组成的结构称为残差块(Residual Block)。前一层和后一层的维度可能会不一样,调整就行了(例如用0填充)。

                                                                            a^{[l+1]} = g(z^{[l+1]} +a^{[l]} ) 

 在深度网络中,理论上来说,随着网络的深度增加,训练的误差会越来越小;但是实际上来说,随着网络深度的增加,训练误差会呈现一个近似U型的分布。而残差网通过跳跃连接来解决深层网络中存在的梯度消失或梯度爆炸的问题。直观上理解,因为这个跳跃连接,使得前面层对于后面层的输出有了一个影响(残差),因此在计算后一层的输出层时相当于加了一个改正,从而减少了类似于梯度消失的问题。

3. Inception网络

Inception(We need to go deeper 取名来自盗梦空间),因为常常来说,网络越深效果越好,目的是为了代替人工来确定卷积层中过滤器的类型 (还没理解是如何代替人来自动确定卷积层中过滤器的类型)。Inception网络由一个个Inception小模块组成,注意此网络中有许多的小分支,使得通过隐藏层也能输出结果。这样做有一些好处,特别是在深层网络中,最明显的就是由此可以起到一个调试的作用(调试不知道准确不,因为我觉得有点像是在调试程序一样,在一些关键步骤输出结果)。

里面利用1*1卷积的目的实际上是进行一个压缩图像的过程,此时的1*1卷积层也叫做瓶颈层(因为含图像最少),之后再通过另一个卷积层将其放大,这样做可达到减少计算的目的,因为将本应该做的乘法,变成的了加法。合理的构造瓶颈层可以起到既不会影响网络性能,又能减少计算成本的作用。

Network in Network:1*1 卷积。1*1卷积总结来说有三个作用:(1)增加网络深度,理论上说,网络越深,效果越好。(2)减少计算量,参见Inception。(3)增强网络的非线性程度,因为1*1卷积可看做一个全连接,从而可在卷积层的卷积运算过程中再增加了一个非线性映射(ReLU),从而增强了网络的非线性程度。

4. 数据增强。常常为面对样本不足的情况,这时候可使用数据增强的方式增加样本数量。

数据增强常用方法:垂直镜像对称(mirroring)、随机裁剪 (random cropping)、色彩转换(color shifting)。

 

猜你喜欢

转载自blog.csdn.net/OliverLee456/article/details/82850235