吴恩达《深度学习》笔记三——卷积神经网络
Writed by changfei_lovelife~
目录
1.卷积神经网络
2.深层卷积网络实例探究
第一部分 卷积神经网络
1.边缘检测器
原理:利用过滤器,与原图矩阵进行卷积计算,可实现垂直/水平边缘检测。
卷积运算:逐元素相乘,然后相加
解释:
检测器能区别明到暗和暗到明:
水平检测器:
检测器中的值不一定是定值:
2.卷积的操作:Padding&步长
Padding:
如果我们有一个n×n的图像,用f×f的过滤器做卷积,那么输出的维度就是(n−f+1)×(n−f+1)。
缺点:1、每次做卷积操作后图像会缩小;2、处于边缘的像素点在输出中采用较少,意味着丢失图像边缘位置的信息。
padding:为了解决这些问题,你可以在卷积操作之前填充这幅图像,你可以沿着图像边缘再填充一层像素。
在这个案例中,p=1,因为我们在周围都填充了一个像素点,输出也就变成了(n+2p−f+ 1) × (n+2p−f+ 1),所以就变成了(6+2×1−3+1) × (6+2×1−3+1) = 6×6,和输入的图像一样大。
Valid卷积:不填充。
Same卷积:输出大小和输入一样。
卷积步长:
指的是过滤器每次移动时跨的格子。
输出大小为:( (n+2p−f)/s+1 ) × ( (n+2p−f)/s+1 )
3.三维卷积
针对彩色图片的三维矩阵,采用同通道的三维过滤器进行卷积运算,得到的仍然是二维矩阵。
考虑到一个过滤器只能探测图片的一个特征,因此采用多个过滤器,将得到的多个二维矩阵堆叠起来,得到一个三维体。
4.单层卷积网络——卷积层
卷积层:过滤器卷积运算+增加偏差+非线性函数,重复多次,矩阵堆叠
参数数量:每个过滤器参数(333=)27,加上一个b参数,28个,乘以过滤器数量
参数表示:
5.简单卷积网络示例
示例结构:卷积层+卷积层+卷积层+平滑展开+logistic/softmax回归单元
典型卷积网络:卷积层(CONV)+池化层(POOL)+全连接层(FC)
6.池化层
池化层用来缩减模型大小,提高计算速度。
最大池化:输出区域内最大元素
平均池化:输出区域内平均值
池化的超参:过滤器大小f和步幅s,以及padding参数p
7.卷积神经网络示例
卷积两种分类:1.一个卷积层和一个池化层作为一层(采用,池化层没有参数,只有超参) 2.卷积层和池化层各自作为一层
示例卷积网络结构:CONV-POOL-CONV-POOL-FC-FC-Softmax
注意点:
8.为什么使用卷积?
卷积能够减少参数,防止过拟合。
减参原因:参数共享+稀疏连接
参数共享:
稀疏连接:
第二部分 深度卷积网络实列探究
1.经典网络
LeNet-5网络:
AlexNet网络:
AlexNet采用了ReLu激活函数
VGG-16网络:
卷积层过滤器:f=3,s=1,same卷积
池化层过滤器:f=2,s=2
2.残差网络
跳跃连接:
残差块:
a[l+2]=g(z[l+2]+a[l]),加上了a[l]构成了一个残差块。
残差网络:
残差网络由一系列残差块堆积而成。
残差起作用的原因:
残差网络比较容易学习恒等式,能确定网络性能不受影响,甚至可以提高效率。
3.1by1卷积
过滤器大小为:1by1
应用:
4.谷歌Inception网络
特点:
Inception层的作用就是代替人工来确定卷积层中的过滤器类型,以及确定是否需要创建池化层。
Inception层:
Inception模块的输入是28-28-192,输出是28-28-256。
为了匹配维度,最大池化使用padding。
Inception的计算成本:
以5-5的CONV为例
乘法次数: 5 5 192 28 28 32=120M
采用1by1卷积作为瓶颈层(中间层),此时乘法次数为12.4M,计算成本下降到1/10。
Inception网络:
其中,池化后通过1by1卷积压缩通道。
Inception网络将Inception模块组合在一起:
其中,编号6和7是额外的最大池化层,用来修改高和宽的维度。
其中,网络的最后几层为全连接层,之后接一个softamax层做预测。
编号2和4对应的分支也是用来做预测。
5.迁移学习
含义:
迁移学习是把公共的数据集的知识迁移到自己的问题上。
以三分类问题为例:
如果数据集很小,可以只softmax层参数,冻结前面所有层。
如果数据集更大点,冻结更少的层。
如果有大量数据,可以把权重初始化,训练整个网络。
规律:数据越来越多,需要冻结的层越少,需要训练的层越多。