深度学习 专项课程 (三) —— Structuring Machine Learning Projects

Coursera - Structuring Machine Learning Projects - Andrew Ng 学习随笔

The Collection of ML Strategy

1 The Introduction to ML Strategy

  • 总结经验教训避免南辕北辙, 哪些想法值得一试在这里插入图片描述
  • Orthogonalization
    • 追求问题的解耦, 像开车一样, 方向盘控制方向, 油门刹车控制速度
    • Chain of assumptions in ML : Fit training set well on cost function / Fit dev set well on cost function / Fit test set well on cost function / Performs well in real world. 每步都要涉及一些策略, 我们希望每个策略之间耦合性低, 像微波炉旋钮一样. 相反的例子有"Early Stop", Andrew不喜欢这步, 因为将优化和防止过拟合放在了一起.

2 Setting up your goal

  • Single number evaluation metric: Precision (从结果看, 检测正确的正样本数目占检测结果中所有正样本数目的比例) / Recall (从数据集看, 检测正确的正样本数目占数据集中正样本数目的比例) / F1 Score (Precision和Recall的Harmonic Mean) / 算法在不同数据集上的均值 Average
  • Satisficing and Optimizing Metric: 就是优化问题中的优化条件和优化目标的关系, 一个要满足一个要尽可能的小/大
  • Train/dev/test Distribution: Dev/Test 要保持分布一致, 而且最好和是算法要处理的实际数据集的同分布, 因为这两个是保证你是在面向问题靶子解决问题. Choose a dev set and test set to reflect data you expect to get in the future and consider important to do well on. 而Train set决定你解决问题的精度 How well.
    • Train/dev/test 分配比例: 传统小样本机器学习6:2:2, 100w数据集往上的今天, DNN可能是99:0.5:0.5, 测试集只要能足够的Confidence即可. 算法的调试过程中必须有的是Train/Dev
  • 什么时候改变dev/test 和 Metrics: 当你的评估指标不能正确对算法进行正确排序的时候; 当应用场景有新的变化的时候
  • 先确定Metric再分步骤解耦的操作打好性能 —— Goal and Shooting!漫无目标只能延长开发的时间周期

3 Comparing to human-level performance

  • 现状: 算法效果越来越有竞争力, 而且已经有超过人类的一些领域下的算法在这里插入图片描述
  • 先快后慢的原因, 1) 人类水平十分接近理论最好水平(Bayes Error), 超过人类之后算法改进的空间本来就小 2) 现有很多算法是使用人类作为工具来调试算法, 当超过人类之后, 可能再难有其他的工具. 或者说人类难以理解, 这么说可能人类的先验直觉之类可能反而会限制自己, 完全的数据启动, 让计算机自编自导, 可能会超过人类自以为的世界观, 像AlphaGo之类的强化学习, 算法不告诉程序Metric是什么, 只告诉你可能这步更好,bootstrapping, 计算机像左右手互搏一样学到一些人类都不知道的棋路.
  • 在其中, 人类的工具性体现在哪呢? Get labeled data from humans. Gain insight from manual error analysis. Better analysis of bias/variance.
  • Avoidable Bias: 在这里插入图片描述
  • Human-level performance的理解: 不同人是有差距的, 尽可能去发现, 现有最好的结果就认为是当前认为的Human Level. 因为Human level不是目的, 希望知道的Bayes Error才是最终的目的, 任务的结果在人类可理解的角度上来说, 一定存在Bayes这样不可超越的最优解, 而human level是人类可及的最接近bayes的指标, 所有永远取最优.
  • Surpassing human-level performance: 当dev上精度超过人类水平怎么办?当Avoidable Bias是0的怎么办(Training error - human level <= 0), 你需要知道是过拟合了还是确实超过人类了, 你进一步改进的方法和方向就会不在确定, 需要在不参与训练的数据集如test上进行测试等操作, 更多信息再判断, So超过或接近人类之后, 算法改进越来越难. 超过人类水平的任务有 Online advertising / Product recommendations / Logistics (predicting transit time) / Loan approvals, 这些任务基本都是基于Structured data (每个特征都有明确的定义, 而非结构化的数据类似于音频文本之类的) (人类可能没看到这么多数据) 学习的任务, 而不是Natural Perception问题(CV NLP Speech Recognition)
  • Improving Model Performance在这里插入图片描述

4 Error Analysis

  • Look at dev examples to e valuate ideas, 挑选部分出错的样本, 分析各个情况的比例, 选择当前最紧迫的问题去解决. 在这里插入图片描述
  • Cleaning out error analysis: DL algorithms are quite robust to random errors in the training set (数据量大 时间开销大会不值得). Dev / Test 上面如果错误标注的数据影响太大, 则需要改正, 且两个数据集都得改 (不影响分布), 否则就没必要. 注意也要发现那些因为"运气"而对的样本, 比如两次结果不一致.
  • Build your first system quickly, then iterate! 当你进入一个全新的问题领域去部署可靠应用的时候, 首先:
    在这里插入图片描述
    在出现问题的时候再去改进,比如:在这里插入图片描述
    这种方法不适合你经验丰富的领域或有大量论文代码已经可以参考的时候.

4 Mismatched Training and dev/test set:

  • 方法1 Shuffle and partition, 优点: 不在同分布了 缺点: 你真正关心的要处理的分布淹没在大量其他分布的数据中. 因此该方法不常用.
  • 方法2 将dev/test数据集中部分数据集放到训练集中, 训练集中主体还是量最大的那个数据集, 优点缺点和上面方法相反.
  • Mismatch问题的判断: 将training集shuffle之后从中划分一个和dev集大小差不多的training-dev集, 和划分后的training集分布一致但是不参与训练. Human level - train - train_dev - dev - test 看各个数据集上的指标进行分析在这里插入图片描述
  • Mismatch Addressing: Artificial Data Synthesis, 注意模拟之后会不会有过拟合, 人觉得很相似, 不代表模拟出的数据集可能只是一个真实范围下的子集. 在这里插入图片描述

5 Multiple Tasks Learning

  • Transfer learning: 在这里插入图片描述
  • Multi-task learning: 标签设置, 类似Anchor设置问题, 在这里插入图片描述注意anchor-based目标检测是多任务学习,而一般来说, transfer learning 用的更多.

6 End-to-end DL

  • 在这里插入图片描述在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值