终其一生,我们只不过在寻找自己

0%

Q音算法实习复盘

在11月底面试通过(面试参考之前的准备Q音推荐实习面试的笔记),开始到腾讯音乐推荐组实习,到上周离职,总共历时2个月3周,排除过年放假的两周,工作9周,50天左右。对于我来说,这是第一次技术岗的实习,虽然大二的时候去YY也做过技术岗,不过那个时候就是写SQL,而且也写得不好😂,算不上技术岗。

实习结束整体感受良好,感受到了自己的技术薄弱,熟悉了推荐的相关逻辑,有导师每日交流指点,收获还是很大的。“说说技术上的困难吧,其实还是没经验、熟练度低,一个很简单的事情自己可能要想很久做很久,有时可能还会有疏漏,可能前辈一个小时干的事情,我要几个小时甚至好几天,虽然前辈在给我分配任务的时候可能考虑到这个问题,但其实在我看来感觉还是差的太远,非常愧疚,离职返校后现在还在补充基础知识,c++,还有一些建模熟练度的练习,都有坚持在弄。”

氛围&办公环境

刚去实习的时候,发现每天需要开晨会,每周需要开周会,周会是投屏展示,感觉压力贼大,加上刚入职的几天啥权限都没有,晨会的时候听着正式员工做了balabala,自己没做出来什么,就很尴尬。不过到后来就好了,可能是因为脸厚了🤫。
整体的节奏比较快,团队目标明确,一个季度会有一次OKR的会议(类似与KPI),每周都会review OKR的完成度,好处是我觉得压力大成长快,不好的地方在于,大家都太忙了,专注于自己的okr,团队之间的闲聊较少,遇到各种小问题就不好问,还好有几个实习生同学,大家可以一起讨论细节问题。

办公环境不咋地,尤其是对比WXG。第一次去的时候没有工位,是一张临时的桌子。到后来,搬了工位,有了稍微大一点的空间,还好点。但是地理位置处于腾大旁边,周围都是写字楼,没有生活气息;再加上深圳,尤其是南山区给我的印象就是到处修修建建,感觉噪音比较大,对于环境不太满意。不过之后去了一趟附近的公园,就感觉心灵有了一片栖息地,有所改观。对比在广州的时候,我感觉珠江一直是我的栖息地,夜跑上班都是走珠江边,会心旷神怡。

实习内容

实习的任务是实现某推荐点位(脱敏)的留存增长,前期主要熟悉现有逻辑,后期上线三个实现,由于逻辑简单,实验也都获得了正向的反馈。🥰
(其实“留存增长”对于算法来说,不好直接优化,不是模型输出的直接指标,更没办法写出来loss function,要做的就是完善推荐策略或者模型就好)

  • 实验一:对于召回降级池的年龄划分
    降级池也叫兜底池,其实用户量不大,但是这一块之前没有做细,就留下了空间,我简单的通过年龄的分层就实现了20%的时长增长。年龄分层就可以理解为一层决策树,所以完全可以用树模型训练一版召回,可能是这里用户量不大,前辈也不想做了。
    涉及工具:主要是SQL定时任务,计算一个新的榜单,线上的rpc服务用之前写好的。
  • 实验二:增加某个召回策略A的比例
    前期发现某个召回策略的最终表现较好,但是投放量不大。(🤣我第一反应是只采用这一个召回策略,实际上忽略了太多客观因素) 但是前辈解释策略之后,其实就还有增加召回数量的空间。就简单调整了一下策略,开始做C++服务的改进。
    涉及工具:C++,git(博文Git再入门),linux(博文linux从入门到再入门)。大一学过C,但是学的也不深;虽然开发逻辑很简单,还是花了不少时间。
  • 实验三:增加排序的图像特征
    我只做了离线的验证图像特征有效性。图像特征当然不是我自己跑的啦,准备好数据集,发送给对应做CV的同学,然后用训练好的模型返回数据。拼接到现有的数据集上,跑了xgboost和RankNet两个模型,最后还真的有效果,auc有客观的提升。不错不错。🤤
    涉及工具:python,拼接特征,然后大概看了看模型的结构。

整体来说熟悉开发环境,申请各种权限,了解现有逻辑,熟悉别人代码,占据了主要的时间。😢

杂乱的感悟

由于思考的过程都很琐碎,就不刻意串起来了,简单罗列。

算法方面:

  • 模型、特征的可解释性决定了算法的天花板。如果模型对于我们来说是一个黑匣子,那就只能当”炼丹师“,盲目尝试。这也需要对模型有更深刻的理解。
  • 召回中,策略相对于模型来说,有更好的解释性,也有更好的投放空间,但是个性化推荐不上模型效果往往不佳;建议外层框架用策略,具体召回必须上模型;
  • 排序中,一般来说,加入的特征越多,效果越好;比如专辑封面图都会影响用户对于歌曲的喜好;
  • 对于排序召回的组合推荐算法来说:排序保证了下限,召回决定上限;

分析方面:

  • 分析数据的时候,每进行下一步操作之前,尽量先给出假设,“如果出现这种情形,我有什么对策”,不然会陷入无意义的数据中,数据不会开口说话告诉你答案。
  • badcase,要分清楚是个人需求还是群体需求,从而决定优先级;
  • 大部分的算法岗都是结合业务的算法应用,真正硬核的发论文的不多,不要太畏惧。所以懂业务逻辑就很重要,不理解业务就很难洞察到能继续优化的点;eg:转发行为如何区分正负态度;如何衡量不同指标的关系,如完播率和收藏率之间;抖音神曲适不适合适不适合做推荐?不同点位之间的差异(激进还是保守?多样还是资产?)
  • 一旦洞察到优化的点之后,往往简单的逻辑就能造成很好的改善,不一定是很fancy的模型;eg:如果发现用户对于资产的新旧敏感,缩短召回的时间窗口就可以带来很好的效果;

其他:

  • 每个人有不同的代码风格,但是一定要确保规范:缩进一致、变量命名有意义、备注好解释(防止日后自己都看不懂);
  • 老板不需要知道怎么使用工具,但是需要懂什么工具能解决什么问题(我遇到的老板知识面很广);
  • 导师对你严厉很有可能是故意,大概是防止你什么细节都直接过问吧😂,一般大家为人都很好;

最后感谢实习期间的导师,让我受益匪浅。

如果你觉得读完有一丢丢用处,就在下面留个言吧👀

-------------    你的留言  是我更新的动力😊    -------------