本次学习笔记主要记录学习深度学习时的各种记录,包括吴恩达老师视频学习、花书。作者能力有限,如有错误等,望联系修改,非常感谢!
结构化机器学习项目(一)- 机器学习策略
- 一、为什么是ML策略(Why ML Strategy)
- 二、正交化(Orthogonalization)
- 三、单一数字评估指标(Single number evaluation metric)
- 四、满足和优化指标(Satisficing and optimizing metrics)
- 五、训练/开发/测试集划分(Train/dev/test distributions)
- 六、开发集和测试集的大小(Size of dev and test sets)
- 七、什么时候该改变开发/测试集和指标?(When to change dev/testt sets and metrics)
- 八、为什么是人的表现(Why human-level performance)
- 九、可避免偏差(Avoidable bias)
- 十、理解人的表现(Understanding human-level performance)
- 十一、超过人的表现(Surpassing human-level performance)
- 十二、改善你的模型表现(Improving model performance)
第一版 2022-05-31 初稿
一、为什么是ML策略(Why ML Strategy)
1.收集更多数据
2.训练集多样性
3.梯度下降训练算法
4.使用规模更大或更小神经网络
5.Adam优化算法
6.更大或更小的神经网络
7.dropout或L2正则化
8.修改网络架构:修改激活函数、改变隐藏单元的数目
二、正交化(Orthogonalization)
正交化是电视设计师设计这样按钮,每个按钮都只调整一个性质。
汽车同样。
1.在成本函数上不能很好拟合训练集
2.发现算法对开发集的拟合很差
3.开发集做的好,但在测试集做的不好
4.无法给猫的图片应用用户提供良好的体验,需要改变开发集和成本函数。
一般不用early stopping,但同时改善开发集表现
三、单一数字评估指标(Single number evaluation metric)
查准率(分类器中有多少真的是猫)、查全率(对于真猫来说,分类器正确识别百分比)、F1 Score(结合P和R)
开发团队一般,有一个定义明确的开发集来测量查准率和查全率,再加上一个单一数值评估指标。
C看起来不错
四、满足和优化指标(Satisficing and optimizing metrics)
可以将准确度和运行时间组合成一个整体评估指标。
或选一个分类器,最大限度提高准确度,但要满足时间要求。
或考虑N个指标,有时其中一个作为优化指标是合理的,剩下N-1个是满足指标。
五、训练/开发/测试集划分(Train/dev/test distributions)
开发集,也叫作development set,有时称为保留交叉验证集(hold out cross validation set)。
如图例子,如何设立开发集和测试集?
可以选择其中四个区域,如前四个构成开发集,其他四个构成测试集。事实糟糕透了。建议让开发集和测试集来自同一分布。
可能花几月时间表现并不佳,建议将所有数据随机洗牌,放入开发集和测试集,这样都来自同一分布。
一团队三个月瞄准一个目标,三月后换个目标崩溃了。
选择这样的开发集和测试集,能够反映未来会得到的数据,,认为很重要的数据。
六、开发集和测试集的大小(Size of dev and test sets)
全部数据70/30比例分成训练集和测试集;
或训练集、开发集、测试集分为60/20/20;
在现在时代,一百万样本,98训练集,1开发集D,1测试集T
只有训练集和开发集。
总结:大数据时代,70/30不再适用,现在流行大量数据分到训练集,少量分到开发集和测试集。以前经验法是为了确保开发集足够大,达到目的,评估不同想法,A好还是B好。测试集是评估最终的成本偏差。
七、什么时候该改变开发/测试集和指标?(When to change dev/testt sets and metrics)
使用指标为分类错误率,A更好些。但A由于某些情况会推送不良图片,所以为了公司,A更好。
分类错误率指标应写成如图形式。m_dev是开发集例子数,y_pred表示预测值,I表示一个函数:统计出里面表达式为真的样本数。
上述指标会把不良和正确图片一视同仁,加上权重项w,若图片x不是不良图则w=1;若是,则可能是10甚至100。若希望归一化常数,可加上。
评估指标意义在于告知哪个分类器更适合。
1.清楚如何定义一个指标来衡量你想做的事情的表现,完全独立的一步
2.然后分开考虑如何改善系统在这个指标上的表现。可能逼近目标时,学习算法针对某个成本函数优化。
如何定义J不重要,关键在于正交化思路
两个猫分类器A和B,另一个指标和开发集测试集出问题的例子,图片取景专业性。
最好不要在没有评估指标和开发集时跑太久。
八、为什么是人的表现(Why human-level performance)
1.因深度学习,机器学习变得更好;
2.可以精心设计机器学习系统的工作流程。
随着时间推移,继续训练算法时,可能模型越来越大,数据越来越多,但是性能无法超过某个理论上限,这就是所谓的贝叶斯最优错误率(Bayes optimal error),有时写作Bayesian。
为什么超越人类表现时,进展变慢?
1.人类水平在很多任务中离贝叶斯最优错误率不远,超越人类表现后没太多空间改善;
2.表现比人类差,实际上可用某些工具来提高性能,超越人类表现工具就不好用了。
人更好可以让人标记数据
九、可避免偏差(Avoidable bias)
人类错误率1%,学习算法达8%训练错误率和10%开发错误率。重点放在减少偏差上,比如训练更大神经网络或跑久点梯度下降。
第二列第二个例子:需专注减少方差,可以试试正则化。
把这个差值,贝叶斯错误率或者贝叶斯错误率的估计和训练错误率之间的差值称为可避免偏差。
十、理解人的表现(Understanding human-level performance)
对放射科图像作出分类判断,如图有四类:
若水平超过一个放射科医生就可以有部署价值了。
训练误差与开发误差之间的差值可以衡量或者估计学习算法的方差问题有多严重。
第一个例子,取1%就是4%,取0.5%就是4.5%,差距是1%,在这种情况应专注于减少偏差,如培训更大网络。
第二个例子,差距4%,减少方差,如正则化或获取更大训练集。
第三个,用0.5%估计贝叶斯错误率关系很大,表明偏差方差都可能存在。这种情况只出现在算法训练很好时。
十一、超过人的表现(Surpassing human-level performance)
左第一个例子
右第二个例子,不知减少偏差还是减少方差
十二、改善你的模型表现(Improving model performance)
监督学习达到实用:
1.算法对训练集拟合很好
2.推广到开发集和测试集也好
减少可避免偏差:规模更大模型 或 训练更久 或 用更好的优化算法,Momentum/RMSprop 或 更好的算法,Adam。或新神经网络架构 或 更好的超参数。
方差是问题时,更多数据 或 正则化,L2/dropout 或 数据增强 或 不同神经网络架构 或 超参数搜索
1