机器学习的一点经验
2017-12-05 本文已影响27人
Shuailong
数据篇
- 对于不熟悉的任务或者数据,一定要小心仔细地检查数据的各种性质、各种分布,对数据的各项指标了如指掌。
- 仔细检查数据的过程中,得到一些重要的直觉,记录下来。
- 数据的预处理非常重要。预处理的时候结合最佳实践和模型需求进行。
模型篇
- 建立模型时,不要急于用代码实现。先和师兄或者导师讨论,充分以后再实现。
- 从最简单的模型开始。一步一步加大模型的复杂性,而不使性能下降。
- 对于复杂的模型,先选取一小部分数据进行检验。小数据拟合的很好以后,再进行大数据的测试。
实现篇
- 代码实现的时候,自上而下/快速迭代同时使用。初期尽量少地使用模块化以保证灵活性。
- 代码实现的时候,如果Github有类似实现,一定先阅读现有的方法。避免重新造轮子/实现过于复杂/实现错误。
- 代码实现的时候进行单元测试。提交代码之前先通过尽量完整的测试。
训练篇
- 先试用最简单的优化器,比如带有动量的梯度下降法,不奏效以后再使用更高阶的优化器。
- 利用好损失曲线和结果曲线,来观察模型的学习过程。如果曲线过于震荡,考虑加大batch的大小。如果在训练集上太难拟合,考虑减少模型参数;增加特征。如果训练集拟合的很好,开发和测试集效果不好,考虑使用十折交叉法检验训练和测试集的分布是否一致。
- 根据曲线来调整学习率。学习率是最重要的超参数之一。
学习篇
- 保证不时阅读顶会论文/最新论文,掌握最新的研究动向。
- 阅读论文和代码实现同步进行,加深对文章的理解,提高实现能力。
其他
- 尽量多地与导师沟通。掌握主动权。频率至少两周一次。
- 对于导师布置的任务,尽可能快速完成。如果屡次不能得到好的结果,一定及时和导师汇报。否则会导致导师不敢把其他的任务交给自己。
- 要一直学习不能松懈。