ITPub博客

首页 > > > 5.2.1.4 池化层

5.2.1.4 池化层

作者:RayChou 时间:2019-12-27 16:27:20 0 删除 编辑

池化层


前言

  池化层在卷及网络中也是一个比较重要的组件,英文叫做Pooling Layer,或者翻译做池层,在一些旧有的CNN网络中喜欢设计的一层处理层。池化层的作用实际上上对Feature Map所做的数据处理又进行了一次所谓的池化处理。我们具体来看看这个池化处理都做了些什么吧。

池化层处理

常见的池化层处理有两种方式,一种叫Max Pooing,一种叫Mean Pooling(也见一些材料上写Average Pooling),顾名思义,一个做了最大化,一个做了平均化。除此之外还有Chunk-Max Pooling、Stochastic Pooling等其它一些池化手段。

Max Pooling就是在前面输出过来的数据上做一个取最大值的处理,比如以核大小为 2×2(kernel_size=[2,2]),且Stride=[2,2]的Max Pooling Filter(滤波器)之后,左上角就出现了这样的变化。临近的4个点取一个最大值称为Max Pooling层中的出储存值。

Average Pooling就是在前面输出过来的数据上做一个取平均值的处理,比如以核大小为 2×2(kernel_size=[2,2]),且Stride=[2,2]的Average Pooling Filter之后,左上角就出现了这样的变化。临近的4个点取平均值输出到Mean Pooling中保存起来,如图所示。

一般来说,池化层被认为有这样几个功能。

第一、它又进行了一次特征提取,所以肯定是能够减小下一层数据的处理量的。不管是Max Pooling还是Average Pooling,对于特征的提取仍然也是有一些直观解释的。比如人对于什么样的值比较敏感,当然比较极端的,特别大或特别小的值比较感兴趣。Max Pooling就能把一张图片上的点进行压缩,只保留一个区域内最大的值,忽略那些较小的值。而Average Pooling的观点不同,认为一个统计平均值才能代表一个范围内的值,因而把一个范围内的平均值“滤波”下来作为Feature。两种方式各有千秋,具体的实验中表现的好坏也会有不同,要具体情况具体对比。

第二、还是由于这个特征的提取,能够有更大的可能性进一步获取更为抽象的信息,从而防止过拟合,或者说提高一定的泛化性。

第三、由于这种抽象性,所以能够对输入的微小变化产生更大的容忍,也就是保持其不变性。这里的容忍包括图形的少量平移、旋转以及缩放等变化。

池化层在卷积神经网络中是一个有用的组件但不是一个必须的组件,一些新的卷积网络在设计的时候也没有池化层出现,这一点请大家注意一下。

池化层的误差传递

有关池化层最后一层要讲的问题是比较有趣,但是从功利主义的角度讲未必很有用——刚才咱们都说现在新的网络里好多都不再用池化层了,那关于它的延展问题重要性肯定也是下降的。那咱们就只说一个问题,就是池化层的误差怎么传递?

我们回想一下,全连接网络中,由于每一层的输入来自于上一层的输出,这样就等于在整个神经网络范围内从入口到出口形成了完整的一个链条。在数学层面去表达就是一个函数套着一个函数,每多过一层网络就多套一层,就这种感觉:

前面推导过,根据链式法则,每一层上的w,也就是上面写的

这些参数都要在一个高维的碗里去挪,挪到保证损失函数最小的那个"碗底"里面去。每次挪多少,靠的是计算偏导数(梯度)来计算斜率,然后乘以学习率 η

得到的。可是有了池化层之后,池化层本身是一个函数,而且这个函数里没有没有待定系数,要么就是把数字做平均,要么就是去最大值,它怎么来"传递"误差?换句话说,通过池化层后的这个函数斜率有什么变化呢?这个很重要哦,因为不知道斜率有多大就不知道前面的 w 挪多少合适。

如果是Average Pooling就非常容易理解,比如 2×2大小的Average Pooling,其实就是每个值乘以了,这跟乘以一个1/4的 w 没区别,套用链式法则很容易解决。

不过Max Pooling表面上看上去是一个“不可导”的函数,但是确实是4个里面挑一个最大的,这种时候相当于有3路都被“砍断”了,只有一路直接“通过去。”这种情况仔细想想也不难操作,不信你听我给你说说。

反正不管在训练中的任何一个时刻,你要调整一个Max Pooling层前面那些w也没必要调整全部,因为当前生效的只有1/4的数据,比如这个图里的"6"。那导致当前网络误差的只跟这个"6"前面的w有关,跟其它的"0"、"2"、"4"就没关系,没关系的话,影响"0"、"2"、"4"的w们就没有挪的必要,只挪"6"前面的w就可以了。梯度大小也不用愁啊,直接求啊,连1/4都不用乘。


小结

  到此,我们完成了卷积整个过程讲解,原来卷积网络也就那么一回事。在下一节中,我们将讲解如何使用卷积网络来做文本分类。如对本节有疑问,欢迎到讨论区和我讨论。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69954080/viewspace-3145887/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
现任金山办公软件人工智能组高级AI研发工程师。多年从事机器学习,特别是NLP自然语言处理算法的研究及开发工作。拥有丰富的软件开发经验,以及丰富的人工智能算法训练平台开发经验。

注册时间:2019-11-14

  • 博文量
    71
  • 访问量
    60567