吴恩达: 机器学习心法 —— 深度学习时代 AI 工程师的技术策略
作者:吴恩达 (Andrew Ng)
1. 为什么需要机器学习策略
提高精度的可能方法:
- 获取更多数据
- 提高数据的多样性
- 让训练过程持续更长时间
- 尝试更大的神经网络
- 尝试更小的神经网络
- 添加正则项
- 改变神经网络的结构
- …
你将会了解到如何选取正确的方法。
2. 如何使用这本书来帮助你的团队
把相关的书页打印出来给你的团队成员看,反正每章就一两页……
3. 预备课程和符号
上过吴恩达在 Coursera 上的机器学习课程就可以了。需要你熟悉什么是监督学习。
4. 规模的扩大推动了机器学习的进展
深度学习 (神经网络) 涉及的许多思想几十年前就有了,为什么现在突然火了起来?最大的原因有两个:
- 数字设备 (电脑、手机等) 的普及产生了大量数据
- 计算规模的扩大
当拥有海量数据并且使用大型神经网络时,能得到最佳性能。
神经网络的架构什么的也很重要,并且有许多创新之处,但属于细节问题了。
5. 开发和测试数据集
大数据时代到来之前,通常的做法是把数据集按三七开随机划分,其中七分是训练数据集,三分是测试数据集。
但如果训练用的数据集跟实际应用场景的数据性质很不一样,就会出大问题。
做出如下定义:
- 训练集 —— 学习算法所用的数据集
- 开发集 —— 用于精细调节参数、特征选取、以及做出其它有关学习算法的决定的数据集。有时也称为保留的交叉验证数据集。
- 测试集 —— 评估算法性能的数据集,不用于调整算法参数
6. 开发数据集和测试数据集应该来自相同的分布
不然会出大问题的……
7. 开发数据集和测试数据集多大才好
开发数据集应该足够大,使得可以区分不同的算法。
测试数据集只要能以较高置信度给出系统性能就可以了。
8. 确立单个评估指标作为优化目标
分类的精度是单个指标,而“准确率和召回率”不是单个指标。可以使用 F1 score (准确率和召回率的调和平均数) 把它们组合成一个数。
单个指标有利于决策。
9. 限制性指标
当指标很多时,可以把其中 \(N-1\) 个作为限制性指标,而优化剩下的一个。
10. 开发集和指标加快迭代
想法 \(\rightarrow\) 代码 \(\rightarrow\) 实验 \(\rightarrow\) 想法 \(\rightarrow\) \(\cdots\)
11. 何时改变开发/测试集和指标
一个星期内准备好初始的开发/测试集和量度指标
如果有分歧,可能意味着数据集和量度指标的选取有问题
12. 小结
- 机器学习是个需要大量迭代的过程