作者:吴恩达 (Andrew Ng)

来源

1. 为什么需要机器学习策略

提高精度的可能方法:

  • 获取更多数据
  • 提高数据的多样性
  • 让训练过程持续更长时间
  • 尝试更大的神经网络
  • 尝试更小的神经网络
  • 添加正则项
  • 改变神经网络的结构

你将会了解到如何选取正确的方法。

2. 如何使用这本书来帮助你的团队

把相关的书页打印出来给你的团队成员看,反正每章就一两页……

3. 预备课程和符号

上过吴恩达在 Coursera 上的机器学习课程就可以了。需要你熟悉什么是监督学习。

4. 规模的扩大推动了机器学习的进展

深度学习 (神经网络) 涉及的许多思想几十年前就有了,为什么现在突然火了起来?最大的原因有两个:

  • 数字设备 (电脑、手机等) 的普及产生了大量数据
  • 计算规模的扩大

当拥有海量数据并且使用大型神经网络时,能得到最佳性能。

神经网络的架构什么的也很重要,并且有许多创新之处,但属于细节问题了。

5. 开发和测试数据集

大数据时代到来之前,通常的做法是把数据集按三七开随机划分,其中七分是训练数据集,三分是测试数据集。

但如果训练用的数据集跟实际应用场景的数据性质很不一样,就会出大问题。

做出如下定义:

  • 训练集 —— 学习算法所用的数据集
  • 开发集 —— 用于精细调节参数、特征选取、以及做出其它有关学习算法的决定的数据集。有时也称为保留的交叉验证数据集。
  • 测试集 —— 评估算法性能的数据集,不用于调整算法参数

6. 开发数据集和测试数据集应该来自相同的分布

不然会出大问题的……

7. 开发数据集和测试数据集多大才好

开发数据集应该足够大,使得可以区分不同的算法。

测试数据集只要能以较高置信度给出系统性能就可以了。

8. 确立单个评估指标作为优化目标

分类的精度是单个指标,而“准确率和召回率”不是单个指标。可以使用 F1 score (准确率和召回率的调和平均数) 把它们组合成一个数。

单个指标有利于决策。

9. 限制性指标

当指标很多时,可以把其中 \(N-1\) 个作为限制性指标,而优化剩下的一个。

10. 开发集和指标加快迭代

想法 \(\rightarrow\) 代码 \(\rightarrow\) 实验 \(\rightarrow\) 想法 \(\rightarrow\) \(\cdots\)

11. 何时改变开发/测试集和指标

一个星期内准备好初始的开发/测试集和量度指标

如果有分歧,可能意味着数据集和量度指标的选取有问题

12. 小结

  • 机器学习是个需要大量迭代的过程