你也可以从普通程序员变成AI大神,什么是机器学习

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

万事开头难,在接触到新鲜事物时,往往会因为一些已有的经验,而影响我们对其的了解和判断。

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

同学们,晚上好。

  • 我是一个围棋爱好者,深知其复杂和深奥,所以当我看到AlphaGo战胜世界冠军李世石之后,感到非常震惊。然而,当我试着去探究AlphaGo是如何战胜人类顶级棋手时,看到的却大多是那些谈及人工智能但仅仅停留于表面的科技评论文章。
  • 我试着去寻找更多关于机器学习资料,看到的却又是那一本本充满深奥高等代数和高等几何学算法的书籍或论文,这令我感到畏惧,并且退缩了。
  • 直到,我发现Coffee with a Googler中Laurence
    Moroney对Google的Devloper Advocate (网上译为:开发大使) Joshua
    Gordon的一段访谈,我才一下豁然开朗,通过这短短几分钟时间,让我明白了什么是机器学习,它与传统软件开发有什么区别以及有效学习它的方法。
  • 我很受启发,因为它对我们打破原有软件开发思维模式非常有帮助
  • 由于这是一段Youtube视频,并且是全英文的,很多朋友可能没有看,因此,我决定将它译为文字版本后分享给大家。

今天我们来探讨一个看似不难,实则很难的问题:普通程序员如何一步步走向人工智能?

图片 1

班主任访谈了十几位成功从程序员过渡到人工智能的童鞋,大概总结了一套【晋级方法】,仅供大家参考~

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

1、重新拾起数学和英语

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

在正式进入人工智能学习之前,建议同学们重新拾起数学和英语。数学主要复习微积分和线性代数,英语主要以一些专业词汇为主,免得后面看论文资料的时候很吃力。

图片 2

复习微积分还是推荐那本经典教材—《普林斯顿微积分读本》,吃透这本书会对你以后学习Machine
Learning 很有帮助。

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

复习线性代数推荐麻省理工的公开课,大家可以去搜集视频课程。

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

2、了解下人工智能领域

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

在决定真正进入某个领域之前,应该先对这个领域的做个大致的了解,比如这个领域的发展方向?这些技术能解决什么?

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

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

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

这个领域有哪些分支,哪些是我真正感兴趣的?

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

人工智能是一门非常广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,如果盲目开始进行所谓的学习,可能越往深处研究越容易失去方向。

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

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

3、入门机器学习

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

机器学习是一种实现人工智能的方法,一度被很多人称为是现在人工智能的核心。

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

入门机器学习除了需要观看大量的学习课程之外,还需要一定的编程基础,Python
/
 matlab这样的语言技能栈必不可少,其中Python需要关注一下爬虫,数据可视化等方面的应用。

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

入门课程首推Andrew Ng的机器学习课程(Machine Learning |
Coursera),难度适中,而且完全免费。

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

配合吴恩达教授的教学视频推荐2本基础书籍,一本是《Python
机器学习》,另一本是《机器学习导论》。

发表评论

电子邮件地址不会被公开。 必填项已用*标注