找回密码
 立即注册
查看: 788|回复: 20

推荐算法岗是否存在严重人才过剩?

[复制链接]
发表于 2021-8-7 07:40 | 显示全部楼层 |阅读模式
非名校,211硕士,据说cv岗已严重人才过剩,认识的做cv的师兄都放弃了算法岗转向开发岗。
发表于 2021-8-7 07:47 | 显示全部楼层
过剩吗?为啥我看到公司里一直想招招不到?
我觉得不是过剩,而是自学,培训班,学校出来的很多人才不能满足工业界使用,主要是这几个点吧,学会了其实是质的提升。
会几个模型不够。很多初学者会把心思放在模型上,没毛病,但是只会那几个模型不够,你要懂方法之间的差别,理论上的和实践上的,你要知道如何对症下药,针对特定问题提出特定方案,别是nlp问题就bert,推荐系统就din,问问当前问题是否适合。
工程能力,看到有答主提到了,此处不赘述了,我把之前写的文章贴这里。
ML&DEV[6] | 浅谈算法工程师的工程能力
综合的解决问题能力,科研讲求创新性,企业不太需要,而且需要一个能分析好问题,提出短平快的解决方案,这个能力没想象中那么简单,问题是否定位清楚,点击率为什么下降,某些高质量内容为什么没有被推荐,是过滤了还是没召回等,然后是如何针对性解决,模型风险高,有没有别的更好的方案?
经验。额,这是一个和工作对应起来先有鸡还是先有蛋的问题,但的确如此,有经验的人往往见过一些问题,并且知道怎么解决,而不是还需要探索,他们知道的东西可能是你不知道自己不知道的东西。再者,尤其推荐系统,没有经历和有经历过差别太大了,有些坑压根就想不到,例如额,模型预测离线在线不一致的问题。
回过头,说过剩肯定有些问题,毕竟企业招人也难,问题是在于,现在新生人才和岗位需求不匹配,那么作为求职者,要做的就是多看看面经笔经的同时,了解工业界的一些方法,动手实践。
最后抛弃幻想,不要迷信什么一个月学会推荐系统之类的说法,尤其推荐系统,他是个系统,里面的东西太多了,召回随便说好多种方案,协同过滤在线的性能问题,冷启动问题,系统第一版本下的排序问题(没数据),都是大坑。
共勉。
发表于 2021-8-7 07:54 | 显示全部楼层
一句话,人过剩,人才稀缺。
(阿里淘系算法工程师琦舞,从事推荐算法行业五年左右,聊聊她的看法。点赞关注我们,后续解锁更多阿里淘系技术干货。)


————————————————————————————————————————
21世纪貌似是个全员转码的时代。大数据、机器学习、人工智能的培训班层出不穷,很多学生冲着算法岗的高薪,争先恐后转码,这也导致了这个赛道上的人越来越多,但只有少数人可以拿到心仪的offer,拥有金字塔顶尖的薪酬。知乎上的话题从算法岗19年一片红海,到20年诸神黄昏,再到21年灰飞烟灭。。。
如果你数学基础还不错,也有一定的编程功底,你完全可以速成机器学习,一个月啃完西瓜书花书南瓜书,两个月手撕竞赛模型,一年憋出一篇水文。既然入行如此简单,为什么算法工程师之间的薪资差异却如此巨大呢?算法这个方向,恰恰是入门易,精通难。比如,何种模型应该何时何地应用于哪个场景,是个很需要经验的事情,当然也建立在对公司业务具有深刻理解的基础上。
除此之外,我们要认清学术界和工业界的差异,在工业界,公司为什么要招聘你?给公司解决问题的。一个大问题,必然伴随着无数个小问题,过程可能会很难,不过话说回来,不难,要你干嘛?发论文不是目的,解决问题才是。如果既能完美解决问题,又能辅之以优雅的手段,你就离325远远的咯。
下面说说我的理解。
正如智慧的查理芒格所说,人只有做自己感兴趣的事情,才能成功。如果不喜欢的事情还要做到很好,那对人性的要求过高。如果你不喜欢写代码,下面的回答可以跳过了。答主是真的喜欢数学和代码,我觉得数学和代码像舞蹈一样,都是优雅的艺术,而我们是匠师,打造出优雅漂亮的代码是我们的职责。工作期间,不是每天都有时间写代码的,能够写代码的一天,绝对是快乐的一天。答主工作五年,对每天的工作仍然有很高的热情,工作带来的成就感和满足感,是很多事情远不能替代的。
但算法工程师们在工作中也不能只会写代码,还需要一些其他方面的综合能力。下面具体聊聊。


先说人才过剩的问题。人才过剩吗?有很多大厂和创业公司都在疯狂招人呢。
所以,人过剩不假,人才稀缺是真。
我从事推荐算法行业五年左右,当年侥幸入行。虽才疏学浅,但也有幸与一些大神共事过。现就职于阿里巴巴首页猜你喜欢推荐算法团队,身边有一群特别优秀的同事,他们每个人的业务和技术都十分出彩。
自职业生涯伊始,我身边不乏有一群优秀的伙伴。他们大致可以分为两种,一种热爱技术,热爱代码,热爱钻研,热爱算法,擅于将现实业务问题抽象成算法模型,对代码和算法情有独钟;另外一种情商高,擅长管理,对下的疏通和对上的汇报都极其出色,很快就做到了管理层,这种需要有一定的机遇和智慧,我身边多数人属于第一种。


聊聊工程能力的重要性。

拿舞蹈来举例,如果我们把算法训练出的模型比作一支成品舞,那么工程能力就是舞蹈基本功。如果完全没有练习过基本功,或者基本功差,手脚不协调,通过努力,你也可以学会这支成品舞,但却离艺术和美感度相差甚远。如果基本功非常扎实,那么你学任何一支新舞,皆是水到渠成自然而然之事。
如果你工程能力很强,基本功扎实,在工作过程中需要解决一些实际问题时,便可以很快上手解决,理论和实践之间,就差一双手。


聊聊工作中必备的工程能力。

(一个算法工程师不会写代码,正如一个裁缝不会裁剪。)
有个答主已经回答得很全面了,我就我的工作经验列出几条不可或缺的工程能力。
一名合格的算法工程师必须要具备的工程能力:
1、debug。快速定位问题的能力十分宝贵。这点是最重要的。
2、Python、Java、C++等,这三种编程语言很重要,使用的频次从高到低。模型离线训练时需要用到Python(无论是tensorflow还是pytorch框架),线上serving或者实现定制化的算法策略时,一般用Java实现,线上Query predict服务一般用C++实现。
推荐多看一些优秀的语言类书籍,对自己编程习惯的养成很有帮助,多看书多思考多写代码多实践,代码肯定会越来越6的。后面我会写一个专题,与大家分享对我有帮助的一些算法/语言类技术书籍。
3、hive sql。这是工作中使用频次很高的语言,我们都是sql boy/sql girl。
4、shell、Awk等。快速处理数据以及调用一些python、java脚本时,经常会用到。
5、scala:在我工作的前几年用spark比较多,训练非深度模型很方便,与hive sql的交互也十分方便。
6、对分布式框架的理解。这个非常重要。比如tensorflow框架中的ps/worker/chief是怎么协同工作的,参数更新在哪里,模型训练在哪里?


除了必备的工程能力,一个合格的算法工程师,并不仅仅是算法工程师,他必须要有业务owner和产品的视角。
有些时候,算法效果提升遇到瓶颈时,不妨想想,从用户角度出发,从产品层面出发,是否还有更好的切入点。我们也应该深入思考业务运行机制,从投放供给端,通过冷启,到召回,到粗排,到精排,最后到排序机制,哪个链路都有可能出问题,哪个链路都有优化点,所以说,一个全栈全链路的算法工程师是稀缺的人才。供给/召回/精排/机制的联动优化,才有可能使线上效果取得质的飞跃。
一个优秀的算法工程师,既可以玩转模型,又对产品有独到的见解和思考。比如信息流推荐场景的优化,当你作为一个真实的用户去体验推荐视频流时,就会很容易发现一些产品或者系统层面的问题,然后再回归到算法,用技术手段或与产品合作去解决这些问题。只有这样,公司的产品才有可能越做越好,算法优化的天花板才会越来越高。


最后打个广告,介绍下我们团队。我们是阿里电商推荐搜索算法团队,拥有全球最大的电商推荐、搜索算法场景,是每年双11/618购物狂欢节的背后中坚力量。具有基于深度学习、认知学习、端云一体化的算法/工程体系,近两年发表16篇A类论文。我们团队需要工程能力过关、算法基础扎实、对代码和算法有深度热爱的同学。欢迎同学们加入我们团队。可内推,简历可发邮箱:yangruqi_zju@163.com。


(本篇内容作者:阿里巴巴淘系技术部-琦舞 @琦琦 )
——————————————————————————————————————————
阿里巴巴集团淘系技术部官方账号。淘系技术部是阿里巴巴新零售技术的王牌军,支撑淘宝、天猫核心电商以及淘宝直播、闲鱼、躺平、阿里汽车、阿里房产等创新业务,服务9亿用户,赋能各行业1000万商家。我们打造了全球领先的线上新零售技术平台,并作为核心技术团队保障了11次双十一购物狂欢节的成功。详情可查看我们官网:阿里巴巴淘系技术部官方网站。
点击下方主页关注我们,你将收获更多来自阿里一线工程师的技术实战技巧&成长经历心得。另,不定期更新最新岗位招聘信息和简历内推通道,欢迎各位以最短路径加入我们。
阿里巴巴淘系技术
发表于 2021-8-7 08:00 | 显示全部楼层
算法工程师要是没有工程能力,简直没法干活。
算法工程师的工程能力:
    shell:粘合各种语言awk:处理简单数据python:算法工程师必须会,不用说了。python + flask:很多时候我们需要做一个测试工具,来验证输出结果。例如Query改写结果或者多个版本的推荐数据对比。
      这里有个隐含的前提:需要懂基本的HTML。如提交数据、POST、GET方法。
    python+tornado:
      我们把算法实验用python服务,在tornado里面搭建预测模型。可以大大节约时间。
    hive sql:处理各种数据
      python udf 函数,处理各种复杂逻辑阿里系用max compute、亚马逊云用redshift。基本和hive差不多。
    spark:提供了大量算法,如推荐、LDA等。Java Spring Boot:现在大量公司使用java作线上服务,我们很多业务代码或者排序,需要用Java来实现。
      对于Java工程:需要知道Maven、SBT、Gradle的基本用法。
    监控:用了美团的CAT配置平台:Apollo(阿波罗)是携程框架部门研发的开源配置管理中心。
      常用的配置修改使用它来完成。
    部分公司线上任务用C++服务,如阿里或百度。Git 代码管理的基本知识。调度系统:Airflow;理解一下相关的知识。
顺便说一下:
1、推荐使用微软的vs code 编程。
发表于 2021-8-7 08:01 | 显示全部楼层
算法工程师叫工程师啊,没有工程能力算什么呢?算法和工程都不错,才是算法工程师应该有的状态。前几年,不从工程能力卡人,是因为实在太缺人了。
发表于 2021-8-7 08:10 | 显示全部楼层
CV也好,NLP也好,RECO也好,超过90%的岗位都属于算法工程师,前提,是一个工程师。
时至今日,2021年4月,身边依然还能看到有人,从一个和CS毫无相关的行业开始对算法有兴趣,买了本西瓜书抱着就看,说觉得以后做推荐算法不错。。。
这样的过程大概率是找不到合适的工作的,但是这能叫人才过剩吗?
我想去造火箭自学了一些课程,然后航天科工不要我,我能说人才过剩吗?
单就RECO来说的话,就业市场的现状是
    企业连招聘带猎头,打着灯笼找不着合适的人;求职者趋之若鹜但是拿不到offer;
早几年,算法工程师招聘确实门槛不高,也没有卷的那么严重,基本都是科班出身的才会从事这个行当,再加上大家那时候的基建也不足,都是一堆堆人一次次地试错才做出好的效果;但是随着卷入这个行当的人越来越多,水平参差不齐,开始有越来越多的主观门槛诞生,从学历到项目经历再到论文发表。
但是在一步步的「诸神黄昏」式的竞争中,工程能力越来越不被求职者重视。从来也没有过「据说现在的算法岗面试都开始注重工程能力,卡人基本也是从工程能力卡的」的情况,因为工程能力自始至终都是必需项,现在连校招的面试都会前置加一关工程能力测评。
至于具体哪些工程能力,这个需要根据所属公司所属业务制定的边界范围来看,因为算法不像纯研发,有根据语言和框架去完善的一整套技术栈,都是分布在各个方面的散点,整体来说:
    基本的数据处理能力,Hive、Python这种数据处理工具,能够把自己的Demo或者结果表现出来,以及自己去搞特征这一套;数据交互生态:Sparks、Spark Streaming、Clickhouse等等,以及redis、MySQL这种服务常用的数据库;程序基础:主要就是Python、Java,一些涉及到比较底层系统的还会有C++,以及Linux的常用交互语句;模型使用:这个就是大家比较通用的调包、调参的工具集了,常用的tensorflow、sklearn,nlp的NLTK、Gensim等等,根据项目涉及领域的不同有各自的好用的工具;代码管理:Git那一套;还会涉及到在线服务,大的公司都会有开发好的工具链直接使用,小公司的话可能还需要算法人员手动开发。
发表于 2021-8-7 08:13 | 显示全部楼层
猜测下,题主说的“师兄放弃了算法岗转向开发岗”,其实真的是从“推荐算法岗  转向 推荐开发岗”
这俩应该是有些区别:
推荐算法岗:整天看论文、做实验、实现新算法,发论文,给业务方做算法支持、输出数据挖掘结果和模型等等;
推荐工程岗:解决召回、实现排序模型调用;实现数据清洗处理接入、负载均衡、高速缓存等工程问题;
作为一个从业务工程开发转到了推荐系统开发的人,总结下需要这些技术的运用:
1、基础技术:shell、python、java
2、大数据处理:hive、spark、spark streaming
3、高速缓存:redis/redis cluster、couchbase
4、在线服务:spring boot、python flask、ngnix
5、数据挖掘与模型训练:spark mllib、sklearn、tensorflow
6、模型在线服务:tensorflow serving、docker
7、后台效果报表:html/css/jquery、echarts/pyecharts
这些都不是刻意提前去学,而是在实现一个推荐系统的工程架构时,都会涉及到的内容;
发表于 2021-8-7 08:15 | 显示全部楼层
十分赞同高赞回答说的:
算法工程师要是没有工程能力,简直没法干活。
但是我想稍微明确一下,推荐算法相比于其他的算法岗,例如NLP,CV,对工程的涉及面更加广和深,除了高赞提到的shell,hive sql,spark,Git这些每个算法工程师都需要掌握的基本工程框架/组件。
我认为推荐算法/系统工程师还需要掌握Online和Offline的数据流,召回,排序这几个阶段所涉及到的工程知识和代码能力。具体可以参考另外一个回答涉及到的系统工程方面的点:
图片内容来自于下面的回答
想学习推荐系统,如何从小白成为高手?之前我经常看到很多人说(推荐)算法大多数时间是在调参,其实我想说的是,至少在我了解到的广告/推荐算法方面同样会涉及到很多硬核的工程知识。
PS: 很多NLP,CV的算法工程师的工作同样面向推荐,广告,搜索等业务,对工程能力要求也很高。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-8-7 08:19 | 显示全部楼层
先说结论:刚毕业/转行培训的初级人员过剩,能独当一面的中/高级人员供不应求。
从2016年开始,所谓“人工智能”大火,许多公司纷纷尝试用机器学习/深度学习算法来提升自己的业务,相关的“AI”公司也如同雨后春笋,纷纷出现。
经过16年、17年的泡沫膨胀,从18年开始,人们逐渐发现AI并没有预期的那么具有颠覆性(起码从当前时间点来说),大量靠着AI风口拿到融资的公司,发现技术落地相当困难,更不要想商业变现了。对于这类公司,没有健康的现金流造血能力,发展一定是不可持续的。风口上猪都能飞,但当风停了,那些还没有长出翅膀的猪,注定要被摔死了。一切都将回归这个最朴素的商业逻辑:创造价值。
粗略地看,AI可以分为CV/NLP/推荐算法三个方向,从直观的技术炫酷维度来看,三者依次递减;从商业价值维度来看,依次递增。
目前来看CV的落地变现场景是非常有限的,除了在安防、支付领域听说过不错的落地。其他诸如无人车等场景,还在0到1的进程中。
推荐算法,目前算是AI中变现能力最强的方向了,尤其是在互联网公司,大行其道。粗略看下我们手机里的app,新闻资讯/短视频/网购商品/音乐/电影/广告,推荐算法的身影几乎无处不在。而推荐算法又往往和用户规模、时长、收入直接挂钩,给公司带来了正向反馈,公司也愿意持续在推荐方向投入资源优化。
做好一个推荐系统,要求工程师既理解不同算法的原理与场景,又深刻理解业务场景特点与业务目标,并具备良好的工程落地能力。从技术栈上来看,推荐算法涉及的技术非常广,例如理解用户/物料做特征需要一些大数据/nlp/cv背景知识,召回排序则需要在大规模稀疏数据上使用机器学习/深度学习算法。达到(或部分达到)以上要求,能独立hold住整个推荐系统的人,非常稀缺;即使只能独立hold住推荐系统里的某个关键模块,能够持续优化迭代、给业务带来持续提升的人,也是比较稀缺的。
发表于 2021-8-7 08:22 | 显示全部楼层
其实不过剩,只是要求一些大数据平台跑任务,模型上线方面的技术能力(会用,而不是平台底层开发)。相反,工程方面的人才要转算法,会困难很多。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-15 13:30 , Processed in 0.164274 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表