深度学习模型训练流程
文章作者:Tyan
博客:noahsnail.com | CSDN | 简书
工作中训练了很多的深度学习模型,目前到了上升到方法论的角度来看了。日常工作中有的人可能已经在遵循方法论做事,可能自己没有注意,有的人可能没有遵循方法论在做事,虽然可能最后的结果差不多,但花费的时间和精力应该会差别很大,当然这是我自己的感受。我们不必完全按照方法论来做,但基本流程跟方法论应该一致。
下面的具体步骤以图像分类,识别图像中的猫为例。
1. 问题定义
问题定义,“what,how,why”中的what,首先要弄清楚自己要干什么,然后调研相关的技术,确定解决方案。例如这一步中我的工作是进行图像分类,问题定义是图像分类——识别猫,相关的技术包括各种分类模型,各种深度学习框架。我选择的是BN-Inception + Caffe。
2. 确定评估标准
根据问题定义,确定了相关技术之后,不要着急动手去做,先确定评估标准,怎么评价模型的好坏,例如分类猫可以通过准确率(Precision)、召回率(Recall)、F1、ROC曲线、AUC面积等。确定了评估标准之后,评估数据集也要准备好。
3. 确定Baseline和Target
- Baseline
有了评估标准后,需要确定一个Baseline,例如可以简单快速的训练一个模型或已经有一个Pretrained Model,在评估数据集上进行评估,得到一个指标作为Baseline,然后在Baseline的基础上进行提高,确定Baseline类似于敏捷开发中的快速原型开发。
- Target
有了Baseline之后,可以确定一个目标,但这个目标不能是拍脑袋出来的,如果你的业务与别人的业务类似,例如色情识别,可以使用大厂(BAT)的模型先在评估数据集上得出一个结果,目标定为达到他们的水平或超过他们的水平。如果不跟别人的业务类似,那么需要根据具体的业务需求确定一个目标。目标还是要有的,起码确定一个方向。
4. 模型训练
模型训练这部分就没太多说的了,深度学习工程师的基本功。
5. 模型评估
将训练的模型在评估数据集上进行评估,分析评估结果,与上一次的模型结果以及Target进行对比。将错误的数据取出来,分析存在的问题,讨论调整的方向,记录实验结果。
6. 模型再训练
重复步骤4、5,直至达到目标。如果模型还不错,可以将模型放到Beta环境测试,分析线上的结果,重复步骤4、5。
7. 服务部署
如果模型在Beta环境也不错,则可以进行线上测试,继续重复步骤4、5,因为有的模型需要不断的进行迭代更新。
参考资料
https://towardsdatascience.com/machine-learning-in-practice-what-are-the-steps-a4b15ee18546