美文网首页
读书摘要《Machine Learning Yearning》

读书摘要《Machine Learning Yearning》

作者: MingSun_Tse | 来源:发表于2017-07-28 21:07 被阅读107次

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

    Part 01

    1. Why machine learning
    2. 如何用这本书
    3. Prerequisites & Notations
    4. 算法效果与数据量的关系
      数据少的时候,NN的优势并不明显,这时候数据是主要的瓶颈,既然数据少,hand-crafted feature counts more. 而数据越大,NN capacity的优势就越明显。
    算法效果与数据量之间的关系:数据越大,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的重要性。


      开发的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问题要更值得去解决。


      error analysis

    Done.

    相关文章

      网友评论

          本文标题:读书摘要《Machine Learning Yearning》

          本文链接:https://www.haomeiwen.com/subject/wfkflxtx.html