什么是机器学习?
我们来看一下机器学习是做什么的,能解决什么问题。
首先我们来看机器学习的一个类型,监督学习。
蓝色箭头部分是训练一个机器学习模型的过程。首先有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最小,找到合适的模型。
机器学习工程师做什么?
可以把机器学习工程师的工作分为以下几点:
实际上,机器学习工程师的工作也取决于具体的公司,不同的公司对机器学习的理解和应用不一样,因此他们的机器学习工程师的工作职责也会不一样。
机器学习工程师所需的技能
首先,Machine Learning Engineer仍然是engineer,所以计算机基础知识和编程能力是必须有一定水准的,所以第一和第五点是基础。此外,说到用于研究和进行ML其它的一些算法工作,数学、概率、统计知识也是必不可少的;更进一步的要求是,需要数学建模和数据评估知识,还要懂得Machine Learning算法和如何用Libraries去实现你的idea。
而关于其中第五点,之所以System Design能力在Machine Learning Engineer中仍然很重要,就是因为Machine Learning的发展,是很大一部分得益于计算能力的增强。犹记得在Google里100多人的TensorFlow的团队中,每一个参与开发该框架的成员,都对于System Design非常精通。
通常来说,普通的Software Engineer 和 Machine Learning Engineer更多只会用到图上第一和第五点技能,但是要成为 Core Machine Learning Engineer 的话,对于3,4项技能的依赖会越来越大。
关于机器学习的求职须知
机器学习涵盖的领域非常广,包括三大块,计算机视觉、自然语言处理、以及类似系统GPU的内容,其中又可以分为无数小块。只要根据个人的兴趣,找准一个方向切入进去,目前市面都会有大把的工作机会。
以百度的Job Description举例:
首先,前三点都是要求要有数据结构和算法的能力,基本也适用于Software Engineer。但是,注意其中一点,不同公司对于不同语言会有要求,所以投简历前一定要详细的看公司的Job Description。在百度,如果要求应聘者拥有 C++ 的技能,那么在面试的时候就一定会出现C++的内容;而有的公司或许要求SQL,R等语言,都是一样;最后一点,线性回归,概率论、统计、中枢网络等,是对于ML工程师的特殊要求。