CNN
普通神经元
CNN
-
根据上图 ConvNet 可分4大层:
-
Image Input:为减小后续BP算法处理的复杂度,一般用灰度图像。
- 也可用RGB彩色图像,此时输入图像是原始图像的RGB三通道。
- 对于输入的图像像素分量为 [0, 255],
- 为计算方便一般需归一化,
- 如果用sigmoid**函数,则归一化到[0, 1],
- 如果使用tanh**函数,则归一化到[-1, 1]。
-
(Convolution Layer):
- 特征提取层(C层) - 特征映射层(S层)。
- 将上一层的输出图像与本层卷积核(权重参数w)加权值,加偏置,通过一个Sigmoid函数得到各个C层,
- 然后下采样(池化)subsampling得到各个S层。
- C层和S层的输出称Feature Map(特征图)
-
光栅化(Rasterization):为了与传统的多层感知器MLP全连接,把上一层的所有Feature Map的每个像素依次展开,排成一列。
-
多层感知器(MLP):
- 最后一层为分类器,一般用Softmax,
- 若是二分类,也可用Logistic Regression,SVM,RBM。
详细地展开2卷积层:
-
C层:特征提取层
- 每个神经元的输入与前一层的局部接受域相连,
- 并提取该局部的特征。
- 一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来。
-
S层:特征映射层。
- 网络的每个计算层由多个特征映射组成,每个特征映射为一个平面,平面上所有神经元的权值相等。
- 特征映射结构采用sigmoid作为卷积网络的**,使得特征映射具有位移不变性。
-
此外,由于一个映射面上的神经元共享权值,
- 因而减少了网络自由参数的个数。
-
CNN中的每一个卷积层都紧跟着一个
- 用来求局部平均与二次提取的计算层,
- 这种特有的两次特征提取结构减小了特征分辨率。
-
此外,由于一个映射面上的神经元共享权值,
- 因而减少了网络自由参数的个数,
- 降低了网络参数选择的复杂度。
-
CNN中的每一个特征提取层(C层)
- 都紧跟着一个用来
- 求局部平均与二次提取的计算层(S层),
- 这种特有的两次特征提取结构使网络在识别时对输入样本有较高的畸变容忍能力。
卷积
- 卷积层是卷积核在上一级输入层上通过逐一滑动窗口计算而得,
- 卷积核中的每一个参数都相当于传统神经网络中的权值参数,
- 与对应的局部像素相连接,将卷积核的各个参数与对应的局部像素值相乘之和,
- (通常还要再加上一个偏置参数),
- 得到卷积层上的结果。如下图所示。
CNN三大核心思想
了解三个关于CNN的核心特性之后,来看看CNN的具体是怎么运作的。
-
为了从原始图像得到C层,
- 需把原始图像中的每一个像素值作为神经网络当中一个神经元,
- 那么这里把原始输入图像一字排开,作为输入层。
- 通过BP反向传播算法计算好的权值参数(卷积核)去计算C层对应的的每一个像素的值
-
上图我们得到了C层,也就是提取特征后得到特征层,
- 需对特征层处理减少特征数量,
- 进一步抽取高层特性,
- 因此需要进步特征映射层(S层)。
- 下图的pooling层(S层)使用了max pooling算法,pooling核为2x2,
- 没有重叠部分,取每4个像素中最大的一个像素值作为新的像素值。