深度学习 day10机器学习(ML)策略

01 为什么是ML策略

  • 当你尝试优化一个深度学习系统时,通常有很多想法可以去试。一些策略或者一些分析机器学习问题的方法可以指引你朝着最有希望的方向前进。

在这里插入图片描述

02 正交化

搭建机器学习系统的挑战之一是可以尝试和改变的东西太多太多(比如:有那么多超参数需要调整)


  • 以左边电视为例,正交化指的是电视设计师设置不同的旋钮,使得每个旋钮只能调整一个性质,这样就可以将画面调整到合适的位置。又如右边的车,有方向盘、油门、刹车来分别控制性质,正交化就是这些控制互不影响,能够相互独立。

在这里插入图片描述

  • 要弄好一个监督学习系统,通常需要调节系统的旋钮来确保四件事:
    1. 系统在训练集上得到的结果不错,训练集上 的表现必须通过某种评估达到能接受的程度。(如果你的算法在成本函数上不能很好的拟合训练集,你需要一个旋钮来确保可以调整你的算法,让他更好的拟合训练集,用来调试的旋钮可以训练更大的网络,或者切换到更好的优化算法。)
    2. 系统在开发集上有好的表现(如果发现算法对训练集很好,对开发集的拟合很差,那么就需要一个旋钮,在不影响训练集的同时,使算法更好的拟合开发集,增大训练集可以是另一个可用旋钮。)
    3. 系统在测试集上有好的表现(如果算法对开发集很好,对测试集很差,这就可能意味着对开发集过拟合了,需要往回退一步使用更大的开发集,增大开发集可以是另一个可用旋钮。)
    4. 系统在测试集上系统的成本函数在实际使用中表现令人满意(如果在测试集做的很好,但是无法给客户好的体验,这需要回去改变开发集或成本函数)

在这里插入图片描述

03 单一数字评估标准

无论是调整超参数或者是尝试不同的学习算法亦或者是在搭建机器学习系统时尝试不同的手段,如果有一个单实数评估标准,它可以快速的告诉你新尝试的手段比之前的手段是好还是坏。


  • 比如说识别猫的例子:如果我们用查准率和查全率来评估分类器(查准率:就是这个图是猫的可能性,查全率:实际为猫的图片中有多少被系统识别出来),那么将很难选择出哪个好,哪个不好,因此需要找到一个结合了查准率和查全率新的评估指标F1调和平均数。

在这里插入图片描述

  • 在有个例子就是各个地方的上传误差,最终使用一个平均值来衡量多个分类器,误差越小越好。

在这里插入图片描述

04 满足和优化指标

  • 在该例子中,即看重查准率也看重运行时间,这时就可以将查准率和运行时间组合成一个整体评估指标;你也可以选择一个分类器,能够最大限度提升准确度,但必须满足运行时间小于等于100ms,在这种情况下我们说准确度是一个优化指标(想让准确度最大化),运行时间是满足指标(只要达到要求就行,要求以内都一样),这时B就是很好的分类器;如果你要考虑N个指标,有时候选择其中一个指标作为优化指标是合理的,剩下的均为满足指标。右边就是个例子懂了就不用看。

在这里插入图片描述

05 训练 / 开发 / 测试集划分

  • dev集也叫开发集有时称为保留交叉验证集。机器学习的工作流程是:你尝试很多思路,用训练集训练不同的模型,然后使用开发集来评估不同的思路,然后选择一个去不断地迭代来改善开发集的性能,得到一个满意的成本,然后用测试集去评估。开发集和优化指标构成了靶心,训练的目的就是向靶心靠拢,而设立训练集是加速靠近靶心的速度。
  • 以一个猫分类器为例,在下面这些区域内运营:
    1. 不推荐:你选择其中4个区域(可随机选取)的数据构成开发集,其他四个区域的数据构成测试集,因为开发集和测试集不在一个分布
    2. 推荐:让二者来源一个分布,将所有数据随机洗牌将其放入开发集和测试集,这样开发集和测试集都有来自八个地区的数据。

在这里插入图片描述

  • 在设置开发集和测试集,要选择能够反映你未来会得到的数据、认为很重要的数据、必须得到好结果的数据这样的。

06 开发集合测试集的大小

  • 前两个是早期数据少的时候划分,最后一个是现在数据多的时候划分。

在这里插入图片描述

  • 测试集的目的是完成系统开发之后,测试集可以帮你评估投产系统的性能。方针就是令你的测试集足够大以至于能够以高置信度评估系统整体性能。对于某些应用也许不需要对系统性能有置信度很高的评估,这时不单独分出一个测试集也是可以的,但是不建议,因为你可以使用这组不带偏差的数据来测量系统的性能。

在这里插入图片描述

07 什么时候该改变开发 / 测试集和指标

设置开发集和评估指标就像把目标定在某个位置,让你的团队瞄准


  • 假设在构建一个猫分类器,使用的指标是分类误差,从图中看是A效果比较好,但是如果A会将色情图片看成猫的图片,用户是不接受的,而B不会将色情图片看成猫的图片,用户比较倾向于B,在这种情况下(原本的错误指标错误的预测算法A是更好的算法)就应该改变评估指标了或者改变开发集和测试集。可以将分类误差指标写成下面Error的形式,这个评估指标的问题是他对色情图片和非色情图片一视同仁,其中修改评估指标的方法是添加个权重w,图片x不是的话w为1,否则为10甚至100,如果希望归一化常数就是w(i)对所有i求和,这样误差仍然在0和1之间。在开发集和测试集中需要你自己将色情图片标记才能使用这个加权函数。评估指标的意义在于准确告诉你已知两个分类器哪一个更适合你的应用。

在这里插入图片描述

  • 这实际上就是个正交化的例子,你想处理机器学习问题时,应该把它切分成独立的步骤:第一步是弄清楚如何定义一个指标来衡量你想要做的事情的表现(就是设置目标),第二步也许就是学习算法针对某个成本函数优化,加入权重还可能要修改归一化常数(如何精确瞄准,命中目标)。

在这里插入图片描述

  • 如果你当前的指标和当前用来评估数据和你真正关心必须做好的事情关系不大,那就应该改变指标或者你的开发测试集。(就好比下面这个图,你一直用网上下载下来的高质量图片训练,结果使用用户上传的质量层次不齐的图片,实际测试你就发现B比A效果好)

在这里插入图片描述

  • 总结:不建议在没有评估指标和开发集时跑太久

08 为什么是人的表现

  • 当你开始往人类水平努力时,进展很快;但过了一段时间,这个算法表现比人类更好时,那么进展和精确度的提升就变得更慢了,也许它还会越来越好,但是斜率也就越来越平缓。

  • 贝叶斯最优误差一般认为理论上可能达到的最优误差:随着时间的推移,当您继续训练算法时,可能模型越来越大、数据越来越多,但性能无法超过某个理论上限。就是说没有任何办法设计出一个x到y的函数,让他能够超过一定的准确度。

  • 为什么当超越人类表现后,进展就缓慢了?

    1. 当超越人类表现后没有太多的空间继续改善了。
    2. 没超越之前可以使用一些工具提升性能,超越之后就没那么好用了。

在这里插入图片描述

  • 对于人类擅长的任务,只要你的机器学习算法比人类差,你就可以:让人帮助你标记数据,这样就有更多的数据可以给学习算法;人工误差分析:让人类看算法处理的例子,知道错误出在哪,并尝试了解为什么人能作对,算法做错;更好分析偏差和误差。

在这里插入图片描述

09 可避免偏差

可避免偏差:贝叶斯误差或者对贝叶斯误差的估计和训练误差之间的差值


  • 你的算法在训练集上的表现和人类水平的表现有很大差距的话,说明你的算法对训练集的拟合并不好,所以从减小偏差和方差的工具来看,重点是减小偏差,你需要做的是比如训练更大的神经网络或者跑久一点梯度下降。你的算法在训练集上的表现和人类水平的表现相近的话,但是开发集和训练集相差较大,就将重心放到减小方差上。

在这里插入图片描述

10 理解人的表现

人类水平误差用来估计贝叶斯误差也就是理论上最低的误差,任何函数不管是现在还是将来能够到达的最低值。


  • 医学图像分类的例子:下面是四个不同人的观察的误差值,那么应该如何界定人类水平误差呢?就是那个到达最低的值0.5。
  • 在定义人类水平误差时,要弄清楚你的目标所在,如果要表明你可以超越单个人类,那么就有理由在某些场合使用1%部署你的系统,如果你的目标是代替贝叶斯误差,那么就使用0.5的比较合适。

在这里插入图片描述

  • 误差分析的例子:第一个无论以哪个为目标,都要减少偏差,技术可以培训更大的网络;第二个无论以哪个为目标,都要减少方差,技术可以使用正则化或者去获得更大的训练集;第三个就是接近人类水平误差,改善空间就比较小了。

在这里插入图片描述

11 超过人的表现

  • 如果你的误差已经比一群充分讨论辩论后的人类专家更低,那么依靠人类直觉来判断你的算法还能往什么方向优化就很难了(比如右边的,如果都已经过拟合了,这咋判断)。

在这里插入图片描述

  • 下面的结构化数据都是系统比人做的好的,都有一个数据库。

在这里插入图片描述

12 改善模型表现

  • 提高学习算法性能的指导方针:想让一个监督学习算法达到适用要做到:
    1. 你的算法对训练集的拟合很好(可避免偏差很低),可以训练更大的网络或者训练更长时间、使用更好的优化算法、寻找更好的新神经网络架构或者更好的超参数、改变激活函数或者层数或者隐藏单位数。
    2. 在训练集做的好推广到开发集和测试集也要好(方差不是太大),可以正则化或者收集更多训练数据、寻找更好的新神经网络架构

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值