`
oywl2008
  • 浏览: 1068194 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

一个机器学习算法工程师的基本素质~

 
阅读更多

本文出处:https://zhuanlan.zhihu.com/p/21276788,原作者:吳YH堅

1. 前言

本来这篇标题我想的是算法工程师的技能,但是我觉得要是加上机器学习在标题上,估计点的人会多一点,所以标题成这样了,呵呵,而且被搜索引擎收录的时候多了一个时下的热门词,估计曝光也会更多点。不过放心,文章没有偏题,我们来说正经的。

今天就说说机器学习这个最近两年计算机领域最火的话题,这不是一篇机器学习的技术文章,只是告诉大家机器学习里面的坑实在是太多,而且很多还没入门或者刚刚入门的朋友们,其实在你们前面是个大坑,如果你励志要在这条路上走下去的话,请做好心理准备。

2. 我们学习机器学习的目的

实话实说,目前大部分人上各种班来学习机器学习,学习大数据,归根到底还是希望能找到一个好的工作,拿到更高的薪水,当然还有一部分原因是自己对这一方面比较感兴趣,希望更深入的了解这个领域。

我个人觉得,第一个原因的因素更大。

3. 我们在谈机器学习的时候在谈什么

首先,我们看看一个机器学习的系统长成什么样子

几乎所有的机器学习系统都是由上述系统图组成,不同的是监督型的系统训练数据可能需要人工干预而非监督型的系统不需要人工干预,简单来说就是给一批训练数据给这个机器学习模型进行学习,得到一个预测模型,然后用这个预测模型对新的未知数据进行预测。

现在网络上机器学习方面的文章,博客到处都是,市面上各种各样的书籍也到处都是,而且目前在线教育最火的领域也是这个,各种各样的机器学习的在线教育的班,学费还挺贵。

但是你发现没有,所有这些谈论的机器学习都是在谈论模型,什么《深入理解XXX模型》,《可能是最好的理解XXX的文章》,《机器学习并不难,XXXX模型详解》之类的文章和书遍地开花。各种介绍逻辑回归,深度学习,神经网络,SVM支持向量机,BP神经网络,卷积神经网络.....等等等等

所以,我们在谈论机器学习的时候,实际上是在谈论机器学习的模型,也就是各种机器学习算法。而且大家都认为只要学会了模型和算法的理论,那就是机器学习的专家了。我相信大多数人都是这么认为的。

4. 小明成了机器学习"专家"

有个小朋友,是搞计算机的,叫小明,看了alphago李世石的视频,虽然他完全不懂围棋,但是他还是被震撼到了,决心要好好学习一下这个传说中的机器学习。于是到处在网上找教程,找博客文章,找书籍,好好的学了半年,终于觉得自己入门了。每个机器学习的模型算法都能说出个所以然来了。

不知道大家有多少在这个阶段?

但小明还想更进一步,于是开始研究各种模型的代码和工具了,HadoopSpark那是标配了,又是各种找文章,各种找书,各种在线学习班,还好这些东西一大把一大把的,特别现在的在线学习班,要是没有大数据处理班,没有hadoop班,那就别开了。

一路下来,大半年又过去了,终于小明觉得自己学会了,理论也有了,大数据处理工具也会了,简直无敌了!

又有多少人在这个阶段?并以为自己已经会机器学习了。到这个阶段,如果你学得好,那么你已经可以去开个学习班教别人机器学习了。但如果你以为这样就可以去找个公司做算法工程师了,那么告诉你,图样图森破,乃义五!

小明因为有较强的理论知识,能推导所有公式,又会hadoop,spark,再加上自己的表达能力强,很容易的秒了几个面试官进了一个大公司,是在一个电商做搜索的算法工程师,月薪很高,终于可以一展拳脚了,老板交给他一个任务,用你那牛逼的知识把搜索的点击率给我提升一个百分点吧。

如果你是小明,如果你刚从某个机器学习的学习班下来,你怎么弄?你是不是傻了?

5. 机器学习不仅仅是模型

产生这个问题的原因就是所有人都以为机器学习的模型就是机器学习本身,以为对那些个算法理解了就是机器学习的大牛了,但实际上完全不是这样的。

模型是谁在玩呢?模型是科学家发明出来的, 是各个大公司的各个科学家研究员发明出来的,这个发明出来是会出论文的,是他们用来虐我们的智商的,一般情况下,你发明不了模型吧(如果可以,可以不要往下看了,你可以走学术那条路)?你修改不了模型吧?

所以说,学会了模型,只是刚刚刚刚入门,甚至还算不上入门吧

那各个公司的那么多算法工程师在干嘛呢?我们以一个搜索排序的算法工程师为例,他们在做甚呢?他们在

观察数据--->找特征--->设计算法--->算法验证--->洗数据--->工程化--->上线看效果--->goto 观察数据

而且一个成熟的系统中,一般模型已经大概确定了,如果效果不是特别不好不会换模型,比如一个公司的搜索排序系统用了机器学习的逻辑回归模型,你要改成别的模型一般不太可能,那么只能做一些特征上的补充。

好,我们通过这个流程来看看一个机器学习的算法工程师到底还要什么能力。

5.1 观察数据

小明每天就在工位上看数据,查数据,看表格,画曲线,发现像销量收藏点击等等这种能想到的特征早就被用了,就这么耗了三个月,没有任何进展,人都崩溃了,来了这么久,机器学习代码毛都没看到呢。

第四个月,他发现一点问题,他发现有些商品,评论什么的都挺好,感觉产品质量也不错,但就是销量上不去,所以老排后面,于是,他把这些评论都是五星,但是销量比较差的商品滤出来了,想看看他们有什么共性。

观察数据阶段,你说要什么能力?呵呵,只能告诉你,需要数据敏感性,其实也就是告诉你需要全面的能力,需要经验,需要产品经理的能力

除了这些,你还需要能随手编脚本代码的能力,遇到有些数据需要初步处理,可能需要随手编代码处理,而且编的要快,因为这些代码可能就用一两次就不用了,所以需要比较强大的脚本语言能力,那么Python至少要熟悉吧,shell要会吧。

5.2 找特征

数据观察下来发现了问题,现在要找特征了,要找特征,也就是找什么因素导致销量上不去的,首先,需要想象力,然后去验证你的想象力。

小明的想象力爆棚,即便这样,也搞了一个月才发现这些个商品有个共同特征,那就是图片都比较烂,让人一看就不想点。卧槽,要是能把图片质量加入到排序因素里面的话,是不是有奇效呢?图片质量作为特征,这之前可没人做过,终于找到一个特征了。

所以在这一阶段,毕竟大家的想象力都是有限的,更多的是经验值,才能找到符合当前场景的特征。

5.3 设计算法

特征是找到了,但怎么把这个特征加到排序模型里面去呢?图片好不好,有多好,这些机器怎么理解呢?如果不能把图片质量变成一个数学上的向量,那永远都无法加入到排序模型里面去。

这一阶段是真正考验算法工程师的地方了,那就是将特征向量化,小明观察到越好看的图像往往颜色变化更多,而质量差的图片往往颜色没什么变化,于是他想到一种办法,先把图像数据进行傅里叶变换,变成频域的数据,根据傅里叶变换的性质,高频部分的幅度高表示图像的颜色变化很明显,如果低频部分高,表示颜色变化不明显,这和观察到的图像信息基本能匹配上,这样一副图像的好坏,就可以用傅里叶变换后高频部分的幅度表示了,然后在做一些归一化的变化,就把图像向量化了,向量化以后就可以加入到排序模型去了。

这一步,你可能会用到你学习的机器学习模型,但肯定只占了一小部分,大部分情况需要你根据当前场景自己建立一个数学模型,而不是机器学习模型,你说这一阶段需要什么技能?虽然我这里举的例子比较极端,但是数学抽象能力数学建模能力数学工具的熟练使用是必不可少的,并且同样需要较强的编程能力,这已不是上一步的脚本能力,是实打实的计算机算法编程能力了。

5.4 算法验证

算法是设计好了,还要设计一个算法的离线验证方法来证明给你的老大看说我的算法是有效果的,不然哪那么多机会让你到线上去试啊,这一步也是各种综合能力的组合,关键是在这一步上,你要用一种通俗的语言从理论上说服你的老大,这是一种什么能力?强大的语言表达能力。

除了这个你还需要设计出一个上线以后的AB测试方案,能够很好的测试出你的算法是否真的有效。

5.5 洗数据

特征找到了,算法也设计得差不多能体现特征了,体力活来了,那就是洗数据,这是算法工程师的必修课,数据不是你想要什么样子他就长得什么样子的,所以要把数据变成你想要的样子,然后去掉无效的数据可是个体力活。

像上面这个例子,首先可能大家的图片大小都不一样,要变成一个尺寸才好进行变换,有些商品有多个图片,可能需要找出质量最好的再处理等等等等。

这一阶段首先也是要脚本语言处理能力,而且还需要掌握一些数据处理工具的使用,关键还要有足够的耐性和信心,当然,必不可少的是优秀的编程能力。

5.6 工程化

好了,前面的坑你全跨过来了,到了这一步了,呵呵,算法设计完了,数据也准备好了,估计半年过去了,那赶快放到线上去吧,你以为拿着一堆脚本就能上线了啊,得考虑工程化了,如果把你的算法嵌入到原有系统中,如果保证你的算法的效率,别一跑跑一天,代码的健壮性也要考虑啊,如果是在线算法,还得考虑性能,别把内存干没了。

这一步,你才真正的用上了你上面学的机器学习的hadoop,spark工具,看了上面说的,要完成工程化这一步,得有什么能力不用我说了吧,这是一个标准的软件开发工程师的必要技能,还是高级开发工程师哦。

5.7 上线看效果

所有的都做完了,前前后后10个月了,终于可以上线了,好了,真正的考验来了,看看上线的效果呗,产品经理说,做个AB测试吧,结果呵呵了,点击率降低了,小明啊!这10个月忙活下来点击率还下降了???老板还不把你骂死,所以,你必须有强大的抗打击能力

呵呵,赶快下线吧,从头看看哪里出了问题,又花了一个月修改了算法,重新上线,恩,这次不错,点击率提高了0.2个百分点,继续努力吧,看看还有没有什么可以挖掘的,于是,你就goto到了看数据的那一步。

别看这0.2,大的数据集合下,提高0.2已经是非常不错的提高了,所以花这么多钱,养算法工程师,要是一年能出几次0.2,那就是真值了。

6. 让我们总结一下

上面这么多的过程,靠一个人全部完成确实有点困难,我说的有点夸张,中间有些步骤是有人配合的,观察数据的时候有产品经理配合你,洗数据的时候有数据工程师配合你,工程化的时候有系统工程师配合你,但是作为机器学习的算法工程师,整个过程你都得能hold得住啊,所以即便是你一个人应该也要能完成整个流程才行。

这只是一个标准的算法工程师应该具备的能力,当然我这里是以搜索算法举例的,其他的算法工程师也差不太多,总跑不过上面几个过程,当然,你要是牛人,能根据场景修改这个机器学习的模型,甚至自己能想个模型,那就更厉害了。

好,我们把上面的重点标记的部分取出来汇总一下,让我们看看一个算法工程师需要具备哪些技能

  • 数据敏感性,观察力

  • 数学抽象能力,数学建模能力和数学工具的熟练使用的能力

  • 能随手编脚本代码的能力,强大的计算机算法编程能力,高级开发工程师的素质

  • 想象力,耐性和信心,较强的语言表达能力,抗打击能力

然后,还有很关键的一点,你需要很聪明,当然,你如果能做到以上那么几点,基本上也会很聪明了,如果真能做到这样,反而那些机器学习的模型,理论和工具就显得不那么重要了,因为那些也只是知识和工具,随时都可以学嘛。

你说,这些是靠看几篇博客,看几本书,上几次课就能具备的么??

当然,我们这里讨论的是一般情况,如果你一心就是做研究的话,那么需要把上述技能熟练度再提高一个量级。

最后,正在学习机器学习,励志做算法工程师的你,准备好踏这些坑了么??

分享到:
评论

相关推荐

    怎样成为一名优秀的算法工程师

    除了上述专业知识和能力外,一个优秀的算法工程师还应该具备良好的逻辑思维、学习能力和沟通能力等素质。在实际工作中,这些素质可以帮助算法工程师更好地理解问题、与其他团队成员协作,并将复杂的技术概念向非技术...

    高级图像算法工程师的素质要求

    高级图像算法工程师的素质要求 作为一名高级图像算法工程师,需要具备以下几方面的知识和能力: 1. 学历要求:本科及以上学历,拥有机器视觉或图像处理方面的工作经验,硕士学历要求 8 年以上,博士学历要求 6 年...

    算法工程师岗位的基本职责.pdf

    算法工程师是信息技术行业中一个至关重要的角色,他们主要负责设计、实现和优化用于解决特定问题的算法。以下是对算法工程师岗位的基本职责的详细说明: 1. **算法设计与编程**:算法工程师需要根据公司的项目需求...

    6-3+算法工程师的职业发展.pdf

    6-3+算法工程师的职业发展是一个复杂而富有挑战性的道路,涵盖了从专业技能的磨砺到领导力的培养。在这一领域,一个优秀的算法工程师需要不断进化,从基础的编程和算法实现,逐步成长为能够引领团队和业务方向的决策...

    机器学习+深度学习算法资料(1).zip

    《机器学习+深度学习算法资料(1).zip》是一个包含多方面资源的压缩包,主要聚焦于AI领域,特别是机器学习和深度学习算法的学习材料。这个压缩包内含的资源对于那些想要深入理解和掌握这两个重要领域的专业人士来说是...

    项目九 认识机器学习-任务1掌握机器学习的基本概念.pptx

    通过一个生动的故事引入机器学习的概念,并结合实际生活中的例子来帮助理解机器学习的工作原理。 #### 二、机器学习的基本概念 机器学习是一种让计算机通过数据学习并改进自身性能的技术。它可以被定义为: 1. **一...

    算法工程师的三观测试.rar

    综上所述,《算法工程师的三观测试》这个压缩包可能包含一系列问题或案例,旨在检验和探讨算法工程师在技术能力、专业知识以及道德观念上的全面素养。这些问题可能涵盖AI的多个子领域,并要求工程师们在面对技术挑战...

    算法工程师面试宝典.rar

    首先,深度学习是机器学习的一个分支,它通过构建多层神经网络来模拟人脑的学习过程,从而实现对复杂数据的高效处理和模式识别。在面试中,你需要了解并能够解释深度学习的基本架构,如前馈神经网络(FFN)、卷积...

    项目九 认识机器学习-任务3探索机器学习的发展历程.pptx

    学者们开始探索更复杂的网络结构和学习算法,为机器学习的下一个繁荣时期铺平了道路。 #### 五、总结 通过对机器学习发展历程的回顾,我们可以清晰地看到,每一次技术的进步都离不开理论的支持和实践的验证。从...

    有三AI-深度学习视觉算法工程师成长指导手册-2020.5.291

    【有三AI-深度学习视觉算法工程师成长指导手册】是一份详细的学习指南,旨在帮助初学者及有经验的工程师逐步提升在深度学习视觉算法领域的专业技能。手册将成长过程分为四个境界:白身、初识、不惑和有识,每个境界...

    深圳企业服务软件行业用户画像算法工程师岗位介绍JD模板.docx

    在互联网行业中,用户画像算法工程师是一个至关重要的角色,尤其在企业服务软件领域。这个岗位的核心任务是通过深入理解和挖掘用户行为,构建精准的用户画像,以此来驱动业务的发展和增长。下面我们将详细探讨该岗位...

    有三AI-视觉算法工程师成长指导手册【2020.5.29】.pdf

    上述这些知识点,都是作为一名成功的深度学习视觉算法工程师所需要具备的关键技能和素质。有三AI提供的成长指导手册不仅为初学者提供了一条清晰的学习路线图,还帮助他们建立了一套完善的知识体系。通过不断地学习、...

    天池大神机器学习岗面试资料

    3. 线性代数基础:矩阵、向量、特征值、特征向量、奇异值分解(SVD)等,是理解机器学习算法的基础。 4. 概率论与统计学:条件概率、贝叶斯定理、最大似然估计、假设检验等,是构建模型的基础。 二、算法理解与...

    机器学习与深度学习面试系列六(决策树)1

    在机器学习与深度学习领域中,面试不仅是求职者展示个人技术能力的重要环节,也是面试官评估求职者是否具有所需技术素养的关键时刻。决策树作为一种经典的监督学习算法,在分类和回归任务中发挥着重要作用。因此,...

    dhuynguyen94.github.io:这是Duc Huy Nguyen的简历。 我是一名软件和机器学习工程师

    【标题】中的“dhuynguyen94.github.io”表明这是一个个人网站,通常用来展示个人作品、...了解以上知识点,可以帮助我们理解Duc Huy Nguyen如何利用现代Web技术和开源工具展示其作为软件和机器学习工程师的专业素养。

    cse446:华盛顿大学的机器学习课程

    总的来说,华盛顿大学的cse446机器学习课程是一场对机器学习领域的深度探索,旨在培养学生的理论素养和实践能力,使他们能够应对复杂的数据分析和智能系统开发挑战。无论是对学术研究还是工业应用,这门课程都能为...

    大数据分析与机器学习.pptx

    ### 二、机器学习算法在数据分析中的应用 #### 1. 预测分析 - **定义**:通过建立数据模型识别模式和趋势,预测未来事件或结果。 - **应用场景**:预测客户流失、需求预测、风险评估和金融建模等。 - **常见算法**...

    数据挖掘工程师的基本职责.docx

    - 精通常用的机器学习算法,包括关联规则、分类算法、聚类算法等。 4. **其他要求**: - 一年以上的实际项目开发经验,特别是使用 .NET 技术栈的经验。 - 有用户画像建模及推荐系统的工作经验者优先考虑。 综上...

    八股文与算法(网络,数据库,设计模式,数据结构 ).zip

    通过这些材料,学习者不仅可以掌握编程语言的基础,还能深入理解操作系统、网络和数据库的工作原理,并且熟悉设计模式和数据结构,这些都是面试中常被问到的话题,也是软件工程师必备的技术素养。对于求职者来说,这...

    图论与图学习

    图论是数学的一个分支,主要研究图形的结构、性质及其应用。它在计算机科学中扮演着至关重要的角色...无论是计算机科学家、数据分析师还是机器学习工程师,掌握图论和图学习都将大大提升他们的专业素养和问题解决能力。

Global site tag (gtag.js) - Google Analytics