为什么选择机器学习?

 

 

机器学习如今的飞速发展与我们处在的时代密不可分,因为当今数据量的增长惊人,预计至2020年将会达到 44 Zettabytes。为了处理这些数据,云计算能力也急剧加强,现在我们拥有十分强大、廉价并且Scalable的云计算能力,它极其依赖机器学习。此外,随着技术成熟,我们现在可以得到非常廉价的存储技术。我们还有大量的终端设备,每个终端都有一定的功能,并可以和其他终端进行通信。因此,我们的数据量、计算量、存储量、设备数都非常大。

 

除此之外,随着数据科学领域的兴起,越来越多的人从各种设备、网站或服务器里挖掘有用的数据,由此得到Insights,做一些商业决策。所以数据科学中会大量地使用机器学习算法,这使得机器学习显得更加重要。还有一个不可忽视的原因是,机器学习算法不断地更新繁荣,并且最近越来越开源和平民化,能被更多的普通人了解和使用,这就是为什么深度学习这么受欢迎。

 

 

机器学习的未来是什么?我们为什么要学习机器学习?

我们可以用Facebook Director of AI Research的一句话来回答:

 

“Most of the knowledge in the world in the future is going to be extracted by machines and will reside in machines.”

 

我们每个人的知识和经历都有限,没办法只用人力解决世界上发生的各种各样的事情,因此需要机器的帮忙。随着机器学习的发展,会有更多的机器有能力挖掘更多的知识并进行处理,这样很多知识就存在于机器里,这也是为什么每个人都需要懂一点机器学习的原因之一。

 

机器学习在生活中有很多应用。比如,上购物网站时首页推荐的商品,Facebook、微博上推荐的内容,Siri等语音助手,很多广告也是基于机器学习算法在搜索引擎里有新的Ranking,从而点击率变高。另外还有无人车、人脸识别、Surveillance  System、Predictive Policing、预测竞选结果、识别照片等等应用,可见机器学习在生活中的应用十分广泛。

 

什么是机器学习?

 

我们来看一下机器学习是做什么的,能解决什么问题。

首先我们来看机器学习的一个类型,有监督学习

 

 

蓝色箭头部分是训练一个机器学习模型的过程。首先有Input,包括原始数据和Labels。然后把原始数据转化成Feature Vectors,将其与Labels结合到一起,通过机器学习算法,训练出一个预测模型,这就完成了Training的部分。

再看绿色箭头部分,同样首先有Input,包括一些数据,同样把他们转化为Feature Vector,然后通过刚刚产生的模型,预测出Expected Label。这叫做有监督模型。具体来看,会用到回归(Regression)和分类(Classification)

 

 

机器学习算法的另一类是无监督学习

 

 

同样是用Input Data训练一个模型,然后根据新的Data做预测。它和有监督学习不同的是,在训练模型的部分里没有Label。具体是用到Clustering和Dimensionality Reduction。

 

 

 

机器学习算法大致包括三个成分。Hypothesis, Loss, Optimization。Hypothesis的目的是想要找到输入数据与输出数据的关系。Loss是想要评估和量化假设的好坏与否。而Optimization是想要使得Loss最小,找到合适的模型。

 

机器学习工程师做什么?

 

机器学习工程师的工作内容包括以下几个方面:

  • 机器学习的实现和搭建各个公司的机器学习架构。
  • 搭建架构之后,维护该架构,包括在新的数据局进来时,该架构的速度、可靠性和性能。
  • 开发内部机器学习框架和并抽象出来以推动其正常任务运行,例如training / testing, feature use / reuse / creation /storage/deployment等。这些框架不仅被机器学习工程师使用,也会被数据科学家使用。

实际上,机器学习工程师的工作也取决于具体的公司,不同的公司对机器学习的理解和应用不一样,因此他们的机器学习工程师的工作职责也会不一样。

 

机器学习工程师所需的技能

 

 

上图是机器学习工程师的技能树。首先,ML Engineer仍然是Engineer,所以计算机基础知识和编程能力是必须有一定水准的,所以第一和第五点是基础。此外,说到用于研究和进行ML其它的一些算法工作的话,数学、概率、统计知识也是必不可少的;更进一步的要求是,需要数学建模和数据评估知识,还要懂得ML算法和如何用Libraries去实现你的idea。

 

而关于其中第五点,之所以System Design能力在ML Engineer中仍然很重要,就是因为ML的发展,是很大一部分得益于计算能力的增强。犹记得在Google里100多人的TensorFlow的团队中,每一个参与开发该框架的成员,都对于System Design非常精通。

 

通常来说,普通的Software Engineer 和 ML Engineer更多只会用到图上第一和第五点技能,但是Core ML Engineer对于3,4项技能的依赖会越来越大

 

机器学习工程师的求职须知

 

ML涵盖的领域非常广,包括三大块,计算机视觉、自然语言处理、以及类似系统GPU的内容,其中又可以分为无数小块。只要根据个人的兴趣,找准一个方向切入进去,目前市面都会有大把的工作机会。

以百度的Job Description举例:

 

首先,前三点都是要求要有数据结构和算法的能力,基本也适用于Software Engineer。但是不同公司对于不同语言会有要求,所以投简历前一定要详细的看公司的Job Description。在百度,如果要求应聘者拥有 C++ 的技能,那么在面试的时候就一定会出现C++的内容;而有的公司或许要求SQL,R等语言,都是一样;最后一点,线性回归,概率论、统计、中枢网络等,是对于ML工程师的特殊要求。

 

在了解基本概念后,大家对自己未来的定位,和应该如何努力才能成为机器学习工程师,是不是有了更多的了解呢?