第3.1章 卷积神经网络CNN-不同层的作用
- 一、Convolution(CONV)
- 二、Pooling(POOL)
- 三、Fully Connected(FC)
- 四、Activation Function
- 五、Batch Normalization(BN)
【详见】卷积网络中三种类型的层
一、Convolution(CONV)
作用: 通过卷积层中卷积核运算,提取卷积核希望提取的特征。
二、Pooling(POOL)
作用: Andrew Ng 对池化层的作用是这样解释的:“ConvNets often also use pooling layers to reduce the size of the representation, to speed the computation, as well as make some of the features that detects a bit more robust”。即减小图像大小、加速计算、使其检测出的特征更加健壮。
三、Fully Connected(FC)
作用: 分类
四、Activation Function
【详见】第1.2章 神经网络中隐藏层、偏置单元、激活函数的作用(使用激活函数的原因)
作用: 为了得到更复杂的函数关系
五、Batch Normalization(BN)
【摘自】深度学习中 Batch Normalization为什么效果好?—— 答主:言有三
【摘自】帮助理解:参数优化方法
1)BN背景:
- 在深度学习中,因为网络的层数非常多,如果数据分布在某一层开始有明显的偏移,随着网络的加深这一问题会加剧(这在BN的文章中被称之为internal covariate shift),进而导致模型优化的难度增加,甚至不能优化。所以,归一化就是要减缓这个问题。(防止“梯度弥散”)
- 随机梯度下降法(SGD)对于训练深度网络简单高效,但是需要人为选择参数,使用BN之后,可以不需要那么刻意的慢慢调整参数。
2)BN的本质原理: 在网络的每一层输入的时候,插入了一个归一化层,也就是先做一个归一化处理(归一化至:均值0、方差为1),然后再进入网络的下一层。
如果是仅仅使用归一化公式,对网络某一层A的输出数据做归一化,然后送入网络下一层B,这样是会影响到本层网络A所学习到的特征的。
比如网络中间某一层学习到特征数据本身就分布在S型激活函数的两侧,强制把它归一化处理后,相当于这一层网络所学习到的特征分布被搞坏了,这可怎么办?
于是文献使出了一招惊天地泣鬼神的招式:变换重构,引入了可学习参数γ、β,这就是算法关键之处。
3)BN作用: 通常BN网络层用在卷积层后,用于重新调整数据分布。
4)BN带来的好处:
- 减轻了对参数初始化的依赖,这是利于调参的朋友们的。
- 训练更快,可以使用更高的学习率。
- 一定程度上增加了泛化能力,dropout等技术可以去掉。