机器学习训练秘籍(笔记)

2021-08-10  本文已影响0人  阿凯被注册了

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

算法准确度还不够好:获取更多数据、多样化的训练数据集、增加迭代次数、更多层数/隐藏元/参数、正则化。

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

3. 先修知识与符号说明

当前具备实用价值的大部分机器学习算法都来自于监督学习。

4. 规模驱动机器学习发展

近期神经网络发展的主要因素有两个:数据可用性(数字化产生了海量可用数据)和计算规模(有能力训练出规模足够大的神经网络);

目前来说,提升算法性 能的更加可靠的方法仍然是训练更大的网络以及获取更多的数据;

在小数据集情况下,传统算法是否会表现得更好,取决于人们如何进行特征选择工程。

5. 验证集和测试集的定义

训练数据集的分布与人们最终所关心的分布情况往往不同;

验证集和测试集的使命就是引导你的团队对机器学习系统做出最重要的改变;

使用实际的用户数据对开发集和测试集进行更新;

不要武断地认为测试集分布和训练集分布是一致的。

6. 验证集和测试集应该服从同一分布

假设开发了一套能在验证集上运行性能良好,却在测试集上效果不佳的系统;如果验证集和测试集的分布相同,那么算法在验证集上过拟合了,解决方案是去获取更多的验证集数据;

但是如果验证集和测试集服从不同分布:

构建机器学习应用并非易事,而验证集和测试集分布的不匹配又会引入额外的不确定性。

7. 验证集和测试集应该有多大?

通常来说,开发集的规模应该在 1,000 到 10,000 个样本数据之间,而当开发集样本容量为 10,000 时,你将很有可能检测到这 0.1% 的性能提升;

它的规模应该大到使你能够对整体系统的性能进行一个高 度可信的评估;

即使开发集和测试集中样本的绝对数量一直在增长, 可总体上分配给开发集和测试集的数据比例正在不断降低。可以看出,我们并不需要将开发集 和测试集的规模提升到远远超过评估算法性能所需的程度,也就是说,开发集和测试集的规模 并不是越大越好。

8. 使用单值评估指标进行优化

多值评估指标提高 了在算法之间进行优劣比较的难度;

当你需要在多个分类器之间进行选择时,使用单值评估指标将帮助你更快速地作出决定;

取平均值或者加权平均值是将多个指标合并为一个指标的最常用方法之 一。

9. 优化指标和满意度指标

先要求它们满足一定的值或范围,下一步才是定义一个 “优化” 指标;

10. 通过开发集和度量指标加速迭代

建立一个机器学习系统时,往往会这么做:

11. 何时修改开发集、测试集和指标

如果你渐渐发现初始的开发集、测试集和指标设置与期望目标有一定差距,那就尽快想办法去 改进它们;

有三个主要原因可能导致开发集/评估指标错误地将分类器 A 排在 B 前面:

12. 小结:建立开发集和测试集

13. 快速构建并迭代你的第一个系统

14. 误差分析:根据开发集样本评估想法

误差分析(Error Analysis) 指的是检查被算法误分类的开发集样本的过程,以便帮助你找 到造成这些误差的原因。这将协助你确定各个项目的优先级(就像上面的例子所提到的那样) 并且获得探索新方向的灵感

15. 在误差分析时并行评估多个想法

误差分析并不会产生一个明确的数学公式来告诉你什么任务的优先级最高。你还需要考虑在不 同类别上的预期进展以及解决每个类别所需的工作量。

16. 清洗误标注的开发集和测试集样本

如果你不确定这些被误标注的图片是否起着关键作用,可以添加一个类别来跟踪记录误标注样本的比例;

如果开发集中误标注的部分的确影响了你的判断,那么花时间去修正这些标签就是值得的。

在项目初始阶段容许一些误标注的开发集/测试集样本并不罕见,你可以选择在系统改进到一 定程度时再来考虑被误标注的样本,因为这些误差在整体误差中的占比会逐渐增大。

17. 将大型开发集拆分为两个子集,专注其一

18. Eyeball 和 Blackbox 开发集该设置多大?

19. 小结:基础误差分析

20. 偏差和方差:误差的两大来源

21. 偏差和方差举例

22. 与最优错误率比较

偏差和可避免偏差关系如下:偏差 = 最佳误差率(“不可避免偏差”)+ 可避免的偏差

这个“可避免偏差”反映了算法在训练集上的表现比起“最优分类器”差多少。

理论上来说,我们可以通过训练一个大规模训练集将方差减少到 接近零。因此只要拥有足够大的数据集,所有的方差都是可以“避免的”,所以不存在所谓的“不 可避免方差”。

23. 处理偏差和方差

● 如果具有较高的可避免偏差(欠拟合),那么加大模型的规模(例如通过添加层/神经元数量来增 加神经网络的大小)。

● 如果具有较高的方差(过拟合),那么增加训练集的数据量。

24. 偏差和方差间的权衡

25. 减少可避免偏差的技术

如果你的学习算法存在着很高的可避免偏差,你可能会尝试以下方法:

有一种方法并不能奏效:添加更多的训练数据:这项技术可以帮助解决方差问题,但它对于偏差通常没有明显的 影响。

26. 训练集误差分析

27. 减少方差的技术

如果你的学习算法存在着高方差问题,可以考虑尝试下面的技术:

28. 诊断偏差与方差:学习曲线

随着训练集大小的增加,开发集误差应该降低。

29. 绘制训练误差曲线

30. 解读学习曲线:高偏差

31. 解读学习曲线:其它情况

32. 绘制学习曲线

33. 为何与人类表现水平进行对比

34. 如何定义人类表现水平

35. 超越人类表现水平

只要在开发集上存在着一些人类能正确处理而算法不能的样本,前面提到的 技术就能够被应用。

36 何时在不同的分布上训练与测试

37 如何决定是否使用你所有的数据

38 如何决定是否添加不一致的数据

39 给数据添加权重

通过对额外的网络图像赋予更少的权重,你不需要构建一个庞大的神经网络来确保算法在这两 种类型的任务上都能很好地完成。

40 从训练集泛化到开发集

41 辨别偏差、方差和数据不匹配误差

42 解决数据不匹配问题

43 人工合成数据

上一篇下一篇

猜你喜欢

热点阅读