卷积神经网络CNN
卷积神经网络(CNN)是一种常见的深度学习架构,受生物自然视觉认知机制启发而来。 卷积神经网络与普通神经网络的区别在于,卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接。
什么是卷积
卷积:物理意义是:一个函数(如:单位响应)在另一个函数(如:输入信号)上的加权叠加。
数学是指两个函数的卷积运算
卷积神经网络组成
数据输入层( Input layer)
输入数据处理:
去均值(把输入数据各个维度都中心化到0)
归一化( 幅度归一化到同样的范围)
PCA(降维去相关)
白化(白化是对数据每个特征轴上的幅度归一化)
卷积计算层(CONV layer)
深度(depth):如彩色图像的深度是3(R,G,B三层深度)
步长(stride):是指卷积矩阵移动的距离
0填充(zero-padding):是指需要保持卷积层的输出的原图像的长和宽不变是需要在原图像周围添加0元素来保持卷积矩阵可以合理的移动端到边界
窗口(receptive field):数据窗(滤波器)的矩阵的大小
参数共享机制:每个神经元连接滤波器的权重是相同的
局部关联, 每个神经元可以看作是一个滤波器,而且只关注一个特性,有效降低了需要估算权重的个数
卷积:一组固定的权重和不同的窗口内的数据做内积, 线性乘积 求和。
经过卷积计算后, 长宽不变, 深度会加深.
ReLU激励层(ReLU layer)
将卷积层的输出结果做非线性映射,常见的激励函数:
sigmoid, tanh, relu, leaky relu, elu,,maxout
池化层(Pooling layer)
常见的是max pooling和avgragepooling,
进行压缩进一步提取出有效的特征
全连接层 (FC layer)
通常位于卷积神经网络的尾端, 将所有神经元的权重都连接输出到传统的机器学习算法,作为"输入层"
输出层( Output layer)
传统机器学习的输出
上图为Alex的CNN结构图。我们可以看到CNN将原图像经过不断的conv, relu, pooling后, 提取出关键的特征, 降低数据的维度, 图像长度和宽度不断变小,深度不断加深, 直到FC全连接层,变为一维数据后经过传统的机器学习输出结果,该模型采用了2-GPU并行结构,即第1、2、4、5卷积层都是将模型参数分为2部分进行训练的。在这里,更进一步,并行结构分为数据并行与模型并行。数据并行是指在不同的GPU上,模型结构相同,但将训练数据进行切分,分别训练得到不同的模型,然后再将模型进行融合。而模型并行则是,将若干层的模型参数进行切分,不同的GPU上使用相同的数据进行训练,得到的结果直接连接作为下一层的输入。
输入:224×224大小的图片,3通道
第一层卷积:11×11大小的卷积核96个,每个GPU上48个。
第一层max-pooling:2×2的核。
第二层卷积:5×5卷积核256个,每个GPU上128个。
第二层max-pooling:2×2的核。
第三层卷积:与上一层是全连接,3*3的卷积核384个。分到两个GPU上个192个。
第四层卷积:3×3的卷积核384个,两个GPU各192个。该层与上一层连接没有经过pooling层。
第五层卷积:3×3的卷积核256个,两个GPU上个128个。
第五层max-pooling:2×2的核。
第一层全连接:4096维,将第五层max-pooling的输出连接成为一个一维向量,作为该层的输入。
第二层全连接:4096维
Softmax层:输出为1000,输出的每一维都是图片属于该类别的概率。
卷积神经网络的优缺点
优点: 1. 对高维数据处理无压力
2.不用做特征工程
3.输出效果好
缺点: 1.需要调参
2.需要大量样本
3.可解释性不强