魏老师学生——Cecil:学习卷积神经网络CNN之旅
数据增强(Data augmentation)
增加训练数据可提升算法准确率。
理由:避免过拟合从而增大网络结构。对于有限的训练数据,可以通过变换从已有训练数据集生成新数据,从而扩大训练数据。
数据增强的方法
- 水平翻转(旋转)
- 随机裁剪(crop采样)
在图像中不同位置剪出相同大小的图片。AlexNet训练中,对左上、右上、左下、右下、中间做5次裁剪,再翻转,得到训练图片。防止了网络结构过拟合。(under ubstantial overfitting) - fancy PCA
——在训练集像素值的RGB颜色空间内进行PCA,得到了RGB 空间的3主方向向量和3特征值,分别是p1、p2、p3、λ1、λ2、λ3.
——对每幅图像的每个像素加上如下变化:
αi:满足均值为0、方差为0.1的随机变量。 - 其他办法:
平移变换
旋转 / 仿射变换
高斯噪声、模糊处理
对颜色数据增强:图像亮度、饱和度、对比度变化
样本不均衡
有的类别图像很多,有的很少。
处理办法:增加小众类别的图像数据量。
类别不均衡数据处理办法:Label shuffle
训练和测试安排协调
- 一般训练时做数据增强,测试时不做数据增强。产生了不协调。
- 实验发现,训练的最后几个迭代移除数据增强,用传统方法测试会提升一些性能。
- 在训练时采用尺度和长宽比做数据增强,测试时采取同样变化,也可以得到性能提升。
多尺度训练,多尺度测试。
梯度下降(Gradient descent)—常用的CNN模型参数求解法
- 三类方法:(每次参数更新使用样本数量的多少)
批量梯度下降(batch gradient descent,BGD)
小批量梯度下降(mini-batch gradient descent,MBGD)
随机梯度下降(stochastic gradient descent,SGD) - 求参数过程 = 最小化损失函数过程。
例:一个含有D个训练数据的数据集,损失函数就如下:
A:单个样本a的损失。b:权重。c:正则项。
批量梯度下降 BGD
梯度下降法最原始形式。
具体思路:更新每一参数时都使用所有样本进行更新。对大数据量是不能采用这种方法的。
小批量梯度下降 MBGD
设计目标:保证算法训练过程较快,且保证最终参数训练的准确率。
每次更新参数时使用b个样本。
随机梯度下降 SGD
具体思路:更新每一参数时都随机使用部分样本进行更新。