当推荐遇到社交:美图的推荐算法设计优化实践( 九 )

目前,我们主要尝试了三种用户行为序列建模的方法,包括 Sum/Mean Pooling 、 RNN 、 Attention 等。在我们的业务场景下,RNN 的离线效果并不理想,原因推测是用户点击 feed 的先后顺序并不存在某种固定的模式,而主要取决于用户对所推荐 feed 的偏好,此外,RNN 的训练耗时也增加比较明显。

Sum/Mean Pooling 的方式虽然简单,但是在长行为序列建模上,效果相比其它两种方式表现得更加优异,因此是我们目前线上建模用户长序列特征的主要手段。

我们也对比了基于 Attention 的方法,离线效果相比 Sum/Mean Pooling 有略微提升,但是考虑到计算复杂度,Attention 只适合于序列长度较短的场景。

在美拍,美图秀秀社区,以及 push 业务都尝试了用户行为序列特征建模,各项业务指标均有较大幅度的提升,美拍人均时长提升了 12%,秀秀的点击率提升了 5%,push 的到达点击率提升了 10%。

随着模型和特征的复杂度显著增加,在线 inference 的耗时已经无法满足业务的要求。为了解决模型推理效率的问题,一方面我们通过 C++ 重写了模型在线推理服务——MML Serving,并在内存和并发上做了大量优化,使得 QPS 和稳定性有了大幅度提升。另一方面,我们实现了多塔网络的模型框架,通过离线预计算 user 和 feed 子网络的输出,并存到 DB 中,在线通过检索 DB 的方式,避免了实时计算 user 和 feed 子网络的庞大计算量。收益也是很明显,其中排序预估耗时从 100+ms 下降到了 7ms,秀秀社区 push 服务预估耗时从单尾号 5 小时降低到了 3 分钟,到达点击率平均提升 23.9%。

推荐阅读