本文主要参考吴恩达的机器学习课程。
一、机器学习中的各种策略:
开发 一个完整的机器学习项目要经历:使用训练集训练模型--->开发集调整模型参数--->测试集测试模型效果--->上线实际使用。
1. 如果模型在训练集上表现不好,可采取的策略有:
选择更大的神经网络(即更复杂的模型),使用AdamOptimizer等替代随机梯度下降法来优化,等等。
2. 如果模型在开发集上表现不好,可采取的策略有:
正则化,dropout(作用相当于正则化), 使用更多的数据作为训练集,等等
3. 如果模型在在测试集上表现不好,可采取的策略有:
使用更多的数据作为开发集,等等
4. 如果模型在现实应用中表现不好,可采取的策略有:
改变开发集或者损失函数,等等
注:不太建议使用early stopping.
二、 评估指标
1. 常用的评估指标有准确率,F-socre等
2. 实际中,可考虑运行时间等其他指标。
三、 指南
选择未来期望会用到的、模型表现较好的数据来作为开发集和测试集,即开发集、测试集应和项目上线后实际应用中的数据来自同一个分布(数据源一致)。反例:不能使用高清图片作为开发集和测试集,然后实际应用大多是识别有很多噪声的图片,这样应用效果可能会不好。
四、训练集、开发集和测试集的划分
1. 传统方式:70%的训练集、30%的测试集(实际应叫开发集);或者60%的训练集,20%的开发集,20%测试集
2. 数据量很大(达到百万以上的级别)时,可考虑98%作为训练集,1%作为开发集,1%作为测试集。
3. 不建议省略测试集
五、 和人类的水平进行比较:
人类在模型任务上特别擅长, 如果你的模型表现不如人类水平,可以做如下工作:
1. 获取人工打过标签的数据
2. 人工分析错误原因:为什么人类作对了?
3. 更好地进行偏差和方差分析:
(1)计算人类的水平和模型在训练集上的错误率和之差deta1,计算模型在训练集上的错误率和开发集上的错误率之差deta2;
(2)如果deta1较大,则说明偏差过大(模型可能欠拟合),可考虑的措施有:
训练更复杂的模型,使用更好的优化算法(Momentum, RMSProp, Adam等), 超参搜索等。
(3) 如果deta2较大,则说明方差过大(模型可能过拟合),可考虑的措施有:
使用更多的数据;正则化,包括L2,dropout, 数据增强(如图片的裁剪/缩放/彩色变换/翻转), 超参搜索等。
4. 机器学习在某些领域已经超越了人类的表现