吴恩达DeepLearningCourse3-结构化机器学习项目

第一周:机器学习策略1

正交化

需要正交化的四个标准
-训练集的表现:训练更大的神经网络、使用优化算法
-开发集的表现:正则化、使用更大的训练集
-测试集的表现:使用更大的开发集
-真实应用中的表现:改变开发集或成本函数

单一数字评估指标

思想是,使用单一的数字来对不同的模型进行评估。
例:猫识别器
A算法的查准率为95%,查全率为90%
B算法的查准率为98%,查全率为85%
通过计算两种算法的查准率和查全率的调和平均数(F1-Score),以此评估A和B。

满足和优化指标

满足指标:所有参选算法必须满足,且只有满足和不满足的差别(考查课)。
优化指标:数值不同,其结果就不同(考试课)。

训练/开发/测试集

训练/开发/测试集的选择:
核心是”瞄准靶心“,即将来源不同的所有数据随机混洗,放入开发集和测试集,此时开发集和测试集都来自同一分布,这分布就是所有数据混在一起。在设立开发集和测试集时,要选择能够反映未来会得到的数据的开发集和测试集。如果开发集与测试集/开发集、测试集与真实数据偏差较大,则无法达到预期效果。
训练/开发/测试集的划分:
传统机器学习一般采用7/3或6/2/2的划分。如今可获得的数据量增多,开发集和测试集的占比更小(如1%)。
训练/开发/测试集,以及评估指标的更改:
当训练/开发/测试集,以及评估指标不符合实际要求时,需要立即调整。评估指标可以有效加快工作效率,在团队工作中可以先快速确立指标,再根据实际修改。

机器学习和人的表现

吴恩达DeepLearningCourse3-结构化机器学习项目

①模型的准确度随着时间通常呈现上图趋势。
导致上图趋势的原因:在模型表现低于人类水平时,可以通过一系列的工具提升训练效果,而超过人类水平时可利用的工具会明显减少。可以用人类水平表现估计贝叶斯误差,从而分析偏差/方差的问题。另一方面,人类水平在许多工作中都接近贝叶斯误差,超越人类水平后,留给模型的进步空间小。
②可避免偏差:贝叶斯误差和训练集误差的差距。
③人类水平表现:人类能达到的最高水平(最接近贝叶斯偏差的水平)。
吴恩达DeepLearningCourse3-结构化机器学习项目

第二周:机器学习策略2

进行误差分析

在开发集或测试集里找一组错误样本,统计属于不同错误类型的错误数量。通过统计不同错误标记类型占总数的百分比,帮助发现哪些问题需要优先解决。

修正标注错误的数据

深度学习算法对随机误差很健壮,但对系统性的错误就没那么健壮了。比如,做标记的人一直把白色的狗标记成猫,分类器学习之后,会把所有白色的狗都分类为猫。
根据错误标记引起的错误百分比判断,如果这些标记错误严重影响了在开发集上评估算法的能力,那么就应该去花时间修正错误的标签。但如果它们没有严重影响到你用开发集评估成本偏差的能力,那么可能就不应该时间去处理。
注意:修正标签要同时作用到开发集和测试集上。

使用来自不同分布的数据进行训练和测试

假设有200,000张网络猫图和10,000张用户拍照猫图,模型的目标是识别用户上传的猫图。如果将两种来源的数据混洗并放入训练、开发、测试集中,有悖于设立开发集的目的(瞄准的目标)。此时可以将200,000张网络猫图全部放入训练集(也可以放部分用户猫图),开发集和测试集只使用用户猫图。

数据分布不匹配时的偏差与方差的分析

训练-开发集:从训练集划分出的子集,不参与训练,和训练集同一来源。
吴恩达DeepLearningCourse3-结构化机器学习项目

方差问题:如果 训练-开发集 的误差高于 训练集 的误差,说明尽管神经网络在训练集中表现良好,但无法泛化到来自相同分布的训练-开发集里,无法很好地泛化推广到来自同一分布但以前没见过的数据中,所以存在方差问题。
数据不匹配问题:算法擅长处理和关心的数据分布不同。

处理数据分布不匹配问题

误差分析,看看训练集和开发集,了解这两个数据分布到底有什么不同,然后看看是否有办法收集更多看起来像开发集的数据作训练。其中一种方法是人工数据合成。使用人工数据合成时,一定要谨慎,因为有可能从所有可能性的空间只选了很小一部分去模拟数据,从而对这部分数据产生了过拟合。

迁移学习

适用情况:任务A和任务B是相关的,A任务具有庞大的数据输入,并已经训练出神经网络。B任务的数据量较少,且需要获得B任务的神经网络。由于任务B单个输入样本的价值高于A,所以要求A的输入数据量足够大,才能在迁移学习中起作用。
为什么迁移学习可以起作用:有很多低层次特征,比如说边缘检测、曲线检测、阳性对象检测),从非常大的图像识别数据库中习得这些能力可能有助于你的学习算法在任务B(同属于图像试别任务)中训练得更快/需要数据量更少。
操作方法:将任务A的最后一层替换为一层或多层神经网络,并初始化权重。如果B的数据足够多,可以用其训练新神经网络所有层的参数;如果不够多,则只训练新层的参数。

多任务学习

和使用Softmax进行多分类不同,多分类问题将单个标签分配给单个样本(如输入是猫/是狗/是老鼠),而多任务学习的一个输入可以有多个不同的标签(有无猫/有无狗/有无老鼠)。
多任务学习的优点:可以训练多个不同的神经网络,而不是训练一个网络做多件事情。但神经网络一些早期特征,在识别不同物体时都会用到,训练一个神经网络做四件事情会比训练四个完全独立的神经网络分别做四件事性能要更好。
多任务学习的使用条件:训练的一组任务可以共用低层次特征、(通常)每个任务的数据量很接近、神经网络足够大。

端到端的深度学习

直观上理解,由输入直接得到输出,而不包含任何中间环节的学习(也可能因此错过了这些环节具有的优点)。
端到端的深度学习要求具有巨大的数据量,且任务越复杂,数据量的需求越大。如:识别图像中人脸的位置 比 识别图像中人脸的特征 更简单,数据需求量更小。
对同一个问题,如果将其分解成若干步骤,每个步骤都具有足够的数据量;如果采用端到端的深度学习,数据量可能不够。