学习笔记_卷积神经网络
卷积神经网络
一、绪论
1.卷积神经网络的应用
无处不在的卷积神经网络
基本应用
分类 检索 检测 分割
人脸识别(face recognition)
人物表情识别
图像生成
图像风格转化
自动驾驶
2.传统神经网络vs卷积神经网络
深度学习三部曲
Step1:
Neural Network(搭建神经网络结构)
Step2:
Cost Function(找到一个合适的损失函数)
交叉熵损失(cross entropy loss), 均方误差(MSE)
Step3:
Optimization(找到一个合适的优化函数,更新参数)
反向传播BP
随机梯度下降(SGD)
损失函数的相关概念
传统神经网络可以应用在计算机视觉上,为什么还需要卷积神经网络?
全连接网络处理图像的问题
参数过多:权重矩阵的参数太多->过拟合
(过拟合出现的现象:例如要让机器识别出狗,但是由于测试数据大量都是同一种狗的图片,这样机器就很有可能无法识别出来)
卷积神经网络的解决方法:
局部关联,参数共享
(参数共享可以降低参数量,使得模型更好训练)
相同之处:
二、基本组成结构
- 卷积
一维卷积
一维卷积经常用在信号处理中,用于计算信号的延迟累积
假设一个信号发生器在时刻t发出一个信号xt,其信号的衰减率为fk,即在k-1个时间步长后,信息衰减为原来的fk倍
卷积是什么?
卷积是对两个实变函数的一种数学操作。
在图像处理中,图像是以二维矩阵的形式输入到神经网络的,因此我们需要二维卷积
涉及到的基本概念:
Input:输入
Kernel/filter:卷积核/滤波器
Weights:权重
Receptive field:感受野
Activation map:特征图
Padding
Depth/channel:深度
Output:输出
Padding通过补零实现卷积
卷积的可视化理解
不同的卷积核关注不同的信息
- 池化
保留了主要特征的同时减少参数和计算量,防止过拟合,提高模型泛化能力。
它一般处于卷积层与卷积层之间,全连接层与全连接层之间
Pooling的类型:
Max pooling:最大值池化
Average pooling:平均池化
- 全连接
全连接/FC layer:
两层之间所有神经元都有权重链接
通常全连接层在卷积神经网络尾部
全连接层参数量通常最大
小结:
- 一个典型的卷积网络是由卷积层、池化层、全连接层交叉堆叠而成
- 卷积是对两个实变函数的一种数学操作
- 局部关联,参数共享
- 未加padding时输出的特征图大小:(N-F)/stride + 1
- 有padding时输出的特征图大小:(N+padding*2-F)/stride+1
- Pooling的类型:Max pooling:最大值池化,Average pooling:平均池化
- 全连接:通常全连接层在卷积神经网络尾部
三、卷积神经网络典型结构
- AlexNet
卷积神经网络典型结构——AlexNet
Alex之所以成功,原因在于:
大数据训练:百万级ImageNet图像数据
非线性激活函数:ReLU
防止过拟合:Dropout, Data augmentation
其他:双GPU实现
优点:
解决了梯度消失的问题(在正区间)
计算速度特别快,只需要判断输入是否大于0
收敛速度远快于sigmoid
DropOut(随机失活)
训练时随机关闭部分神经元,测试时整合所有神经元
隐式的模型集成
数据增强(data augmentation)
平移、翻转、对称
随机crop。训练时候,对于256*256的图片进行随机crop到224*224
AlexNet分层解析
第一次卷积:卷积——ReLU——池化
第二次卷积:卷积——ReLU——池化
第三次卷积:卷积——ReLU
第四次卷积:卷积——ReLU
第五次卷积:卷积——ReLU——池化
第六层:全连接——ReLU——DropOut
第七层:全连接——ReLU——DropOut
第八层:全连接——SoftMax
- ZFNet
网格结构与AlexNet相同
将卷积层1中的感受野大小由11 X 11 改成 7 X 7,步长由4改为
卷积层3、4、5中的滤波器由384,384,256改成512,512,1024
- VGG
VGG是一个更深网络
8 layers(AlexNet) -> 16——19(VGG)
ILSVRC TOP 5
先训练前11层,将参数固定住再训练后面的
- GoogleNet
网络总体结构:网络包含22个带参数的层(如果考虑pooling层就是27层),独立成块的层总共由约有100个
参数量大概是AlexNet的1/12
没有FC层
Native Inception
计算复杂度过大
Inception V2
Inception V3
降低参数量
增加非线性激活函数:增加非线性激活函数使网络产生更多独特特,表征能力更强,训练更快
Stem部分(Stem network)
卷积——池化——卷积——卷积——池化
多个Inception堆叠
输出:没有额外的全连接层(除了最后的类别输出层)
辅助分类器:解决由于模型深度过深导致的梯度消失的问题
- ResNet
残差学习网络(deep residual learning network)
2015年ILSVRC竞赛关键,top5错误了从6.7%->3.57%
深度有152层
残差思想:去掉相同的主体部分,从而突出微小的变化
可以用于训练非常深的网络
参考文献