机器学习策略篇:详解如何改善你的模型的表现(Improving your model performance)

improving,your,model,performance · 浏览次数 : 0

小编点评

标题:提高监督学习算法性能的指导方针 引言: 在机器学习领域,提高模型的性能是一个关键目标。为了达到这个目标,我们需要关注两个方面:可避免的偏差和方差。在本篇博客中,我们将介绍如何改善模型的表现学过正交化,如何设立开发集和测试集,用人类水平错误率来估计贝叶斯错误率以及如何估计可避免偏差和方差。 一、改善模型的表现学过正交化 1. 训练更大的网络或训练更久 通过增加模型的大小或者训练时间,我们可以提高模型的表达能力,从而降低可避免的偏差。 2. 使用更好的优化算法 加入 momentum、RMSprop 或者 Adam 等优化算法,可以帮助我们更好地优化模型的权重。 3. 寻找更好的新神经网络架构 尝试不同的神经网络架构,例如循环神经网络(RNN)和卷积神经网络(CNN),并评估它们的性能。 二、设立开发集和测试集 1. 将数据集划分为训练集、开发集和测试集 将数据集随机划分为训练集、开发集和测试集,以确保它们之间的数据分布差异较大。 2. 用人类水平错误率来估计贝叶斯错误率 通过计算开发集上的错误率,我们可以用人类水平错误率来估计贝叶斯错误率。 三、估计可避免偏差和方差 1. 观察训练错误率和贝叶斯错误率估计值之间的距离 通过比较训练错误率和贝叶斯错误率估计值之间的距离,我们可以了解可避免偏差的大小。 2. 观察开发错误率和训练错误率之间的距离 通过观察开发错误率和训练错误率之间的距离,我们可以了解方差的程度。 结论: 通过遵循这些指导方针,我们可以系统地提高机器学习系统的性能。在实际操作中,我们需要根据任务的具体需求和数据集的特点,灵活调整这些指导方针。同时,我们需要持续关注模型的表现,并根据实际需要进行调整。

正文

如何改善模型的表现

学过正交化,如何设立开发集和测试集,用人类水平错误率来估计贝叶斯错误率以及如何估计可避免偏差和方差。现在把它们全部组合起来写成一套指导方针,如何提高学习算法性能的指导方针。

所以想要让一个监督学习算法达到实用,基本上希望或者假设可以完成两件事情。首先,的算法对训练集的拟合很好,这可以看成是能做到可避免偏差很低。还有第二件事可以做好的是,在训练集中做得很好,然后推广到开发集和测试集也很好,这就是说方差不是太大。

在正交化的精神下,可以看到这里有第二组旋钮,可以修正可避免偏差问题,比如训练更大的网络或者训练更久。还有一套独立的技巧可以用来处理方差问题,比如正则化或者收集更多训练数据。

总结一下前面博客见到的步骤,如果想提升机器学习系统的性能,建议看看训练错误率和贝叶斯错误率估计值之间的距离,让知道可避免偏差有多大。换句话说,就是觉得还能做多好,对训练集的优化还有多少空间。然后看看的开发错误率和训练错误率之间的距离,就知道的方差问题有多大。换句话说,应该做多少努力让的算法表现能够从训练集推广到开发集,算法是没有在开发集上训练的。

如果想用尽一切办法减少可避免偏差,建议试试这样的策略:比如使用规模更大的模型,这样算法在训练集上的表现会更好,或者训练更久。使用更好的优化算法,比如说加入momentum或者RMSprop,或者使用更好的算法,比如Adam。还可以试试寻找更好的新神经网络架构,或者说更好的超参数。这些手段包罗万有,可以改变激活函数,改变层数或者隐藏单位数,虽然这么做可能会让模型规模变大。或者试用其他模型,其他架构,如循环神经网络和卷积神经网络。新的神经网络架构能否更好地拟合的训练集,有时也很难预先判断,但有时换架构可能会得到好得多的结果。

另外当发现方差是个问题时,可以试用很多技巧,包括以下这些:可以收集更多数据,因为收集更多数据去训练可以帮更好地推广到系统看不到的开发集数据。可以尝试正则化,包括\(L2\)正则化,dropout正则化或者在之前博客中提到的数据增强。同时也可以试用不同的神经网络架构,超参数搜索,看看能不能帮助,找到一个更适合的问题的神经网络架构。

想这些偏差、可避免偏差和方差的概念是容易上手,难以精通的。如果能系统全面地应用本系列博客里的概念,实际上会比很多现有的机器学习团队更有效率、更系统、更有策略地系统提高机器学习系统的性能。

与机器学习策略篇:详解如何改善你的模型的表现(Improving your model performance)相似的内容:

机器学习策略篇:详解如何改善你的模型的表现(Improving your model performance)

如何改善模型的表现 学过正交化,如何设立开发集和测试集,用人类水平错误率来估计贝叶斯错误率以及如何估计可避免偏差和方差。现在把它们全部组合起来写成一套指导方针,如何提高学习算法性能的指导方针。 所以想要让一个监督学习算法达到实用,基本上希望或者假设可以完成两件事情。首先,的算法对训练集的拟合很好,这

机器学习策略篇:详解为什么是人的表现?(Why human-level performance?)

为什么是人的表现? 在过去的几年里,更多的机器学习团队一直在讨论如何比较机器学习系统和人类的表现,为什么呢? 认为有两个主要原因,首先是因为深度学习系统的进步,机器学习算法突然变得更好了。在许多机器学习的应用领域已经开始见到算法已经可以威胁到人类的表现了。其次,事实证明,当试图让机器做人类能做的事情

机器学习策略篇:详解进行误差分析(Carrying out error analysis)

从一个例子开始讲吧。 假设正在调试猫分类器,然后取得了90%准确率,相当于10%错误,,开发集上做到这样,这离希望的目标还有很远。也许的队员看了一下算法分类出错的例子,注意到算法将一些狗分类为猫,看看这两只狗,它们看起来是有点像猫,至少乍一看是。所以也许的队友给一个建议,如何针对狗的图片优化算法。试

机器学习策略篇:详解清除标注错误的数据(Cleaning up Incorrectly labeled data)

清除标注错误的数据 监督学习问题的数据由输入\(x\)和输出标签 \(y\) 构成,如果观察一下的数据,并发现有些输出标签 \(y\) 是错的。的数据有些标签是错的,是否值得花时间去修正这些标签呢? 看看在猫分类问题中,图片是猫,\(y=1\);不是猫,\(y=0\)。所以假设看了一些数据样本,发现

机器学习策略篇:详解开发集和测试集的大小(Size of dev and test sets)

在深度学习时代,设立开发集和测试集的方针也在变化。 可能听说过一条经验法则,在机器学习中,把取得的全部数据用70/30比例分成训练集和测试集。或者如果必须设立训练集、开发集和测试集,会这么分60%训练集,20%开发集,20%测试集。在机器学习的早期,这样分是相当合理的,特别是以前的数据集大小要小得多

机器学习策略篇:详解理解人的表现(Understanding human-level performance)

理解人的表现 人类水平表现这个词在论文里经常随意使用,但现在告诉这个词更准确的定义,特别是使用人类水平表现这个词的定义,可以帮助推动机器学习项目的进展。还记得上个博客中,用过这个词“人类水平错误率”用来估计贝叶斯误差,那就是理论最低的错误率,任何函数不管是现在还是将来,能够到达的最低值。先记住这点,

机器学习策略:详解什么时候该改变开发/测试集和指标?(When to change dev/test sets and metrics)

什么时候该改变开发/测试集和指标? 有时候在项目进行途中,可能意识到,目标的位置放错了。这种情况下,应该移动的目标。 来看一个例子,假设在构建一个猫分类器,试图找到很多猫的照片,向的爱猫人士用户展示,决定使用的指标是分类错误率。所以算法\(A\)和\(B\)分别有3%错误率和5%错误率,所以算法\(

机器学习策略篇:快速搭建你的第一个系统,并进行迭代(Build your first system quickly, then iterate)

快速搭建的第一个系统,并进行迭代 如果正在考虑建立一个新的语音识别系统,其实可以走很多方向,可以优先考虑很多事情。 比如,有一些特定的技术,可以让语音识别系统对嘈杂的背景更加健壮,嘈杂的背景可能是说咖啡店的噪音,背景里有很多人在聊天,或者车辆的噪音,高速上汽车的噪音或者其他类型的噪音。有一些方法可以

机器学习即代码的时代已经到来

译者注: 到底是 AI 会吃掉软件还是软件会吃掉 AI?为了 job security 工程师应该把宝押在哪儿?这篇 2021 年的文章提供的一些视角似乎印证了它现在的流行,有点“运筹于帷幄之中,决胜于数年之后”的意思,颇值得软件架构师和产品经理们内省一番。 2021 版的 《人工智能现状报告》 于

第124篇: 期约Promise基本方法

好家伙,本篇为《JS高级程序设计》第十章“期约与异步函数”学习笔记 1.异步编程 同步行为和异步行为的对立统一是计算机科学的一个基本概念。 特别是在 JavaScript 这种单线程事 件循环模型中,同步操作与异步操作更是代码所要依赖的核心机制。 异步行为是为了优化因计算量大而 时间长的操作。如果在