向AI转型的程序员都关注了这个号????????????

机器学习AI算法工程   公众号:datayx

现在互联网行业很多开发工程师(包括前端开发、后端开发等等传统意义上的“码农”)会遇到35岁这道坎,那么对于算法工程师这种非常规、非传统的码农(侧重以数学模型技能为主,而不是写代码),也会遇到35岁的坎么?

这个问题的根源于2016年~2018年,校招算法工程师的高薪现象。

一个刚毕业的研究生,大多能拿到至少20万,还有很多动辄总package达到80万的个案,这几乎秒杀了其他行业。先说造成的现象吧,那就是各专业的学生趋之若鹜。

目前在就职于某大厂,上海做推荐系统,项目组今年过滤完学校后,还有千份简历,笔试过后就剩100来份了,最后面完2~3轮,薪资拉锯战后,校招就发了一个offer(非sp),给了一个复旦的牛人,2个实习生要了一个交大的牛人。这俩人一个做图像、一个做强化学习,大概率以后入职会做一些正则模型之类的事情,和研究生的研究方向无太大关联,我们看重的是他们灵活的思维和解决问题的能力。。。

然后隔壁开发、数仓的组,校招人招不够,还社招了几个人。。。投我们组的同学,部分基础很好的,大多也被开发、数仓部门消化了。。。

所以总结下来,现在的情况就是:

  1. IT行业对人才还是有很大需求的,特别是业务很繁多的部门

  2. 这个需求已经不在算法岗位了,或者说算法岗位的校招坑至少在大部分大公司已经趋于饱和了

  3. 现在算法岗位对应届生能力要求非常高,可以说已经超越了前几年的博士要求

  4. 互联网各种岗位的薪资已经趋于一致,晋升渠道也都类似,算法岗位已经不是前3年那样众星捧月了

  5. 就在这种情况下,还有人在整天AIAI年薪百万的叫嚣,坑害未来n年的毕业生

总结下来,首先各行各业,几乎都会涉及到寻优、规划、迭代、探索,算法是其中的重头戏,那算法工程师就会一直被需求。

按现在这种情况,算法工程师肯定是至少研究生起步,35岁就是工作5~10年,如果这段时间能在大厂,大概率得需要国内排名前n的名校毕业以及国外名校。。。然后再跟对Boss,跟对Boss,跟对Boss,然后得到很好的技术锻炼、养成定期学习的习惯、培养业务的敏感度、跟进社会的更迭、学习先进的管理模式。做好上面至少任意一点,那这部分人到了35岁,只会更加不可或缺,成为互联网或者其他渗透行业的支柱,或者下一个新兴行业的弄潮儿。

原因很简单,任何行业,要提高效率,做到垄断,(除了有靠谱的爹)都需要算法。这部分人的比例,永远是很少的,这种模式也是一种良性的循环。

其他的同学,到35岁,浪潮完全褪去,必然会有不少淹死的。。。其实就今年已经淹死很多了,大家都心知肚明,大厂offer全集中在少数人手里。。。说句心里话,就算在大公司,也不是所有部门的算法岗位都在搞高大上的东西,很多都还是在用规则解决实际业务。如果在职业伊始,没有牛人在身边,得不到很好的技能锻炼和思维培训,那就算拿到了算法岗位,又有多大意义呢?你学的东西大概率是没有平台在实际场景去施展。

算法工程师的确与普通的程序员有点区别,算法工程师的入门门槛相对较高,是一个起点比较高但也比较平稳的存在。不会说做一个特别厉害的算法,就能让产品用户呈指数型的增长。

算法工程师的瓶颈或者说成长空间,在于不停地去学习,如果说你不更新你的知识,就可能会被淘汰,因为你不去跟踪前沿内容。

比如说在神经网络已经不火的时候,SVM(支持向量机)火了,当时做图像的很多是做指针分析的,一些指针分析的方法也比较火,那时候机器学习也已经处于发展阶段,之后也慢慢地广为应用。

算法的知识更新迭代非常的快,在以前,大家还会自己写平台,写一个深度学习的框架,到现在,深度学习的框架已经很多很多了,可能很少有公司现在愿意去写一个深度学习的框架,大家写的都是结合自己场景和业务的框架多一点。

如果你知识不更新,你不去跟进潮流中发生的事,你就可能会被淘汰掉,包括最近做的比较多的图学习方法、共享学习、区块链。

另外一方面算法工程师需要经验的积累,今天你去看一个问题,有哪些角度、方法,需要去注意什么问题,这对于新人来说很难去注意到,我们这时候的经验就很重要,所以这就会让算法工程师的门槛越来越高,经验不是靠几本书、几堂课就能搞定的。

所以算法工程师并不用担心自己从一个业务换到另一个业务,他对业务的思考,对算法的理解就是核心的竞争力,是融在算法工程师骨子里的东西。

但是会有危机感。

这个问题其实对于大多数程序员都是适用的,每年的高校毕业生,持续不断地在为这个行业输入更年轻更新鲜的血液,对比25岁刚入职更会加班更能吃苦关键是薪资更加便宜的小年轻,35岁的算法工程师如果只是工龄更长资历更老,将全方位处于劣势。

想要跨过这道坎,要做的就是努力去提升自己的相对不可替代性,从初级渐渐往高级的方向走,个人觉得大体可以分3个阶段:

初级算法工程师 ––– 高效执行机器

算法入行的必经之路,所谓的sql boy、调参侠、数据搬运工、炼丹师,都发生在这个阶段。

这个阶段的算法工程师,很多时候都是在和数据打交道。数据漏报、数据重复上报、埋点有误、多方数据统计口径无法对齐、反作弊口径定义和对齐、异常数据检测和排查、数据缺失处理、样本清洗、特征统计加工、线上指标下降问题排查、bad case归因分析、数据标注...听起来是不是一点都不fancy?对于一个负责业务落地的一线算法工程师来说,这些数据工作可能占了日常工作的很大一部分时间。

可就是这些一开始被你看不起的各种所谓dirty job,这些你在实验室和学校接触不到的工业数据实践,这些在paper、书本和网络永远不会教你的工作,正是你所累积的技术经验和宝贵的财富,它是驱动你往下一层级的改造的很大的动力。作为一个算法工程师,如果从没有在底层有过基础的开发和数据分析的从业经验,将来站在更高层的时候很难作出对团队方向有利的决策。数据决定了模型的上界,特征和算法只是在逼近这个上界。

不了解你的业务数据特点,很难成为一个好的算法工程师。在业务实践中培养锻炼数据sense,是一个初级算法工程师的必修课之一。

这个阶段的算法工程师,一般面临的业务问题也比较明确,比如提升召回效果、提升线上ctr/cvr/gmv/时长、提升搜索相关性、降低bad case率等等。这些明确的业务问题背后,在业界包括团队内一般都有比较明确的技术方向,相对应的就是一些比较明确的算法问题,比如信息流的ctr预估、用户兴趣建模、广告出价预估、相关性模型、物品召回、图文标签生成等。

这些不同的算法方向根据团队形态不同,往往会分的更加明细,比如召回方向的可能会有专门的团队,落到每个人头上就是负责其中一种召回策略:用户标签召回、行为序列召回、主题召回、双塔模型召回等。做排序模型的有专门的团队,可能是每个场景有专门的人负责,例如首页/频道页/分类页/热门页/子频道页等;也可能是每个方向的模型是专门的人负责,比如ctr模型、gmv模型、时常模型等。机制策略的也可能有专门的团队,每个人负责不同的策略方向。

具体业务和技术形态怎么分工,不需要初级算法工程师操心,那是更高层的算法工程师需要规划和操心的事。这个阶段的算法工程师的主要目标,是要使得自己成为一个具有能够高效执行具体任务落地的能力,对动手能力要求是最高的。

业界XX会议又又发表了一篇影响力很大的paper,实验效果宣称业界最牛;隔壁XX公司的XX团队又又又发表(PR)了最新的算法,声称效果提升巨大(可能是baseline很低);著名程序员大型交友网站某hub又开源了最新的模型代码,号称在多项任务中吊打当前各种主流模型。于是老大一句话,你去调研下人家怎么做的,回来落地实现下啊。

接下来就是发挥初级算法工程师能力的时候了。看论文、复现模型、跑实验、调参数、魔改网络、效果不好接着调。这个过程其实也是拉开初级算法工程师们能力的时候,有些人只是做到会用工具,调调api,调调参数改改网络,或者直接git clone下载源码编码后改改直接跑,至于能否有效果完全看天,真真是在“炼丹”。最终没效果还要补充一句,论文作者们真的是在吹牛啊,这个算法在我们这里完全没有效果啊。然后换个模型重新炼丹来过。

有些人在这个过程中不断累积经验,尽可能去找这些方法的共性。以ctr模型为例,embedding参数对自己业务数据效果是否敏感、网络层数的深度对效果的影响、不同正则化方法是否work、bn/ln/dropout等方法是否有效、当前的特征体系对于高阶特征交叉是否已经刻画足够、attention到底收益有多大等等。这些如果能从更本质和通用共性的角度去分析总结,大概率在同样的数据分布上可以作为以后的先验判断,经验是可迁移的,不至于在每一次有新的模型出来就去盲目的做尝试。

中级算法工程师 ––– 算法选型和改造能力

经过了第一阶段之后,对于明确的算法问题已经具备了足够的经验,这个阶段,需要自己根据在这个领域内的技术累积,对已有的算法问题,进行适当的改造和优化。

以用户画像为例,如果是刚搭建的团队,初期可能更多需要搭建的是整个模型框架,和上下游团队协作沟通,以最小的代价迅速搭建起线上可用的基础baseline。比如最简单的基于统计的方法,根据用户的主动行为的物品标签作为用户的统计画像标签,如24小时的统计标签作为短期兴趣,30天的统计标签并做时间衰减作为长期兴趣。这个阶段的算法工程师,如果不顾团队的现状,一上来就想做能够体现技术深度的各种模型,对团队其实的进展其实是负向的。确保算法能够快速落地并取得收益才是主要目的。

而团队发展到了一定阶段,有了一定的基础属性画像和统计画像之后,可以根据团队的人力做些深度的发展,从基础的统计,可以做无监督的隐语义理解(lda, w2c等)、有监督的双塔建模、加入特征的用户兴趣建模,到用户序列建模,甚至各种图方法知识图谱的手段。而具体选择哪些方法进行尝试需要中级算法工程师根据此前在初级阶段累积的经验做预判,例如假如还没有用户embedding的表示,将用户的行为序列作为sentence尝试在很多公司的业务都有过收益的word2vec可以作为baseline;引入更多特征的双塔模型去得到用户的行为embedding大概率能进一步提升效果。而如果用户有些社交属性关联,可以考虑图方法做进一步的挖掘等等。

作为该方向的负责人,需要根据团队发展阶段,进行合理的技术选型,并做适当的改造。例如该不该用序列模型、lstm/rnn/transormer/bert等序列模型如何选择,位置特征如何设计融入等等。关于细节的参数调优需要具体执行的初级算法工程师去进行实验,而大方向的技术选型以及改造方向,则需要中级算法工程师去把握和指导。

高级算法工程师 ––– 业务抽象能力

前面两个阶段的工程师做的事情,严格意义上来说,都是在执行这个阶段的算法工程师定下来的算法指标。这个阶段的算法工程师,需要更多的是对整个业务的理解,去抽象和定义业务问题。比如当前阶段,业务是否需要专门的团队做用户画像,需要多少的人力做素材理解,rank模型是否还有空间、需要投入多少人力持续优化等。如果战略目标制定不明确,影响的将是整个团队的努力。

对于更上层的管理层来说,算法团队的存在意义,绝对不是说一定需要有ctr预估团队,需要有用户画像团队和视频理解团队,需要有人做nlp有人做特征等等。整个算法团队存在的意义,就是能够最终从算法的层面,解决实际的业务问题。在某个阶段需要做的是提升用户点击率,可能需要有ctr模型方向团队和有用户画像方向团队等;在某个阶段引入更多的多媒体素材可能需要有团队做视频理解和图像理解;某个阶段需要做用户增长和留存,可能需要有团队做专门的数据分析影响用户留存的因素,有团队做留存模型有团队做增长模型等等。

这也就决定了不同时期,对于算法团队的目标是不同的,需要的人员配备也不同,而这些,都需要高级算法工程师去站在整个业务层面去理解和拆解,然后将目标层层传递到整个团队去。判断这个阶段算法工程师的标准,主要是对于所负责的业务,能否制定合理的算法可达目标,并带领团队完成实现。

个人觉得,如果35岁了还处在第一阶段,也就是只能执行明确的算法模型,和刚毕业的小年轻比可以说完全没有竞争力,个人职业生涯的进一步发展会很受限。

如果已经进入第二阶段,不可取代性还是很强的,毕竟这个阶段的合理算法技术选型和推动落地能力,是很多刚毕业和工作不久的年轻算法工程师难以做到的。

如果已经到了第三阶段至少已经是业务方向的算法负责人了,都这种title了,考虑的是怎么往公司的中上层走了,根本不会担心年龄这种坎。

35岁对于我个人而言还有几年的时间,也只有几年的时间。无论是算法工程师还是其他岗位,深耕该岗位目前而言可能还是最优的选择,也可以说是没得选的选择。持续不断的去提升自己在技术、技能、经验、资源上的累积,努力去提升自己的相对不可替代性。

至于年龄,不过是个数字而已。就算是个坎,它也远不是终点。

原文地址 https://www.zhihu.com/question/345939613/answer/1177098159


阅读过本文的人还看了以下文章:

TensorFlow 2.0深度学习案例实战

基于40万表格数据集TableBank,用MaskRCNN做表格检测

《基于深度学习的自然语言处理》中/英PDF

Deep Learning 中文版初版-周志华团队

【全套视频课】最全的目标检测算法系列讲解,通俗易懂!

《美团机器学习实践》_美团算法团队.pdf

《深度学习入门:基于Python的理论与实现》高清中文PDF+源码

特征提取与图像处理(第二版).pdf

python就业班学习视频,从入门到实战项目

2019最新《PyTorch自然语言处理》英、中文版PDF+源码

《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

《深度学习之pytorch》pdf+附书源码

PyTorch深度学习快速实战入门《pytorch-handbook》

【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

《Python数据分析与挖掘实战》PDF+完整源码

汽车行业完整知识图谱项目实战视频(全23课)

李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

《神经网络与深度学习》最新2018版中英PDF+源码

将机器学习模型部署为REST API

FashionAI服装属性标签图像识别Top1-5方案分享

重要开源!CNN-RNN-CTC 实现手写汉字识别

yolo3 检测出图像中的不规则汉字

同样是机器学习算法工程师,你的面试为什么过不了?

前海征信大数据算法:风险概率预测

【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

VGG16迁移学习,实现医学图像识别分类工程项目

特征工程(一)

特征工程(二) :文本数据的展开、过滤和分块

特征工程(三):特征缩放,从词袋到 TF-IDF

特征工程(四): 类别特征

特征工程(五): PCA 降维

特征工程(六): 非线性特征提取和模型堆叠

特征工程(七):图像特征提取和深度学习

如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

Machine Learning Yearning 中文翻译稿

蚂蚁金服2018秋招-算法工程师(共四面)通过

全球AI挑战-场景分类的比赛源码(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

python+flask搭建CNN在线识别手写中文网站

中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  


机大数据技术与机器学习工程

 搜索公众号添加: datanlp

长按图片,识别二维码

机器学习算法工程师也会遇到35岁这道坎么?相关推荐

  1. 算法工程师也会遇到35岁这道坎么?

    链接:https://www.zhihu.com/question/345939613 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删 现在互联网行业很多开发工程师(包括前端开发.后端开发等等传 ...

  2. 讨论 | 算法工程师也会遇到35岁这道坎么?

    点击上方"机器学习与生成对抗网络",关注"星标" 获取有趣.好玩的前沿干货 来源:https://www.zhihu.com/question/34593961 ...

  3. 机器学习算法工程师的自我修养

    https://www.toutiao.com/a6647345854191501828/ 2019-01-18 10:14:00 通往机器学习算法工程师的进阶之路是崎岖险阻的.<线性代数> ...

  4. Interview:人工智能岗位面试—人工智能岗位求职之机器学习算法工程师必备知识框架结构图

    Interview:人工智能岗位面试-人工智能岗位求职之机器学习算法工程师必备知识框架结构图 目录 机器学习算法工程师思维导图 机器学习算法工程师思维导图 后期继续更新-- 1.思维导图01

  5. 《百面机器学习算法工程师带你去面试》资料学习

    <百面机器学习算法工程师带你去面试>收录了超过100道机器学习算法工程师的面试题目和解答,其中大部分源于Hulu算法研究岗位的真实场景.本书从日常工作.生活中各种有趣的现象出发,不仅囊括了 ...

  6. 作者:卢祥虎,男,北京金信网银金融信息服务有限公司机器学习算法工程师。...

    卢祥虎,男,北京金信网银金融信息服务有限公司机器学习算法工程师,目前从事P2P风险预警建模相关的算法设计工作,在机器学习算法领域具有一定的理论与实战经验,擅长机器学习中数学算法的优化与改进等.

  7. 大疆2019校招提前批机器学习算法工程师在线笔试题目回忆版

    最后还涉及到两道16分的在线编程题目,但是我忘记了,故没有列出来,望大家原谅2333. 大疆2019年校招提前批机器学习算法工程师B卷题目回忆版 1 考察关于各种激活函数 sigmoid.tanh.r ...

  8. 转载:机器学习算法工程师秋招总结

    转载:原文链接:https://blog.csdn.net/zichen_ziqi/article/details/83308809 版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权 ...

  9. 【数据挖掘】2022年2023届秋招知能科技公司机器学习算法工程师 笔试题

    岗位:高级机器学习算法工程师 笔试时间:2022-9-28 1 简答题 1.神经网络中防止过拟合的方法 (1)降低模型复杂度 (2)正则化 ,正则化正是通过在损失函数上添加额外的参数稀疏性惩罚项(正则 ...

  10. 机器学习算法工程师面试集锦(更新中)

    机器学习算法工程师面试集锦(更新中) 面试问题汇总 常用的损失函数 介绍交叉验证 特征选择方法 机器学习项目的一般步骤 经验风险最小化与结构风险最小化 训练决策树时的参数是什么 在决策树的节点处分割标 ...

最新文章

  1. Python中类的定义与使用
  2. matlab中svd函数用法总结
  3. java类怎么实例化_Java类的定义及其实例化
  4. 对象作为参数示例java_功能Java示例 第6部分–用作参数
  5. 5分钟了解什么是真正的深度学习
  6. Ubuntu主题更换
  7. WPF 虚拟化 VirtualizingWrapPanel 和 VirtualLizingTilePanel
  8. Less的一些基本知识
  9. candence的图纸大小设置_提前感受一下,CAD高手的字体和标注设置原则
  10. Windows 10 安装 scrapy 步骤
  11. php 内存池,内存详解: 详解PHP内存池中的存储层_php
  12. SAP BW报表使用操作手册——基础操作
  13. 金蝶计算机会计实验报告总结,会计实训总结(精选5篇)
  14. matlab中累乘,numpy中的裁剪、压缩和累乘
  15. 图像特征计算——纹理特征
  16. html页面栅格系统,超好用的网页栅格化工具: GridGuide
  17. App推广中常用名词
  18. 测试用例设计-淘宝购物车,微信发红包
  19. vue 引入富文本编辑器(巨简单)
  20. QT 如何去除QListView选中item后的虚线框

热门文章

  1. Elasticsearch实战 | 必要的时候,还得空间换时间!
  2. 42道计算机网络面试高频题+答案,面试官喜欢的答案都在这里
  3. 学习Android studio时的报错Binary XML file line #10: Error inflating class fragment
  4. 【经验】秀米排版指南|特殊布局(如文字环绕图片等无法使用秀米基本布局组合出来的布局)
  5. Arango db 快速入门
  6. Python链家租房信息爬虫和高德地图展示
  7. 华为会强迫升级鸿蒙,华为手机升级鸿蒙系统好用吗
  8. 最小的单片机:ATtiny85
  9. 精简版Android ProtoBuf入门
  10. C# 基础 (3) 垃圾回收机制(Garbage Collector)