算法岗是什么?我适不适合算法岗?选什么算法岗?

466 阅读9分钟

大家好,我是千与千寻,一名专注于后端研发与算法工程领域的程序员,没有鱼皮哥的能力,但是我可以有有鱼皮哥的作息,哈哈哈,鱼皮哥分享了很多编程知识,我到了不少,我应该发发电了!

昨天晚上深夜回家发了个pyq,我大致表达的意思:谁说算法岗不加班的?活没干完的前提下,你不得疯狂加班的,玩命的干?

然后有粉丝说:什么,算法岗也要加班吗?不是说算法岗相对开发岗来说,可以轻松一些吗?加班没开发岗那么恐怖吗?先直接说结论:你们可能是对算法岗有什么误解了。。。

千寻目前是大厂一名研发工程师,虽然是研发吗,但是工作内容,后端研发,算法工程应用都有所涉及,我就自身的经历给大家介绍一下算法岗的工作内容,算法岗的种类,以及什么样的人适合做算法岗,对于想转行算法岗的朋友一些建议。

算法岗的是什么?算法岗什么工作内容?

算法岗是大中型企业在已经有完整的盈利闭环系统的基础上,需要对其盈利模式进行深度的优化,使得系统可以更加具有针对性的服务用户目的的工程人员。

算法岗的工作内容:

之前的文章中我曾经列举过算法岗与开发岗位的具体工作内容差别,算法岗为包含算法工程师,算法研究员。

算法研究员:算法研究员的hc相对较少,一般仅仅在特大厂的AI lab以及AI四小龙以及独角兽的公司会有一定的需求,当然这仅仅是针对互联网公司的情况进行描述的,如果是进入国企或者研究所,对前沿的技术研究需求还是很多的。

算法研究员主要的是进行传统模型准确率以及性能的深度打破,在目前的SOTA之下,SSD在COCO数据集上的检测MAP准确率目前是75.8%,那么研究员就会想尽各种tricks来提高模型的准确性,改进网络结构,或者特征提取方式,达到打破目前的最高准确率,从而发表顶会论文。

算法工程师:算法工程师相对研究员来说,更加接近实际的业务,将算法实际的用到工程中,从而发挥算法的效果,一般来说在实际的业务生产中,我们所使用的算法模型也都是稳定的模型,进行迁移学习,从而可以达到速度与准确率的完美结合。算法工程师相对研究员岗位来说,并不需要实际的模型突破,很对时候达到80%-90%基本就可以使用了,与研发进行配合联调,将算法模型的调用接口化,用于工程需求中。

算法岗位的方向:

算法岗位的方向还是很多的,最大的范围之下,可以划分为计算视觉,自然语言处理,搜索广告推荐算法,语音算法,方向太多,很难做到所有的都面面俱到。我对我所研究两个方向,进行一下我的心得的分享,推荐派单算法,以及计算视觉算法(CV)

计算机视觉:

image.png

其实在之前作为的计算机视觉的算法工程师,我在计算机视觉方面还是有自己的一些见解,具体可以说明为计算机视觉的算法工程师,我自己的一个感觉,为了防止杠精,我说明仅仅代表我自己的观点,我个人其实不太看好CV方向,原因如下:

1.看似方向广,就业岗位多,事实上市场比较饱和,toC的大模型相对来说有些已经投入使用,然而对于toB的业务,AI四小龙独角兽公司,相对来说,已经做得十分完善,市场没那么庞大。

2.技术相对来说比较完善,同时技术的重要性并不是很举足轻重,对于互联网的核心盈利方式——平台+广告的模式之下,图像的地位其实并不是很重要,“说白了,不是能增加资本家资产的东西”

3.图像识别,目标检测,商汤和旷视做的很强,一般应用于工业界,生成对抗,图像分割等相对来说用于互联网的短视频中,抖音快手中的魔法表情使用就是用GAN完成的

计算机视觉是算法岗中人很多的方向,因为很多本科生的专业是自动化,机械电子,通信工程的同学都会多多少少接触到数字图像,所以在研究生期间也会继续研究图像,也就作为CV算法岗。

推荐系统算法:

说到算法岗的大头,也就是最为出名的"搜广推",先说一个结论:如果现在想转行做算法岗,或者是高年级的本科生以及硕士生还没用找到算法岗的方向,那我建议你转推荐算法。

刚刚我们说了互联网公司的两大盈利方式:

1.建立中间平台,收取中介费,例如滴滴出行,以及美团点评等。通过建立电商的平台,进行商家与用户之间的匹配,促进消费。

2.掌握一定的流量,进行精准的广告投放。

以推荐算法的结构来给大家进行一下详细讲解:

image.png

在以上我绘制了一个很简单的电商推荐系统的架构图,其中包括每一种流程层的算法逻辑流向

召回层:召回预计算目标,从海量数据中多路召回预排序目标,简单来说,选择进入推荐模型的种子号选手,例如购买牙膏需求,牙膏的品牌以及商店有上千万家,肯定不能所有的进行遍历,因此会通过人群画像获取数据的预计算目标,模型计算量有百万降低到百级。

过滤层:召回层进行召回的预计算目标一定会比最终推荐的目标数量要高,原因需要进行"过滤",比如存在重复推荐,或者无效推荐(商家关门,或者断货)

精排层:经过过滤层的过滤,进入推荐算法模型,进行推荐得分计算,以传统的机器学习算法为例,在实际的业务系统中会存在多种复杂业务情形,简单的机器学习模型根本无法满足复杂的业务需求,常用的机器学习的模型是集成模型例如xgboot模型,通过采取多种关键特征进行决策回归

image.png

以上就是精排层的推荐系统的算法整体框架图,将数据集放入模型进行模型训练,算法工程的主要职责就是上下的两个方框:改进模型结构与优化特征工程

改进网络模型结构:以xgboost为例,其内部包括多个决策树,决策树的数量,以及学习率的大小都可以改进特征的学习率,从而在同等数量的特征之下可以达到更高的效果

优化特征工程:相比于改进网络结构,特征工程则是通过增加特征的种类,特征的数量,比如从原来年龄+性别来推荐商品,到最后使用年龄+性别+爱好数码进行商品的推荐,显然在增加了爱好的特征后可以进行更加精准的推荐,以此类推,优化模型的性能。

混排层:相比于精排层,混排层的不是单单注重准确率,而是有意去放出"负样本",也就是用精准推荐去带动其他的推荐,比如推荐买大米的商品,顺带推荐豆油,从而获得更多的收益。

强规则:根据运营,比如有一些需要进行强制的置顶,是进行人机交互的主要窗口。

算法岗的性能提高验证以及测试:

1.对于算法的模型测试来说,线下使用有限的测试数据集进行测试,测试改进模型的准确率。

2.实际的工业生产环境中更多所使用是线上AB测试,其具体的架构图:

image.png

线上AB测试,其原理是将算法模型的不同改进版本,进行的对照,毕竟这实践才是检验真理的唯一标准,只有线下模型准确率再好,一到线上就崩也是凉凉啊,因此需要模拟100%的线上业务情形,所以进行”控制变量法"进行算法模型的性能对比。

采用流量分流阀,将全部的流量进行等分为4份,基础桶为最基本模型,等于模型的basekline,其他的几个版本的对照桶中放入改进的模型,在同样的流量之下,对比模型的优劣。具体的对比指标有些复杂,总之采用控制变量法进行模型的对照。

算法岗适合什么样的人?选择什么样的算法岗比较好?

算法岗位相对于来说,竞争力比较强,因为算法岗的薪资是互联网食物链的顶端,对标金融领域的券商投资银行岗位,所以算法岗的竞争压力会大一些,不过薪资与竞争压力是成正比的,也是值得的。

算法岗适合喜欢做研究实验的高年级本科生或者硕士研究生,算法岗需要不短的追最新的论文,努力将学术界或者工业界的最新成功转化为实际的业务系统中去。

对于技术有执着热爱的比较适合算法岗,其实程序员这个领域都差不多,都是需要终生学习的打工人,针对以上我提到的两种算法岗位,可以说目前计算机视觉算法岗的需求迭代更类似开发岗位,而推荐系统的”搜索广告推荐“可能更加有研究的价值。

最后无论算法岗也好,研发岗也很好,好好做哪行都行的,程序员领域各司其职,不存在鄙视链,一起冲!