下面介绍深度学习算法中常用的一些概念。
(1)层(Layer)
神经网络是由多层组成的,层(Layer)就是接受加权输入、经过非线性激励函数变换、作为输出传递给下一层的容器。
一层通常只含一种激励函数,如池化、卷积等等。第一层和最后一层分别称为“输入层”和“输出层”,中间的都称作“隐藏层”。
(2)局部连接(Local connection),权值共享(weight sharing)
图像中某点只有它周边点存在联系,而不是全图。此外,卷积核的权值对图中所有点一致,通过卷积可以得到feature map
(3)池化操作
也是一种降采样的操作,将feature map中的特征进行聚合统计,
max_Pooling:对抽象特征提取较好(如纹理)
average_Pooling:对较形象的特征提取较好(如背景信息)
不用Pooling的替代方案:增加conv的stride以免去pooling操作
(4)激活函数(tanh,relu,sigmoid)
提供网络的非线性建模映射能力,如果没有激活函数,就只是线性映射,相当于多层感知器(MLP)
常见的激活函数对比可参考:https://blog.csdn.net/NOT_GUY/article/details/78749509
(5)全连接运算(inner product)
全连接层的每个点都是与上一层的所有点关联的,是用来把上一层的所有特征关联起来,一般全连接层的参数是比较多的。
(6)LRN(Local Response Normalization)
首次在AlexNet中提出并使用,在该模型中用以提高准确率,但在后来的一些文献中表明该方法其实并不是特别奏效。
一般是用在激活和池化之后,对局部神经元创造竞争机制,使得响应较大的值变得更大,抑制一些响应较小的值(侧抑制)。
函数定义等可参考:https://blog.csdn.net/program_developer/article/details/79430119
(7)BatchNormalization
在使用激活函数前,对特征进行归一化处理,
白化:把输入数据的分布变换到0均值,单位方差的正态分布, 那么数据就会收敛的更快
BatchNorm类似于对神经网络的激活层输入做简略版白化 (随着网络加深和不断训练,激活变换的输入分布会发生偏移,往上下限两端靠近,容易导致低层神经网络的梯度消失,所以可以通过bn把)
详细解释可参考:https://www.cnblogs.com/guoyaohua/p/8724433.html 及 https://blog.csdn.net/hjimce/article/details/50866313
(8)momentum参数理解
梯度下降法中的收敛加速法,带有momentum的时候可以使用较大的learningRate
(9)数据增强(Data Augmentation)
通过一些变换手段增加数据量和场景,从而提高模型的泛化能力,常见的增强技术有:
水平翻转,垂直翻转,旋转
缩放尺度、随机裁剪
加噪声,颜色变换