程序猿的自我修养软件干货

【好奇心】什么是机器学习(Machine Learning)

2016-04-18  本文已影响2718人  技匠

在我之前写的“给年轻程序员们的10点启示”以及“如何成为一名优秀的全栈工程师”中都提到了好奇心对于一个优秀程序员的重要性。但我同时发现,由于我们每天都会接收大量的资讯,除了好奇心,你还需要有能力去筛选出那些真正能够给你带来启发和帮助的内容。而这正是技匠开始写【好奇心】这个专题的原因,我希望通过不长的文字让你在了解一件新事物(可能是一个新的技术领域)的同时,能够带给你更多启发性的思考。

这个专题的第一期是关于机器学习的,之所以选择这个主题,是因为:

下面就带来Laurence对Joshua的精彩访谈内容:


Laurence: 今天我很荣幸与来自Google的工程师Joshua Gordon来一起聊一聊什么是机器学习,它是如何工作的,为什么它如此重要,以及如何更有效地学习它。

Laurence:Hi Joshua,很多人其实并不了解什么是机器学习,以及它是如何工作的?

Joshua:是的,机器学习指的是让机器从大量的例子中进行学习,而不是通过传统的编写规则的形式来告诉他怎么做。简单来说,在传统程序开发中,你需要编写很多规则去告诉计算机如何解决特定的问题。而对于机器学习,你写的却是一套特定的算法让计算机为我们去发现这些规则,然后再基于这些规则去解决问题

** Laurence:**比如说一些视觉上的模式匹配或其他一些识别技术?

Joshua:确实是这样。机器学习的美妙之处在于,我们所编写的算法是用来研究数据所蕴含的潜在模式的,因此它可以用来解决成千上万的问题,而不是某一个特定问题

假设我们需要用程序来识别一串数字,传统的做法是,我们需要通过硬编码来写很多识别规则。然而在机器学习中,我们通过算法让计算机通过大量的采样数据,自己去发现那些规则,这也是为什么我们只需要写一个算法,就能同时解决诸如语音识别,图像识别,甚至医药领域中的疾病识别等等很多问题的原因。

其实所有可以基于采样数据来识别和解决的问题,都可以通过机器学习来处理

Laurence:现在我基本明白了什么是机器学习了,那么如何学习它呢?是否我们需要懂得一些特定的编程语言,你会用Java或者Python来教学对吗?对于那些想要学习成为数据科学家的人,又有哪些具体的要求吗?

Joshua:应该说你不需要掌握太多的编程知识,只需要一些最基本的Python或Java编程能力就可以了,这里的"基本"是指你可以运行脚本以及处理一些常见的环境问题。

另外,还会用到一些最基础的高中代数和几何知识,当然不会很复杂,因为如果你现在问我Sin和Cos到底是指什么,那我也只能去Google搜索了。只需要理解一些常识就好。

Laurence:好的,明白了。那你又打算如何来教我们呢?

Joshua:我准备从0开始通过示例一步一步教你怎么做。我看到一些其他的机器学习课程,讲的都是些深奥的代数算法,其实你没有必要去学习那些,我也不清楚所用的很多第三方机器学习库内部到底是如何实现的。我们采用一种更加通用的学习方法,结合实际的例子一步步去实现它,只有在很少的一些地方我们才会谈到一点点代数,而且我们也不会详细去说明用到的某个函数的原理,我只会告诉你使用这个代数函数的目的是什么。

Laurence:我们不会去关注具体的机器学习算法,而是知道如何利用它们达到我们的目的。

Joshua:是这样的,当然很多人还会对自己所写的机器学习程序的精度感兴趣。假设你需要写一个机器学习程序来区分苹果和橙子,你可能希望知道你的程序到底有多精确?其实,我可以用一行代码来实现这个算法:Math.random()。

Laurence:哈哈,那是个很棒的程序啊,精确度能达到50%

Joshua:是的,另一个可以用来描述精确性的方法是,利用空气来描述这种精确性,比如:假设空气越少,那么获得的精度会更高,由此我们可以得到一个描述机器学习算法精度的化学方程式,我们需要尽可能地让这个方程式中的空气尽可能少,这样我们就能得到更高的精确度了。我会在我的课程中详细地说明如何去做到这一点。

Laurence:明白了。刚才你提到会用Java和Python,那么是否也会用到一些处理机器学习的第三方库和包呢?

Joshua:是的,我会用到一些第三方库,首先是TLDR,它能帮助开发人员很有效地去实现那些机器学习算法,我也会用到一些来自不同大学的开源库,使用这些开源库,几乎就能解决80-90%的问题了

Laurence:哦,那就是说几乎大部分问题都可以通过开源库去实现了?

Joshua:是的,可以解决大部分普通问题,但如果你需要解决的是特别大的问题,那么你可能会需要借助云,比如说使用Google API,但这只会在我课程的最后才会提到,并且完全取决于你,它是可选的。

Laurence:那么你课程里的那些代码呢?你会放在哪里?

Joshua:全都会放到GitHub上。

Laurence:好的,谢谢你那么有激情的谈话,我从这短短几分钟的交谈中学到了很多关于机器学习的知识。

Joshua:哈哈,我喝Google提供的免费咖啡。

Laurence:再次感谢Joshua,期待你的机器学习课程。

Joshua:谢谢。


技匠:看过这段访谈让我明白了机器学习与传统编程的最大区别:从写规则告诉计算机如何去解决问题,转变为让计算机自己去发现规则并解决所有类似问题。这给我带来了很多启发,可以预见机器学习将会成为下一个炙手可热的软件开发领域,得到快速的发展。如果,你也希望成为一个数据科学家(Data Scientist)或是对机器学习感兴趣,不妨也跟着Joshua一起来学(我看了Joshua机器学习课程的第一课,并使用了5分钟就完成了我的第一个用来识别苹果和橙子的机器学习程序)。

如果,你对机器学习以及Joshua的这套课程有兴趣,可以留下喜欢或在点评中告诉我你希望我带来哪一种分享方式(在简书中分享文字翻译教程或下载他的视频教程并配上字幕),我会根据大家的反馈确定是否继续翻译或制作这套课程的。


相关访谈及视频教程
技匠社

技匠,以上内容欢迎大家分享到朋友圈/微博等。如需转载,请通过简信联系授权。谢谢大家!

上一篇下一篇

猜你喜欢

热点阅读