应届生也可以一步步搭建好推荐系统?
开篇:学习推荐系统存在的误区
先说一下我的情况,09年在上海交通大学读计算机方向,13年在本校读经济学方向,现在做人工智能。实不相瞒,所有的选择都是为了更高的薪水。哈哈哈!有机会,我再写一篇我的整个求学和求职的经历。
从16年研究生毕业,第一份工作是在某央企从事数据分析岗位,待了半年之后,就从安稳的环境中跳了出来。之后一直从事推荐算法相关的工作,经历过多次跳槽和升职。由于是做推荐和人工智能方向,因此薪资也是在逐步上涨。
在工作、学习、面试和被面试的经历中,总结出来一些学习推荐系统中存在的误区,跟小伙伴们分享一下,希望能作为想转行或者提升自己的小伙伴的指引。
- 推荐算法工程师,首先必须是工程师。在如此卷的职场,不会工程的小伙伴是很难混得下去的。我在面试的时候,首先考察的是候选人是否有工程能力(开发服务的能力,数据库知识等)。
- 只有大厂才把算法策略和算法工程区分的非常开。绝大部分小厂需要的是策略和工程能力都具备的员工。所以小伙伴们最好是具备算法和工程的双向能力,才能立于不败之地。
- 如今的算法模型,大多都是在框架(TensorFlow/pytorch等)上面开发,而且大部分的模型在GitHub上都能找到开源代码,会写模型现在已经不算什么高超的技能了。
- 一些刚入门的算法工程师往往对算法模型有非常高的执念,觉得只要换一个牛逼的模型,就能一招解决所有问题。这在实际工作中是万万不可取的。一方面,不同公司的数据分布不同,模型就不能套用,一切都是从数据出发的。另一方面,一旦开始上新的模型,就会背负巨大的业绩压力,投入人力物力几个月最终没有产出,这个时候会非常被动,最终结局可能就是提桶跑路。
- 大厂经常会发一些高深的模型,这些模型在绝大部分情况下都是不能直接套用。一方面,小厂没有大厂那么多的数据,高深的模型无法训练充分,强行训练只能是过拟合;另一方面,高深的模型推理成本非常高,小厂上线高深模型对工程师的技术要求太高,同时机器的成本开销也非常大,最终可能是收益无法cover掉成本
1、做推荐工程的小伙伴要懂推荐算法。算法的小伙伴让你上线一个模型,不能囫囵吞枣,直接干就行。需要理解模型在做什么,否则你都不清楚最终推理出来的结果是否正确。
2、做推荐算法的小伙伴要懂推荐工程。一个算法上线最终有没有效果,这个链条非常长。
工程上线的模型跟你给他的模型是不是同一个?
模型推理的时候有没有出现超时和bug?
线上的特征和模型的特征是否一致?
数据的回收是否及时?等等。
一旦模型上线不及预期,这个查起来就非常麻烦。所有的压力都传导到了算法小伙伴这边。所以这个时候,你如果不懂工程,怎么办?
我希望读到这个文章的小伙伴能够工程和算法兼顾。因为,大部分的小伙伴都是在小厂里面工作的,小厂是不会给算法的人专门配一个工程,但是你的KPI是实实在在背的。自己动手,才能丰衣足食!
补个彩蛋:
后续会在这里和大家把推荐系统如果做的,一步一步跟大家讲清楚,需要代码的,也会直接上代码。
- 我在讲推荐系统的时候,前期主要是从工程的角度去切入。一方面,我调研过,大部分博主都是从算法的角度去切入的,这些算法跟实际工作还是有一定距离的;另一方面我希望看完我这个系列的文章后,小伙伴能够自己从零开始写出简单的推荐系统,我会根据情况,一步步提供支持。
- 我这里讲的推荐系统主要是针对小公司。一方面,大厂的架构和小公司是完全不一样的,不具有普遍性;另一方面,我自己做过的最大的推荐系统日活大概6000w,再高日活的推荐系统,我自己也把握不住。
- 我在讲推荐系统架构设计和落地的时候,整个关注点就是两个,一个是小公司切实可用,另一个是成本和收益权衡。