转自公众号 量子位
“秋招的AI岗位竞争激烈吗?”
AI岗位这几年一直大热,而知乎上这个问题最近同样很热,陆续吸引了200多个回答,已经有5000多人关注,接近200万浏览。
这个问题看似是在谈招聘,其实更是在谈人工智能相关方向的学生,应该如何更好的自我提升,如何为未来做好准备。
量子位获得了微调、Dr.Frankenstein、Beili、陈晓智、Ender等用户的五篇高质量回答授权。
他们从各自不同的角度,给出了精彩且中肯的观点。我们转载如下,略作编辑。
重点是你有多少必杀技
前一阵子心血来潮去某研究机构面试,面的是不限方向的「机器学习研究员」。前半段聊得很顺利,主要介绍我开发过什么库写过什么论文,想要继续做什么。面试的中段面试官问:“那你的这个方向用深度学习怎么做?”我很老实,说这个方向暂时无法大规模应用深度学习,某些因素还不成熟。对方显得很失望,强调他们需要每个人都做深度学习研究,发深度学习相关的会议,因此这个机会自然也就泡汤了。
讲这个故事的目的是为了说明:AI领域的岗位正在朝精细化发展,而候选人的竞争力更多的是和岗位的「契合度」,而不是你本身有多好。这要求候选人的技能下沉,能在岗位上解决实际问题。
再早几年,这个行业的招聘是走粗放模式的,只要你会ABCDE,学历不错,那么欢迎你。但这几年随着热潮回归理性,以及企业变得越来越“精明”,它们已经逐渐明白了需要什么样的人,明白了AI相关的岗位本身就不是靠员工数量,而是靠质量取胜的。
比如做手机上图片识别的,它的目标候选人就是明白如何把成熟的识别模型部署到手机上的人,而不需要一个自然语言处理的大牛,也不需要一个对机器学习理论研究很深的专家,更不需要一百个普通程序员。这不是说你不够好,而是说你不适合。而大部分人的求职是公司导向的,知名公司一个不落下,使用“鸟枪法”。而不是技能导向,寻找和自己相关性高的雇主。
所以在这个回答下你会看到两种截然相反的看法:
抛开所谓的个例不谈,我猜测出现相反结论的原因可能是因为大家对于「契合度」的关注程度不同,就是你面试的岗位和你的经历与经历有多大的相关性,你是否可以很快为团队做出贡献。我猜测不少面试不顺利的人可能都属于有了广度,缺少深度,也就是“万金油”。比如某个候选人可能是:TF也会用一些,NLP的项目做过2个,刷过两个Kaggle,人脸检测学过教程,Cousera上的证书也拿过几个。这就属于缺乏特点,和所面试的岗位之间关联性不够强,竞争时自然后力不足。
对于明白自己喜欢和了解的领域是什么的人来说,只要朝契合度高的方向使劲就好了。而对于只有了知识广度,却还没有确定自己的发力方向的人来说,最重要的是明白:你的特点是什么,你有什么优势,你打算怎么利用这个特点脱颖而出。换句话说,「你和别人有什么不同」。
从我自己面试别人的经历来看,最重要的是你有什么长处,而不是你的技能有多均衡。越是有经验的业内人士越是看候选人的长处,而忽视短板,与木桶原理相反。「什么都会一点」=「什么都不擅长」。
随着行业进入进一步细分和专业化,靠刷刷题,调调包,做几个相关项目,上几门课程,就能进大厂和明星创业公司的机会只会越来越低。我们都需要开始思考发力点,就是你与别人有所区别的地方,争取成为一个「小领域的专家」。即使无法成为专家,找亮点也比追求全面开花要好,比如:
对A领域感兴趣,是否可以在A领域发一些有意义的论文
对A领域感兴趣,是否有实现A领域缺失的经典算法,并封装以供他人使用并获得关注
编程能力很强,尝试做偏向底层的设计,比如保证机器学习算法在移动设备上高效运行
明白自己的擅长的技能在什么公司有用武之地,专注于这些雇主
说到底,任何风口行业都有降落的时候,求职本身就是“小马过河”,your mileage may vary。同时随着行业逐渐成熟,中高端岗位的求职重点肯定会朝专业性和契合度上发展。所以重点不是你会多少武功可以表演,而是你有多少必杀技可以一招毙命。
“竞争十分激烈啊”
最近又去实习,吃饭的时候听leader调侃:刚才视频面了一个小时,我让他写个线性目标的sgd优化的伪代码,我把目标函数写给他,他在视频里写了个
import tensorflow as tf
…
loss = …
optimizer = …
TM的用tf的优化器我要你写啊……老子是让你推啊……
其实面试官就是希望他能就原理做一下简单推导,我没有表述完整,面试官后来解释了要他推一下公式,写下来,mini batch怎么更新,更新什么写一下伪代码,可他写不出来。
leader稳定了下情绪:刷了十几份简历,全是这样的,除了deep learning、tf/pytorch啥都不会。
我笑抽,道:你得拿学校筛筛啊……
他:笑个屁,都是你们学校的……
由此可见,竞争十分激烈啊……
最全应聘指南
感觉是比较激烈,但是也没有想的那么惨烈~~
面过腾讯优图、阿里中台、腾讯AI lab,其实了解下来,大厂还是很缺人的!!!
像腾讯优图、AI lab, 阿里IDST,AI lab,这几个热门部门一直都在疯狂招人,只是很多候选的同学背景不match,而不是你实力不行(当然基础不扎实的同学请好好补课)~~
大厂很多时候招人,有一个很重要的背景就是希望校招的同学能够快速上手业务,帮助产出。如果你只是发发paper,了解些不痛不痒的模型,知道个大概的机器学习原理, 那面试官怎么可能对你感兴趣呢?最后招进来,也没办法跟老板交差的。
据我了解,对于一些部门大力投入的业务,有些都不设HC上限的,只是很多时候都招不到一个合适的候选人,因为大家动不动就说我用过各类深度学习或者机器学习的算法库,但是一问细节,都是浮在表面,这让面试官如何继续下去呢?
还有一部分同学,看起来paper很多,但是一问motivation,其实就是修修补补,这种paper对于产品落地没有太大的意义,面试官反而会去拷问一些基础知识了,而最后很多发paper的同学往往基础知识都不够扎实…..
但是投AI 的同学真的实在太多了(大家可以考虑下转型)。。。曾听mentor说投算法实习的有2000个候选人,最后一般录取3个左右。。。(想想这比例,大家还是好好练好基本功,再投AI比较合适呀)
所谓快速上手业务我觉得从三个角度来说比较合适:
1、业务需求型
假设你负责的算法是CV / NLP 或者推荐中的一种吧,那么leader交给你一个project的时候,不可能整套算法的输入和输出都是确定的,那么这个时候你要去明确输入是哪些? 输出又是哪些?(这些可能需要跟leader沟通,有些也可能需要跟开发或者PM沟通),明确之后,有哪些可以做baseline的算法?
接着,针对你的这个业务场景你想用哪些算法尝试?作完对比以后,如何做badcase分析?在写周报时,如何描述你做了什么,有什么问题,后续你初步的解决方案又有哪些?这一连串的步骤连起来并且在有限的时间内完成,这就是快速上手业务;
2、业务探索型
现在leader交给你一个预研性的project,组内没有人做过,那么你能否通过github, stackoverflow, reddit, 或者 paper 等各种渠道,尝试2到3种你认为可行的方案,而不是直接google一下,问下同事,看下论文,直接反馈说,不行,这个太难了;
3、业务成熟型
组内这快业务比较成熟,比如大厂在做推荐的任务时,都有成套的框架和组件,那么你能否及时用好(比如说,一个月到两个月的时间完成从数据接入到数据输出的整个流程,以及其中的难点,时间耗点和可改进点),在做月度汇报时,不是说我熟悉了什么,而是我发现了什么,我觉得有哪些可以改进的地方,你下一步尝试的时间和预期等等,这样也是所谓的快速上手业务。
(这其中调参的目的是提升效果,但是你还得对数据有较高的敏感性,并要学会从leader的角度去考虑我该如何与其他部门对接,准备哪些材料,更好的用好现有的组件和算法)
关于面试和具体技术的涉及范围:有不少同学问到面试的范围和coding的要求,分硕士和博士补充吧 (只针对应届同学)
一、硕士
主要看部门、方向、业务和你所了解方向的掌握程度。
1、大厂
基本的coding+leetcode是基础(c++或java必须掌握一项,python等脚本语言必须掌握一项。
所谓掌握,我的面试体验是:拿C++举例,你对其中的多态、容器、垃圾回收等要有清晰的了解,让你举个例子或者做个描述必须得信手拈来) ,那caffe、tensorflow、pytorch、mxnet,你至少要玩过一项,这一项随便问个模型你得知道输入是什么,参数有哪些,输出是什么吧。再加上你的论文、项目、比赛或者实习经验,这是面试的加分和可谈判项。
那后续的面试套路基本就是machine learning(原理+推导)+ deep learning (举例+理解,例如过拟合的解决方法,dropout的梯度求解,cnn的梯度求解等)+ 你的具体方向中的SOTA(state-of-the-art)模型(CV / NLP/ 语音 等)。
对业务考察也比较关注,就拿推荐系统来说,xgboost / lightGBM这些基本的你都得会,包括怎么用,怎么做特征选择,怎么用大数据框架等,默认你都要有一定程度的涉猎(因为面试官在这行摸爬滚打至少3年以上了,看简历看多了要求自然水涨船高,这些让我们应届生的确有些头疼【想想,你在学校怎么会轻易接触上千万甚至上百亿的数据呢,所以基本都是懵逼状态,这里给大家说个小窍门,核心思想就是我认为可以先怎么样怎么样,然后再怎么样怎么样,要有个大致的解决思路,方案不一定要对,但一定要有你自己的想法和尝试】);
2、创业公司(或者小型独角兽)
简单粗暴,两轮leet code中等难度的面试题,因为公司面临的是生存问题,没有时间和空间让你以摸索的方式搞产品,所以中等的代码输出能力是必须的。
我面过上海的一家B轮公司,一个小时6道算法题,这对于我这种半路进入AI的同学,基础知识又不是足够扎实的同学来说的确是当头一棒,所以锻炼可持续性的开发能力是非常重要的(基本思路就是搞通一门语言,再对例如贪心、动态规划、BFS、DFS、搜索、字符串、图、数组、链表、二叉树等类型的数据结构与算法有深入的了解);
3、巨星独角兽
重点考察两个,一个是代码输出能力(面向算法和面向业方向的),一个是学习能力,前者是一面的通过点,后者是二面通过点。这里代码会对例如SGD的并行实现、CNN的伪代码实现、drop out的反向梯度实现、tensorflow的源码等进行考量(可实现+free bug是coding能力很强的面试官喜欢的,思路和内存消耗以及并行化是博士面试官喜欢的)。学习能力主要考察智商,以及根据你硕士期间做的事情来进行衡量;
二、博士
主要看重点会议论文 + 对业务的理解 + 一定的代码输出能力(MATLAB 、R这种也算)(我自己不是博士,只能看些身边工作的博士经历来说几句吧)
1、基本3-4篇顶会是进入大厂一线AI算法团队的门槛;
2、剩下的就是考察你后面三年之内出顶会paper和对业务帮助的能力了(我也不知道怎么考察,大概会让你谈谈思路和想法吧,或者直接跟你说我们有个场景,你打算怎么做之类的);
3、没有顶会的博士一般进入大厂二线的算法团队,在已有的公司业务上进行算法迭代和优化(至于大厂算法部门哪些是一线团队哪些是二线团队,大家上脉脉上一问便知);
4、代码这部分博士好像都不怎么问leetcode 了,至少概率比较小,这个要看面试你的总监或者高管是什么风格的,如果对方是ACM背景的大神,那可能还是会给你出道算法题。。。
5、总而言之,博士大部分都是圈子里的人,套路大概都很清楚,最后就是在做一个最优match的匹配问题,所以会有取舍吧;
Ps,你的老板和实验室大致决定了你最后能去的团队水平。。。(大厂基本对国内牛逼的一线老师和团队都是实时跟踪的,所以有个好老板对于博士太重要了,这有连带作用呀)。
招聘者说
在我看来,我期望招到的候选人大致分两类:
第一类候选人是某个方向的专家。他们在某个方向(比如detection/parsing/3D)有很深的理解和实践经验,掌握该领域最好的几种方法,从算法原理(为什么work)到代码实践(如何work)都了然于胸,且能针对实际问题独立设计相应的算法方案。
这类人,非常紧缺。今年一个比较明显的体会就是有顶会paper的人比往年更多了。如果是往年,我们会期望他们有独挡一面的能力,然而今年感觉有点差距。具体体现在,有的候选人虽然有一两篇paper,但对自己做的事情却也理解不深,或实际动手能力比较欠缺。这点比较遗憾。
第二类候选人有非常强的动手能力。他们不一定要有独立设计算法方案的能力,但一定要有过硬的实践能力。比如能较好的复现一些paper;在嵌入式平台上优化过模型而不仅限于跑GPU;或者在自己做过的项目中做过一些比较扎实的改进(真知灼见)而不仅限于跑开源代码。
这类人,相对没那么紧缺。即使这样,由于太多人往AI领域转了,至少90%的候选人都达不到第二类要求,导致招聘筛人工作量剧增。
关于AI科学家的幻觉
对于这个问题,Ender更推荐他之前写的这篇文章。
(其实这是一篇吐槽,本来的标题是“不要用民科的心态对待AI”)
因为AI概念如此之火。
从各种BP和公司宣传看,老板们纷纷转型AI公司,从只缺一个程序员变成了只缺一个AI专家;从不同职位收的简历来看,对于广大的同学们,最热门的职业理想从前几年的产品经理变成了AI专家,
那么关键的问题就来了,到底什么是AI专家?
从前我在大公司招聘的时候,最怕的是没有任何工作经验和相关背景的同学,上门就说做科学家,反问对方做了什么准备,小朋友理直气壮的说,我就是等着进来你们培养我的。觉得自己只差进入牛的AI公司(或者牛AI学校,研究院)有AI牛人给个机会手把手的教,是第一大幻觉。
有些小朋友心气很高,就算让他进了谷歌FB,他也会觉得怎么谷歌的科学家都在做数据测试啊,去阿里腾讯解决业务问题一定更好;
去了BAT会觉得怎么只会糙快猛,部门互相撕逼,重复造轮子,技术水平上不去啊,还是再读个博士吧;
到了学校里发现怎么缺数据缺资源,都在研究茴字的24种写法……直到被不同地方虐一圈,才有个理性的认识。当然也有像王垠同学这样的,每个地方吐槽一遍,举世皆浊我独清的做了网红。
作为各种牛棚里看着大牛们长大的人,我没有见到哪个计算机科学的牛人不是首先靠着自己极其的努力成长起来的。
清华张钹院士的得意弟子朱军从本科开始发KDD和ICML,每天早上一早从清华骑车到MSRA坐到晚上12点回清华,除了去打两局台球,几乎不停歇的写代码,他的系统工程能力非常强,是微软学术搜索系统的核心成员,理论上也做了很深的研究,后来去CMU跟着Eric Xing做的也非常好,回清华做教授。
我们这级的达哥,林达华教授(他写的MIT牛人说数学体系,隔几年都会被人翻出来转几次,对了,现在是商汤的联合创始人,刚刚帮汤老师出了人工智能的中学教材),大学几乎不上课,研究生和博士生的导师都非常牛,他们都感叹林达华这样的学生特别省心,是自己做系统,自己推着自己做研究,只需要大方向上点拨一下就可以了。
师傅领进门,学艺靠个人,指望学校或者公司帮你成为专家不现实,谷歌10万人,BAT都好几万人,你能找来解决AI问题的有几个人?
还有些同学的幻觉是觉得AI专家做的事情,应该是研究算法,机器学习嘛,应该是跑模型调算法,只要负责研究优化目标就好了嘛。那这样算的话,只有去大学和研究院了。
计算机科学的特点是,数据量和业务复杂程度会决定你问题的复杂程度,很多同学在学校里的project,大多是理想化状态下小数据集上的原型,离工业级别的应用,有着巨大的鸿沟,这需要真实世界里一路踩坑的血泪经验磨砺,哪个现在成功的大公司不是当初一路拉网线拼服务器,一点一点优化出来的。
当世赫赫有名的计算机科学家谷歌的Jeff Dean,不就是负责system和infrastructure的么,现在他讲的Google Brain, Knowledge Graph也都是在强大的系统上来的。以前MSRA徐谷做了一个关于大规模图像去重的报告,我印象非常深刻的是always get your hands dirty。在互联网级别的数据上面,所谓的各种算法,都变成花拳绣腿,重要的是系统,系统,系统!
对底层数据理解,对商业目标清楚。无论是MSR还是Google X, Yahoo Labs,里面厉害科学家的动手能力非常的强。Facebook招了很多牛PhD写PHP,外面有些尊贵的同学颇受不了。计算机首先是一门engineering的学科,这里的开发不分贵贱,重要的是你能够解决问题,革命成功靠的不是28个半布尔什维克。
第三个幻觉是,从头造锤子才是有挑战性的人工智能。这是我深恶痛绝的,公司不是研究院,AI不是空中楼阁,你修炼的也不是屠龙术。现在各种开源项目和系统都非常成熟了,你在一个烧着投资人钱的商业公司里从头写一套OpenCV,重新发明一遍SVM,觉得这样才有意思,对不起,请回到30年前的学校里去。你必须有产品sense,而产品的本质是解决问题。
以前沈向洋老师经常说的三好学生招人标准,数学好,编程好,态度好。
对现在有志于投身AI时代的同学们来说,最重要的是看待人工智能的态度,纸上得来终觉浅,找到一个可以解决问题的地方,和专家们一起,靠自己挽起袖子去躬行。要么系统能力特别强,要么能理解商业,最终AI专家的价值,取决于他能够解决问题的大小。
对于想找AI专家的老板们,先想清楚你的业务问题,AI并不是解决战略无能的灵丹妙药,找几个纸上谈兵的专家来解决问题,彼此过高的期望只怕会互相伤害。
该贴被huang.wang编辑于2018-9-1 0:13:36