算法工程师日常!详解真实的算法工作

机器学习实验室

共 2428字,需浏览 5分钟

 ·

2022-02-17 11:16

作者丨机智的叉烧
转自丨CS的陋室

导读

 

本文作者简述了自己的工作日常,给大家做比对,也给一些想入行的人了解一下工作环境是什么样的,是否符合预期做一下参考。写这篇文章还有一个目的,主要是想在最近很多人可能要确定方向,尤其是“选择算法”的这么一个时间点下,给大家一些真实的建议,让大家知道真正的算法工程师是什么样。

这周聊点轻松的,聊聊我的工作日常,大家比对比对,另外也给一些想入行的人了解一下工作环境是什么样的,是否如何预期做一下参考吧。(这段本来在结尾,还是希望把文章最完整的初衷写一下。大概率很多人看不到最后)写这篇文章还有一个目的,主要是想在最近很多人可能要确定方向,尤其是“选择算法”的这么一个时间点下,给大家一些真实的建议,让大家知道真正的算法工程师是什么样,主要现在我看有这么几个误区:

  • 算法工程师每天就是调调包就好了,工资还赚的很多。
  • 模型一训练,剩下的时间就能摸鱼了。
  • 整天就是调模型就好了,脱离业务。

其实这些误区都是围绕着模型来走的,很多人会以为算法只是在做模型,当然这个和很多媒体号聊的风向有关,但其实并非如此,模型工作只是占的很小的一个比例,大家一定要有这个预期。

大体都有哪些

算法工程师的主要职责就是负责一个或大或小的算法模块,对效果,对整体指标,对整个算法模块的可靠性稳定性负责的一个职能岗位,大到整个语音助手,小到一个技能的问答模块,我们就是搭建这样一个模块的工种,那么日常都有那些工作?

  • 需求和目标的沟通。
  • 数据等资源的汇总和整理。
  • 算法的落地实践和效果调优。
  • 工程模块搭建。
  • 技术沉淀和输出。
  • 摸鱼和生活。

需求和目标的沟通

通常是和产品沟通,产品负责指挥整个产品的发展方向,对于我们而言就是和我们一起定义好一些目标和标准,例如”什么query应该被认定是天气“,更多的还有很多模糊的问题,最直接的其实就是一个“什么叫做好?”,这是个非常复杂的问题,很多交叉的内容需要判断该分给谁更合理,这个过程往往会比较困难,主要因为两者的信息不对称,产品不懂技术,技术不懂产品,这是问题的根源,而要解决这个问题还是就是要多沟通多交流,甚至不要等着别人来组织,而是自己主动把大家拉上讨论清楚。越是新的项目,前期这块花的时间就会多很多,毕竟要同步大家的想法,把自己的想法完整、准确地告知对方,真的很难。

数据等资源的汇总和整理

我们都知道,算法研发是一个极度依赖数据的,对现象的分析,模型训练,效果评估,都需要大量的数据,为了构造这些数据,我们需要花费大量的经历去获取。

  • 通用的,开源的,可以直接下载。
  • 部分在日志、埋点里的,那就要写sql拿。很多人所谓的“sql boy”的梗就来源于此。
  • 没有标注的,需要和标注人员沟通合作,这里又是一波漫长的沟通和等待了。
  • 啥都没有的,爬虫可能要试试,在合法的前提下。

另外我们还要保障数据的正确性,数据量覆盖现实的情况,分布和口径是否一致等等,尤其是评测集,对这些问题的要求尤其高,有的时候数据分布不对,直接导致在线问题的出现,所以要小心谨慎。为了评估好效果,为了能训练模型,而且数据处理其实非常繁琐而不具有通用型,所以时间消耗其实非常大。

算法的落地实践和调优

这才到了算法的落地实践和调优,也是大家最期待和喜欢的环节,但其实这个工作时间占比并不高。来看看都在干那些事

  • 各种方案的调研,这里包括看论文了。
  • 技术方案的设计,包括模型的各种实验方案。
  • 构造模型,进行实验。说实话,真正有用以后,一般不会太去动了,所以一般是初创的项目更可能有模型的任务。
  • 效果调优,简单的、紧急的,一般就是用规则、词典来处理,一般不是到了天花板,很少会主动去处理基线模型的。
  • bad case分析,这个其实非常花时间,需要标注数据,同时一些归因之类的是需要思考的,不过我自己其实挺喜欢的,毕竟这其实是在积累自己对数据的理解,这是书上没有网上没有的东西。

算法调优其实是一个很零散的流程,能拿到完整的效果优化时间一定要珍惜。这里也要和很多以为算法工程师只有调模型的人说一下,其实这块的工作很少。

工程模块搭建

越是前期的项目,算法所需要承担的工程任务就越多,越是后期成熟的项目,算法可以专注算法的时间越多。因为项目初期,各种基础工作都没有,无论是工程本身还是各种数据,这会导致我们需要很多时间花在这里,尤其是工程(毕竟算法可以用规则哈哈哈),算法服务、日志,如果需要一些更新,那还有更新模块,甚至还包括一些预处理的工作(这里强烈建议大家自己构造一些框架、一些基础功能,是可以保留下来了)。这个其实非常锻炼人的综合能力,很多事情自己能做很多,这个修炼是很有利于技术广度的,毕竟我们也不希望永远做算法吧,拓宽广度增加自己的综合能力还是挺关键的。

技术沉淀和输出

要想进步,可以靠实践,但如果实践之后能总结和沉淀,就能让收获进一步,所以我自己本身会花大量的时间在这里,这也是我能持续成长最充足的动力。

  • 总结和复盘,总结本周自己的各种进展,有哪些做得好,那些不好,从而得到经验提升。
  • 每天花点时间看看case,看看自己解决的情况,这个有利于看自己理解问题,找到问题点解决问题。
  • 输出点东西,这就是我自己的必修课了,也就是大家每周看到的文章了。

摸鱼和生活

高强度的工作正常人肯定受不了,稍微有些摸鱼肯定是非常幸福的,其实我非常建议大家也能找到自己的乐趣,我自己喜欢喝咖啡、打游戏之类的,这些事情能让自己从工作中快速跳出,清理大脑,其实非常有用。


往期精彩:

 时隔一年!深度学习语义分割理论与代码实践指南.pdf第二版来了!

 新书首发 | 《机器学习 公式推导与代码实现》正式出版!

《机器学习公式推导与代码实现》将会配套PPT和视频讲解!

 2021,我读了32本书!

浏览 117
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报