VGG 19 笔记
1. ConvNet Configurations
Architecture
图片的输入尺寸是 224×224×3 ,在预处理阶段,每个像素都要减去训练集中所有图片 RGB 值的均值。这样可以保证新的 RGB 值的均值为 0 。
卷积核的尺寸设置为 3×3 ,或者 1×1 。其中图片经过尺寸为 1×1 的卷积核可以看作是在做一个线性变换。
Stride 设置为 1 。Padding 的设置可以让图像经过卷积层之后尺寸不变,也就是说当卷积核尺寸是 3×3 的时候,Padding 设置为 1 。
池化操作采用的是 Max-Pooling,尺寸是 2×2 ,Stride 是 2 ,也就是说不像 AlexNet 那样是重叠的。
没有使用 LRN(Local Response Normalization),因为实验结果表明,LRN 没有改善深度神经网络的表现,反而增加了很多的计算量和计算时间。
Configurations
- 不同配置的深度神经网络最主要的差别在于卷积层的层数不同,从 11 层到 19 层。每一层 Channel 的个数从 64 到 512 。
Discussion
卷积核的尺寸比传统的深度神经网络(比如 AlexNet )都要小。在效果上和性能上( Weights 变少了)都有提升。
使用了三次 ReLU 层,而不是一次。
1×1 的卷积核是增强决策函数非线性性质的一种方法,同时可以不影响其它的层。可以把 1×1 的卷积核看作是在相同维度的空间里面的线性变换,可以对 ReLU 层起到辅助的效果。
比 GoogleNet 的结构更简单。
2. Details
Training
整体的训练过程与 AlexNet 类似。
Learning Rate:学习率 η 初始化为 10−2 。在每次验证集准确率不再提高的时候,η 减小为原来的十分之一。
Momentum 设置为 0.9 。Momentum 代表在 Backward Propagation(BP)过程中沿用「上一次 BP 」的梯度的比例,即下式当中的 α ,这个操作可以让此次的变化梯度适当地沿用上次的,避免权重 w 的剧烈变化。
Δwt+1=−η∂E∂wt+αΔwt
Regularization: 正则化采用了 Weight Decay 的方法,L2 惩罚因子 λ 为 5×10−4 。
正则化的目的是减少深度神经网络的过拟合。假设原始的损失函数为 E0(比如平方误差 12∑(yi−ˆyi)2 ),加入 L2 正则项之后的损失函数为:
E=E0+λ2∑w2i
求梯度可得:
Δw=−η∂E∂w=−η∂E0∂w−ληw
可以看出 L2 正则化是趋向于将权重 w 变小,使得权重对待各个输入更加公平,防止过分地放大某个输入。
同时使用了 Momentum 和 Weight Decay 两种 Tricks 之后的梯度为:
Δwt+1=−η∂E∂wt+αΔwt−ληwt
Dropout:在前两层全连接层实行 Dropout,概率为 0.5 。
Weights Initialisation:权重的初始化对于最后的结果影响很大。如果是随机初始化的话,权重 w 被初始化为服从 N(0,10−2) 高斯分布的随机值,偏置 b 设置为 0 。对于最浅层的网络采用随机初始化,当层数增加之后,沿用浅层相同的层的训练好的参数作为初始化值(Pre-Train 的思想)。
Training Set Augmentation:扩充训练样本。首先像 AlexNet 那样对原始训练集进行水平翻转、 RGB 值强度变化。然后还有对图片进行放大缩小的变换操作。有两种方法,一种是对于不同的尺寸训练不同的分类器。另一种是直接训练一个分类器,每张图片在训练之前会被随机缩放。
Testing
测试方法与 Overfeat 当中类似,待补充。
Implement
该网络通过一个定制的 Caffe 实现,可以同时利用多个 GPU 。GPU 之间通过并行地计算梯度来加速训练。