大家好,我是千与千寻,一名专注于后端研发与算法工程领域的程序员,最近我的作息快赶上yp哥的作息了,不过习惯就好。
昨天晚上深夜回家发了个pyq,我大致表达的意思:谁说算法岗不加班的?活没干完的前提下,你不得疯狂加班的,跟似的干?
然后有粉丝说:什么,算法岗也要加班吗?不是说算法岗相对开发岗来说,可以轻松一些吗?加班没开发岗那么恐怖吗?
先直接说结论:你们可能是对算法岗有什么误解了...
千寻目前是大厂一名研发工程师,虽然是研发,但是工作内容,后端研发,算法工程应用都有所涉及,我就自身的经历给大家介绍一下算法岗的工作内容,算法岗的种类,以及什么样的人适合做算法岗,对于想转行算法岗的朋友一些建议。
算法岗是什么?
算法岗是大中型企业在已经有完整的盈利闭环系统的基础上,需要对其盈利模式进行深度的优化,使得系统可以更加具有针对性的服务用户目的的工程人员。
算法岗什么工作内容?
之前的文章中我曾经列举过算法岗与开发岗位的具体工作内容差别,算法岗为包含算法工程师,算法研究员。
算法研究员:算法研究员的hc相对较少,一般仅仅在特大厂的AI lab以及AI四小龙以及独角兽的公司会有一定的需求,当然这仅仅是针对互联网公司的情况进行描述的,如果是进入国企或者研究所,对前沿的技术研究需求还是很多的。
算法研究员主要的是进行传统模型准确率以及性能的深度打破,在目前的SOTA之下,SSD在COCO数据集上的检测MAP准确率目前是75.8%,那么研究员就会想尽各种tricks来提高模型的准确性,改进网络结构,或者特征提取方式,达到打破目前的最高准确率,从而发表顶会论文。
算法工程师:算法工程师相对研究员来说,更加接近实际的业务,将算法实际的用到工程中,从而发挥算法的效果,一般来说在实际的业务生产中,我们所使用的算法模型也都是稳定的模型,进行迁移学习,从而可以达到速度与准确率的完美结合。算法工程师相对研究员岗位来说,并不需要实际的模型突破,很对时候达到80%-90%基本就可以使用了,与研发进行配合联调,将算法模型的调用接口化,用于工程需求中。
算法岗位的方向
算法岗位的方向还是很多的,最大的范围之下,可以划分为计算视觉,自然语言处理,搜索广告推荐算法,语音算法,方向太多,很难做到所有的都面面俱到。我对我所研究两个方向,进行一下我的心得的分享,推荐派单算法,以及计算视觉算法(CV)
计算机视觉:
其实在之前作为的计算机视觉的算法工程师,我在计算机视觉方面还是有自己的一些见解,具体可以说明为计算机视觉的算法工程师,我自己的一个感觉,为了防止杠精,我说明仅仅代表我自己的观点,我个人其实不太看好CV方向,原因如下:
1.看似方向广,就业岗位多,事实上市场比较饱和,toC的大模型相对来说有些已经投入使用,然而对于toB的业务,AI四小龙独角兽公司,相对来说,已经做得十分完善,市场没那么庞大。
2.技术相对来说比较完善,同时技术的重要性并不是很举足轻重,对于互联网的核心盈利方式——平台+广告的模式之下,图像的地位其实并不是很重要,“说白了,不是能增加资本家资产的东西”
3.图像识别,目标检测,商汤和旷视做的很强,一般应用于工业界,生成对抗,图像分割等相对来说用于互联网的短视频中,抖音快手中的魔法表情使用就是用GAN完成的
计算机视觉是算法岗中人很多的方向,因为很多本科生的专业是自动化,机械电子,通信工程的同学都会多多少少接触到数字图像,所以在研究生期间也会继续研究图像,也就作为CV算法岗。
推荐系统算法:
说到算法岗的大头,也就是最为出名的"搜广推",先说一个结论:如果现在想转行做算法岗,或者是高年级的本科生以及硕士生还没用找到算法岗的方向,那我建议你转推荐算法。
刚刚我们说了互联网公司的两大盈利方式:
1.建立中间平台,收取中介费,例如滴滴出行,以及美团点评等。通过建立电商的平台,进行商家与用户之间的匹配,促进消费。
2.掌握一定的流量,进行精准的广告投放。
以推荐算法的结构来给大家进行一下详细讲解:
在以上我绘制了一个很简单的电商推荐系统的架构图,其中包括每一种流程层的算法逻辑流向。
召回层:召回预计算目标,从海量数据中多路召回预排序目标,简单来说,选择进入推荐模型的种子号选手,例如购买牙膏需求,牙膏的品牌以及商店有上千万家,肯定不能所有的进行遍历,因此会通过人群画像获取数据的预计算目标,模型计算量有百万降低到百级。
过滤层:召回层进行召回的预计算目标一定会比最终推荐的目标数量要高,原因需要进行"过滤",比如存在重复推荐,或者无效推荐(商家关门,或者断货)
精排层:经过过滤层的过滤,进入推荐算法模型,进行推荐得分计算,以传统的机器学习算法为例,在实际的业务系统中会存在多种复杂业务情形,简单的机器学习模型根本无法满足复杂的业务需求,常用的机器学习的模型是集成模型例如xgboot模型,通过采取多种关键特征进行决策回归
以上就是精排层的推荐系统的算法整体框架图,将数据集放入模型进行模型训练,算法工程的主要职责就是上下的两个方框:改进模型结构与优化特征工程。
改进网络模型结构: 以xgboost为例,其内部包括多个决策树,决策树的数量,以及学习率的大小都可以改进特征的学习率,从而在同等数量的特征之下可以达到更高的效果
优化特征工程:相比于改进网络结构,特征工程则是通过增加特征的种类,特征的数量,比如从原来年龄+性别来推荐商品,到最后使用年龄+性别+爱好数码进行商品的推荐,显然在增加了爱好的特征后可以进行更加精准的推荐,以此类推,优化模型的性能。
混排层:相比于精排层,混排层的不是单单注重准确率,而是有意去放出"负样本",也就是用精准推荐去带动其他的推荐,比如推荐买大米的商品,顺带推荐豆油,从而获得更多的收益。
强规则:根据运行吗,比如有一些需要进行强制的置顶,是进行人机交互的主要窗口。
算法岗的性能提高验证测试
1.对于算法的模型测试来说,线下使用可以使用测试数据集进行测试,测试改进模型的准确率。
2.但是实际的工业生产环境中更多所使用是线上AB测试,其具体的架构图:
线上AB测试,其原理是将算法模型的不同改进版本,进行的对照,毕竟这实践才是检验真理的唯一标准,只有线下模型准确率再好,一到线上就崩也是凉凉啊,因此需要模拟100%的线上业务情形,所以进行”控制变量法"进行算法模型的性能对比。
采用流量分流阀,将全部的流量进行等分为4份,基础桶为最基本模型,等于模型的basekline,其他的几个版本的对照桶中放入改进的模型,在同样的流量之下,对比模型的优劣。具体的对比指标有些复杂,总之采用控制变量法进行模型的对照。
算法岗适合什么样的人?选择什么样的算法岗比较好?
算法岗位相对于来说,竞争力比较强,因为算法岗的薪资是互联网食物链的顶端,对标金融领域的券商投资银行岗位,所以算法岗的竞争压力会大一些,不过薪资与竞争压力是成正比的,也是值得的。
算法岗适合喜欢做研究实验的高年级本科生或者硕士研究生,算法岗需要不短的追最新的论文,努力将学术界或者工业界的最新成功转化为实际的业务系统中去。
算法岗的性能提高验证测试
对于技术有执着热爱的比较适合算法岗,其实程序员这个领域都差不多,都是需要终生学习的打工人。
针对以上我提到的两种算法岗位,可以说目前计算机视觉算法岗的需求迭代更类似开发岗位,而推荐系统的”搜索广告推荐“可能更加有研究的价值。
最后无论算法岗也好,研发岗也很好,好好做哪行都行的,程序员领域各司其职,不存在鄙视链,一起冲!
我是千与千寻,我们下期见!
END
往期精彩回顾
适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载中国大学慕课《机器学习》(黄海广主讲)机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑
AI基础下载机器学习交流qq群955171419,加入微信群请扫码: