如何使用深度神经网络提高验证准确性?

sau*_*sau 8 deep-learning caffe mxnet

我正在尝试构建一个包含13000个训练图像和3000个验证图像的11级图像分类器.我正在使用深度神经网络,正在使用mxnet进行训练.训练准确度正在提高并达到80%以上,但验证准确度达到54-57%且不会增加.这可能是什么问题?我应该增加图像的数量吗?

小智 31

这里的问题是你的网络在某些时候停止学习有用的一般特征,并开始适应训练集的特殊性(在结果中过度拟合).你想"强迫"你的网络继续学习有用的功能,你在这里几乎没有选择:

  1. 使用重量正规化.它试图保持较低的权重,这通常会导致更好的泛化.尝试不同的正则化系数.尝试0.1,0.01,0.001,看看它们对准确性有何影响.
  2. 损坏您的输入(例如,随机替换一些黑色或白色的像素).这样,您就可以从输入中删除信息并"强制"网络以获取重要的常规功能.尝试使用噪声系数来确定您的输入应该被破坏多少.研究表明,15%-45%范围内的任何事情都能很好地发挥作用.
  3. 扩展您的训练集.由于您正在处理图像,您可以通过旋转/缩放等现有图像来扩展您的设置(如建议的那样).您还可以尝试预处理图像(例如,将它们映射到黑白,灰度等等,但这种技术的有效性取决于您的确切图像和类别)
  4. 使用去噪标准预先训练您的图层.在此之前,您需要在微调整个网络之前单独预先训练网络的每一层.预训练"力"层以获取对重建输入信号有用的重要一般特征.例如,查看自动编码器(过去它们已应用于图像分类).
  5. 试验网络架构.您的网络可能没有足够的学习能力.尝试不同的神经元类型,层数和隐藏神经元的数量.确保尝试压缩体系结构(比输入更少的神经元)和稀疏体系结构(比输入更多的神经元).

不幸的是,通过良好推广的网络训练过程涉及大量的实验和几乎人力监督的参数空间的粗暴探索(你会看到许多研究工作采用这种方法).最好为每个参数尝试3-5个值,看看它是否会引导您到达某个地方.

当您将绘图精度/成本/ f1作为迭代次数的函数进行实验并查看其行为时.通常,您会注意到测试集的准确度达到峰值,之后会持续下降.因此,除了良好的架构,正规化,腐败等,您还需要进行大量迭代,以获得最佳结果.

还有一个提示:确保每个训练时期随机化图像的顺序.