您的位置:首页 > 大数据 > 人工智能

【deeplearning.ai】深度学习:结构化机器学习项目上

2020-11-24 22:39 1221 查看

吴恩达老师DeepLearning.ai课程笔记
【吴恩达Deeplearning.ai笔记一】直观解释逻辑回归
【吴恩达deeplearning.ai笔记二】通俗讲解神经网络上
【吴恩达deeplearning.ai笔记二】通俗讲解神经网络下
深度网络不好使?吴恩达老师带你优化神经网络(1)
【deeplearning.ai】深度学习:优化神经网络(2)

构建好一个机器学习系统并获得一些初步结果时,后续往往还需要进行大量的改进,才能得到最令人满意的结果。如前面优化神经网络中所述,改进的方法多种多样,可能是收集更多的数据,或者是进行正则化,或者是采用不同的优化算法。

想要找准改进的方向,使一个机器学习系统更快更有效地工作,需要学习一些在构建机器学习系统时常用到的策略。

1正交化

构建机器学习系统的挑战之一就是其中有很多可以尝试、更改的东西。例如,其中有很多的超参数需要进行训练。把握好尝试、更改的方向,认识到所做的每一步调整将带来的影响,是十分关键的。

正交化(Orthogonalization)是确保修改一个系统中的某个算法指令或者组件时,不会产生或传播副作用到系统种的其他组件的一种系统设计属性。

它使得验证一个算法独立于另一个算法时变得更加容易,同时也能减少设计和开发的时间。

例如在学习驾驶一辆汽车时,主要是在学习转向、加速、制动这三个基本的控制方法,这三种控制手段互不干扰,你只要通过不断得训练,熟练掌握它们就好。

而假如要你去学会驾驶一辆只带一根操纵杆的汽车,操纵杆设计好了每操作一下就控制一定的转角、一定的速度,这时学习成本就大了很多。所谓的正交化,就是这个道理。

当设计一个监督学习系统,需做到符合下面四个假设且它们是正交的:

  1. 建立的模型在训练集上表现良好;
  2. 建立的模型在开发集(验证集)上表现良好;
  3. 建立的模型在测试集上表现良好;
  4. 建立的模型在实际的应用中表现良好。

当做到正交化后,如果发现:

  1. 训练集上表现不够好--尝试采用更深层次神经网络或者换一种更好的优化算法;
  2. 开发集上表现不够好--尝试进行正则化处理或者加入更多训练数据;
  3. 测试集上表现不够好--尝试采用更多的开发集进行测试验证;
  4. 现实应用中表现不够好--可能是因为测试集没有设置正确或者成本函数评估出错。

面对遇到的各种问题,正交化能够帮助我们更为精准地定位及有效地解决问题。

2单一数字评估

构建机器学习系统时,通过设置一个单一数字评估指标(single-number evaluation metric),可以更为快速地判断出在经过几次调整后得到的不同结果里,哪个的效果要好些。

对于一个分类器,评价分类器性能的指标一般是分类的准确率(Accuracy),也就是正确分类的样本数和总样本数之比,它也就可以作为一个单一数字估计指标。例如之前的猫分类器的几个算法都是通过准确率作其性能好坏的标准。

对于二分类问题常用的评价指标是精确率(Precision)和召回率(Recall),将所关注的类作为正类(Positive),其他的类为负类(Negative),分类器在数据集上预测正确或不正确,4种情况出现的种数分别记为:

  • TP(True Positive)——将正类预测为正类数
  • FN(False Negative)——将正类预测为负类数
  • FP(False Positive)——将负类预测为正类数
  • TN(True Negative)——将负类预测为负类数

    而当遇到以下这种情况不好判别时,就需要采用F1度量(F1 Score)来判断两个分类器的好坏。

    F1度量定义为:

F1度量值其实就是精准率和召回率的调和平均数(Harmonic Mean),它是一种基于其平均值改善的方法,比简单地取平均值效果要好。

如此,算出上图种A分类器的F1度量值为92.4%,B分类器的为91.0%,从未得知A分类器效果好些。这里F1度量值就作为了单一数字评估指标。

3满足、优化指标

然而有时,评判的标准不限于一个单一数字评估指标。比如上图中的几个猫分类器,想同时关心它们各自的识别准确率和运行时间,但如果把这两个指标组合成一个单一数字评估指标就不够好。

这时,就需要把一个指标设置为优化指标(Optimizing Metric),另外的一些则作为满足指标(Satisficing Metric)。

如上面所举的例子中,准确率就是一个优化指标,因为想要分类器尽可能做到正确分类,而运行时间就是一个满足指标,如果你想要分类器的运行时间不多于某个值,那你需要选择的分类器就应该是以这个值为界里面准确率最高的那个,以此作出权衡。

除了采用这些标准来评判一个模型外,也要学会在必要时及时地调整一些评判指标,甚至是更换训练数据。

例如两个猫分类器A和B的识别误差分别为3%和5%,但是处于某种原因,A识别器会把色情图片误识为猫,引起用户的不适,而B不会出现这种情况,这时,识别误差大一些的B反而是更好的分类器。可以用以下公式来计算错误识别率:

还可以设置一个 ω(i) ,当 x(i) 是色情图片时, ω(i) 为10,否则为1,以此来区分色情图片及其他误识别的图片:

所以要根据实际情况,正确确定一个评判指标,确保这个评判指标最优。

4数据处理

构建机器学习系统时,对数据集的处理方法将影响你个整个构建过程中的进度。通过前面已经知道,一般把收集到的现有数据分为训练集、开发集和测试集,其中开发集也称为交叉验证集。

构建机器学习系统时,采用一些不同的方法,在训练集上训练出不同的模型,随后使用开发集对模型的好坏进行评估,确信某个模型效果足够好时再用测试集进行测试。

首先需要注意的是,开发集和测试集的来源应该是相同的,且必须从所有数据中随机抽取,选择的开发、测试集还要尽可能和以后机器学习系统要面对的现实数据一致,这样才能做到尽可能不偏离目标。

其次需要注意每个数据集大小的划分。在早期的机器学习时代,对于你拥有的所有数据集,通常就是把其中的70%作为训练集,剩下的30%作为测试集;或者要加入开发集的话,就把60%作为训练集,开发、测试集各取20%。

当获得的数据比较少的时候,这种划分是合理的。但到了现在的机器学习时代,获得的数据数量一般都是成千上万的,这时就不能按传统的数据划分法来划分了。

假如获得了一百万个数据样本,将其中98%的数据都作为训练集,而只要将1%的也就是一万个数据作为开发集,1%的数据作为测试集就足够了。

所以要根据实际情况,进行数据划分,而不是死板地遵循着传统。

测试集的大小应该设置得足够提高系统整体性能得可信度,开发集的大小也要设置得足够用于评估几个不同的模型。

5比较人类表现水平

如今,设计和建立一个机器学习系统比以前变得更为简单高效,一些机器学习算法的在很多领域的表现已经可以和人类一决高下了,例如由Google DeepMind开发的声名全球AlphaGo。

然而,很多任务对于我们人类来说,都能够几近完美地完成,机器学习系统也在试图达到甚至超越人类的表现水平。

上图展示了随着时间的推进机器学习和人的表现水平的变化,一般的,当机器学习超过人的表现水平后,它就进步地很缓慢了,其中有一个重要的原因是人类的对于一些自然感知问题的表现水平几近于贝叶斯误差(Bayes Error)。

贝叶斯误差被定义为最优的可能误差,换句话说,就是任何从 x 到精确度 y 的映射函数都不可能超过这个值。

当建立的机器学习模型的表现还没达到人类的表现水平时,可以通过各种手段来提升它。例如采用人工标记过的数据进行训练,通过人工误差分析了解为什么人能够正确识别,或者是进行方差、偏差分析。

在优化神经网络中曾涉及过偏差和方差的概念,通过与人类在某件事情上的表现水平向比较,可以清楚地表明一个机器学习模型对此的表现的好坏程度,由此作出判断出后续应该进行减小偏差还是减小方差。

训练集的误差和人类表现水平的误差之间的差值称为可避免偏差(Avoidable Bias)。

例如上图中的两个场景下,将人的错误率和机器学习模型的错误率进行比较,看以看出在A场景下,学习算法的错误率和人的错误率的可避免偏差较大,这种情况下后续的工作就是通过之前介绍过的方法来降低训练集的错误率,以减小偏差。而在B场景下,学习算法和人的表现相当,偏可避免偏差只有0.5%,,后续的工作就应该转向尽可能地减小开发集和训练集那部分2%的方差。

人类表现水平给出了一种贝叶斯误差的估算方式,训练针对某类事物的机器学习系统时,以该事物上人类表现水平作为贝叶斯误差,避免了训练过程中将训练的错误率直接以0%为目标进行优化。

所以在获取到某项任务的人为误差数据时,就可以将这些数据作为贝叶斯误差的代理,以此来分析学习算法的偏差及方差。

如果训练集与人类表现水平之间的误差差值大于训练集与开发集之间的差值,往后就应该专注于降低偏差,反之,就应该专注于降低方差。

上图中总结出了各种应对偏差及方差的方法。总之,可避免偏差小,便意味着模型的训练过程做的比较好;可接受范围内的方差意味着建立的模型在开发、测试集上的表现与在训练集上是同样好的。

此外,如果出现可避免误差为负值,也就是机器学习模型的表现超过人类表现水平(贝叶斯误差的代理)情况时,并不意味着你的模型的性能已经达到极点了,往后还想要提高其表现水平,就要另寻一些常规方法进行优化。

现在机器学习在很多领域已经做到这一点了,例如进行在线广告业务、产品推销、预测物流运输时间、信用评估等等。

注:本文涉及的图片及资料均整理翻译自Andrew Ng的Deep Learning系列课程,版权归其所有。翻译整理水平有限,如有不妥的地方欢迎指出。

推荐阅读:

马尔科夫决策过程之Markov Processes(马尔科夫过程)
【深度学习实战】pytorch中如何处理RNN输入变长序列padding
【机器学习基本理论】详解最大后验概率估计(MAP)的理解

欢迎关注公众号学习交流~

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐