• Machine Learning Yearning

    1. Why Machine Learning Strategy

  • 为什么要选择策略,因为一个机器学习的project,我们可以有很多思路,譬如
    • 增加图片
    • 收集更多不同的训练数据集
    • 增加训练时长
    • 训练一个更多的网络
    • 训练一个更小的网络
    • 尝试添加正则化(如L2正则化)
    • 改变神经网络的结构(激活函数, 隐藏单元个数等等)
    • 。。。
  • 所以,面对如此多的ideas,如果我们选择了好的ideas,那么我们就会事半功倍。本书会告诉我们,对于大多数的机器学习问题,哪些ideas是有效的,哪些ideas是无效的。这便是所谓的机器学习的策略。

2. How to use this book to help your team

  • 简单来说,你可以把这本书打印出来,给你的teammates看,然后告诉他们,为什么你会推荐这样的机器学习策略。要知道,对于策略中优先次序的小小改变可能会对你团队的生产效率有巨大的影响。

3. Prerequisites and Notation

4. Scale drives machine learning progress

  • 大多数的深度学习思想已经被提出来数十年了,为什么现在才其作用呢?
  • 最重要的2大推动
    • 数字数据爆炸式增长
    • 计算力爆棚

5. Your development and test sets

  • 就拿识别猫的项目做例子。我们通常在网上爬了一批猫(正例)和非猫(反例),然后把他们7/3比例划分训练集和测试集。就这样,我们训练了一个在训练集和测试集上表现比较好的模型。
  • 然而,当我们部署到手机上的时候,发现效果真的非常差。原因是用户从手机上上传的图片可能是非常差,像素低,模糊,亮度低。但是你的训练集和测试集是从网上爬取的,这两套图片是属于不同的分布的。
  • 另外,传统的数据划分大都是7/3。这在做demo时是有效的,但实际应用上往往是一个bad idea。
  • dev set和test set的主要目的是指导你的团队如何对机器学习系统作出重大的改变的。
  • 总结来说,得保证训练的和实际上的数据是同分布的。这一点非常重要。

6. Your dev and test sets should come from the same distribution

  • 切记一点,你的训练集和测试集应该来自同一分布。
  • 如果你的团队做到了以上这一点,然而你的模型在训练集上的变现非常好,而在测试集上的表现非常差,那么我们可以清楚的知道,模型已经对训练集overfit了。最直接的解决方案是增加更多的训练集数据。
  • 但是,如果你的训练集和测试集是来自不同的分布, 而且又发生了上一条的情况的话,这样的情况比较不明朗。可能的原因是:
    • 对训练集(dev set)overfit
    • 测试集比训练集更难拟合。你的算法尽力了。
    • 测试集没必要那么难,所以你对训练集上做的大部分努力都是白费的。
  • 事实上,在一个分布上训练得到的模型在其他的分别上有强的泛化能力,这是一个很重要也很难的研究课题。但是现实中,如果我们是开发某一个特定的领域的应用,那么专注于同一分布的数据集来我们来说更有效,更有意义。

7. How large do the dev/test sets need to be ?

  • dev set size : 一般是100~10,000之间。
  • test set size : 一般是总数据集的30%,但是现在是要大到足够给出系统性能的一个较高的置信。

8. Establish a single-number evaluation metric for your team to optimize