更多深度文章,请关注:https://yq.aliyun.com/cloud
作者:Thomas Johnson,位于芝加哥
大家可以去GitHub看项目。
本文尝试从在2016年深度学习暑期学校中Andrew Ng的“应用深度学习的基本要点”谈话中总结了他的推荐机器学习工作流程。任何错误或误解都是我自己的观点。
从此开始
1.在你的任务上衡量一个人的表现
2.你的训练和测试数据来自相同的分布吗?
- 是的
- 不是
如果你的训练和测试数据来自相同的分布
1.打乱并将您的数据分成训练/开发/测试集
Ng建议训练/开发/测试拆分约70%/ 15%/ 15%。
2.测量你的训练错误和开发集错误,并计算偏差和方差
计算你的偏差和方差为:
偏差=(训练集错误) - (人为错误)
方差=(开发集错误) - (训练集错误)
3.你的偏差值高吗?
高偏差的例子:
错误类型 |
错误率 |
人为错误 |
1% |
训练集错误 |
5% |
开发集错误 |
6% |
在进入下一步之前修正高偏差。
4.你有高方差吗?
高方差的例子:
错误类型 |
错误率 |
人为错误 |
1% |
训练集错误 |
2% |
开发集错误 |
6% |
一旦你解决了高方差,那么你完成了!
如果你的训练和测试数据不在同一分布上
1.拆分你的数据
如果你的训练和测试数据来自不同的分布,请确保至少您的开发和测试集是从相同的分布。你可以这样做,采取你的测试集,并使用一半作为开发和一半作为测试。
把你的训练集中的一小部分(称之为“训练-开发”),并将您的测试数据分解为开发和测试:
训练(分布1) |
测试(分布2) |
||
训练 |
训练-开发 |
开发 |
测试 |
2.测量你的错误,并计算相关指标
计算这些指标,以帮助你了解你的工作重点:
错误类型 |
公式 |
偏差 |
(训练错误)-(人为错误) |
方差 |
(训练-开发错误)-(训练错误) |
训练/测试不匹配 |
(开发错误) - (训练-开发错误) |
开发错误 |
(测试错误) - (开发错误) |
3.你有高偏差吗?
高偏差的例子:
错误类型 |
错误率 |
人为错误 |
1% |
训练集错误 |
10% |
训练-开发错误 |
10.1% |
开发集错误 |
10.2% |
在进入下一步之前修正高偏差。
4.你有高方差吗?
高方差的例子:
错误类型 |
错误率 |
人为错误 |
1% |
训练集错误 |
2% |
训练-开发错误 |
10.1% |
开发集错误 |
10.2% |
在进入下一步之前修正高方差。
5.你有训练/测试不匹配吗
训练/测试不匹配的例子:
错误类型 |
错误率 |
人为错误 |
1% |
训练集错误 |
2% |
训练-开发错误 |
2.1% |
开发集错误 |
10% |
在进入下一步之前修正训练/测试不匹配。
6.你是否过度拟合你的开发集?
过度拟合开发集的例子:
错误类型 |
错误率 |
人为错误 |
1% |
训练集错误 |
2% |
训练-开发错误 |
2.1% |
开发集错误 |
2.2% |
测试错误 |
10% |
一旦你解决了拟合开发集,那么你完成了!
如何修正高偏差
Ng提出了这样一种修正高偏差模型的方法:
- 尝试一个更大的模型
- 尝试更长时间的训练
- 尝试一个新的模式架构(这可能很难)
如何修复高方差
Ng提出了一些修正高方差模型的方法:
- 获取更多数据
- 这包括数据合成和数据扩充
- 尝试添加正则化
- 尝试提前停止
- 尝试新的模型架构(这可能很难)
如何修复训练/测试不匹配
Ng建议用这种方式来修正一个具有高训练/测试不匹配的模型:
- 尝试获得更多与你的测试数据类似的数据
- 尝试数据合成和数据扩充
- 尝试新的模型架构(这可能很难)
如何解决过度拟合你的开发组
Ng建议只有一种方式来修复设备过度配置:
- 获取更多的开发数据
据推测,这也将包括数据合成和数据增加。
以上为译文
文章原标题《Deep Learning Project Workflow》,作者:Thomas Johnson,译者:tiamo_zn,审校:李烽。
文章为简译,更为详细的内容,请查看原文
时间: 2024-12-03 12:32:31