前言:一名985高校的本科毕业生拿到了年薪40万的岗位,忍不住在互联网论坛炫耀起来,其拿到的是某互联网公司的算法岗位,并称:985本科,拿到了40多万的offer,第一件事就是告诉爸妈,这应该是我秋招最开心的事情了,与诸君同乐!
985本科程序员:应届拿到年薪40万的算法岗,原来算法这么值钱!
写在前面:首先你记住,青出于蓝胜于蓝,一代更比一代强,每一位IT人不进则退!
一名985高校的本科毕业生拿到了年薪40万的岗位,忍不住在互联网论坛炫耀起来,其拿到的是某互联网公司的算法岗位,并称:985本科,拿到了40多万的offer,第一件事就是告诉爸妈,这应该是我秋招最开心的事情了,与诸君同乐!

1 此帖一出,立即引起了同行们的热议,大家纷纷投来羡慕的目光:校招40万倒挂不少老员工,老员工这几年的工作意义在哪?

有其它网友随之附和:因此老员工就不要不平衡了,今年这种倒挂局面还不是你们自己一手造成的?很多人离开大学恐怕就再也没有充过电。
资深HRBP也反应,近十年的应届生质量一直在直线增长,常常超出预期。


不论是不是应届生,公司肯定是按能力付薪酬。
应届生只是一个名号,技术到位了才能撑得起那样的薪资。而关于倒挂了老员工,那只能承认技不如人,或许是需要给自己充充电了。确实也警醒了每一位IT人不进则退。
2 是否真的进了DT时代?
我们先来看看2018互联网校招的高薪清单:

*来源:网络
可以看到排在第一位的是谷歌中国的年薪56万(人工智能),其次是微软、Google的算法工程师,以51万,50万分居第二,第三。 放眼望去,还是算法工程师的需求多,年薪基本上在30万以上。
通过校招就给到这样的薪资,肯定有一大批人说:我们可能参加了一个假的校招...也有不少人表示质疑,难道是互联网行业薪资的泡沫太大?
但不能否认的是:近几年算法工程师们的境遇有了很大改观。早些年,信奉糙快猛主义的大佬们觉得他们饱食终日、无所用心,没工作只好在学校混博士,靠数据上的障眼法装神弄鬼。后来随着AlphaGo大破李世石,大佬们慌不择路地把各种搞劫持、送外卖的生意包装成人工智能,并纷纷请来几位懂算法的国师加持。
于是,算法工程师的身价也水涨船高。各门派工程师不论过去练的是java、php还是excel,都放弃了最好语言的争论,抄起了深度学习,发誓重新修炼成算法工程师。
3 说到底算法工程师也是千千万,但差价甚多。有十几万拿着跟一般程序员差不多的薪资,却也有拿着年薪几百万的,都说算法难,具体是差在哪里了呢?
20万、50万、100万的算法工程师,有什么区别?
第一层次"Operating":会使用工具
这个层次的工程师,对常用的模型比较熟悉,来了数据以后,好歹能挑个合适的跑一下。
达到这个层次,其实门槛不高。早些年,只要掌握了什么叫LDA、哪叫SVM,再玩过几次libnear、mahout等开源工具,就可以拿到数据后跑个结果出来。到了深度学习时代,这件事儿似乎就更简单了:管它什么问题,不都是拿神经网络往上堆嘛!最近,经常会遇到一些工程师,成功地跑通了Tensorflow的demo后,兴高采烈地欢呼:我学会深度学习了,我明天就统治人类了!
这事哪有这么简单。任凭你十八般开源工具用的再熟,也不可能搞出个战胜柯洁的机器人来。进入这个领域的人,都要先了解一个“没有免费的午餐定理”,我们把它翻译成并不太准确的文艺语言:
如果有两个模型搞一次多回合的比武,每个回合用的数据集不同,而且数据集没什么偏向性,那么最后的结果,十有八九是双方打平。
考虑一种极端情况:有一个参赛模型是“随机猜测”,也就是无根据地胡乱给个答案,结果如何呢?对,还是打平!
这就很尴尬了!因为掌握了一堆模型并且会跑,其实并没有什么卵用。当然,实际问题的数据分布,总是有一定特点的,比方说人脸识别,图中间怎么说都得有个大圆饼。因此,问“人脸识别用什么模型好”这样的问题,就有意义了。而算法工程师的真正价值,就是洞察问题的数据先验特点,把他们表达在模型中,而这个,就需要下一个层次的能力了。
会使用工具,在算法工程师中仅仅是入门水平,靠这两把刷子解决问题,就好比杀过两只鸡就想做腹腔手术一样,不靠谱程度相当高。20万是个比较合理的价格。
第二层次"Optimization":能改造模型
这个层次的工程师,能够根据具体问题的数据特点对模型进行改造,并采用相应合适的最优化算法,以追求最好的效果。
不论前人的模型怎么美妙,都是基于当时观察到的数据先验特点设计的。比如说LDA,就是在语料质量不高的情况下,在PLSA基础上引入贝叶斯估计,以获得更加稳健的主题。虽说用LDA不会大错,但是要在你的具体问题上跑出最好的效果,根据数据特点做模型上的精准改造,是不可避免的。
互联网数据这一现象更加明显,因为没有哪两家公司拥有的数据是相似的。百度的点击率模型,有数十亿的特征,大规模的定制计算集群,独特的深度神经网络结构,你能抄么?抄过来也没用。用教科书上的模型不变应万变,结果只能是刻舟求剑。
改造模型的能力,就不是用几个开源工具那么简单了,这需要有两方面的素养:
一、深入了解机器学习的原理和组件。机器学习领域,有很多看似不那么直接有用的基础原理和组件。比方说,正则化怎么做?什么时候应该选择什么样的基本分布?(如下表) 贝叶斯先验该怎么设?两个概率分布的距离怎么算?当你看到前辈高人把这些材料烹调在一起,变成LDA、CNN这些成品菜肴端上来的时候,也要想想如果自己下厨,是否了解食材,会不会选择和搭配。仅仅会吃几个菜,说出什么味道,离好厨师差的还远着呢。

二、熟练掌握最优化方法。机器学习从业者不懂最优化,相当于武术家只会耍套路。这就跟雷公太极和闫芳大师一样,实战起来一定是鼻青脸肿。管你设计了一个多牛逼的模型,如果无法在有限的计算资源下找出最优解,那么不过是个花瓶罢了。
最优化,是机器学习最、最、最重要的基础。你要知道,在目标函数及其导数的各种情形下,应该如何选择优化方法;各种方法的时间空间复杂度、收敛性如何;还要知道怎样构造目标函数,才便于用凸优化或其他框架来求解。而这些方面的训练,要比机器学习的模型还要扎实才行。

根据问题特点调整模型,并解决优化上的障碍,是一名合格的算法工程师应该追求的能力。年薪50万能找到这样的人,是物有所值的。
第三层次"Objective":擅定义问题
这个层次的工程师,扔给他一个新的实际问题,可以给出量化的目标函数。
当年,福特公司请人检修电机,斯坦门茨在电机外壳画了一条线,让工作人员在此处打开电机迅速排除了故障。结账时,斯坦门茨要1万美元,还开了个清单:画一条线,1美元;知道在哪儿画线,9999美元。
同样的道理,在算法领域,最难的也是知道在哪里画线,这就是对一个新问题构建目标函数的过程。而有明确的量化目标函数,正是科学方法区别于玄学方法、神学方法的重要标志。
目标函数,有时能用一个解析形式(Analytical form)写出来,有时则不能。比方说网页搜索这个问题,有两种目标函数:一种是nDCG,这是一个在标注好的数据集上可以明确计算出来的指标;另一种则是人工看badcase的比例,显然这个没法用公式计算,但是其结果也是定量的,也可以作为目标函数。
定义目标函数,初听起来并没有那么困难,不就是制定个KPI么?其实不然,要做好这件事,在意识和技术上都有很高的门槛。
一、要建立“万般皆下品、唯有目标高”的意识。一个团队也好、一个项目也好,只要确立了正确的、可衡量的目标,那么达到这个目标就只是时间和成本的问题。假设nDCG是搜索的正确目标函数,那么微软也好、Yahoo!也好,迟早也能追上Google,遗憾的是,nDCG这个目标是有点儿问题的,所以后来这两家被越拉越远。
所谓“本立而道生”:一个项目开始时,总是应该先做两件事:一是讨论定义清楚量化的目标函数;二是搭建一个能够对目标函数做线上A/B测试的实验框架。而收集什么数据、采用什么模型,倒都在其次了。
二、能够构造准确(信)、可解(达)、优雅(雅)的目标函数。目标函数要尽可能反应实际业务目标,同时又有可行的优化方法。一般来说,优化目标与评测目标是有所不同的。因此,我们还要找一个“代理目标”,比如似然值或者后验概率,用于求解模型参数。评测目标的定义往往比较直觉,但是要把它转化成一个高度相关,又便于求解的优化目标,是需要相当的经验与功力的。
优雅,是个更高层次的要求;可是在遇到重大问题时,优雅却往往是不二法门。因为,往往只有漂亮的框架才更接近问题的本质。
一个团队的定海神针,就是能把问题转化成目标函数的那个人——哪怕他连开源工具都不会用。100万找到这样的人,可真是捡了个大便宜。
在机器学习领域,算法工程师脚下的进阶之路是清晰的:当你掌握了工具、会改造模型,进而可以驾驭新问题的建模,就能成长为最优秀的人才。沿着这条路踏踏实实走下去,100万并不是什么问题。
文章出自:http://qh.itpxw.cn/peixun/software/201844549.html
免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员
用户级别:10
机构名称:IT培训网
联 系 人:罗老师
联系电话:13783581536
联系手机:13783581536
在线客服:
在 线 QQ:
电子邮件:
网站域名:http://www.itpxw.cn
注册时间:2016-07-18 11:07
最后登录:2024-02-20 13:02
Java定义方法的格式是什么?IT培训网小编来告诉大家。所谓方法...
大家在Java教程中会学到关于Java消息推送的知识,那么,Java消息...
常用的Java日期格式转换有哪些?IT培训网小编来告诉大家。 1...
Java创建对象数组的方法是什么?IT培训网小编来告诉大家。Ja...