吴恩达-深度学习微课-第四课

做完了一个序列模型项目,有时间回来补一下第4课的内容

1.2 边缘检测示例 卷积运算:举例1个6x6的矩阵,经过一个3x3的过滤器矩阵进行卷积运算后,得到的是一个4x4的矩阵:
过程大概是:将过滤器覆盖到原矩阵上,第一步将对应位置元素相乘,第二步将得到的3x3的元素相加,作为结果的第一个元素;第三步按横向、纵向移动过滤器,如法炮制第二步的做法。

吴恩达-深度学习微课-第四课_第1张图片 

1.4 Padding 1、1.2节的卷积操作有两个缺点:
(1)每卷积一次,图像都在变小,将n*n 经过f*f后缩减为 (n-f+1)*(n-f+1)
(2)边缘或角落信息仅被滤波器使用过1次,即从中获取的信息很少
所以要进行padding填充,假设填充1层,即p=1,则卷积后得到的是(n+2p-f+1)*(n+2p-f+1)
2、卷积方式:
(1)valid卷积,即p=0
(2)same卷积,顾名思义让图片卷积前后大小一致,p=(f-1)/2
1.5 卷积步长 即过滤器移动步数,假设步长stride=s
则过滤后的矩阵大小为((n+2p-f)/s)+1

 

1.6 三维卷积 1、过滤器的通道数是必须和图片的通道数一致的;
2、过滤后得到的矩阵跟是二维的,跟二维卷积时一致,因为每一步卷积最终都是相加得到了一个数字;
3、回忆下,卷积运算的目的是为了垂直或是水平或其他角度的检测特征
4、当应用多个过滤器时,过滤后得到的矩阵最后一维就是过滤器的数目;多个过滤器就可以检测多个特征

 吴恩达-深度学习微课-第四课_第2张图片

吴恩达-深度学习微课-第四课_第3张图片 

1.7 单层卷积网络 1、可以对比着标准神经网络结构的一层取理解:
(1)图片是x输入,过滤器是w,加上偏差,加上非线性激活函数,实现从a[0]到a[1]的转变
(2)参数个数大大减小,相比于标准神经网络结构全连接层其参数个数会跟输入有关系,而卷积运算参数大大减少,以一个3*3*3的过滤器举例,假设使用10个过滤器,其参数是(27+1)*10=280个,这无论对于1000*1000的图片还是5000*5000的图片输入都是一样的
(3)规范化标记:见图示,维度关系
2、“if layer l is a convolution layer”意思是这一层权重参数使用过滤器矩阵,线性函数计算方式是用卷积
3、卷积层需要选择确定过滤器大小、padding、卷积步长、过滤器数目

 吴恩达-深度学习微课-第四课_第4张图片

吴恩达-深度学习微课-第四课_第5张图片 

1.8 卷积神经网络示例 随着神经网络计算深度不断加深,通常开始时的图像也要更大一些,初始值为39×39,高度和宽度会在一段时间内保持一致,然后随着网络深度的加深而逐渐减小,从39到37,再到17,最后到7。而通道数量在增加,从3到10,再到20,最后到40。在许多其它卷积神经网络中,你也可以看到这种趋势。
1.9 池化层 1、池化层:也是缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性的一种方式
2、一般常用的池化方式是max pool,average pool用的较少
3、池化层直观上理解也是跟卷积一样拿过滤器去覆盖原图片,不过不同的是并不是取乘积之和而是取区域内的一个最大值,池化后高度和宽度的计算方式跟卷积公式一样,但通道数计算不一样,通道数=输入通道数,因为是每个通道复制同样的池化方式,而不是卷积计算求和
4、定了f,s,输出就定了,所以在反向梯度下降过程中没有参数需要学习
5、常用f=2,s=2 ,实现高度、宽度减半

 吴恩达-深度学习微课-第四课_第6张图片

1.10 卷积神经网络示例 1、因为pool层没有参数,所以通常计算神经网络层数时会把conv层和pool合起来作为1个layer
2、关于如何选定这些参数,常规做法是,尽量不要自己设置超参数,而是查看文献中别人采用了哪些超参数,选一个在别人任务中效果很好的架构,那么它也有可能适用于自己的应用程序
3、常见模式:一个卷积神经网络包括卷积层、池化层和全连接层,随着神经网络深度的加深,高度和宽度都会减小,而通道数量会增加,然后得到一个全连接层。
在神经网络中,另一种常见模式就是一个或多个卷积后面跟随一个池化层,然后一个或多个卷积层后面再跟一个池化层,然后是几个全连接层,最后是一个softmax。

 吴恩达-深度学习微课-第四课_第7张图片

吴恩达-深度学习微课-第四课_第8张图片 

1.11 为什么使用卷积 大大减少参数
1、参数共享(特征检测如垂直边缘检测如果适用于图片的某个区域,那么它也可能适用于图片的其他区域)
2、稀疏连接(输出单元中某个元素仅与输入特征中部分个元素有关。而且其它像素值都不会对输出产生任影响)
2.2 卷积网络示例 一些经典的卷积网络结构,也就是卷积层、池化层、全连接层的不同组合结构
LeNet-5,大概有6万参数
AlexNet,大概有6000万参数
VGG-16,大概有1.38亿个参数
2.3 残差网络 1、ResNets:可以训练很深的网络,100层,1000层
“跳跃连接”
a[l+2]=g(z[l+2]+a[l]),这个a[l]相对于这个公式来说就像是个“残差块”
2、有效原因:
2.5 网络中的卷积及1x1卷积 1、1×1的卷积操作最大的用处是来压缩或保持输入层中的通道数量,甚至是增加通道数量;这点池化层是做不到的,池化层是改变输入的高度、宽度
2.6 Inception网络 1、基本思想是Inception网络不需要人为决定使用哪个过滤器或者是否需要池化,而是由网络自行确定这些参数,你可以给网络添加这些参数的所有可能值,然后把这些输出连接起来,让网络自己学习它需要什么样的参数,采用哪些过滤器组合。但是这带来一个计算成本的问题;
2、为了解决计算成本的问题,就需要合理构建瓶颈层,构建的方法就是利用1*1的卷积层,将通道数量先减小,从而大幅减少乘法运算的次数

 吴恩达-深度学习微课-第四课_第9张图片

 吴恩达-深度学习微课-第四课_第10张图片

吴恩达-深度学习微课-第四课_第11张图片 

2.9 迁移学习 1、计算机视觉是一个经常用到迁移学习的领域
2、具体开展项目的时候,从网上下载一些神经网络开源的实现,
不仅把代码下载下来,也把权重下载下来
3、根据自己手里数据量的大小,使用开源网络的程度不一样:
(1)数据量很小:
冻结开源结构softmax层之前的所有层,根据自己想要的输出换一个softmax层进行训练
(2)数据量中等:将softmax层及其前面几层换成自己的隐藏单元进行训练或者利用开源权重作为初始化,其他前面的层进行冻结
(3)数据量极大:这种情况很少,也很费时间和计算资源(可能几个周几个月),这种情况下仅把下载下来的权重作为参数初始化使用,自己从头到尾训练整个网络
2.11 计算机视觉现状 数据量不足还是是一个普遍问题,所以也会有很多数据扩充的技巧,及大量的手工工程

 吴恩达-深度学习微课-第四课_第12张图片

吴恩达-深度学习微课-第四课_第13张图片 

 

你可能感兴趣的:(深度学习,深度学习)