Coursera | Andrew Ng (03-week2-2.3)—快速搭建你的第一个系统,并进行迭代

该系列仅在原课程基础上部分知识点添加个人学习笔记,或相关推导补充等。如有错误,还请批评指教。在学习了 Andrew Ng 课程的基础上,为了更方便的查阅复习,将其整理成文字。因本人一直在学习英语,所以该系列以英文为主,同时也建议读者以英文为主,中文辅助,以便后期进阶时,为学习相关领域的学术论文做铺垫。- ZJ

Coursera 课程 |deeplearning.ai |网易云课堂


转载请注明作者和出处:ZJ 微信公众号-「SelfImprovementLab」

知乎https://zhuanlan.zhihu.com/c_147249273

CSDNhttp://blog.csdn.net/junjun_zhao/article/details/79167501


2.3 Build your first system quickly then iterate (快速搭建你的第一个系统,并进行迭代)

(字幕来源:网易云课堂)

这里写图片描述

If you’re working on a brand new machine learning application,one of the piece of advice I often give people is that,I think you should build your first system quickly and then iterate.Let me show you what I mean. I’ve worked on speech recognition for many years.And if you’re thinking of building a new speech recognition system,there’s actually a lot of directions you could go and a lot of things you could prioritize.For example, there are specific techniques for making speech recognition systems more robust to noisy background.And noisy background could mean cafe noise,like a lot of people talking in the background or car noise,the sounds of cars and highways or other types of noise.There are ways to make a speech recognition system more robust to accented speech.There are specific problems associated with speakers that are far from the microphone,this is called far-field speech recognition.Young children speech poses special challenges,both in terms of how they pronounce individual words as well as their choice of words and the vocabulary they tend to use.And if sometimes the speaker stutters or if they use nonsensical phrases like oh, ah, um,there are different choices and different techniques for making the transcript that you output, still read more fluently.

这里写图片描述

如果你正在开发全新的机器学习应用 ,我通常会给你这样的建议,你应该尽快建立你的第一个系统原型 然后快速迭代,让我告诉你我的意思 我在语音识别领域研究了很多年,如果你正在考虑建立一个新的语音识别系统,其实你可以走很多方向,可以优先考虑很多事情,比如 有一些特定的技术,可以让语音识别系统对嘈杂的背景更加健壮,嘈杂的背景可能是说咖啡店的噪音,背景里有很多人在聊天 或者车辆的噪音,高速上汽车的噪音 或者其他类型的噪音,有一些方法可以让语音识别系统在处理带口音时更健壮,还有特定的问题和麦克风与说话人距离很远有关,就是所谓的远场语音识别,儿童的语音识别带来特殊的挑战,挑战来自单词发音方面,还有他们选择的词汇 他们倾向于使用的词汇,还有比如说 说话人口吃 或者说了很多无意义的短语 比如哦 啊之类的,你可以选择很多不同的技术,让你听写下来的文本可读性更强。

So, there are these and many other things you could do to improve a speech recognition system.And more generally, for almost any machine learning application,there could be 50 different directions you could go in and each of these directions is reasonable and would make your system better.But the challenge is how do you pick which of these to focus on.And even though I’ve worked in speech recognition for many years,if I’m building a new system for a new application domain,I would still find it maybe a little bit difficult to pick without spending some time thinking about the problem.So what we recommend you do,if you’re starting on building a brand new machine learning application,is to build your first system quickly and then iterate.What I mean by that is I recommend thatyou first quickly set up a dev/test set and metric.So this is really deciding where to place your target.And if you get it wrong, you can always move it later,but just set up a target somewhere.And then I recommend you build an initial machine learning system quickly.Find the training set, train it and see.Start to see and understand how well you’re doingagainst your dev/test set and your evaluation metric.When you build your initial system,you then be able to use bias/variance analysis which we talked about earlieras well as error analysis which we talked about just in the last several videos,to prioritize the next steps.In particular, if error analysis causes you to realize that a lot of the errors are from the speaker being very far from the microphone,which causes special challenges to speech recognition,then that will give you a good reason to focus on techniques to address this calledfar-field speech recognition which basically means handling when the speaker is very far from the microphone.

这里写图片描述

所以你可以做很多事情,来改进语音识别系统,一般来说 对于几乎所有的机器学习程序,可能会有50个不同的方向可以前进,并且每个方向都是相对合理的 可以改善你的系统,但挑战在于,你如何选择一个方向集中精力处理,即使我已经在语音识别领域工作多年了,如果我要为一个新应用程序域构建新系统,我还是觉得很难不花时间,去思考这个问题就直接选择方向,所以我建议你们,如果你想搭建全新的机器学习程序,就是快速搭好你的第一个系统 然后开始迭代,我的意思是我建议,你快速设立开发集和测试集还有指标,这样就决定了你的目标所在,如果你的目标定错了 之后改也是可以的,但一定要设立某个目标,然后我建议你马上搭好一个机器学习系统原型然后找到训练集 训练一下 看看效果,开始理解你的算法表现如何在开发集测试集 你的评估指标上表现如何,当你建立第一个系统后,你就可以马上用到之前说的偏差方差分析,还有之前最后几个视频讨论的错误分析,来确定下一步优先做什么,特别是如果错误分析,让你了解到大部分的错误的来源,是说话人远离麦克风,这对语音识别构成特殊挑战,那么你就有很好的理由去集中精力研究这些技术,所谓远场语音识别的技术,这基本上就出处理说话人离麦克风很远的情况。

Of all the value of building this initial system,it can be a quick and dirty implementation,you know, don’t overthink it,but all the value of the initial system is having some learned system,having some trained system allows you to localize bias/variance,to try to prioritize what to do next,allows you to do error analysis,look at some mistakes,to figure out all the different directions you can go in,which ones are actually the most worthwhile.So to recap, what I recommend you do is build your first system quickly, then iterate.This advice applies less strongly if you’re working on an application area in which you have significant prior experience.It also implies to build less strongly if there’s a significant body ofacademic literature that you can draw onfor pretty much the exact same problem you’re building.So, for example, there’s a large academic literature on face recognition.And if you’re trying to build a face recognizer,it might be okay to build a more complex system from the get-goby building on this large body of academic literature.But if you are tackling a new problem for the first time,then I would encourage you to really notoverthink or not make your first system too complicated.Well, just build something quick and dirty and then use thatto help you prioritize how to improve your system.

这里写图片描述

建立这个初始系统的所有意义在于,它可以是一个快速和肮脏的实现,你知道的 别想太多,初始系统的全部意义在于 有一个学习过的系统,有一个训练过的系统 让你确定偏差方差的范围,就可以知道下一步应该优先做什么,让你能够进行错误分析,可以观察一些错误,然后想出所有能走的方向,哪些是实际上最有希望的方向,所以回顾一下 我建议你们快速建立你的第一个系统 然后迭代,不过如果你在这个应用程序领域有很多经验,这个建议适用程度要低一些,还有一种情况适应程度更低 当这个领域,有很多可以借鉴的学术文献,处理的问题和你要解决的几乎完全相同,所以 比如说 人脸识别就有很多学术文献,如果你尝试搭建一个人脸识别设备,那么可以从现有大量学术文献为基础出发,一开始就搭建比较复杂的系统,但如果你第一次处理某个新问题,那我真的不鼓励你,想太多 或者把第一个系统弄得太复杂,我建议你们构建一些快速而肮脏的实现 然后用来,帮你找到改善系统要优先处理的方向。

So I’ve seen a lot of machine learning projects and I’ve seen some teams overthink the solution and build something too complicated.I’ve also seen some teams underthink and then build something maybe too simple.Well on average, I’ve seen a lot more teams overthink and build something too complicated.And I’ve seen teams build something too simple.So I hope this helps,and if you are applying to your machine learning algorithms to a new application,and if your main goal is to build something that works,as opposed to if your main goal is to invent a new machine learning algorithm which is a different goal,then your main goal is to get something that works really well.I’d encourage you to build something quick and dirty.Use that to do bias/variance analysis,use that to do error analysis anduse the results of those analysis to help you prioritize where to go next.

我见过很多机器学习项目,我觉得有些团队的解决方案想太多了,他们造出了过于复杂的系统,我也见过有限团队想的不够 然后造出过于简单的系统,平均来说 我见到更多的团队,想太多 构建太复杂的系统,我也见过构建系统太简单的团队,所以我希望这些策略有帮助,如果你将机器学习算法应用到新的应用程序里,你的主要目标是弄出能用的系统,你的主要目标并不是,发明全新的机器学习算法 这是完全不同的目标,那时你的目标应该是想出某种效果非常好的算法,所以我鼓励你们搭建快速而肮脏的实现,然后用它做偏差/方差分析,用它做错误分析,然后用分析结果确定下一步优先要做的方向。


重点总结:

搭建系统

  • 设置开发、测试集和优化指标(确定方向);
  • 快速地建立基本的系统;
  • 使用偏差方差分析、误差分析去确定后面步骤的优先步骤。

总的来说,如果我们想建立自己的深度学习系统,我们就需要做到:快速的建立自己的基本系统,并进行迭代。而不是想的太多,在一开始就建立一个非常复杂,难以入手的系统。

参考文献:

[1]. 大树先生.吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(3-2)– 机器学习策略(2)


PS: 欢迎扫码关注公众号:「SelfImprovementLab」!专注「深度学习」,「机器学习」,「人工智能」。以及 「早起」,「阅读」,「运动」,「英语 」「其他」不定期建群 打卡互助活动。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值