首页
学习
活动
专区
工具
TVP
发布

应兆康的专栏

专栏成员
162
文章
308804
阅读量
63
订阅数
27. 减少方差的技术
如果你的学习算法存在着高方差,则可以尝试下面的技术: • 添加更多的训练数据:这是最简单也是最可靠的一种方式来处理方差,只要你能访问大量的数据并有足够的计算能力来处理它们。 • 加入正则化(L2 正则化,L1 正则化,dropout):这项技术可以降低方差,但却增大了偏差。 加入提前终止(比如根据开发集误差提前终止梯度下降):这项技术可以降低方差但却增大了偏差。提前终止(Early stopping)有点像正则化理论,一些学者认为它是正则化技术之一。 • 通过特征选择减少输入特征的数量和种类:这种技
YingJoy_
2018-06-06
1.2K0
27. 减少方差的技术
• 添加更多的训练数据:这是最简单也是最可靠的一种方式来处理方差,只要你能访问大量的数据并有足够的计算能力来处理它们。
YingJoy_
2018-06-04
1K1
数据规模的增大促进了机器学习的发展
4 数据规模的增大促进了机器学习的发展 深度学习(神经网络)中许多的想法都已经存在了几十年。为什么今天这些想法火起来了呢? 促进机器学习发展的因素主要有两个: • 数据量越来越多. 如今人们在数字设备(电脑,移动设备)上所花费的时间相比以前多得多,这些活动产生了大量的数据,我们可以使用这些数据来训练我们的算法。 • 计算能力的提升. 人类几年前才开始训练神经网络,而且这些神经网络都足够大,可以将现在的大数据作为输入。 具体来说,如果你使用的是传统的机器学习算法(如:逻辑回归),即使你拥有更大
YingJoy_
2018-05-30
7330
开发集和测试集
让我们回到之前关于猫咪图片的例子: 你开发了一个移动APP, 用户可以上传许多不同的图片到你的APP上,你想识别出用户上传的图片中所有包含猫咪的图片。 你的团队下载了很多图片数据集,包含猫咪图片(正
YingJoy_
2018-05-30
6020
建立一个单一数字的评估指标
8 建立一个单一数字的评估指标 分类准确率是单一数字评估指标(single-number evaluation metric)的示例:你在你的开发集(或测试集)上运行你的分类器,然后得到样本分类正确的比例(fraction)(单个数字),根据这个指标,如果分类器A的准确率为97%,分类器B的准确率为90%,那么我们认为分类器A更好。 相比之下,精度(查准率)(Precision)和召回率(查全率)(Recall)[3]就不是一个单一数字的评估指标:它给出两个数字来评估分类器。拥有多个评估指标使得算法之间的
YingJoy_
2018-05-30
3970
机器学习需要的数学基础
机器学习需要的数学基础 了解一下? 个人觉得线性代数,概率统计这两权重很大。 微积分主要用于算法公式推导。 算法主要是考察代码能力,能否将算法转换为程序至关重要。 最后一个数据预处理主要用于实际项目时,需要对数据进行清洗等操作。
YingJoy_
2018-05-30
5720
14. 错误分析:查看开发集样本来评估ideas
14. 错误分析:查看开发集样本来评估ideas 当你使用猫咪APP的时候,注意到一些被错误,识别成猫咪的狗样本。一些狗长的像猫! 于是一个团队成员建议和第三方软件进行合作,使系统可以更好的处理
YingJoy_
2018-05-30
5940
18. Eyeball和Blackbox开发集应该多大?
18 Eyeball和Blackbox开发集应该多大? 你的 Eyeball 开发集应该足够大,大到可以让你了解到算法的主要错误类别。如果你正在从事一项人类可以表现很好的任务(如识别图像中的猫咪)
YingJoy_
2018-05-30
2750
19. 总结:基本错误分析
• 当你开始一个新项目时,尤其你不是这个领域的专家时,你很难选择最有前途的方向。 • 不要一开始就尝试设计和构建完美的系统,而是尽可能快的建立和训练一个基础的系统(几天之内),然后使用错误分析。帮助你找到最优的方向,并迭代改进你的算法。 • 通过手动检查约100个开发集的样本来进行错误分析。计算错误分类的主要原因的比例,然后使用此信息来选择你需要修复的错误类型。 • 考虑将开发集设置为一个Eyeball开发集和Blackbox开发集,并对Eyeball开发集进行手动检查误差分析,如果算
YingJoy_
2018-05-30
3210
21. 关于偏差和方差的实例
思考我们的猫咪分类器。一个理想的分类器(如:人为分类)会在这个任务中有着完美的表现。 假设你的算法表现如下: • 训练集上的误差 = 1% • 开发集上的误差 = 11% 这里存在什么问题呢?根据前面章节的定义我们估计它的偏差为1%,方差为10%(=11%-1%)。因此,它的方差很大,分类器在训练集上的错误率很低,但是它不能很好的泛化到开发集上,这被称为过拟合(overfitting)。 现在我们思考下面这个情况: • 训练集上的误差 = 15% • 开发集上的误差 = 16% 我们估计偏差
YingJoy_
2018-05-30
6830
24. 偏差和方差之间的权衡
24 偏差和方差之间的权衡 你可能听说过“偏差和方差之间的权衡”。在你对大部分学习算法进行修改的时候,有些方法可以减少偏差,但是代价是增加了方差,反之亦然,这就在偏差和方差之间产生了“权衡”。 例如,增加模型的大小(在神经网络中添加神经元/层,或增加输入特征),通常可以减少偏差,但可能会增加方差。另外,增加正则化一般会增加偏差,但是可能会减少方差。 在现代,我们往往能够获得充足的数据,并且可以使用非常大的神经网络(深度学习)。因此,这种权衡比较少,并且现在有更多的选择可以在不增加方差的情况下减少偏差,反
YingJoy_
2018-05-30
7460
25. 减少可避免偏差的方法
25 减少可避免偏差的方法 如果你的学习算法是高可避免偏差的话,你可以尝试以下办法: • 增加模型大小 (如神经元和层数): 该方法可以减少偏差,因为它可以让你更好的适应训练集。如果你发现该方法增加了方差,那么使用正则化方法,它通常可以消除方差的增加。 • 基于错误分析修改输入特征: 假设错误分析启发你去创建额外的特征,以帮助算法消除特定类别的错误。(我们将在下一章进一步讨论)这些新特征可能有助于减少偏差和方差。理论上来说,增加更多的特征可能会增加方差,如果你发现方差增加了,那么使用正则化的方法,它通常
YingJoy_
2018-05-30
7250
Andrew Ng - 《Machine Learning Yearning》 Chapter 23-27
Machine Learning Yearning. 全新版本 本书作者是Andrew NG
YingJoy_
2018-05-09
1K2
21. 关于偏差和方差的实例
思考我们的猫咪分类器。一个理想的分类器(如:人为分类)会在这个任务中有着完美的表现。
YingJoy_
2018-05-09
6161
19. 总结:基本错误分析
• 不要一开始就尝试设计和构建完美的系统,而是尽可能快的建立和训练一个基础的系统(几天之内),然后使用错误分析。帮助你找到最优的方向,并迭代改进你的算法。
YingJoy_
2018-05-09
5880
18. Eyeball和Blackbox开发集应该多大?
你的 Eyeball 开发集应该足够大,大到可以让你了解到算法的主要错误类别。如果你正在从事一项人类可以表现很好的任务(如识别图像中的猫咪),下面是一些指导方针: • 一个使你分类器犯错10次的Eyeball开发集将会被认为是非常小的。只有10个错误,很难准确估计不同错误类别的影响。但是如果你的数据非常少,而且不能分出更多的Eyeball开发集,有总比没有好,这将有助于项目的优先顺序。 • 如果分类器在Eyeball开发集上犯错约20个样本,你将会大致了解主要的错误来源。 • 如果有约50个错误,你将会比较好的了解错误的来源。 • 如果有约100个错误,你将会很清楚错误的来源。我见过有人手动分析更多的错误——有时候多达500个。只要你有足够的数据。 假设你的分类器有5%的错误率,为了确保Eyeball开发集中有100个错误标记的样本,Eyeball开发集大概有2000个样本(因为0.05*2000 = 100).分类器的错误率越低,为了获取足够多的错误来分析,Eyeball开发集需要足够大。 如果你正在做一个连人类都不能做好的任务,那么检查Eyeball开发集的联系将没有什么必要。因为很难找出算法不能正确分类一个样本的原因。这种情况下,你可能会忽略Eyeball开发集。我们将在后面的章节继续讨论这些指导方针。
YingJoy_
2018-05-09
8461
17. 如果你有一个很大的开发集,把它分为两个子集,只着眼于其中一个
假设你有一个含有5000个样本的大型开发集,其中有20%的错误率。这样,算法对约1000个图片进行错误分类。手动检查1000张图片是非常耗费时间的, 所以我们可能决定在错误分析中不使用所有的图片。 在这种情况下, 我会明确的将开发集分为两个子集,只看其中一个子集,另一个不看。你可能会在你查看的那部分数据中过拟合,此时你可以使用那部分未使用的数据来进行调参。
YingJoy_
2018-05-09
6011
15. 在错误分析中并行多个想法
你的团队有以下几个想法,来改进你的猫咪分类器: • 解决狗被错误分为猫咪的问题。 • 解决“大型猫科动物(greast cats)”(狮子或豹子等)被错认家猫(宠物)的问题 • 提高系统在模糊(Blurry)图像上的表现 • … 你可以并行并且有效的评估这些想法。我通常会创建一个表格,查看100个分类错误的开发集样本并记录在表格上,同时进行注释。用有小开发集里的4个错误分类样本来说明这个过程,你的表格大概将会是下面的样子:
YingJoy_
2018-05-09
2.9K2
14. 错误分析:查看开发集样本来评估ideas
当你使用猫咪APP的时候,注意到一些被错误,识别成猫咪的狗样本。一些狗长的像猫! 于是一个团队成员建议和第三方软件进行合作,使系统可以更好的处理狗样本。这些改变需要花一个月的时间,并且团队成员热衷于这一方案,你会让他们这样做吗? 在为这个任务投资一个月前,我建议你首先评估一下它实际上会提高多少系统 的准确率。然后你才能理性的选择是否值得花费这一个月的开发时间。 具体来说,你可以做这些事情: 1. 获取100个系统分类错误的样本 2. 手动查看这些样本,计算其中有多少比例是狗的图片 查看错误分类样例的这一过程称为:错误分析(error analysis)。在该案例中,如果你发现只有5%的错误分类图像是狗,那么无论你在狗的问题上做多少改进,可能你都无法消除这5%的错误。换句话说,这5%是上述建议能够达到的改进上限。因此,整个系统当前的准确率是90%(误差10%),这一改进可能得到最多90.5%的准确率(或9.5%的错误率,比原来的错误率少5%)。 相反,如果你发现50%的错误图像都是狗,那么你最好找一个第三方进行合作。它可以将准确率从90%提升到95%(误差相对减少50%,从10%降到5%)。 这种简单的错误分析的计算过程可以给你一个快速的方法来评估为“狗”的问题加入第三方软件是否值得。它为你决定是否做出这笔投资提供了一个定量的基准。 错误分析通常可以帮你找出不同想法有哪些前景。我看到很多工程师不愿意进行错误分析。相比于质疑这个想法是否值得花时间投入,直接实现一个然后查看效果可能会更好,这是一个常见的错误:可能会导致你的团队花费一个月的时间只能带来很少的收益。 手动检查100个样本不会花费太长的时间。即使你每分钟只看一张图,不到两小时你就可以完成,这不到两小时的时间可以为你节约一个月的白白努力时间,值得花费。 错误分析(error analysis)是指检测开发集中算法错误分类样本的过程,以便了解错误的深层原因。它不仅可以帮你重点发展你的项目,正如这个例子所述,还可以给你一些新的启发。下节将讨论该内容。接下来几个章节还将介绍一些错误分析的最佳实践。
YingJoy_
2018-05-09
9641
机器学习需要的数学基础
机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
YingJoy_
2018-05-09
1.2K3
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档