-->

机器学习40讲_45_如何成为机器学习工程师

你好,我是王天一。

那在这个非常的时期呢,首先还是要提醒大家注意安全,做好防护,减少不必要的出勤。

毕竟啊身体才是革命的本钱。

那么今天呢我们来聊一些关于职业的话题。

说到数据分析师,还有机器学习工程师这样的新兴职业,你的第一印象是什么呢?数据分析师是不是就跟着电脑屏幕上汹涌澎湃,不断波动的曲线大眼瞪小眼,机器学习工程师又是不是闭着眼睛对着一堆参数,调来调去,结果不好就抓耳挠腮呢?其实真相呢远非有我们第一印象呢这么简单啊。

如果说积极学习的这个学术研究啊,多多少少还带着点玄学色彩的话,那它在商业领域当中的应用可就要踏实的多了。

因为没有哪家公司的老板会容忍自己的钱,扔进水里连个响都听不见。

换位思考一下,你是老板啊,如果要采用这个机器学习的技术的话啊,肯定要见到真金白银的这个效益。

随着大数据技术还有人工智能的不断普及,啊,越来越多的企业已经开始以他们为驱动力来作为商业表现的一个助推剂。

像推荐系统啊,还有这个呃电商的推荐系统,还有这个银行的这些风控的系统,实际上就是数据分析。

在商业领域当中,一个比较典型的应用也是经典的应用。

那么这样的新趋势呢,它也催生了一系列相关的新岗位。

啊,比如说数据科学家,算据工程师、机器学习工程师啊,或者各种各样的分析师啊,算法工程师啊这些。

那么原则上来说呢,这些岗位在数据分析和管理的任务上分工协作。

他们的内涵呢既有一定的重合,又存在着明显的区别。

今天呢我们就来聊一聊这样的一些岗位。

本质上讲啊,大数据也好,机器学习也好,人工智能也好,在商业领域当中的作用都是建立数据驱动的自动化的决策过程。

啊,再强调一遍啊,是建立数据驱动的自动化的决策过程。

对于传统的商业来说啊,这种商业分析呢大多是建立在通过问卷调查形式所取得的用户反馈啊,或者是较长时间段内一些销量啊,或者是营业额呀这样的汇综数据的基础之上。

这样的这个分析呢,它面临的就是两个问题啊,存在两个问题。

第一个呢数据不够啊,不一定说所有的用户都愿意去接受你这个调查啊。

第二个呢就是实时性不强啊,可能需要经过几个星期啊,甚至于几个月之后才能够得到一些结果。

但是在互联网空前普及的今天啊,我们说海量实时的多维度数据已经成为了对用户行为更加真实和迅速的反应。

啊,不仅多而且快。

那么如何从数据当中去把这里面有价值的信息给它提取出来啊,进而形成准确的决策,就成为了数据分析团队,或者说人工智能团队啊,或者说机器学习团队它的一个核心任务。

因为毕竟数据本身是没有什么用的啊,给你一二三四五这么一些数字啊,给一些这个销售额或者营业额。

我画一个表出来,或者是给你看一些日志本身没有什么价值。

我们要把它背后的这个趋势啊,或者说内涵给它挖掘出来。

这些不同的岗位呢,在不同的企业当中啊,在不同的公司里面可能会有不同的职责。

但是一般来说科学家和工程师啊两个的本质区别就在于说前者侧重理论,而后者侧重应用啊,科学院院士和工程院院士不一样啊,一个顶天一个立地。

那么这样的区别呢也会反映在岗位职责的一些差异上。

像数据科学家的话,他的任务呢就是理解数据背后的信息,并且利用来源于数学呀、物理学啊和统计学里面的分析工具,去把这个信息给他定量提取出来。

啊,那么从这个数据到信息的转换,实际上就需要通过数据挖掘啊或者机器学习当中的各种模型来实现。

当然这个话呢说的就比较文绉绉的啊,说的不接地气。

实际上啊通俗的来说,数据科学家的任务就是根据你浏览过的商品来推荐。

你可能会买哪一个啊,或者说根据你看过的其他的一些东西来推荐。

你可能感兴趣的像推荐系统啊,我们刚才说的就是一个典型的应用啊,根据用户过往的观看或者购买记录啊,来推荐他可能感兴趣的产品。

而设计的这个推荐的方法啊,比方说到底是使用基于用户的这个推荐呢,还是基于物品的推荐呢,或者是协同过滤的推荐。

当然你想要自己研发出一个全新的方法也可以。

那么不管是使用哪种方法啊,使用现成的方法,还是对现有的方法做改进啊,还是说重大股令开张,我完全搞一个新的方法出来。

这些呢都是数据科学家的工作。

反过来呢,数据工程师他主要是跟工程打交道啊,他需要解决海量数据的这个存储啊、检索呀,还有处理的一些问题。

这里面可能包括这个选择合适的呃关系型或者是非关系型的数据库啊,还有这个流数据的平台,这个工具的一选型啊,建立海量数据处理的这些流水线。

那么把分布式的存储系统啊,分布式的运算系统啊布置下去,配置好,并且让他正常的运行等等。

那么上面提到的数据,科学家的算法呢,它肯定是需要大规模的数据支撑啊,包括你的这个用户的浏览记录啊,每次浏览的时长啊,之前看过一个数据啊,说到这个在亚马逊上啊,我们可能都上过亚马逊买东西啊,但是在国内呢淘宝啊呃最终转化成为这个真正的购买啊,从浏览到购买的这个转化比率可能只有百分之一点起啊,大概有百分之九十八点五的这个浏览记录啊,都没有形成最终的购买。

当然在这个过程当中呢,我可能只是搜索界面看了一眼。

有些感兴趣的商品呢,我可能点进去看它的详情啊,看的详情的一部分呢,我又把它加入了购物车,加入购物车的所有产品当中呢,我再有一点点啊,再有几个啊才最终形成了付款的购买。

当然在传统的商业分析来看呢,那么有意义的啊记录下来的相当于只是有这百分之一点多啊,那么剩下的百分之九十八没有形成购买记录的全都被扔掉。

但是有的大数据有了互联网,这个还有这个计算机的发展之后啊,我们就可以把这百分之九十八点五给它记录下来。

啊,那么这些数据呢实际上包含的信息要比你那百分之一点五的购买实际上要多得多。

啊,那么如何把这些这个一般是非关系型的数据啊,给它高效的存储啊,给它存储下来,进而高效的利用呢?啊,这个呢就是工程师需要考虑的一个底层的问题。

当然上层呢呃存储和处理是工程师考虑的问题。

那么如何利用呢?就是科学家的事儿。

不难看出来啊,数据科学家和数据工程师之间啊,两者之间无论是在知识上还是在技能上都存在着不小的鸿沟。

而这两者的之间的鸿沟,我要搭一座桥梁进行过渡的话,那么这样的岗位呢就是机器学习的工程师。

对于一个机器学习工程师来说啊,他需要能够理解和掌握科学家所设计的数学模型,以及常见的一些机器学习模型。

向上的一个衔接啊,它相当于是一个承上启下的一个功能啊,向上的一个衔接呢,它需要能看懂这个数学模型啊,至少来了。

我知道不需要了解这个设计过程吧,我至少知道它到底是用来干嘛的啊,多多少少知道一些原理。

同时呢还要能够利用现有的机器学习的框架和库啊,或者更加底层的语言来实现这个原型的模型啊,各种各样的框架呀或者是库啊什么现在都比较多了啊,可能使用起来要比你从头开始去写这些呃代码要简单多啊。

当然也不排除说我要把这个python或者是其他的一些语言呢改写成更加底层的java或者是这个c语言啊,或者更有这种需求啊,并且呢对这个模型来进行参数的调优啊,以及像并行化呀、扩展性啊这方面的一些优化啊,同时呢它也需要明确机器学习这个模块啊,在整个软件系统当中的地位啊,建立这个机器学习的工作流啊,管理数据在数据库和学习平台之间的一个流动啊优化和维护模型。

在分布式系统的性能同时呢,还可能要构造合适的接口啊,以供他人来进行调用。

啊,所以在这里面可以看到,在前面我们说的这些啊建立工作流啊,这个构造接口啊,管理数据啊啊维护性能啊,这些实际上就是旗下的这一部分啊,我要和我的底层的这个软硬件的平台啊做好一个衔接啊。

因为很可能这个机器学习模块呢,它是整个的这个更大的软件系统的一个部分,更加整体的软硬件系统的一个部分。

啊,所以如何把这个平台啊让它无缝的嵌入到这个大的整体当中。

啊,这也是这个工程师需要考虑的一个问题啊。

像推荐系统当中啊,那就要把这科学家设计的这个算法部署到这个流水线上。

啊,这中间呢就会涉及到像预处理呀、训练集,还有测试集的一些划分呢,还有包括模型训练啊这样的一些复杂的步骤。

但目前呢呃出于成本和易用性的考虑,可能大部分企业呢使用的都是一些大公司所开发的这个主流的机器学习的平台啊,像微软呢、谷歌呀或者亚马逊呢都有自己的呃这个平台啊,你直接呃使用它这可能里面嵌的一些这常用的模型,你只要把数据送进去就可以啊,那么这样的如果说使用平台的话,那么这实际上就给机器学习工程师啊减少了不少工作量啊,相当于减轻了这个任务。

那么简而言之的话呢,实际上机器学习工程师他要做的就是把这个机器学习的模型给它工程化,给它产品化。

同时呢要保证这个产品的可用性啊,机器学习工程师的任务,最主要的就是工程化产品化的过程。

那么就像这个岗位的名字一样啊,它同时需要机器学习和软件工程这样两项必备的一个基本的技能。

所以这样的两个方向其实也是这个行业啊,我们要在这个岗位上进行深耕的一个路径啊。

如果你要向理论方向向机器学习靠拢的话,那就可以进一步的去深入的学习数理统计的相关的知识啊,以及计算机相关的知识。

还有算法。

理论呢理解算法和模型背后它的矢量化概率化的这样的一些思想啊,还解现有的一些经典的模型啊,我们在机器学习的抓栏力涉及到这些。

这样的话呢相当于是向算法工程师的方向去发展啊,因为以后呢可以从事设计的工作,算法设计啊、模型设计啊这些。

那么反过来,如果要向实践方向靠拢呢,可以考虑机器学习平台的一个整体的架构。

还有在实践当中啊不断的总结,不断的优化,不断的提高。

甚至于开发出一道全新的这个机器学习平台,也不是不可能啊,更多的呢从软件转向硬件啊,向基础设施的这个方向去发展。

啊,当然两个方向其实哪个都不容易啊,都不是很简单的事情。

那么如果说想要在已有的工作的基础上啊,不管是软件也好,硬件也好啊,两个方面也要都好啊。

在这个基础上继一步的继续的去提升自己的段位的话。

那么我认为对于业务的一深刻的认知啊绝对是不可或缺的。

其实机器学习也好啊,数据分析也罢,归根到底呢都是为业务的提升服务的。

啊,它跟学术界不一样啊,学术界我可能把一个借啊,把一个棒子从百分之九十八提高到百分之九十九啊,这就是一个值得大书特书的这样的一个成果啊。

但是在商业当中呢,可能没人关心你这些啊,你花了很大的力气花了随便举个例子啊,花了一百块钱的成本,把九十八提高到九十九啊,结果带来了一块钱的收益,性价比太低了,是不是?所以说在商业当中呢,在这个商业应用当中,我们不可能像这个搞学术的一样,就是极力的去追求这个指标啊,指标越高越好。

而是啊他所追求的呢则是一个收益的问题啊,是一个收益的问题。

这就是我们所说的什么呢?就是技术指标啊不等于商业指标标。

对一个企企业当中的科学家或者工程师来说,你优先考虑的啊,你一定要给先给老板考虑,先给老板考虑问题啊,一定优先考虑虑个商业指标。

如果说不能够深入的理解业业务的话啊,哪怕怕这个模型的能力提高到百分之九十九点九啊,三个九、四个、九、二十四k也是闭门造车没有用。

那么在商业的问题当中,我们可能需要考虑这些啊,比方说待优化的指标到底是什么东西啊,关键的属性啊有哪些些啊,如合合理的去评价这个模型啊,我究竟值不值当的去把这九十八提高到九十九啊,这些实际上呢都不是说纯粹的一些技术问题啊,需要在商业业务的场景下去具体情况具体分析。

举个例子啊,不一定恰当。

现在呢很多人都在炒股啊,尤其现在这种形势啊,那么在从技术角度来说呢,我们说建立一个时间序列模型啊,根据过去一段时间啊,比方说呃一个星期或者一个月啊,或者说半年啊,这一段时间之内的上证的指数,我来预测明天的股指啊,这其实并不是什么难事啊,本身建模这个东西呢并不难啊,达到一个比较高的这个训练上的准确率也不难。

但是问题在于说啊,这样的预测啊有没有用这样的预测呢?并不是建立在经济形势,还有股市逻辑的基础之上啊,其实呢只是对数据的一个摆弄啊,拿数据当玩具一样,我去拼拼凑凑得到一个结果,这样的话呢肯定难免产生严重的过拟合的倾向啊。

你建一个时间序列这么搞,你还不如在网上搜一下这个这叫什么舆情啊,看一看大家对于这个网络,对于这个某一只股票或者是这整个指数的一个乃至于对整个经济形势的一些判断啊,你根据这个舆情去预测指数啊,都比你建一个时间序列要靠谱的多。

所以说在商业应用当中呢,技术只是手段啊,商业呢才是目的。

如果说脱离了业务,这个机器学习啊,如果说它脱离了业务的话,那便必然是无源之水,无本之木啊,这是技术人员一定要注意的一个问题。

不能脱离开商业去谈技术啊,不也不能脱离开商业去谈指标去谈优化呀这些。

总而言之呢,机器学习工程师啊,他的任务就是让模型在服务器上无障碍的跑起来。

当然了,对于不同的企业来说,他对这个岗位的定义不一样啊,他可能会增加任务啊,把算法或者模型的设计也纳入到这个岗位的职责当中。

啊,那么实际上呢就是提出了一个算法工程师的一个要求啊,这其实也是一个倾向啊,不同岗位之间的差异正在变得模糊。

这样的倾向呢也不难理解。

俗话说得好啊,作为一个好媳妇,你要上得厅堂,下得厨房啊,那么作为一个好的机器学习工程师呢,你自然也应该推得出来公式啊,找得到bug,调得准bug,甚至还能做得好。

Ppt把科学家的头脑啊,工程师的身手,还有这个CEO的敏捷啊,完美的融合起来。

虽然说这样的全面型人才啊,我们讲她基本上只存在于想象当中啊,或者说存在于这个各种这个看书网站上的这个爽文当中啊,但是呢你也不能不说,他也给我们确定了一个努力的方向,你说呢?。