- 在讨论如何调试模型之前,我们先来纠正一个误区。
- 通常理解如何调试模型的时候,我们想到一系列优秀的神经网络模型以及调试技巧。
- 但这里需要指出的是数据才是模型的根本,如果有一批质量优秀的数据,或者说你能将数据质量处理的很好的时候,往往比挑选或者设计模型的收益来的更大。
- 那在这之后才是模型的设计和挑选以及训练技巧上的事情。
- 探索和清洗数据
- 探索数据集是设计算法之前最为重要的一步,以图像分类为例,我们需要重点知道给定的数据集样本类别和各类别样本数量是否平衡,图像之间是否存在跨域问题(例如网上爬取的图像通常质量各异,存在噪声)。
- 若是类别数远远超过类别样本数(比如类别10000,每个类别却只有10张图像),那通常的方法可能效果并不显著,这时候few-shot learning或者对数据集做进一步增强可能是你比较不错的选择。
- 再如目标检测,待检测目标在数据集中的尺度范围是对检测器的性能有很大影响的部分。因此重点是检测大目标还是小目标、目标是否密集完全取决于数据集本身。
- 所以,探索和进一步清洗数据集一直都是深度学习中最重要的一步。这是很多新手通常会忽略的一点。
- 探索模型结果。
- 探索模型的结果,通常是需要对模型在验证集上的性能进行进一步的分析,这是如何进一步提升模型性能很重要的步骤。
- 将模型在训练集和验证集都进行结果的验证和可视化,可直观的分析出模型是否存在较大偏差以及结果的正确性。
- 以图像分类为例,若类别间样本数量很不平衡时,我们需要重点关注少样本类别在验证集的结果是否和训练集的出入较大,对出错类别可进一步进行模型数值分析以及可视化结果分析,进一步确认模型的行为。
- 监控训练和验证误差。
- 首先很多情况下,我们忽略代码的规范性和算法撰写正确性验证,这点上容易产生致命的影响。
- 在训练和验证都存在问题时,首先请确认自己的代码是否正确。
- 其次,根据训练和验证误差进一步追踪模型的拟合状态。
- 若训练数据集很小,此时监控误差则显得格外重要。
- 确定了模型的拟合状态对进一步调整学习率的策略的选择或者其他有效超参数的选择则会更得心应手。
- 反向传播数值的计算,这种情况通常适合自己设计一个新操作的情况。
- 目前大部分流行框架都已包含自动求导部分,但并不一定是完全符合你的要求的。
- 验证求导是否正确的方式是比较自动求导的结果和有限差分计算结果是否一致。
-
所谓有限差分即导数的定义,使用一个极小的值近似导数。
大数据视频推荐:
网易云课堂
CSDN
人工智能算法竞赛实战
AIops智能运维机器学习算法实战
ELK7 stack开发运维实战
PySpark机器学习从入门到精通
AIOps智能运维实战
腾讯课堂
大数据语音推荐:
ELK7 stack开发运维
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通