来自:CS 的陋室

说起来今天还是一个有意思的日子,去年在美团实习,离职的时间也是 12 月 7 日。

算起来,自己的算法在岗应该也有一年了,在美团担任算法工程师大概有 7 个月,OPPO 加上实习,估计也一年多吧,时间过的好快,这周末给大家谈谈我的感想吧,相比各位大佬,我的经验尚属稚嫩,但是也希望能给一些准备入行的、刚入行的人一些经验和建议吧,相关文章其实我也聊得不少,这里有部分重点我可能还会聊到,但是不见得都会说到。

懒人目录:

  • 算法工作的一天都要干什么。
  • 特别的经验。
  • 有关学习。
  • 写在最后。

算法工作一天都要干什么

很多人可能再想想着每天在研究模型,看论文,实现模型之类的,这方面虽然非常重要,但是实际上并非如此。每天这些时间会花的更多:

  • 和产品沟通,技术方案设计。

  • 数据层面花费的时间最多。

    • 需要什么样的数据。
    • 写 SQL。
    • 检查数据质量,空的、错的、不合法的。
    • 特征工程。
    • 有监督学习,需要标注数据,怎么标,标注本身是否可靠。
  • 模型选择与开发。这块可以这么说,随着工作经验提升,这块时间会越来越少。

  • 模型选择的话,把问题抽象出来,其实都比较好选,第一版模型一般是业内基线或者最简单的模型,像我,二分类先搞 LR(logistic regression),序列标注就是 CRF。

  • 模型开发也基本不耗时,LR 和 CRF 之类的其实都有现成的东西。

  • 结果分析和诊断。

  • 不生效的原因是什么。

  • 怎么解决。

  • 模型层面还是规则层面解决。

  • 解决方案的影响面是多少,会不会导致出现新的问题。

  • 评价指标设计。

  • 分析上述模型是否生效。

  • 上面都是自评,可能还要交给测试、产品之类的评价。

  • 工程化上线。

  • 模型上线,需要特征生产、AB 实验、部署之类的操作。

  • 如果你熟悉在线跑的代码,例如 Java、c++ 之类的,这块的时间会比较少。

  • 提测,提交给测试人员测试。

  • 评估上线。

这是一个算法工程师基本的工作内容,当然的,会随着你的业务不同会有一些不同,但是点上都是一样的。

特别的经验

工作也一年了,有一些比较有意思的经验。

  • 规则应该首先使用,保证高准确,模型后续补充来提升泛化能力。

  • 模型不求高端,只求实用和稳定。

  • 与科研不同,很多时候科研只关注召回准确之类的指标,但是在现实应用下还需要考虑耗时、内存之类的因素。

  • 把自己做的东西尽可能工具化,哪怕是保存下来,日后可能还会用。我也举几个例子。

    • 日志工具。
    • MySQL 登录工具。
    • 数据清洗工具,删标点,拼音转化,繁体转简体等。
  • 特征工程的操作要多学学。有的时候对这些操作的理解依赖于你的数据敏感性。来举几个例子吧,这些都是在我工作的现实应用中有遇到的。

  • 为什么数据有的时候要取对数。

  • 调和平均、算术平均等平均计算有什么本质区别。

  • 归一化有什么用,行归一和列归一。

  • 不懂的问题,过一遍百度、谷歌、GitHub、知乎再说。

  • 坚持看论文,也别忘了最好还能看看源码,有大量的东西在论文里面不会提到,只会在源码里面体现。

  • 复盘,会让你的经验更不容易流失。俗话说好了伤疤忘了疼,为了避免踩过的坑不再踩,必须经常进行复盘。

  • 快速学习,工作导向,干完活后续整理的时候再来完善系统的学习。

  • 严谨点说吧,干活的时候本想着高大上。

  • 时刻记住,你做每一件�