我是靠谱客的博主 典雅铃铛,最近开发中收集的这篇文章主要介绍第2章 模型评估与选择 ——2.9 (实战)在机器学习开发实践中如何改善学习器的性能?可使用“人类基准”指导开发,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前几篇博客我们对模型进行评估、分析进行了讨论,就是为了模型选择。 本篇聚焦到开发者如何使用这些知识指导开发工作。
在开发过程中,如何处理过拟合(低偏差、高方差)和欠拟合(高偏差、低方差);如何利用人类基准;如何改善数据质量(指数据符合实际场景的程度)。

指导开发

误差分析

在开发人员的语境中,常将模型(实例)说成算法,本节及其他开发环境语境下我们沿用这一习惯。
开发者对算法(模型实例)在验证集中的表现进行白盒分析,找出被误分类的原因、各原因的占比,与预期效果进行比较以及考虑改善各根因的难度和工作量,从而确定在项目约束(如,进度及成本)下是否改进以及改进的方向等。

在项目开始的原型阶段,容许较大的误差,在算法改进到一定的程度,就应该进行误差分析,称为Eyeball(仔细打量,实际上是后置白盒,即对结果进行解剖,这与“白盒测试”不同),当验证集较大时,选取其子集进行详细分析,子集样本数量通常在“百级”。

偏差与方差分析

前面已从理论的角度讨论过偏差与方差,这里再从直观的角度给出粗略的定义,对开发人员而言,该定义易理解,易应用。

由于训练集是算法“见过”的数据,所以算法在测试集上的性能通常比在训练集上要差,定义:

  • 偏差:算法在训练集上的错误率。
  • 方差:算法在测试集上的表现比在训练集上差多少。

在此定义下,易理解如下概念:

  • 过拟合:低偏差、高方差。 即过度地“死记硬背”不会“举一反三”。
  • 欠拟合:高偏差、低方差。

减少方差的方法通常有:

  • 增加训练数据。
  • 正则化(正则化方法参见第5章),副作用是会增加偏差。
  • 提前终止算法(实际上也是一种正则化)。
  • 减小规模(如,减少神经网络的层),副作用也是会增加偏差,由于减小规模会降低能力,故应慎用。
  • 减少特征,副作用是会增加偏差。

为讨论减少偏差的方法,我们进一步地将偏差分为两类:

  • 不可避免偏差:常指最优错误率(亦称贝叶斯错误率,即贝叶斯最优分类器产生的错误率,参见第7章),在一些“识别”系统(如,有噪音的语音识别)的开发中,常将人类的能力作为比较的基准系统,这时,就将人类的偏差作为不可避免偏差。
  • 可避免偏差:偏差减去不可避免偏差。

当可避免偏差为负时,则过拟合。 因此,最好是可避免偏差为正的且接近于0,减少可避免偏差的方法:

  • 加大规模(如,增加神经网络的层),这样做的副作用是通常会增加方差。
  • 增加特征,主要是针对某特定类别的误差,增加相应的特征提升对该类的识别度,副作用也是会增加方差。
  • 减少正则化,副作用也是会增加方差。

人类基准

对于人类擅长的任务(如,语音识别),通常可以以人类能力作为目标基准,找出可避免偏差进行优化,例如某项任务中人类误差为2%,机器误差为10%,则有8%的优化空间。

通常从如下方面入手:

  • 基于人类经验和直觉进行误差分析。
  • 基于人类经验和直觉估计最优错误率,设置可达到的“期望错误率”:例如,对于某任务,无该知识背景的人错误率为15%、新手的错误率为10%、经验丰富者的错误率为5%、专业团队的错误率为2%,则可将2%或3%定为“期望错误率”。
  • 基于人类的局部优势:若对某任务,整体上机器已优于人类,那么,再考虑局部是否人类仍有优势。 例如,假定在有噪音环境中,机器已优于人类,但能找到某子集(如,语速快)上人类仍占优,则在此方面进一步优化机器。

三类数据集

为区别,将前述用于模型选择(调超参)的“测试数据”改称为验证集(由于“调参”(调超参)属于开发阶段,故验证集也称为开发集), “交叉验证”这一术语中的“验证”二字体现了该方法主要用于模型的评估和选择。 数据工程师通常根据用途将样本集分为三个不相交的数据集:训练集、验证集和测试集。

1.训练集:用于运行学习算法,训练出模型(实例);

2.验证集:用于对学习算法的调整作出决定(如,调参、选择特征);

3.测试集:用于评估算法或模型的性能,但不会据此改变学习算法或参数,类似于质检。

在大数据支持下,训练集越大越好,而验证集和测试集的规模并不需要太大,只要能区分出差异即可。 实践中,通常取“千”、“万”级别即可,训练集很大时,它们应远小于训练集的30%。

模型未来会投入到某某特定的实际应用,但开发时可能难以获得足够量真实场景的数据,这时,可以考虑从其他途径获得近似实际应用中的数据,如,模型打算用于处理手机拍的照片,那么,可以从互联网上获得大量照片,再选取手机拍摄的或近似于手机拍摄的。 另外,要特别强调的是验证集应与测试集应保证(近似)服从同一分布。

数据质量

数据质量是指数据符合实际场景的程度,例如,雾天应用场景的照片应该是模糊的,太清晰(平时认为质量好的照片)反而不是合格的数据。 另外,数据质量应从数据集的“集”的角度评价,如,雾天应用场景的照片应该是大都是模糊的,偶尔有一些清晰照片也是正常的。
大数据时代有的是数据,但在这个数据大海中寻找合适的数据(数据质量满足要求)也是个问题,这里根据经验给出若干关注点:

  • 数据可能有多种来源(如,源于用户提供、源于互联网、源于应用场景),给不同来源的数据加上权重,越接近真实应用场景权重越大。
  • 关注数据不匹配问题:当机器在测试集中表现良好而在实际应用中表现不佳时,通常是测试集与实际应用环境中的数据分布不一致所产生的,因此,应尽可能地使测试集与实际应用环境中的数据保护同一分布,这就是数据的采样问题。 同样,应尽可能地使验证集与测试集保持同一分布 。
  • 人工合成数据可能导致的过拟合和欠拟合:如,合成有汽车噪音的语音材料时,在公路上录取1小时的汽车噪音,作为背景噪音合成到1000小时的语音中,那么,由于只出现了几种车型和有限路况,反复使用这1小时的背景噪音就存在过拟合问题,而对没有收集到的车型及组合、未考虑不同路况(如,路况不好时的刹车声)等产生欠拟合。

另外,数据的预处理(如,样本的特征选择、数据清理及其他特征工程方面的工作)等利用了人类的洞察力和人工设计知识,使训练沿着正确的方向进行,但另一方面,这也是对训练强加了某种限制。 一种观点认为应尽量减少这种限制,尤其在深度学习领域,近年来,这种观点盛行,由此,兴起了“端到端深度学习”的热潮。

本文为原创,您可以:

  • 点赞(支持博主)
  • 收藏(待以后看)
  • 转发(他考研或学习,正需要)
  • 评论(或讨论)
  • 引用(支持原创)
  • 不侵权

上一篇:2.8 学习器的比较
下一篇:3.1 线性回归(线性模型对应于仿射函数)

最后

以上就是典雅铃铛为你收集整理的第2章 模型评估与选择 ——2.9 (实战)在机器学习开发实践中如何改善学习器的性能?可使用“人类基准”指导开发的全部内容,希望文章能够帮你解决第2章 模型评估与选择 ——2.9 (实战)在机器学习开发实践中如何改善学习器的性能?可使用“人类基准”指导开发所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部