读书摘要《Machine Learning Yearning》

目前书更新到03部分,电子版下载:百度网盘,密码:orgv

Part 01

  1. Why machine learning
  2. 如何用这本书
  3. Prerequisites & Notations
  4. 算法效果与数据量的关系
    数据少的时候,NN的优势并不明显,这时候数据是主要的瓶颈,既然数据少,hand-crafted feature counts more. 而数据越大,NN capacity的优势就越明显。
读书摘要《Machine Learning Yearning》_第1张图片
算法效果与数据量之间的关系:数据越大,NN的优势越明显
  1. 分数据集
    对于dev与test set,一定要选取最终应用场景的,而不是简单地把手头有的数据分成三份,这是目标导向(想吃什么做什么饭),而不是资源导向(有什么菜做什么饭)。只有dev与test数据分布是一样的时候,从dev中调的参数才能真实反映test set的情况。而这种情况下,dev好,test却坏,那么就只有一种可能:overfitting了dev set,解决办法:增加dev的数据量。

dev set的数据量一般在:1k-1w examples。大约1w个 examples能detect 0.1%的improvement。对于成熟的机器学习系统,performance提升0.01%也是值得的,毕竟关乎利润。

  1. dev与test set应该分布一样

  2. 分test set
    数据量少的情况,一般dev/test set:30%。大数据时代:上亿的数据总量,没必要分出30%这么多来做dev/test set,够用就好。

  3. 单值优化指标
    优化的指标最好只有一个,多个目标同时优化,有时候难以判断孰优孰劣。例如recall与precision是两个经常矛盾的指标,解决办法:可以把recall与precision合并成一个数F1-score = 2/((1/precision)+(1/recall)),即precision和recall的几何平均。

ps. 召回率/查全率recall、精度/查准率precision、虚检率false positive rate、漏检率miss rate

对于一个二分类系统,按照predict和ground truth可以分为四类:

  • true positive(predict = 1,label = 1)
  • false positive(predict = 1,label = 0)
  • true negative(predict = 0,label = 0)
  • false negative(predict = 0,label = 1)

pos/neg表示预测的是1/0,而true/false表示看了label之后对预测肯定还是否定:如果label和预测的一致,即表示肯定;如果label和预测的相反,即表示否定。

  • 查全率 = tp / (tp + fn) // 是1的有没有全找出来
  • 漏检率 = fn / (tp + fn) // 是1的漏检了多少
  • 查准率 = tp / (tp + tn) // 找对的当中,1占多少
  • 虚检率 = fp / (tp + fp) // 找出来是1的中,其实不是1的有多少
  1. satisficing metric and optimizing matric
    Running time、model storage这些在一定范围内不是unbearable就可以了,这种metric属于satisficing metric。accuracy这种越高越好,而不是在一个范围内就okay,属于optimizing matric。

再例如,在语音识别中,false positive(没唤醒它结果它自己醒了)可以作为satisficing metric,而false negative(我想唤醒它,结果它没反应)必须作为optimizing metric来优化。而在人脸识别中,false positive(不是数据库中人却放进去了)必须作为optimizing metric,false negative(是数据库中的人却没有识别出来)可以作为satisficing metric。

  1. 开发
    强调dev set与metric的重要性。


    读书摘要《Machine Learning Yearning》_第2张图片
    开发的loop:越多的iteration,开发速度越快
  2. 何时换dev/test set与metric
    一般开发一个项目,在第一周分好数据集,确定metric,时间不要太长不要过早优化。但对于比较成熟的DL应用,可以时间长一点。

当根据metric在dev set上得到的结果好,但是实测却不好,那么可能有:

  • 实际场景的数据分布和dev/test的分布不一样 → 用能反映真实场景的数据
  • overfit dev set → 扩大dev set
  • metric错了 → 用能反映真实目标的metric
  1. 总结
  • 根据最终的应用场景来选dev/test set的分布
  • dev与test的分布应该一样
  • 单值优化指标
  • 开发:快速迭代
  • 准备搞一个新项目?尽可能快地建立dev/test set和metric,快快上手
  • 7/3分train与dev/test set。大数据下dev/test set够用就行了,不必非要30%。够用是指,可以检测出这种0.1%的improvement
  • 发现dev/test set和metric不合适,及时更换

Part 02

  1. Error Analysis
    假如,发现猫的分类中有一些狗的图片。该不该去画几个月时间去想办法在这些狗的图片上进一步改进?

在做之前,先进行简单的error analysis:把分错的那些图片抽样一下,,看看其中狗的图片占多少,譬如5%。假设原来的错误率是10%,即100张图片中10张分错了,而这里面有0.5张是狗的图片,现在把这些剔除掉,错误率仍然有9.5%。这就意味着,即使花了几个月时间完美解决了狗分错的问题,正确率也只能提升0.5%。这种情况,花几个月时间去解决狗分错的问题就不太值得。而如果error analysis中发现狗的图片占了50%,那么花比较多的经历去解决,还是比较值得的。

Part 03

  1. Error Analysis中同时评测多个idea
    从分错的图片中抽样100张图片,做这样一个error analysis,这样就知道great cat和blurry比dog问题要更值得去解决。


    读书摘要《Machine Learning Yearning》_第3张图片
    error analysis

Done.

你可能感兴趣的:(读书摘要《Machine Learning Yearning》)