抛砖引玉+CICC3922
通过实践,本文总结了构建CNN网络模型并优化的一般化建议,这些建议将会在构建高准确率轻量级CNN神经网络模型方面提供帮助。
1)
避免单层神经网络:我们清楚神经网络本身是需要不断抽象出更高级别的纹理,从而得到对我们有价值的识别信息。但这种迭代性并不是十分必要的,因为从实践来看,即使只有单层网络的模型,只要拥有充分数量的神经元,也可以获得较高的准确率。不过该种方式的一个重要缺点就是参数重多,导致整个模型非常巨大。所以要想实现轻量级的CNN神经网络模型,首先应该避免尝试单层神经网络。
2)
减少卷积核的大小:CNN神经网络是通过权值共享的方式,利用卷积运算从图像中提取线性纹理。在提取过程中感受域的尺寸不宜过大,3*3或者1*1等小尺寸的卷积核(滤波器)对于实现轻量级模型是十分必要的。
3)
添加归一化层和验证检查点:归一化层可以调整模型的概率分布得到标准化分布,从而提升迭代和梯度流效果。
4)
添加验证检查点:在迭代的过程中往往准确率是在不断震荡,所以简单使用最后一次迭代的准确率结果是不可取的。通过添加验证检查点,我们可以获得更加客观的准确率结果。
5)
添加Dropout层:Dropout层随机跳过神经网络模型中某些神经元之间的连接,通过随机制造缺陷进行训练提升整个神经网络的鲁棒性。
6)
指定合理的学习率策略:一旦神经网络的准确率饱和,那么学习率应当适当的减少,使得模型跳出局部最优解,并提升模型识别准确率。需要注意的是后两种方式本质上都是通过避免过拟合来提升模型的泛化性能。