CNN

Posted on Mar 6, 2020

Convolutional Neural Network

1. 输入层

原始图片,在计算机内用构成像素点的多维矩阵来表示。

2. 隐层

convolution卷积:过滤特征

ReLU线性修正单元:激活函数

polling池化:降低维度并提高模型的容错性

降低模型的参数数目

  1. 局部感知野:每个神经元只需要对局部图像进行感知,然后在更高层将局部的信息综合起来得到全局的信息;

  2. 权值共享:对于每一层来讲,所有神经元对应的权值参数是一样的,同一层下的神经元连接参数只与特征提取的方式有关,而与具体的位置无关。

第一层隐层一般是用来做边缘和曲线检测

第二层隐层对第一层学到的边缘曲线组合得到的一些特征

第三层则会学到一些更复杂的特征

ReLU激活函数

引入非线性激励函数,深层网络具有意义(不再是输入的线性组合,可以逼近任意函数)

为什么采用ReLU函数:1. 采用sigmoid等函数,计算量大,反向传播求误差梯度时涉及除法;2. 对于深层网络,sigmoid函数反向传播时,容易出现梯度消失的情况(sigmoid接近饱和区时,变换太缓慢,导数趋于0,容易造成信息丢失),从而无法完成深层网络的训练;3. ReLU会使一部分神经元的输出为0,造成了网络的稀疏性,并减少了参数的相互依存关系,缓解了过拟合问题的发生。

pooling池化(欠采样)

主要有max、average、sum等不同类型的操作

3. 输出层

经过若干次的卷积+线性修真+pooling,模型会将学到的高水平特征接到一个全连接层,通过softmax函数得到输出。