吴恩达第四门-卷积神经网络-第一周7-11学习笔记

吴恩达第四门-卷积神经网络-第一周7-11学习笔记

1.7单层卷积网络

得到卷积神经网络的一层

在这里插入图片描述
首先我们先回顾一下前几堂课的内容,在本周的前部分课程中,我们学习了如何通过两个过滤器卷积处理一个三维图像。通过与两个不同的过滤器进行卷积运算后,我们可以得到两个新的、不同的矩阵。
这两个矩阵各自可以形成一个卷积神经网络层,如上图所示。我们之后要给每个矩阵加上一个偏差,第一个矩阵加的是b1,第二个矩阵加的是b2。根据python的广播机制,最后矩阵中的所有元素都会被加上这样的一个偏差。在利用一个Relu函数(之前的课程中学过的非线性激活函数)进行处理。将得到的两个 4 ∗ 4 4*4 44矩阵堆叠在一起,最后我们可以由一个 6 ∗ 6 ∗ 3 6*6*3 663的矩阵得到一个 4 ∗ 4 ∗ 2 4*4*2 442的矩阵,这就是卷积神经网络的一层。
对照于前向传播中的一步 z [ 1 ] = W [ 1 ] a [ 0 ] + b [ 1 ] , a [ 1 ] = g ( z [ 1 ] ) z^{[1]}=W^{[1]}a^{[0]}+b^{[1]},a^{[1]}=g(z^{[1]}) z[1]=W[1]a[0]+b[1],a[1]=g(z[1])来看,这个例子中66的矩阵就是输入 a [ 0 ] a^{[0]} a[0],Relu函数对应着g()函数,而 W [ 1 ] W^{[1]} W[1]则代表了过滤器。这样就通过神经网络的一层把一个6×6×3维度的 a [ 0 ] a^{[0]} a[0]演化为一个4×4×2维度的 a [ 1 ] a^{[1]} a[1],这就是卷积神经网络的一层。在这个例子中我们用了两个过滤器,如果使用n个过滤器,则最终会得到44*n的矩阵。

关于参数的问题

举个例子,如果我们用了10个过滤器,每个过滤器得到了3*3个参数,再加上一个偏差参数b,总共有28个参数,共计280个参数。
这里需要注意的是,不论输入图片有多大,1000×1000也好,5000×5000也好,参数始终都是280个。用这10个过滤器来提取特征,如垂直边缘,水平边缘和其它特征。即使这些图片很大,参数却很少,这就是卷积神经网络的一个特征,叫作“避免过拟合”。你已经知道到如何提取10个特征,可以应用到大图片中,而参数数量固定不变,在这个例子中只有28个,相对较少。

卷积层的各种标记

在这里插入图片描述

1.8简单卷积网络示例

建立卷积神经网络

在本节中我们举一个深度卷积神经网络的例子。还是以前讲过的猫分类器的例子,我们以一张图片作为输入x,识别分辨出图片中有没有猫,图片的大小是 39 ∗ 39 ∗ 3 39*39*3 39393,其中的高度和宽度都是39,0层的通道数为3。
在这里插入图片描述
在第一层中我们用一个33的过滤器来提取特征,有 f [ 1 ] = 3 f^{[1]}=3 f[1]=3 s [ 1 ] = 1 , p [ 1 ] = 0 s^{[1]}=1,p^{[1]}=0 s[1]=1,p[1]=0,所以高度和宽度用valid卷积。如果用10个过滤器的话,则神经网络下一层的激活值为37×37×10。
在这里插入图片描述
如果还有另一个卷积层,我们采用 5 ∗ 5 5*5 55的过滤器。其中 f [ 2 ] = 5 , s [ 2 ] = 2 , p [ 2 ] = 0 f^{[2]}=5,s^{[2]}=2,p^{[2]}=0 f[2]=5s[2]=2,p[2]=0,且有20个过滤器,输出结果为 17 ∗ 17 ∗ 20 17*17*20 171720
在最后一个卷积层中,我们使用5
5的过滤器,步幅为2,即 f [ 2 ] = 5 , s [ 3 ] = 2 f^{[2]}=5,s^{[3]}=2 f[2]=5s[3]=2,如果使用了40个过滤器,则最后的输出为 7 ∗ 7 ∗ 40 7*7*40 7740

对该卷积神经网络的总结

经过这个卷积神经网络处理后,原本 39 ∗ 39 ∗ 3 39*39*3 39393的输入被提取出了7740个特征。我们可以对该卷积进行处理,可以将其平滑或展开成1960个单元,输出为一个向量。为了预测最终的输出结果,我们可以把这个长向量填充到softmax回归函数中。
在设计一个卷积神经网络时,我们需要对一些超参数进行设置,比如:过滤器的大小、步幅、padding以及使用多少个过滤器。这些将在以后的课程中提到。

典型的卷积神经网络

一个典型的卷积神经网络通常有三层,一个是卷积层,常用Conv来标注。。还有两种常见类型的层,我们留在后两节课讲。一个是池化层,我们称之为POOL。最后一个是全连接层,用FC表示。
在这里插入图片描述
仅适用卷积层也有可能构建出很好的神经网络,但大部分的神经网络架构师也会添加池化层和全连接层。相比卷积层而言,池化层和全连接层更容易实现。

1.9池化层

池化层常用于缩减卷积神经网络的模型的大小,提高其运算速度,和提高所提取特征的鲁棒性。
注:鲁棒性也就是健壮性。

最大池化

在这里插入图片描述
我们将原矩阵拆分为一个 2 ∗ 2 2*2 22的矩阵,输出为每个不同颜色区域的最大元素值。
在这里插入图片描述
上图是一个池化层的例子,像是应用了一个规模为2 的过滤器,用的是一个 2 ∗ 2 2*2 22的过滤器,选用的是 2 ∗ 2 2*2 22的区域,所以步幅是2。
具体计算过程如下图所示:
在这里插入图片描述
我们可以把这个 4 ∗ 4 4*4 44的输入看作是某些特征的集合。其中较大的数字意味着可能探测到了某些特定的特征。比如左上象限,其具有的特征可能是一个垂直边缘,一只眼睛,或是大家害怕遇到的CAP特征。最大化操作的功能就是只要在任何一个象限内提取到某个特征,它都会保留在最大化的池化输出里,如果在过滤器中提取到某个特征,那么就保留其最大值。如果没有提取到这个特征,可能在右上象限中不存在这个特征,那么其中的最大值也还是很小。
在最大池化中,有一组超参数,但并没有参数需要学习,一旦确定了f和s,就是一个固定的运算,梯度下降无需改变任何值。

平均池化

平均池化,顾名思义,就是选取每个过滤器中的平均值填入新的矩阵中,在下图的例子中,紫色区域的平均值是3.75,后面依次是1.25、4和2。这个平均池化的超级参数, f = 2 , s = 2 f=2,s=2 f=2s=2,我们也可以选择其它超级参数。
在这里插入图片描述
一般来说,最大池化比平均池化更常用,但在深度很深的神经网络中,平均池化也有着一些妙用。

对池化层的总结

总结一下,池化的超级参数包括过滤器大小f和步幅s,常用的参数值为 f = 2 , s = 2 f=2,s=2 f=2s=2,应用频率非常高,其效果相当于高度和宽度缩减一半。在大部分情况下,最大池化很少用padding。目前p最常用的值是0,即 p = 0 p=0 p=0。最大池化的输入为 n H ∗ n W ∗ n c n_{H}*n_{W}*n_{c} nHnWnc,假设没有padding,则输出为 [ n H − f s + 1 ] ∗ [ n W − f s + 1 ] ∗ n c [\frac{n_{H}-f}{s}+1]*[\frac{n_{W}-f}{s}+1]*n_{c} [snHf+1][snWf+1]nc(都是向下取整)。
在这里插入图片描述
最大池化只是计算神经网络某一层的静态属性,没有什么需要学习的,它只是一个静态属性。

1.10卷积神经网络示例

在本节视频中,主要举了一个更加复杂的、可以引进全连接层的卷积网络示例。
假设有一张大小为 32 ∗ 32 ∗ 3 32*32*3 32323的RGB模式的图片作为输入,我们要构建一个神经网络实现对手写体数字的识别。
在这里插入图片描述
输入是32×32×3的矩阵,假设第一层使用过滤器大小为5×5,步幅是1,padding是0,过滤器个数为6,那么输出为28×28×6。将这层标记为CONV1,它用了6个过滤器,增加了偏差,应用了非线性函数,可能是ReLU非线性函数,最后输出CONV1的结果。
在这里插入图片描述
然后使用最大池化构建一个池化层,参数 f = 2 , s = 2 f=2,s=2 f=2,s=2,padding为0。最后的输出为 14 ∗ 14 ∗ 6 14*14*6 14146,将该输出标记为POOL1。
在这里插入图片描述
人们发现在卷积神经网络文献中,卷积有两种分类,这与所谓层的划分存在一致性。一类卷积是一个卷积层和一个池化层一起作为一层,这就是神经网络的Layer1。另一类卷积是把卷积层作为一层,而池化层单独作为一层。我们这里用CONV1和POOL1来标记,两者都是神经网络Layer1的一部分。
在这里插入图片描述
我们再为它构建一个卷积层,过滤器大小为5×5,步幅为1,这次我们用10个过滤器,最后输出一个10×10×10的矩阵,标记为CONV2。
在这里插入图片描述
再次做以 s = 2 , f = 2 s=2,f=2 s=2,f=2做最大池化,使矩阵的高度和宽度减半,最后输出为5×5×10,记为POOL2。其中POOL2和CONV2构成第二个卷积层,Layer2。
在这里插入图片描述
而如果对Layer1应用另一个卷积层,过滤器为5×5,步幅是1,padding为0,所以这里省略了,过滤器16个,所以CONV2输出为10×10×16。我们看看CONV2,这是CONV2层。
此时再以 s = 2 , f = 2 s=2,f=2 s=2,f=2做最大池化,高度和宽度减半,果为5×5×16,通道数和之前一样,标记为POOL2。和CONV2一起被称为Layer2。
在这里插入图片描述
5×5×16矩阵包含400个元素,现在将POOL2平整化为一个大小为400的一维向量。我们可以把平整化结果想象成这样的一个神经元集合,然后利用这400个单元构建下一层。下一层含有120个单元,这就是我们第一个全连接层,标记为FC3。这400个单元与120个单元紧密相连,这就是全连接层。它很像我们在第一和第二门课中讲过的单神经网络层,这是一个标准的神经网络。它的权重矩阵为 W [ 3 ] W^{[3]} W[3],维度为120×400。这就是所谓的“全连接”,因为这400个单元与这120个单元的每一项连接,还有一个偏差参数。最后输出120个维度,因为有120个输出。然后我们对这个120个单元再添加一个全连接层,这层更小,假设它含有84个单元,标记为FC4。
在这里插入图片描述
最后,用这84个单元填充一个softmax单元。如果我们想通过手写数字识别来识别手写0-9这10个数字,这个softmax就会有10个输出。
在这里插入图片描述
在神经网络中,一种常见的模式就是一个或多个卷积后面跟着一个池化层,然后在跟着一个或多个卷积层再跟一个池化层,然后是几个全连接层,最后是一个softmax。
每层的参数特征如下图所示:
在这里插入图片描述

总结

一个卷积神经网络包括卷积层、池化层和全连接层。许多计算机视觉研究正在探索如何把这些基本模块整合起来,构建高效的神经网络。

1.11为什么使用卷积?

在这里插入图片描述
从一个例子来看,如果输入是一个 32 ∗ 32 ∗ 3 32*32*3 32323的图片,我们使用了6个大小为 5 ∗ 5 5*5 55的过滤器,输出维度为 28 ∗ 28 ∗ 6 28*28*6 28286。其中 32 ∗ 32 ∗ 3 = 3072 , 28 ∗ 28 ∗ 6 = 4704 32*32*3=3072,28*28*6=4704 32323=307228286=4704。计算权重矩阵,等于 4074 ∗ 3072 4074*3072 40743072,约为1400万,要训练的参数很多。对于更大的图片要训练的参数会更多。而这个卷积每个过滤器对应着25个参数和一个偏差参数,6个过滤器共对应着156个参数。使用卷积层可以大大减少要设定的参数的数量。

卷积神经网络参数少的原因分析

1.参数共享:简单地说,就是一个过滤器被使用多次。一个过滤器会提取某种特征,这种特征检测器可以被用于整张图片,而且提取效果也非常优秀。
在这里插入图片描述
2.使用稀疏连接:
以下图中的矩阵为例,这个0是通过3×3的卷积计算得到的,它只依赖于这个3×3的输入的单元格,右边这个输出单元(元素0)仅与36个输入特征中9个相连接。而且其它像素值都不会对输出产生任影响,这就是稀疏连接的概念。
在这里插入图片描述

将所有层放到一起

在这里插入图片描述
以一个猫分类器为例,以x作为一张训练集中的图片输入, y ^ \hat{y} y^是二进制标记或某个重要标记。核心思想还是要通过梯度下降法来减少代价函数J,从而优化神经网络中的所有参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值