如何快速提高机器学习模型的性能

前言

本篇文章主要介绍,如何针对机器学习模型的在训练集和开发集(验证集)上的评估指标来使用不同的技巧快速提高模型的评估性能。针对机器学习模型的性能优化我们有很多种方式,如增大数据集、增大模型的复杂度、使用更复杂的模型架构、修改激活函数、正则化等,面对不同情况只有选择正确的方法才能有效提高模型的性能,否则可能会造成时间的浪费,从而影响项目的开发进度。本篇文章的主要内容来至于deeplearning.ai视频教程。

相关概念介绍

贝叶斯最优误差(Bayes optimal error):有时候也被称为贝叶斯误差,是指x映射到y的理论最优函数,永远也不可能被超越。
可避免偏差(aviodable bias):是指贝叶斯误差与训练误差之间的差值。

优化策略
为什么是人类表现?

我们经常看到很多新闻说,某个模型在图像识别、语音识别的表现水平已经超越人类,为什么大家都喜欢用模型与人类的表现水平做比较呢?主要有两个原因,第一是因为随着机器学习的发展,模型也越来越复杂,算法的表现也越来越好,在很多机器学习的应用领域可以发现算法的表现已经威胁到人类了。第二是我们使用算法构造系统的最终目的是为了代替人类的工作,让机器能够代替人类工作,所以拿算法和人类的表现比也就很正常了。

在这里插入图片描述
上图展示的是机器学习模型准确率时间的变化的表现,其中蓝色水平虚线表示的是人类的水平,绿色虚线表示的是贝叶斯最优误差即理论上模型能达到的最优表现。在模型的训练过程中我们发现,在模型开始训练阶段,要提升模型的准确率是比较容易的,而且提升的速度也是比较快的,当模型的性能接近或超过人类表现的时候,模型的性能就难以提升,而且提升速度也是比较慢的。

机器学习模型到后期提升速度变慢主要有两个原因,第一,在很多任务中如图像识别、语音识别等领域这些都是人类非常擅长的,所以人类的表现水平已经与贝叶斯的最优误差相当接近了,所以当超过人的表现之后模型性能也没有多大的提升空间了。第二,当模型的性能在人类水平以下的时候很多的技巧都非常有效,所以提升速度会比较快,当超过人类水平以后,这些技巧都不适用了从而导致模型的性能的提升速度变慢。

当模型表现水平低于人类的时候,通常有以下三种优化方式
  • 增大数据集,给模型提供更多的数据
  • 人工分析误差,当算法的表现比人类低的时候,就可以让人来观察模型标记错的,分析这些错误的例子为什么人的判断是正确的而机器是错误的。
  • 分析模型的偏差和方差
通过与人类的表现做比较来选择优化策略

前面介绍了,通过分析模型的偏差和方差可以用来提升模型的性能,这里我们介绍什么时候应该优化偏差什么时候应该优化方差,在这里我们用人类水平误差来估计贝叶斯误差
在这里插入图片描述
上图展示的是一个在一个猫狗分类的系统中,人类的误差是1%,而系统在训练集上的误差是8%,在开发集(验证集)上的误差是10%

通过上面的数据可以发现我们的系统与人类水平还存在7%(可避免偏差)的差距,而训练集与开发集(验证集)只有2%(方差)的差距。可以发现,系统在可避免偏差上还存在较大的提升空间,说明模型在训练集上还没能很好的拟合,这时候应该考虑使用更复杂的模型,或者让模型在训练集上使用梯度下降在多迭代一段时间试试

如果系统中人类的误差不是1%而是7.5%,此时我们又该如何优化呢?

有时候可能是因为图片本身就比较模糊,而导致人类水平的误差是7.5%。通过计算发现,可避免偏差只有0.5%,而方差有2%。这时候我们发现,模型在方差上还有较大的提升空间,应该考虑是正则化等手段来减少系统的误差。你可能一直想提升模型在训练集上的表现,直到系统在训练集上的表现接近贝叶斯误差甚至超过,理论上是不可能超过贝叶斯误差,除非你的模型过拟合。在本例中,从模型的提升空间考虑,我们应该先考虑减少模型的方差。

人类水平误差

通过人类水平误差来估计贝叶斯误差,从而来选择我们的优化策略中,那么我们究竟应该如何定义人类水平误差?
在这里插入图片描述
根据放射性图片来判断患者的病例,普通人类的错误率是3%,普通医生的错误率是1%,而经验丰富的医生错误率只有0.7%,对于一个优秀的医生团队而言,当他们打成共识时错误率只有0.5%。那么此时我们应该如何定义人类水平误差呢?

在定义人类水平误差的时候,我们应该考虑的是,我们是想利用人类水平误差来估计贝叶斯误差。因为我们不知道,在这个行业中是否还存在经验更丰富的医生或者团队,也许他们的误差比0.5%还要低,所以贝叶斯最优误差不会高于0.5%。所以在这里,我们可以选择0.5%的误差作为贝叶斯最优误差,也就是人类水平误差。有时候也许我们根本不需要把目标定的这么高,对于商用水平可能达到普通医生的水平就可以了,对于不同的场景可以选择不同的人类误差水平。

建议

最后提供一些常用减少可避免偏差方差的方法。
减少可避免偏差:使用规模更大的模型、使用更好的算法(RMSprop、Momentum、adam)、训练的更久、寻找更好的架构、寻找更好的参数、改变激活函数、改变隐藏层数等。
减少方差:增加更多的数据、正则化(L2、dropout)、数据增强、尝试不同的网络架构等。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
迁移学习是一种机器学习技术,可以将已学习的知识和经验应用于新的任务中,从而加速学习和提升性能。在迁移学习中,模型的迁移性强是非常重要的,即在不同领域或任务中都可以有效地应用。 以下是几个具有迁移性强的机器学习模型: 1. 卷积神经网络(CNN) 卷积神经网络是一种广泛用于图像识别的模型,但它的迁移性可以扩展到其他领域,例如自然语言处理、音频处理等。这是因为CNN可以提取出输入数据中的通用特征,这些特征可以在不同领域或任务中重复使用。 2. 循环神经网络(RNN) 循环神经网络是一种广泛用于序列数据分析的模型,例如自然语言处理、时间序列预测等。与CNN类似,RNN也可以将其学习到的知识应用于其他领域或任务中,因为RNN可以捕捉到序列数据之间的关系和模式。 3. 预训练语言模型(Pre-trained Language Models) 预训练语言模型是一种在大规模文本数据上进行预训练的模型,例如BERT、GPT等。这些模型可以通过大规模语料库中的自监督学习,学习通用语言表示,从而可以应用于各种自然语言处理任务,例如文本分类、命名实体识别等。 4. 迁移强化学习(Transfer Reinforcement Learning) 迁移强化学习是一种将已经学习到的策略应用于新环境中的技术。例如,在机器人领域,一个机器人可以通过迁移其已经学习到的策略和经验,来快速适应新的任务和环境。 这些具有迁移性强的机器学习模型可以在不同领域或任务中重复使用其学习到的知识和经验,从而加速学习和提升性能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修炼之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值