(本文并不能完全彻底介绍卷积神经网络,只是根据自己的理解来进行记录,其实是为了加深自己的印象以及为以后复习提供支持;若要深刻理解见参考博文)
从神经网络到卷积神经网络
为什么?
1.对于人工神经网络,如果输入数据维度较高、神经元较多、隐藏层较多这些都会导致参数过多,而参数的过多会导致模型训练速度慢。
2.人工神经网络随着层数的不断增加,如果层数过多容易产生过拟合。
卷积神经网络是让神经元进行部分学习,然后在合成。其实是一种分布式思想。
每一层的神经元,其实只和上一层里某些小区域进行连接,而不是和上一层每个神经元全连接。
卷积神经网络的结构
卷积神经网络主要的的3层:
- 卷积层
- Pooling层
- 全连接层
具体来说:
- 输入层(Input层)
- 卷积层(CONV层)
- 激励层
激励函数有Sigmoid、Tanh、ReLU、Leaky ReLU、ELU、Maxout。
激励函数在实际应用的使用:
1.不要用Sigmoid
2.首先尝试ReLU,速度快,但要做观测,避免挂掉
3.如果2失效,用Leaky ReLU或Maxout - 池化层(Pooling层)
池化方法:Max pooling 和 average pooling。池化层主要是进行下采样,达到数据压缩的目的。
下图为采用max pooling方法得到结果。
- 全连接层(FC层)
结构示例 (针对图像)
我们继续拿CIFAR-10数据集举例,一个典型的该数据集上的卷积神经网络分类器应该有[INPUT - CONV - RELU - POOL - FC]的结构,具体说来是这样的:
- INPUT[32*32*3]包含原始图片数据中的全部像素,长宽都是32,有RGB 3个颜色通道。
- CONV卷积层中,没个神经元会和上一层的若干小区域连接,计算权重和小区域像素的内积,举个例子可能产出的结果数据是[32*32*12]的。
- RELU层,就是神经元激励层,主要的计算就是max(0,x),结果数据依旧是[32*32*12]。
- POOLing层做的事情,可以理解成一个下采样,可能得到的结果维度就变为[16*16*12]了。
- 全连接层一般用于最后计算类别得分,得到的结果为[1*1*10]的,其中的10对应10个不同的类别。和名字一样,这一层的所有神经元会和上一层的所有神经元有连接。
总结一下:
- 一个卷积神经网络由多种不同类型的层(卷几层/全连接层/RELU层/POOLing层等)叠加而成。
- 每一层的输入结构是3维的数据,计算完输出依旧是3维的数据。
- 卷积层和全连接层包含训练参数,RELU和POOLing层不包含。
- 卷积层,全连接层和POOLing层包含超参数,RELU层没有。
卷积神经网络的优缺点
优点:
- 共享卷积核,对高维数据处理无压力
- 无需手动选取特征,训练好权重,即得特征
- 分类效果好
缺点:
- 需要调参、需要大样本量,训练最好用GPU
- 物理含义不明确
典型的CNN
- LEnet
- AlexNet——用的较多,深度适中
- ZFNet
- VGG——较深,人脸识别效果好
神经网络常用框架
1.caffe
Model Zoo中有大量预训练好的模型供使用。
2.Mxnet
对显存利用率非常高;
定义网络层简单。
3.TensorFlow
可视化方便,实时监控;
数据和模型并行化好,速度快。
4.另外:theano、Keras、Torch
参考:https://blog.csdn.net/han_xiaoyang/article/details/50542880