算法工程师日常!详解真实的算法工作
导读
本文作者简述了自己的工作日常,给大家做比对,也给一些想入行的人了解一下工作环境是什么样的,是否符合预期做一下参考。写这篇文章还有一个目的,主要是想在最近很多人可能要确定方向,尤其是“选择算法”的这么一个时间点下,给大家一些真实的建议,让大家知道真正的算法工程师是什么样。
这周聊点轻松的,聊聊我的工作日常,大家比对比对,另外也给一些想入行的人了解一下工作环境是什么样的,是否如何预期做一下参考吧。(这段本来在结尾,还是希望把文章最完整的初衷写一下。大概率很多人看不到最后)写这篇文章还有一个目的,主要是想在最近很多人可能要确定方向,尤其是“选择算法”的这么一个时间点下,给大家一些真实的建议,让大家知道真正的算法工程师是什么样,主要现在我看有这么几个误区:
算法工程师每天就是调调包就好了,工资还赚的很多。 模型一训练,剩下的时间就能摸鱼了。 整天就是调模型就好了,脱离业务。
其实这些误区都是围绕着模型来走的,很多人会以为算法只是在做模型,当然这个和很多媒体号聊的风向有关,但其实并非如此,模型工作只是占的很小的一个比例,大家一定要有这个预期。
大体都有哪些
算法工程师的主要职责就是负责一个或大或小的算法模块,对效果,对整体指标,对整个算法模块的可靠性稳定性负责的一个职能岗位,大到整个语音助手,小到一个技能的问答模块,我们就是搭建这样一个模块的工种,那么日常都有那些工作?
需求和目标的沟通。 数据等资源的汇总和整理。 算法的落地实践和效果调优。 工程模块搭建。 技术沉淀和输出。 摸鱼和生活。
需求和目标的沟通
通常是和产品沟通,产品负责指挥整个产品的发展方向,对于我们而言就是和我们一起定义好一些目标和标准,例如”什么query应该被认定是天气“,更多的还有很多模糊的问题,最直接的其实就是一个“什么叫做好?”,这是个非常复杂的问题,很多交叉的内容需要判断该分给谁更合理,这个过程往往会比较困难,主要因为两者的信息不对称,产品不懂技术,技术不懂产品,这是问题的根源,而要解决这个问题还是就是要多沟通多交流,甚至不要等着别人来组织,而是自己主动把大家拉上讨论清楚。越是新的项目,前期这块花的时间就会多很多,毕竟要同步大家的想法,把自己的想法完整、准确地告知对方,真的很难。
数据等资源的汇总和整理
我们都知道,算法研发是一个极度依赖数据的,对现象的分析,模型训练,效果评估,都需要大量的数据,为了构造这些数据,我们需要花费大量的经历去获取。
通用的,开源的,可以直接下载。 部分在日志、埋点里的,那就要写sql拿。很多人所谓的“sql boy”的梗就来源于此。 没有标注的,需要和标注人员沟通合作,这里又是一波漫长的沟通和等待了。 啥都没有的,爬虫可能要试试,在合法的前提下。
另外我们还要保障数据的正确性,数据量覆盖现实的情况,分布和口径是否一致等等,尤其是评测集,对这些问题的要求尤其高,有的时候数据分布不对,直接导致在线问题的出现,所以要小心谨慎。为了评估好效果,为了能训练模型,而且数据处理其实非常繁琐而不具有通用型,所以时间消耗其实非常大。
算法的落地实践和调优
这才到了算法的落地实践和调优,也是大家最期待和喜欢的环节,但其实这个工作时间占比并不高。来看看都在干那些事
各种方案的调研,这里包括看论文了。 技术方案的设计,包括模型的各种实验方案。 构造模型,进行实验。说实话,真正有用以后,一般不会太去动了,所以一般是初创的项目更可能有模型的任务。 效果调优,简单的、紧急的,一般就是用规则、词典来处理,一般不是到了天花板,很少会主动去处理基线模型的。 bad case分析,这个其实非常花时间,需要标注数据,同时一些归因之类的是需要思考的,不过我自己其实挺喜欢的,毕竟这其实是在积累自己对数据的理解,这是书上没有网上没有的东西。
算法调优其实是一个很零散的流程,能拿到完整的效果优化时间一定要珍惜。这里也要和很多以为算法工程师只有调模型的人说一下,其实这块的工作很少。
工程模块搭建
越是前期的项目,算法所需要承担的工程任务就越多,越是后期成熟的项目,算法可以专注算法的时间越多。因为项目初期,各种基础工作都没有,无论是工程本身还是各种数据,这会导致我们需要很多时间花在这里,尤其是工程(毕竟算法可以用规则哈哈哈),算法服务、日志,如果需要一些更新,那还有更新模块,甚至还包括一些预处理的工作(这里强烈建议大家自己构造一些框架、一些基础功能,是可以保留下来了)。这个其实非常锻炼人的综合能力,很多事情自己能做很多,这个修炼是很有利于技术广度的,毕竟我们也不希望永远做算法吧,拓宽广度增加自己的综合能力还是挺关键的。
技术沉淀和输出
要想进步,可以靠实践,但如果实践之后能总结和沉淀,就能让收获进一步,所以我自己本身会花大量的时间在这里,这也是我能持续成长最充足的动力。
总结和复盘,总结本周自己的各种进展,有哪些做得好,那些不好,从而得到经验提升。 每天花点时间看看case,看看自己解决的情况,这个有利于看自己理解问题,找到问题点解决问题。 输出点东西,这就是我自己的必修课了,也就是大家每周看到的文章了。
摸鱼和生活
高强度的工作正常人肯定受不了,稍微有些摸鱼肯定是非常幸福的,其实我非常建议大家也能找到自己的乐趣,我自己喜欢喝咖啡、打游戏之类的,这些事情能让自己从工作中快速跳出,清理大脑,其实非常有用。
往期精彩: