【傻瓜攻略】深入学习入门之池化层及激活函数(二)

紧接着上文,二话不说,开始放干货!!大笑

1、池化层

参考博客:https://www.cnblogs.com/believe-in-me/p/6645402.html

https://www.zhihu.com/question/49376084

池化的作用:1、使特征图变小,简化网络计算复杂度

                    2、进行特征压缩,提取主要特征

池化操作一般有两种,一种是Avy Pooling(即Mean-Pooling,求平均值),一种是max Pooling,如下:


如图可见,4*4的矩阵经过2*2的maxpool之后变成2*2的矩阵,由卷积层得到的特征图经过池化之后可以明显减小特征图维度。

注意:池化操作是特征图缩小,可能影响网络的准确度,因此通过增加特征图深度来弥补。


总结:池化的本质就是对特征图进行采样,2N*2N的特征图经过2*2的Max Pooling之后会被压缩到N*N大小

当然还有其他的池化种类:Mean-Pooling,Stochastic-Pooling 等

Pooling 的意义,主要有两点:
其中一个显而易见,就是减少参数。通过对 Feature Map 降维,有效减少后续层需要的参数

另一个则是 Translation Invariance。它表示对于 Input,当其中像素在邻域发生微小位移时,Pooling Layer 的输出是不变的。这就使网络的鲁棒性(这个词是英文词音译过来的,简单来说就是健壮性的意思)增强了,有一定抗扰动的作用。

一般池化都在卷积层之后,有一定的防止过拟合作用。想想啊,特征值少了(用二维空间思考,此时拟合出来的曲线,根据特征值的减少,是不是更加趋于平缓了?是的!)

2、激活函数

讲道理激活函数有很多啊……很多啊……很多啊……emmmm,先从激活函数的作用开始吧。

官方的说法是:用来加入非线性因素的,因为线性模型的表达能力不够。

╮(╯▽╰)╭,官方的说法总是明明每个字都认识,加在一起就不知道什么意思了,那么,以下是个人的非主流理解:


(啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊,被亲友嘲笑将来我会秃头……Ծ‸Ծ)

根据上图可以知道,激活函数大致就是模拟神经元输出,一般输出是一个0~1的值。

当输入激励达到一定强度,神经元就会被激活,产生输出信号。模拟这一细胞激活过程的函数,就叫激活函数。

参考:https://www.zhihu.com/question/63454402 的一个朋友的话。

总结来说:一来是能够增加其非线性。如果没有激活函数,整个网络架构就是矩阵乘以矩阵的线性学习(在二维空间来说,这样没有办法描述一个复杂的曲线,拓展到n维就是一个n维的拟合结果,能够更加逼进真实的东西)。参考:https://blog.csdn.net/chaipp0607/article/details/72824009中的一句话,激活函数在神经网络中的功能即通过对加权的输入进行非线性组合产生非线性决策边界(这句话我读着就觉得绕口,但是看完这个博客之后,你会发现这个最精准的描述激活函数非线性的重要的作用的话。orz,我也绕口了。总之就是说的很精准)。二来激活函数能够总结各个矩阵乘法的输出,得到一个简单的映射,用于决定这个输出在最后输出结果中占权重多大(这是个人理解,就是一个归一化功能)。

辣么,激活函数究竟有哪些呢??

1、Sigmoid

我决定……剩下的那些下一篇博客再介绍……传说中的卡肉?额,卡介绍,嗯!!就是任性(#^.^#)

下一篇我会仔细介绍每个激活函数

猜你喜欢

转载自blog.csdn.net/lyy_sha/article/details/80267457