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

应兆康的专栏

专栏作者
162
文章
299777
阅读量
63
订阅数
如何使用本书来帮助你的团队
2 如何使用本书来帮助你的团队 在读完本书后,你将会对如何制定机器学习项目中的技术方案有一个深刻的理解。 但是你的队友可能不会理解为什么使用你制定的技术方案,也许你想和你的团队定义一个评估指标,如果
YingJoy_
2018-05-30
5630
预备知识和符号约定
3 预备知识和符号约定 如果你已经学习了机器学习课程(如我在Coursera上的Machine Learning MOOC),或者你拥有应用监督式学习的经验,你应该可以理解下面的内容。 我假设你熟悉监督式学习(supervised learning): 使用带有标签的训练样例(x,y)学习一个从x映射到y的函数。监督式学习包括线性回归(linear regression),逻辑回归(logistic regression)和神经网络(neural networks)。机器学习的形式有很多种,但今天大多数的
YingJoy_
2018-05-30
4090
数据规模的增大促进了机器学习的发展
4 数据规模的增大促进了机器学习的发展 深度学习(神经网络)中许多的想法都已经存在了几十年。为什么今天这些想法火起来了呢? 促进机器学习发展的因素主要有两个: • 数据量越来越多. 如今人们在数字设备(电脑,移动设备)上所花费的时间相比以前多得多,这些活动产生了大量的数据,我们可以使用这些数据来训练我们的算法。 • 计算能力的提升. 人类几年前才开始训练神经网络,而且这些神经网络都足够大,可以将现在的大数据作为输入。 具体来说,如果你使用的是传统的机器学习算法(如:逻辑回归),即使你拥有更大
YingJoy_
2018-05-30
7210
开发集和测试集
让我们回到之前关于猫咪图片的例子: 你开发了一个移动APP, 用户可以上传许多不同的图片到你的APP上,你想识别出用户上传的图片中所有包含猫咪的图片。 你的团队下载了很多图片数据集,包含猫咪图片(正
YingJoy_
2018-05-30
5740
10. 用开发集和评估指标来加速迭代
对于一个新问题,事先是很难知道用什么方法解决它是最合适的。即使机器学习经验丰富的研究员也需要尝试许多,才能得到令自己满意的东西。在构建机器学习系统时,我经常会: 首先有一些如何构建系统的想法(idea
YingJoy_
2018-05-30
4530
机器学习需要的数学基础
机器学习需要的数学基础 了解一下? 个人觉得线性代数,概率统计这两权重很大。 微积分主要用于算法公式推导。 算法主要是考察代码能力,能否将算法转换为程序至关重要。 最后一个数据预处理主要用于实际项目时,需要对数据进行清洗等操作。
YingJoy_
2018-05-30
5490
为什么使用机器学习
1 为什么使用机器学习 机器学习是很多应用程序的基础,包括Web搜索、垃圾邮件过滤系统、语音识别、产品推荐等等。如果你的团队正在研究一个机器学习的程序,希望本书可以帮助你快速的取得进展。 例子:构建基
YingJoy_
2018-05-09
7032
Machine-Learning-Yearning Part3 中文版
将同步至Github: https://github.com/yingzk/Machine-Learning-Yearning
YingJoy_
2018-05-09
7081
Machine-Learning-Yearning Part2 中文版
将同步至Github: https://github.com/yingzk/Machine-Learning-Yearning
YingJoy_
2018-05-09
6330
19. 总结:基本错误分析
• 不要一开始就尝试设计和构建完美的系统,而是尽可能快的建立和训练一个基础的系统(几天之内),然后使用错误分析。帮助你找到最优的方向,并迭代改进你的算法。
YingJoy_
2018-05-09
5730
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
8231
15. 在错误分析中并行多个想法
你的团队有以下几个想法,来改进你的猫咪分类器: • 解决狗被错误分为猫咪的问题。 • 解决“大型猫科动物(greast cats)”(狮子或豹子等)被错认家猫(宠物)的问题 • 提高系统在模糊(Blurry)图像上的表现 • … 你可以并行并且有效的评估这些想法。我通常会创建一个表格,查看100个分类错误的开发集样本并记录在表格上,同时进行注释。用有小开发集里的4个错误分类样本来说明这个过程,你的表格大概将会是下面的样子:
YingJoy_
2018-05-09
2.9K2
Machine-Learning-Yearning Part1 中文版
将同步至Github: https://github.com/yingzk/Machine-Learning-Yearning
YingJoy_
2018-05-09
8631
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
9341
13. 快速构建你的第一个系统,然后进行迭代
你想建立一个新的反垃圾邮件系统,你的团队有以下想法: • 收集一个含有大量垃圾邮件的训练集。例如,设置一个“蜜罐”:故意发送虚假的电子邮件给已知垃圾邮件发送者,以便于能够自动收集它们发送到这些地址的垃圾邮件。 • 开发用于理解电子邮件文本内容的功能。 • 开发用于理解电子邮件header(不清楚可以参考:https://whatismyipaddress.com/email-header)特性的功能,以显示消息所经历的一组网络服务器。 • and more. 尽管我在反垃圾邮件上已经做了大量工作,但我还是很难选择其中的一个方向,如果你不是应用领域的专家,那将更难。 所以,开始的时候不要试图设计和构建完美的系统。相反,应该快速构建和训练出一个基本系统——在短短几天的实际内5即使基本系统与你“最佳”系统相差很多,研究基本系统的功能仍非常具有价值:你可以很快的找到你最希望的方向的线索。接下来几章将告诉你如何去阅读这些线索。
YingJoy_
2018-05-09
5920
机器学习需要的数学基础
机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
YingJoy_
2018-05-09
1.1K3
10. 用开发集和评估指标来加速迭代
对于一个新问题,事先是很难知道用什么方法解决它是最合适的。即使机器学习经验丰富的研究员也需要尝试许多,才能得到令自己满意的东西。在构建机器学习系统时,我经常会:
YingJoy_
2018-05-09
6681
4. 数据规模的增大促进了机器学习的发展
深度学习(神经网络)中许多的想法都已经存在了几十年。为什么今天这些想法火起来了呢? 促进机器学习发展的因素主要有两个: • 数据量越来越多. 如今人们在数字设备(电脑,移动设备)上所花费的时间相比以前多得多,这些活动产生了大量的数据,我们可以使用这些数据来训练我们的算法。 • 计算能力的提升. 人类几年前才开始训练神经网络,而且这些神经网络都足够大,可以将现在的大数据作为输入。 具体来说,如果你使用的是传统的机器学习算法(如:逻辑回归),即使你拥有更大的数据量,也会出现“高原效应(plateaus)”。也就是说即使你给它更多的数据,它的学习曲线也会变得平坦(flattens out),算法就不会再有很明显的提升了:
YingJoy_
2018-05-09
9004
3. 预备知识和符号约定
如果你已经学习了机器学习课程(如我在Coursera上的Machine Learning MOOC),或者你拥有应用监督式学习的经验,你应该可以理解下面的内容。 我假设你熟悉监督式学习(supervised learning): 使用带有标签的训练样例(x,y)学习一个从x映射到y的函数。监督式学习包括线性回归(linear regression),逻辑回归(logistic regression)和神经网络(neural networks)。机器学习的形式有很多种,但今天大多数的机器学习应用都是监督式学习。 我会经常提到神经网络(neural networks)(也被称为“深度学习(deep learning)”),而你只需要对他们有一个基本的了解即可。 如果你对这里提到的概念不是很熟悉,你可以看一下Coursera上面的Machine Learning课程(课程网址: http://ml-class.org)前三周的视频。
YingJoy_
2018-05-09
6112
2. 如何使用本书来帮助你的团队
在读完本书后,你将会对如何制定机器学习项目中的技术方案有一个深刻的理解。 但是你的队友可能不会理解为什么使用你制定的技术方案,也许你想和你的团队定义一个评估指标,如果他们不信服你,你该怎么说服他们? 这就是为什么我把章节设置的这么短的原因,这样你可以把你想让队友知道的那几页打印出来给他们看。 面对几个不同的选择,对这些选择的排序可能会对团队的生产力产生巨大的影响。通过帮助你的团队做出一个最优的选择,我希望你可以变为团队中的大佬!
YingJoy_
2018-05-09
8021
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档