检查是否过度拟合
确保你的神经网络在测试数据上表现良好的第一步是验证你的神经网络没有过度拟合。
过度拟合发生在你的模型开始记忆训练数据的值而不是从中学习时。当你的模型遇到一个它以前从未见过的数据时,它无法很好地处理它们。

如何识别你的模型是否过度拟合?你可以交叉检查训练的准确性和测试的准确性。如果训练的准确性远远高于测试的准确性,那么你可以假设你的模型已经过度拟合。你还可以绘制图表上的预测点来验证,有一些技巧可以避免过度拟合:
- 数据正规化(L1或L2);
- Dropout——随机丢弃神经元之间的连接,迫使网络找到新的路径并推广;
- 提早停止——减少神经网络的训练,从而减少测试集中的错误。
超参数调整
超参数是你必须初始化到网络的值,这些值在训练时无法通过网络获知。例如:在卷积神经网络中,一些超参数是核的大小、神经网络中的层数、激活函数、损失函数、使用的优化器(梯度下降,RMSprop)、批量大小、要训练的纪元数量等。主要是通过反复试验获得的。一些最佳实践:
- 学习率——选择最佳学习率非常重要,因为它决定了你的网络是否收敛到最低值。选择最高学习率几乎不会让你达到最低标准,因为你很有可能超越它。因此,你总是在最低点附近,但从来没有收敛到它。选择一个小的学习率可以帮助神经网络收敛到最小值,但需要大量的时间。因此,你必须对网络进行更长时间的训练。较小的学习率也会使网络容易陷入局部最小化,即由于学习率较低,网络将会收敛到局部最小值,并且无法退出。因此,在设定学习率时一定要小心。
- 网络体系结构——没有标准体系结构可以在所有测试案例中为你提供高精度。你必须尝试,尝试不同的体系结构,然后从结果中获得推论,然后再试一次。我建议的一个想法是使用经过验证的架构,而不是构建自己的架构。例如:对于图像识别任务,你有VGGnet,Resnet,Google的Inception网络等等。这些都是开源的,并且已经证明是非常准确的,因此,你可以复制他们的架构并调整它们以达到你的目的。
- 优化器和Loss Function——有无数的选项供你选择。事实上,如果需要,甚至可以定义自定义丢失函数。但常用的优化器是RMSprop,随机梯度下降和Adam,这些优化器似乎适用于大多数用例。如果你的用例是分类任务,那么常用的损失函数是分类交叉熵。如果你正在执行回归任务,均方误差是最常用的损失函数。
- 批处理大小和历元数量——同样,对于所有用例都没有批处理大小和历元的标准值。你必须尝试并尝试不同的,在一般情况下,批量值设置为8,16,32
...历元的数量取决于开发人员的偏好和他/她拥有的计算能力。
- 激活函数——激活函数将非线性功能输入映射到输出。激活函数非常重要,选择正确的激活函数可帮助你的模型更好地学习。如今,整流线性单元(ReLU)是最广泛使用的激活函数,因为它解决了渐变消失的问题。早期的Sigmoid和Tanh是使用最广泛的激活函数。但是,他们遭遇了消失梯度的问题,即在反向传播期间,当它们到达开始层时,梯度会减少。这阻止了神经网络扩大到更多层次的更大尺寸。ReLU能够克服这个问题,因此允许神经网络具有大尺寸。
数据增强技术
如果你正在处理图像数据集,则可以通过剪切图像、翻转图像、随机裁剪图像等来增加训练数据的新图像。这可以为神经网络训练提供不同的示例。
评论列表(0条)