算法工程师养成记

2021 年 11 月 11 日 极市平台
↑ 点击 蓝字  关注极市平台

作者丨bytecoder@知乎(已授权)
来源丨https://zhuanlan.zhihu.com/p/430005074
编辑丨极市平台

极市导读

 

作者回顾了自己一步步成为算法工程师的经历,总结分享了成为一名合格的算法工程师所需的技能点,希望能给予同学们一些帮助~ >>加入极市CV技术交流群,走在计算机视觉的最前沿

写在前面的话

最近收到了不少同学的要求,想要让我分享一下如何从0到1成长为一名合格的AI算法工程师,之前回学校也做过一些分享,总感觉比较零散,正好趁着这个机会整理一下,因为大家要求的是从0到1,我自己也审视了一下我当年是如何走上算法工程师这个不归路(开玩笑,现在也非常感激自己当年的选择),然后也去想了几个关键节点的选择,也参考了自己平时做的一些笔记和代码,同时和周围一些领域牛人做了一些交流,整理了一份还算齐全的资料出来

算法工程师分类

算法工程师是一个非常通俗的称呼,涵盖的领域非常的广,既包括我们常说的AI应用(推荐、广告、搜索、智能客服、智能风控等),也包括我们在学校开设的AI课程(机器学习、深度学习、强化学习、自然语言处理、图像处理、语音识别等)。算法工程师这个职业最早出现在JD中,是豆瓣的阿北为了招募推荐算法工程师而发布的,真正被大家所熟知应该是2016年AlphaGo席卷全球,才让越来越多的同学加入到这个行业。

算法工程师前景

衡量一个工作前景,最直接的感知就是薪水。毕竟价格是由供需关系决定的。我们都是打工人,希望能够赚钱养家户口,最近看大厂校招算法工程师白菜价工资而言 15k(16年) → 19k(17年) → 21k(18年) → 22k(19年) → 25k(20年),社招(1~3年内)的话,我列一个图,大家自行观摩吧:

个人算法入门经历

其实我在大学一直是做硬件的(飞思卡尔智能车、电子设计大赛),每天接触的是单片机和ARM这些,上研究生之后当时实验室做Java开发比较多,也是懵懵懂懂的,每天也不知道自己在干啥,研一上半学期,每天也非常的迷茫,反正就是寝室和实验室两点一线。我这个人有一个特点,比较喜欢和高年级人交流,大概是春节的时候,我回家比较晚,恰巧实验室有一个博士师兄在刷公开课(吴恩达的机器学习),抱着好奇的态度,与他交流了一下,觉得这个方向很酷,然后我就入坑了。

研一暑假的时候,找实习,不出意外,所有的算法岗全跪,想想那个时候真的很年轻(代码能力弱的不行,机器学习基础不行,最重要的是没有算法项目经历);在我非常绝望的时候,有一家做数字营销的创业公司(技术6个人左右)给我发了offer。这段实习经历非常的宝贵,我也非常的珍惜(经常一起007,打地铺在公司睡觉),通过这段实习,我知道了怎么成为一名合格的算法工程师。

其实在一个小白进入一个新的领域,如果能够遇到一个大神,能帮助他梳理清楚整个方向脉络,只要他刻苦努力,基本就能很快做到入门了。现在想想其实我之前走了很多弯路,只是通过自己的观察和亲身经历入坑算法,而且运气成分占很大比例(如果我没有和博士聊天,如果博士看的不是机器学习公开课,如果博士师兄嫌我烦不愿意搭理我,如果我没有找到算法实习)。

后来在研二暑假的时候,在北京大望路某大厂做算法实习,也正式开启了自己的算法工程师之路。当时组内大神很多,最喜欢的就是每两周一次的经验分享(最新paper解读等)。当时自己比较菜,一般都是坐下面搬小板凳记笔记,然后回去把听不懂的名词在Google Scholar查找,找到文献开始认真阅读,但是很欢乐

之后就是校招拿到大厂offer,然后顺利进入大厂。但在职场初期,走的比较坎坷,自己被分配去做了1年大数据(折腾Hadoop、Hive),索性那个时候没有自怨自艾,最后通过自己的努力,重新回到算法工程师这个岗位,接触到了计算机视觉和自然语言处理,然后又去做了推广搜,到现在开始带团队做算法负责人。

算法工程师的要求

在工作的这些年,遇到不少人咨询我,如何产品转算法、如何运营转算法、如何开发转算法、应届生如何入坑算法等,毕竟这几年算法工程师的工资水涨船高(需求大、供给少,典型经济学原理),人都是趋利的,都想进来卷一下,为了让各位同学更有体感,我从我之前经历的面试谈起(里面也加入了一些近期出现的新模型的一些问法,基本上都是面试真题),然后大家通过这一波面试,就能知道算法工程师要求了,当然因为是工程师,就不列算法leader面试的情况了。

算法面试

同学A:我叫xxx,毕业于yyy,balabala
面试官:嗯,我看你用svm做了一个项目,能展开详细讲讲么?
同学A:我这个项目的背景是xxx,遇到了xxx问题,经过调研,决定采用svm来解决
面试官:嗯,你这个项目的目标是什么?
同学A:额,我的项目....额....额,嗯,是提高分类准确率,是一个二分类模型
面试官:嗯,你的离线指标提升了多少?
同学A:嗯,我的分类准确率到了80%,召回率到了70%
面试官:你是怎么做数据处理的?涉及到那些技巧?
同学A:我直接用了word2vec抽取了embedding来做的
面试官:你用了word2vec,那么能谈一下skip-gram和cbow么?包括skip-gram和cbow分别适合处理什么样子
场景?这两个模块都用到了层次softmax,这个会带来什么样的问题?除去Huffman tree的优化方法,还有什么
更好的算法么?NCE听过么,能详细讲讲如何在word2vec训练中怎么落地么?能聊聊word2vec有哪些不足么?
知道业界对于word2vec的一些改进方案么?【NLP算法原理内容考察】
同学A:额。。。我没有想过
面试官:你除去embedding,有尝试一些别的特征引入么?例如归一化、离散化、tf*idf、ngram【特征工程考察】
同学A:额。。。没有尝试过
面试官:紧接着你刚才谈到embedding技术,有尝试过其他的embedding技术么?
同学A:嗯,我知道有bert
面试官:嗯,bert来讲讲吧
同学A:bert是xxx模型,用到了transformer技术,
面试官:嗯,谈到了transformer,能聊下为啥要做归一化么?能聊一下为啥方差是dk么?【深度学习内容考察】
同学A:额。。。忘记了
面试官:回答开始的问题,你用到了SVM,能手动推导一下么?【机器学习原理考察】
同学A:额。。。不太会
面试官:假设你要处理的数据很多,你计划怎么处理
同学A:额。。我会用hadoop和spark去做数据处理,进行筛选
面试官:嗯,看你很了解大数据处理的工具,那么如何用hadoop或者spark实现一个并行的SVM?【机器学习应用考察】
同学A:额。。。不会
面试官:vc维知道么?能用它来解释一下SVM为啥分类效果好么?
同学A:额。。。不会
面试官:除去SVM,还有很多好的分类算法,有尝试用深度学习来做文本分类么?
同学A:用过textCNN
面试官:用过CNN对么?能聊一下卷积的实现方式么?另外如果发生gradient vanishing,有哪些方法可以帮助
解决?CNN如果加深的话业界有哪些成熟的方案么?优化算法了解么?动量法为啥能够解决梯度收敛过慢的问题?
文本是序列类的,CNN抓局部,有试过RNN类的方法么?【数学原理】
同学A:额。。。不会。。。没有用过
面试官:如果数据量很少,怎么做分类的数据增强?
同学A:额。。。
面试官:好吧,我们来做一道算法题,实现二叉树的序列化与反序列化【数据结构与算法】
同学A:嗯,这题我会,很快写完
面试官:你的时间复杂度是多少?是否有更优的方法么?
同学A:额。。。。
面试官:如果是多叉树,怎么解决?
同学A:不会。。。哭泣。。。
面试官:你有什么问题问我?
同学A:balabala

面试评价体系

各位同学可以对号入座一下,如果你去面试,怎么回答上述提到的问题,我这边给大家列一下回答到什么程度,能拿什么样子的offer,这里选用了Google评价人才的体系

  • 卓越(一定要这个人,他没来我就辞职)

    • 数据结构与算法的代码秒杀,并给的是最优方案
    • 项目做的非常好,所有的问题都能回答出来,并且引经据典,旁征博引,与面试官产生了共鸣,有很强的技术视野
  • 超过预期(这个人不错,他没来我会难受)

    • 数据结构与算法的代码写出来,且bug free或者经过非常少的提醒就能AC
    • 项目做的不错,基本上能回答出上述90%以上的问题,基础很好
  • 符合预期(这个人可要可不要,其他面试官看看)

    • 数据结构与算法的代码写出来,但是bug一堆,需要多次提示
    • 项目做的一般,能回答出一些原理性的东西,有一定的基础
  • 低于预期(如果录用这个人,我就辞职)

    • 数据结构与算法的代码没有写出来
    • 项目做的很浅,问到的东西一问三不知占比为80%以上

算法工程师职业发展

BAT三家在这个行业时间足够长,且职级体系经过了很长时间的沉淀,但腾讯小级过多,百度股价不振,最终各家都以阿里的职级体系做对标,详细可见下表:

算法工程师技能栈

我们以事实说话,看一下JD的要求,来分别给大家拆解一下,先看图:

推荐算法工程师JD

算法工程师技能树

硬实力

  • 计算机基础

    • 链表、树、图、排序、查找、跳表、BloomFilter等
    • 数据结构与算法(必要)

    • 操作系统(可选)

    • 计算机组成原理(可选)

    • 编译原理(可选)

    • 计算机网络(可选)

  • 数学基础

    • 高等数学(必要)
    • 线性代数(必要)
    • 概率论与随机过程(必要)
    • 凸优化(必要)
  • 算法能力

    • Q learning、MDP
    • 目标检测、图像分类(ResNet、VGG)、图像分割等
    • Sequence Labeling、Text matching、Topic Model、Language Model、CRF等
    • CNN、RNN、Attention、Dropout、Batch Normalization、MMoE等
    • Logistic Regression、EM、SVM、HMM
    • 熟悉常见机器学习算法原理与基础实现(必要)

    • 熟悉常见深度学习算法原理与基础实现(必要)

    • 自然语言处理(如果是NLP工程师,那么此处为必要,否则为可选)

    • 图像处理(如果是CV工程师,那么此处为必要,否则为可选)

    • 强化学习(可选)

  • 工程能力

    • 至少一门服务器语言(如C++、Java、Go等)
    • 至少一门脚本语言(如Python、R等)
    • 至少一个深度学习框架(如Tensorflow、Pytorch等)
    • 大数据处理技术(如MapReduce、Hive、Spark、Flink)

软实力

  • 沟通能力

    • 上下游资源协调、与人合作、与上级沟通等
  • 抗压能力

    • 项目压力来临的时候,怎么抗住压力,挺过去,怎么锻炼强的心理素质,怎么排压
  • ownership

    • 对于自己负责的项目,要有强的ownership,自驱,达成目标
  • 领导力

    • 有建立自己的影响力,从部门内扩展到部门外进而扩展到公司或者行业

我自己日常习惯

  • 论文

    • 作为一名合格的算法工程师,首先需要有复现论文的能力,一般灌水的论文比较多,我个人会根据摘要、结论以及是否有github代码链接来去筛选我关心的方向
    • 每年都会抽出一部分时间,对于历史上具有重大突破的论文进行反复阅读以及复现(AlexNet、VGG、Attention、KNRM、DSSM、FM、DeepFM等)
    • 每个月都会精读一篇论文,泛读4篇论文(每周一篇)
  • 写代码

    • 一周至少20小时的写代码时间(每天平均4小时写代码时间)
    • 一周至少10小时的code review时间(每天平均2小时review别人的代码)
    • 一周至少4小时的阅读源码时间(每周六日会去看Tensorflow等使用框架的所用模块的相关源代码)
  • review case

    • 一周2小时的review线上case时间(自己会拿badcase,通过数据分析来进行case分析,找出badcase有可能的原因,并尝试解决方案)
    • 每个月2小时与组内同学、PM、运营一起讨论线上case的解决方法,拉齐认知,认领分工
  • lanuch review

    • 一周2小时的时间参加Lanuch review,通过参加Launch Review,看到自己感兴趣的项目也会输出comments,另外也会去回答别人在自己负责项目的comments
    • 每个月2个小时的时间,针对自己感兴趣的launch review涉及到的技术细节进行深挖,并与相应负责的同学深聊
  • 参加分享

    • 每个月会参加一次分享(不限技术、产品、运营、理财),主要是想认识不同岗位的同学,每个人身上都有闪光点
    • 每年会参加两次工业界组织的大型分享,了解同行针对类似问题怎么解决
  • 读书

    • 每个双月至少会读一本课外书(心理学、设计、产品、商业实战)
    • 书写读书笔记,帮助自己梳理大的知识框架
  • 健身

    • 每周至少三次室外运动(游泳、打球等)
    • 每天至少5000步

有用的一些资料

  • Gilbert Strang 的线性代数,MIT经典教程
  • 陈希儒的《概率论与数理统计》
  • 《C++ Primer》
  • 《剑指Offer》
  • 刷题网站Leetcode
  • Bengio写的花书 《 Deep Learning 》
  • 李航写的《统计学习方法(第二版)》
  • 斯坦福大学公开课:cs229、cs231n、cs224n、cs234
  • Tensorflow官方文档

祝大家成为一名优秀的算法工程师

如果觉得有用,就请分享到朋友圈吧!

公众号后台回复“88”获取严彬:STARK-

基于时空Transformer的视觉目标跟踪PPT下载



CV技术社群邀请函 #

△长按添加极市小助手
添加极市小助手微信(ID : cvmart4)

备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳)


即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群


每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~



觉得有用麻烦给个在看啦~   
登录查看更多
0

相关内容

在数学和计算机科学之中,算法(Algorithm)为一个计算的具体步骤,常用于计算、数据处理和自动推理。精确而言,算法是一个表示为有限长列表的有效方法。算法应包含清晰定义的指令用于计算函数。 来自维基百科: 算法
对话推荐算法研究综述
专知会员服务
33+阅读 · 2022年4月4日
算法通关手册(LeetCode)
专知会员服务
156+阅读 · 2022年1月13日
【干货书】算法设计艺术,319页pdf
专知会员服务
112+阅读 · 2021年10月24日
专知会员服务
47+阅读 · 2021年5月21日
一份硬核计算机科学CS自学修炼计划
专知会员服务
40+阅读 · 2021年1月12日
专知会员服务
41+阅读 · 2020年7月29日
清华大学《人工智能》书籍教学课件开放下载
专知会员服务
137+阅读 · 2020年7月27日
【纽约大学】最新《离散数学》笔记,451页pdf
专知会员服务
123+阅读 · 2020年5月26日
Shopee招聘计算机视觉算法工程师
CVer
0+阅读 · 2022年2月17日
我的算法工程师日常:详解真实的算法工作
极市平台
0+阅读 · 2022年2月14日
度小满|图机器学习算法工程师招聘
图与推荐
0+阅读 · 2022年2月7日
一个CV算法工程师在技术方面的小反思
极市平台
0+阅读 · 2022年2月1日
WXG招搜索/图学习算法工程师
图与推荐
0+阅读 · 2021年12月17日
6 年大厂面试官,谈谈我对算法岗面试的一些看法
夕小瑶的卖萌屋
0+阅读 · 2021年11月16日
35岁后的算法工程师,是不可或缺还是被淘汰?
极市平台
14+阅读 · 2019年12月3日
2018年SLAM、三维视觉方向求职经验分享
计算机视觉life
17+阅读 · 2019年2月25日
“搞机器学习没前途”
CSDN
236+阅读 · 2018年9月12日
机器学习/算法19家公司面试总结(内含薪资)
深度学习世界
12+阅读 · 2017年11月14日
国家自然科学基金
6+阅读 · 2017年12月31日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
5+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
6+阅读 · 2010年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2008年12月31日
Arxiv
0+阅读 · 2022年4月20日
Arxiv
2+阅读 · 2022年4月19日
Arxiv
12+阅读 · 2021年5月3日
Arxiv
34+阅读 · 2019年11月7日
Arxiv
13+阅读 · 2018年4月18日
VIP会员
相关VIP内容
对话推荐算法研究综述
专知会员服务
33+阅读 · 2022年4月4日
算法通关手册(LeetCode)
专知会员服务
156+阅读 · 2022年1月13日
【干货书】算法设计艺术,319页pdf
专知会员服务
112+阅读 · 2021年10月24日
专知会员服务
47+阅读 · 2021年5月21日
一份硬核计算机科学CS自学修炼计划
专知会员服务
40+阅读 · 2021年1月12日
专知会员服务
41+阅读 · 2020年7月29日
清华大学《人工智能》书籍教学课件开放下载
专知会员服务
137+阅读 · 2020年7月27日
【纽约大学】最新《离散数学》笔记,451页pdf
专知会员服务
123+阅读 · 2020年5月26日
相关资讯
Shopee招聘计算机视觉算法工程师
CVer
0+阅读 · 2022年2月17日
我的算法工程师日常:详解真实的算法工作
极市平台
0+阅读 · 2022年2月14日
度小满|图机器学习算法工程师招聘
图与推荐
0+阅读 · 2022年2月7日
一个CV算法工程师在技术方面的小反思
极市平台
0+阅读 · 2022年2月1日
WXG招搜索/图学习算法工程师
图与推荐
0+阅读 · 2021年12月17日
6 年大厂面试官,谈谈我对算法岗面试的一些看法
夕小瑶的卖萌屋
0+阅读 · 2021年11月16日
35岁后的算法工程师,是不可或缺还是被淘汰?
极市平台
14+阅读 · 2019年12月3日
2018年SLAM、三维视觉方向求职经验分享
计算机视觉life
17+阅读 · 2019年2月25日
“搞机器学习没前途”
CSDN
236+阅读 · 2018年9月12日
机器学习/算法19家公司面试总结(内含薪资)
深度学习世界
12+阅读 · 2017年11月14日
相关基金
国家自然科学基金
6+阅读 · 2017年12月31日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
5+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
6+阅读 · 2010年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2008年12月31日
Top
微信扫码咨询专知VIP会员