Structuring Machine Learning Projects - Note 1
优化的方向很多,但是选定更好的目标以及选一些对影响更大的方法,可以更有效提升效果。
1. Setting up you Goal
1.1 单一原则
Orthogonalization 正交化:一次只调整一个变量
Single number evaluation metric: 只设一个优化指标,别想着同时优化准确率、召回率,只优化一个F1会让优化更明确也更好操作
Satisficing and Optimizing metric: 准确率有可能是优化目标,但是有些条件是必须要满足的,比如模型大小和预测时间。
1.2 Train/Dev/Test选择
- 分布:保持三者分布一致是比较好的选择
- Dev/Test大小:尽量用更多的数据作为训练,Dev/Test足够测试即可。
1.3 When to change dev/test sets and metrics
评价指标应该与目标一致,目标变化时可能要考虑更换评价指标。比如:
- 召回率高,但是准确率,用户体验不够好,使用F1可能更佳
- 色情图片的错误率高低可能也会导致体验不好,对色情图片增加额外权重可能更佳(只需要在dev/test中都进行修改)
2. Comparing to human-level performance
2.1 Human-Level Performance
理论最佳值: Bayes Error,无法达到。
Human-level Performance: 在很多问题(自然感知领域,比如图像、文本理解)上可以作为Bayes Error的proxy
接近人类表现会比较快(图像识别一类的任务),但是超越人类表现之后就比较难提升了:
- 比人类表现差的,可以很容易获得标注数据
- 人可以看出错在哪儿,指明改进方向
- 更容易分析Bias/Variance
2.2 Avoidable Bias
Avoidable Bias: Training Error与Bayes Error(如果你知道)或者Human-level Performance(如果你不知道)的差距
定义了Avoidable Bias之后就可以有明确的优化准则了:
- 如果Training Error与Human/Bayes Error差距太大,那么应该优先解决(Avoidable) Bias问题;
- 如果相差不大,但是Training error与Dev Error差距比较大,那么应该优先解决Variance的问题
2.3 Human-Level Performance’
人类级的表现也是有差异的,普通人与专家会有差异,专家团队又可能比专家个人有差异。一般将人类级表现作为Bayes Error的proxy,可以在更好的人类表现估计Bayes Error。
超越人类表现:这个是可能的,比如广告点击预估、推荐系统,这些系统是Structure Learning,并且标注也并不来自人类手工标注。
老师说:这些概念看似很容易,但是不容易精通,觉得自己学懂了还是要醒醒。