第七章——深度卷积神经网络
1. 卷积神经网络CNN
卷积层
单个卷积核:局部信息提取,对于所有位置进行扫描,一个卷积核得到一个特征图;
多个卷积核称作多个通道,用于支持不同的特征提取
一维卷积:相应位置加权求和
卷积核尺寸
步幅
边宽与边衬pad
权值共享:一轮扫描中,卷积核参数不变
前向传播后,通过输出端误差进行反向传播优化,多个并行卷积核构成多个通道,提取不同特征
图像尺寸nxn,卷积核尺寸kxk,步幅为s,边衬为p且对称,则特征图大小
$$
\lfloor\frac{n+2p-k}{s} \rfloor+1
$$挤压:对卷积结果进行非线性运算
非线性激活函数:S、Relu
汇集
- 最大汇集max pooling:选择局部区域最大值
- 平均汇集average pooling:选择区域数值平均值
2. 深度卷积神经网络发展历史
2.1 历史介绍
属于是经典中的经典啦~
模型 | 特点 | 年代 |
---|---|---|
LeNet-1 | (卷积)⇢(降采样)⇢(卷积)⇢(降采样)⇢(全连接),针对手写字符问题设计,后来被SVM超过 | 1990 |
AlexNet | 使用局部感受野,权值共享,最大汇集等措施减少参数;数据扩增(利用预训练增加训练样本数目) | 2012 |
VGG | 使用较小的卷积核尺寸和降采样区域;网络提升到最多16-19层 | 2014 |
GoogleNet | 用多个“起始单元”(inception)的小网络模块构成大网络;在基元中采用了多个1x1的卷积核,实现降维和减少计算量;在中间设置两处输出,作为训练辅助 | 2014 |
ResNet | 相邻层合并为一个组合单元,每个单元设一个跨过几层网络的短路连接;𝒙 是本单元的输入,单元格内局部网络映射𝑭(𝒙, 𝒘),是除信号自身外的一个“残差”(residual),则实际输出𝒚:𝒚 = 𝑭(𝒙, 𝒘) + 𝒙 | 2015 |
DenseNet | 上一层得到的特征图不但输出到下一层,而是形成了跨层的密集连接;密集区块(Dense Block):用较少的卷积核,并且大量是1x1 卷积核;进一步拓展为MSDNet:二维的神经网络阵列,并设有中间输出 | 2017 |
…… |
2.2 常用模型训练技巧
非线性激活函数
- sigmoid:两侧导数趋近于0,深度网络的梯度难以回传⇢模型推广性较差
- Relu:缓解梯度消失,使神经网络具有稀疏表达能力;改进形式的Relu使得s<0区域内也有梯度
dropout
- 每一轮的训练中,随机选择部分hidden node输出置零且参数暂时不更新(实质上也是一种正则化的方法)
- 作用:避免某些神经元共同激活,削弱神经元之间的关联适应性,增强推广能力
- 实现细节:适当增加网络宽度,训练时间提升到原来的2-3倍左右
归一化batch normolization
解决问题:训练速度慢、梯度爆炸问题
核心思想:在批量梯度下降中设法使得每一批数据中的分布相同
对于神经网络的每一层输入做归一化运算:
$$
\vec{x_i}=\frac{x_i-u_x}{\sigma}
$$
还需要对特征尺度做调整和平移,提升特征表达能力:
$$
\vec{y_i}=\gamma\vec{x_i}+\beta
$$
数据增强
- 扩增样本数量
- 提高模型推广能力
终止条件
- 过学习提前停止:划分一部分样本为验证集,训练acc提升但是验证集acc降低时候停止训练