改进神经网络的学习

improve learning of neural network

如果我得到如图所示的训练和验证错误以改进我的神经网络,有人可以帮助我如何处理分类吗?我试着早点停止训练,让验证误差更小,但还是太高了。我得到 62.45% 的验证准确率,但这太低了。数据集是在图像中某处显示对象(未居中)的图像。如果我使用具有相同数量图像的相同网络,但显示的对象始终以主点为中心,则它的验证精度为 95%,

在实现神经网络时可以寻找以下内容:

  1. 数据集问题:

    i) 检查您输入网络的输入数据是否有意义,数据中是否有太多噪音。

    ii) 尝试传递随机输入并查看错误性能是否仍然存在。如果是,那么是时候对您的网络进行更改了。

    iii) 检查输入数据是否有合适的标签。

    iv) 如果输入数据没有打乱并且以特定的标签顺序传递,会对学习产生负面影响。因此,数据和标签一起洗牌是必要的。

    v) 减小批次大小并确保批次不包含相同的标签。

    vi) 过多的数据增强并不好,因为它具有正则化效果,当与其他形式的正则化(权重 L2、dropout 等)结合使用时,可能会导致网络欠拟合。

    vii) 数据必须根据数据的要求进行预处理。例如,如果您正在训练网络进行人脸分类,那么应该将没有背景或几乎没有背景的人脸图像传递给网络进行学习。

  2. 实施问题:

    i) 检查你的损失函数、权重初始化和梯度检查以确保反向传播以适当的方式工作。

    ii) 借助 Tensorboard 等可视化库,可视化每一层的偏差、激活和权重。

    iii) 尝试使用动态学习率概念,其中学习率随着一组设计的时期而变化。

    iv) 通过添加更多层或更多神经元来增加网络大小,因为它可能不足以捕获其标记的特征。