首页 > 知识库 > 正文

新浪微博王传鹏:微博推荐架构的演进(1)
2016-02-20 19:33:33   来源: 王传鹏 51CTO    评论:0 点击:

在微博推荐发展的过程中遇到体系方向的变化、业务的不断更迭、目标的重新树立,其产品思路、架构以及算法也随之进行变迁。本文主要阐述在这个过程中推荐架构的演进,从产品目标、算法需求以及技术发展等维度为读者呈现一个完整的发展脉络,同时也希望通过这个机会跟大家一起探讨业务与技术的相互关系。

3 平台式的3.0

上节中描述2.0的时候提到了一个重要不足是“和推荐核心有一定的距离,并没有完全为推荐量身定做”,我们希望能够在推荐3.0中解决它,这个不足会带来什么问题,以及为何在已经满足业务需求的同时推荐的架构再次往前发展呢?那么接下来为各位展现微博推荐平台式的3.0设计,我们还是先看看所处的环境。

3.1 环境

微博推荐3.0的时间段是2014年底至今,当前的内部环境因素是:

1) 推荐产品不在扩张,对效果更为看重,将工作重点从业务开发和迭代转化为以效果为目标的技术迭代。

2) 新项目或者迭代推荐业务的时候发现重复的事情很多,而架构没有解决,工作存在冗余。

而外部因素是:

1) 公司也从业务扩展转变为效率为先,提升用户体验以及内容质量上来。

2) 微博推荐在推荐技术环节距离领域内有一定距离,当下有条件进行追赶。

3.2架构组成与特点

当前的环境也能体现出3.0的技术目标:

1) 技术目标

与2.0不同,全覆盖推荐流程已经不是3.0的目标,其目标是:

抽象出推荐流程中对于候选/排序/训练/反馈的通用方法来

推荐是一个算法数据问题,应该以一个算法的角度构建推荐系统,因此需要更为贴近算法策略

2) 架构组成

如图7所示,是微博推荐3.0的架构,也是当前实行的架构体系,大家其实可以发现,这是基于2.0 发展起来的,既然还保留了大量2.0中使用的分层体系以及工具框架。在这里重点描述几个差异:

两个标准:一个是针对应用层,作为整体框架输出,应用层设定all in one 接口标准,其标准包含了输入以及输出参数;另外一个是针对动态输入rin,由于离线计算我们可以确定结构,因此一个输入层工具r9-interface不需要设定规范,但是rin是需要进行标准设定,从属性/交互数据/日志等等层面进行划分。

计算层增加对于候选的标准生成方法:Artemis内容候选模块,item-cands用户候选模块、……,在项目开发中只需要选择这些候选生成方法即可。

增加了策略平台EROS,解决算法模型的问题。EROS主要的几个功能是:1)训练模型 2)特征选取 3)上线对比测试。

数据层中的r9-interface以及rin增加对于候选的生成方法,在线以及离线使用推荐通用策略生成结果。

\

图7 微博推荐3.0的架构示意图

3) 特点

主要描述其优势:

继承了原有2.0的特点,保留了其优势

对于推荐理解更为深入,结合更为紧密

解决了推荐候选/排序/训练的算法最重要问题

3.3 成果

微博推荐3.0的诞生,其成果如下:

1) 微博推荐的核心业务会逐步迁移到该体系下,以算法数据作为驱动,提升效果

2) 诞生了EROS的训练流程,提出了训练的标准方法

3) 针对推荐设定了标准的输入输出方法

4) 针对候选,产生了具有抽象意义的推荐方法集合

4 总结

上文中对微博推荐架构演进做了较为详实的介绍,在这个演进的过程团队以及个人收益很大,技术与业务的关系在架构中得到了很好的体现。有几点可以跟大家分享的是:

1) 技术来源于业务同时提升业务发展,业务发展又反过来推动技术的前进,他们是一个相互影响相互促进的关系。和业务共同发展的技术才是有生命力的。

2) 技术架构的选型建议是寻找当前最短路径,然后进行不断优化迭代,一口气吃撑是不现实的,也是不合理的。

3) 推广某个框架和工具最好的方式不是行政命令也不是请客吃饭,而是的大家都是参与者,如同开源项目,每个人都是它的主人,这样人人维护,人人使用。

4) 团队崇尚简单可依靠,它说起来容易做起来难,不过有一个好方法就是懂得自己不应该做什么,而不是应该做什么。

5) 说到推荐这个特殊领域上来,设定目标,跟踪目标很重要,把数据和目标摆出来,产品、架构以及算法都会想办法去解决的。

最后,跟大家推荐一下微博推荐的官方博客:http://www.wbrecom.com/ 欢迎大家提出建议和建议。感谢大家对于微博推荐以及微博的关心和爱护,谢谢!

【责任编辑:林师授 TEL:(010)68476606】

相关热词搜索:微博架构 架构演进 架构

上一篇:运维自动化重点解读之监控系统(三):架构(1)
下一篇:详解引擎技术之约定式编程的实现理念(1)

分享到: 收藏