吴恩达—卷积神经网络(CNN)学习笔记(二)

池化层(Pooling Layers)

在理解池化层的作用之前,我们先来看看池化层是如何工作的。

1.最大池化(Max pooling)

以最大池化为例,我们将一个4×4的原图像分割为4个2×2的子区域,每个子区域中提取最大值即可。

这个过程可以看作一个2×2的过滤器以2为步幅在原图像上滑动,所以这样的最大池化的超参数就定义为f=2,s=2,之前的公式 [�+2�−��+1] 依然可以用来计算池化输出的大小,不过要注意的是,在池化中通常不设置padding值,即p=0。

多通道图像的池化也很容易想象,各通道分别做池化,再将结果叠放在一起。所以池化的输入和输出的通道数是一致的

2.平均池化(Average Pooling)

与最大池化相比,我认为除了输出取子区域内平均值而非最大值以外,没有什么不同,就不再赘述了。

与卷积过程中可以选取不同的卷积核参数相比,池化是一种固定的运算,在确定了超参数后它就不存在继续调整或是训练的需要了。

完整卷积神经网络典型案例

下图是吴教授在课程中举的一个CNN典型案例,其功能是识别32×32的RGB图像中的手写体数字。随网络深度增加,卷积和池化交替进行,其中卷积缩小了图像长宽、增加了图像通道数,池化只缩小图像长宽。相邻的CONV1和POOL1共同组成神经网络的一层,即Layer1,Layer2同样由一个卷积层和池化层组成。Layer3、Layer4是全连接层,分别记为FC3、FC4。

注意图中红色虚线框内的部分,这里表示图像信息由三维展开为一维,但是本质上没有进行任何运算,只是为了将三维图像信息输入其后的全连接层。

图中明确标注的数字(神经网络的层数,卷积核或池化过滤器的大小f、步幅s、个数,全连接层的神经元个数)都是神经网络的超参数,也就是在训练开始前必须人工确定的参数。确定这些超参数最有效的方法是广泛参考别人的案例。

*关于超参数的概念在吴恩达深度学习课程第一课中有详细讲述,如果不清楚这个概念还是需要先补习一下的。

【中英字幕】吴恩达深度学习课程第一课 — 神经网络与深度学习_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com/video/BV164411m79z?p=42​编辑

将这个典型案例中每一层的激活值规模(可以理解为数据的个数)和待训练参数整理成表格:

由表中可以总结出以下经验性规律

  • 对于有效的卷积神经网络,其激活值规模通常随深度增加而逐渐减小,且减小速度不宜过快;
  • 待训练参数集中在全连接层,卷积层中待训练参数较少,而池化层中没有待训练参数(这也就是为什么我在上面写到“池化是一种固定的运算”)。

为什么使用卷积?

为了直观理解卷积网络相对于全连接网络的优势,我们思考这样一种对比:

一个32×32×3的图像经过如下卷积层得到一个28×28×6的图像,在这个卷积层中,我们需要训练的参数有3×5×5×6=450个(如果加上偏置参数就是456个);

然而,如果要用全连接网络实现同样规模的输入输出维度,则需要训练3072×4704即大约1400多万个参数(这里的参数仅包括权重w而不包括偏置b)。

可以看到,即便输入图像还非常小(分辨率32×32),卷积网络和全连接网络在待训练参数规模上的差异已经非常可观了。当处理分辨率更高的图像时,这种差距将会越来越大。

造成这种差距的原因:

  • 参数共享:具有某种特征检测功能的卷积核(例如竖直边缘检测)如果适用于图像的某个区域,那么它也很可能适用于图像的其他区域;
  • 稀疏连接:与全连接网络不同,卷积网络输出的某个参数并不与所有输入参数直接相关。例如下图中,输出矩阵中绿色框和蓝色框中的单个参数只分别于输入矩阵中对应颜色的九个参数直接相关。

卷积神经网络利用以上两种特性大大减少了待训练参数的规模,让我们可以用更小的训练集来训练它。

引自吴恩达—卷积神经网络(CNN)学习笔记(二) - 知乎 (zhihu.com)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值