吴恩达深度学习课程第四课 — 卷积神经网络(第一周)

可以先看下面的资料对卷积神经网络有个大概的了解:从零开始搭建神经网络(五)卷积神经网络(CNN)(转载)
一文搞定卷积神经网络——从原理到应用
1.1边缘检测基本原理
(1)下图为检测的垂直边缘和水平边缘。
在这里插入图片描述
在这里插入图片描述
上图是对这个6×6的图像进行卷积运算(对应数相乘再相加,方框移一个步长)从而实现垂直边缘探测,此处*是卷积的标志。中间的这个3x3的矩阵被理解为过滤器,在论文它有时候会被称为核。最后得出4x4的矩阵。

(2)为什么这个可以做垂直边缘检测呢?
在这里插入图片描述
这是一个简单的6×6图像,左边的一半是10,右边一般是0。如果你把它当成一个图片,左边那部分看起来是白色的,像素值10是比较亮的像素值,右边像素值比较暗,我使用灰色来表示0,尽管它也可以被画成黑的。图片里,有一个特别明显的垂直边缘在图像中间,这条垂直线是从黑到白的过渡线,或者从白色到深色。

在这个6×6图像的中间部分,明亮的像素在左边,深色的像素在右边,就被视为一个垂直边缘,卷积运算提供了一个方便的方法来发现图像中的垂直边缘。

(3)更多边缘检测内容

  • 区分正边和负边(由亮到暗与由暗到亮的区别)
    由亮到暗:
    在这里插入图片描述
    由暗到亮:
    在这里插入图片描述

  • 垂直边缘过滤器与水平边缘过滤器以及其他过滤器
    在这里插入图片描述
    在这里插入图片描述Sobel的过滤器,它的优点在于增加了中间一行元素的权重,这使得结果的鲁棒性会更高一些。Scharr过滤器,它有着和之前完全不同的特性,实际上也是一种垂直边缘检测,如果你将其翻转90度,你就能得到对应水平边缘检测。

  • 把这9个数字当成参数的过滤器
    在这里插入图片描述
    相比上面所说的单纯的垂直边缘和水平边缘,它可以检测出45°或70°或73°,甚至是任何角度的边缘。所以将矩阵的所有数字都设置为参数,通过数据反馈,让神经网络自动去学习它们,我们会发现神经网络可以学习一些低级的特征,例如这些边缘的特征。

1.2卷积运算的基本操作
(1)padding(填充)

  • 进行padding的原因:

如果向上述直接进行卷积操作话会有两个缺点,第一个缺点是每次做卷积操作,你的图像就会缩小,从6×6缩小到4×4,你可能做了几次之后,你的图像就会变得很小了,可能会缩小到只有1×1的大小。你可不想让你的图像在每次识别边缘或其他特征时都缩小,这就是第一个缺点。
在这里插入图片描述

第二个缺点时,如果你注意角落边缘的像素,这个像素点(绿色阴影标记)只被一个输出所触碰或者使用,因为它位于这个3×3的区域的一角。但如果是在中间的像素点,比如这个(红色方框标记),就会有许多3×3的区域与之重叠。所以那些在角落或者边缘区域的像素点在输出中采用较少,意味着你丢掉了图像边缘位置的许多信息。
为了解决这些问题,你可以在卷积操作之前填充这幅图像。

  • 填充图像
    在这里插入图片描述至于选择填充多少像素,通常有两个选择,分别叫做Valid卷积Same卷积

Valid卷积意味着不填充,这样的话,如果你有一个的nxn图像,用一个fxf的过滤器卷积,它将会给你一个(n-f+1)x(n-f+1)维的输出。
另一个经常被用到的填充方法叫做Same卷积,那意味你填充后,你的输出大小和输入大小是一样的。因此如果你有一个nxn的图像,用p个像素填充边缘,输出的大小就是这样的(n+2p-f+1)x(n+2p-f+1)。如果你想让n+2p-f+1=n的话,使得输出和输入大小相等,如果你用这个等式求解p,那么p=(f-1)/2。所以当f是一个奇数的时候,只要选择相应的填充尺寸,你就能确保得到和输入相同尺寸的输出。

习惯上,计算机视觉中,f通常是奇数

在这里插入图片描述
(2)设置卷积步长
在这里插入图片描述
输出图片大小向下取整。

(3)立方体卷积
上述卷积方式针对二维图片(灰度图片),下面的图片是有色彩图片(3维立方体)的卷积过程。
在这里插入图片描述

在这里插入图片描述
你要做的就是把这个3×3×3的过滤器先放到最左上角的位置,这个3×3×3的过滤器有27个数,27个参数就是3的立方。依次取这27个数,然后乘以相应的红绿蓝通道中的数字。先取红色通道的前9个数字,然后是绿色通道,然后再是蓝色通道,乘以左边黄色立方体覆盖的对应的27个数,然后把这些数都加起来,就得到了输出的第一个数字。后面的计算也是如此。
在这里插入图片描述
最后一个维度叫做通道数或者深度。上图用6×6×3的图像,然后卷积上这两个不同的3×3的过滤器,得到两个4×4的输出,它们堆叠在一起,形成一个4×4×2的立方体,这里的2的来源于我们用了两个不同的过滤器。

1.3卷积网络卷积层工作原理
(1)单层卷积网络
本小节主要讲述卷积神经网络的某一卷积层的工作原理,以及如何计算某一卷积层的激活函数,并映射到下一层的激活值。
在这里插入图片描述
下图为L层各个变量的维度情况。
在这里插入图片描述

  • L为卷积层层数,用上下标H和来W记图片的高度和宽度。
  • 这一层的输入是上一层的激活值。
  • 输出图像中的通道数量就是神经网络中这一层所使用的过滤器的数量,因此,输出通道数量就是输入通道数量。
  • 权重也就是所有过滤器的集合再乘以过滤器的总数量。
  • 每个过滤器都有一个偏差参数,它是一个实数。

(2)多层卷积层维度变化在这里插入图片描述
这张39×39×3的输入图像就处理完后,为图片提取了7×7×40个特征,计算出来就是1960个特征。然后对该卷积进行处理,可以将其平滑或展开成1960个单元。平滑处理后可以输出一个向量,其填充内容是logistic回归单元还是softmax回归单元,完全取决于我们是想识图片上有没有猫,还是想识别K种不同对象中的一种,用y^表示最终神经网络的预测输出。

1.4池化层
除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性,我们来看一下。
(1)最大池化(max pooling)
执行最大池化的树池是一个2×2矩阵。执行过程非常简单,把4×4的输入拆分成不同的区域,我把这个区域用不同颜色来标记。对于2×2的输出,输出的每个元素都是其对应颜色区域中的最大元素值。相当于f=2,s=2。
在这里插入图片描述

(2)平均池化
该方法选取的不是每个过滤器的最大值,而是平均值。
在这里插入图片描述
在这里插入图片描述
池化的超级参数包括过滤器大小f和步幅s,常用的参数值为f=2,s=2,应用频率非常高,其效果相当于高度和宽度缩减一半。也有使用f=3,s=2的情况。至于其它超级参数就要看你用的是最大池化还是平均池化了。你也可以根据自己意愿增加表示padding的其他超级参数,虽然很少这么用。最大池化时,往往很少用到超参数padding,当然也有例外的情况。

1.5卷积神经网络示例
在这里插入图片描述
人们发现在卷积神经网络文献中,卷积有两种分类,这与所谓层的划分存在一致性。一类卷积是一个卷积层和一个池化层一起作为一层,这就是神经网络的Layer1。另一类卷积是把卷积层作为一层,而池化层单独作为一层。人们在计算神经网络有多少层时,通常只统计具有权重和参数的层。因为池化层没有权重和参数,只有一些超参数。这里,我们把CONV1和POOL1共同作为一个卷积,并标记为Layer1。

最后结果将POOL2平整化为一个大小为400的一维向量。我们可以把平整化结果想象成这样的一个神经元集合,然后利用这400个单元构建下一层。下一层含有120个单元,这就是我们第一个全连接层,标记为FC3。这400个单元与120个单元紧密相连,这就是全连接层。
在这里插入图片描述
有几点要注意,第一,池化层和最大池化层没有参数;第二卷积层的参数相对较少,前面课上我们提到过,其实许多参数都存在于神经网络的全连接层。观察可发现,随着神经网络的加深,激活值尺寸会逐渐变小,如果激活值尺寸下降太快,也会影响神经网络性能。

1.6为什么使用卷积神经网络
和只用全连接层相比,卷积层的两个主要优势在于参数共享和稀疏连接,举例说明一下。
在这里插入图片描述
假设有一张32×32×3维度的图片,这是上节课的示例,假设用了6个大小为5×5的过滤器,输出维度为28×28×6。32×32×3=3072,28×28×6=4704。我们构建一个神经网络,其中一层含有3072个单元,下一层含有4074个单元,两层中的每个神经元彼此相连,然后计算权重矩阵,它等于4074×3072≈1400万,所以要训练的参数很多。虽然以现在的技术,我们可以用1400多万个参数来训练网络,因为这张32×32×3的图片非常小,训练这么多参数没有问题。如果这是一张1000×1000的图片,权重矩阵会变得非常大。我们看看这个卷积层的参数数量,每个过滤器都是5×5,一个过滤器有25个参数,再加上偏差参数,那么每个过滤器就有26个参数,一共有6个过滤器,所以参数共计156个,参数数量还是很少。
在这里插入图片描述

卷积网络映射这么少参数有两个原因:
一是参数共享。观察发现,特征检测如垂直边缘检测如果适用于图片的某个区域,那么它也可能适用于图片的其他区域。也就是说,如果你用一个3×3的过滤器检测垂直边缘,那么图片的左上角区域,以及旁边的各个区域(左边矩阵中蓝色方框标记的部分)都可以使用这个3×3的过滤器。
第二个方法是使用稀疏连接,我来解释下。这个0是通过3×3的卷积计算得到的,它只依赖于这个3×3的输入的单元格,右边这个输出单元(元素0)仅与36个输入特征中9个相连接。而且其它像素值都不会对输出产生任影响,这就是稀疏连接的概念。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值