微信看一看推荐系统——RALM模型详解

微信看一看推荐系统——RALM模型详解

微信看一看推荐系统——RALM模型详解 被包养的程序猿丶 哈尔滨工业大学 信息与通信工程硕士 微信看一看推荐系统——RALM模型详解

一、创新点

1、通过构建Attention Merge Layer提升用户表征的有效性

2、通过Global-Attention和Local-Attention提升种子用户表征的鲁棒性和自适应性

3、实现了一个实时可扩展的Look-Alike系统

二、论文背景

简单来说推荐系统的目前面临着两大问题,一个是推荐内容多样性的问题,另外一个是长尾内容无法获得有效曝光的问题,所以本文提出的RALM算法框架主要着眼于解决这两个问题。

三、系统概述

在本部分我们主要介绍基于用户扩展的RALM算法框架,整个系统架构如图所示

微信看一看推荐系统——RALM模型详解RALM算法系统架构

1、概览

目前微信“看一看”推荐系统中有如下几种特别的媒体形式用到了用户人群扩展,其中包括实时的新闻、人工标记的高质量文章以及长尾的一些内容。所有的这些都会实时的更新到线上candidate数据库中。在某一时刻有成千上万的候选物料供用户人群扩展使用。针对每一个候选物料,系统都会以异步的方式收集点击该物料的用户从而形成种子用户群,并将种子用户群的embedding信息存储到线上的seeds-cluster embedding数据库中。

用户表征向量是通过离线用户表征学习得到的,种子用户的local vector和global vector是线上计算得到的。当线上接收到一个用户发送的请求之后,服务进程会将首先得到用户的表征向量,然后迭代更新候选物料,计算用户和种子群体间的相似性

总的来说整个系统包含如下三个部分:离线训练模块、线上异步处理模块、线上服务模块

2、离线训练模块

线上服务模块依赖于用户的表征向量和种子用户群的embedding向量。所以离线训练部分主要包括如下两个部分,即用户表征学习和look-alike学习

(1)用户表征学习:

这部分主要是利用深度学习的模型,输入一些用户特征,然后经过模型最后输出用户的embedding向量(universal user embedding),通常的结构就是Embedding层+pooling层+MLP。

(2)look-alike学习

look-alike学习是基于注意力机制与聚类算法实现的。这部分的输入包括两个部分,一部分是用户表征学习的输出(universal user embedding),另一部分是各个种子用户群的embedding。这部分的输出就是user embedding,主要用户线上look-alike相似性的预测与计算。

3、线上异步处理模块

线上异步处理模块主要用户实时更新线上seeds embedding数据库。当用户扩展服务部署之后,种子用户群中的成员开始逐渐的积累,然后利用K-means聚类算法将种子用户分为k个簇,所以异步工作流主要包括如下两个部分

(1)、用户反馈监控

用户扩展系统通过实时监控维系用户的点击行为从而更新种子用户,随着种子用户数量的增长,系统对此作了截断,只取最近三百万的点击作为一个物料的种子用户

--> 采样,有优化的空间!详细洞察初始人群和高优人群...

为什么要用 KMeans?concating/pooling...不香吗?

(2)、种子用户聚类处理

尽管种子用户是实时更新的,但是种子用户聚类处理没有必要实时进行,系统每五分钟利用K-means进行聚类操作,每个簇的centroid对应的embedding被当做这个簇中种子的原始表征向量,并被存储到数据库中,主要后续被用于线上计算种子用户的embedding向量。

4、线上服务模块

首先系统得到用户的look-alike embedding,然后针对每一个候选物料,取回种子用户的centroid embedding作为look-alike模型的输入,该模型分别输出global embedding和local embedding;然后线上服务模块利用global embedding和local embedding计算相关性分数,对于给定用户u和种子s,look-allike模型的相关性分数定义如下

微信看一看推荐系统——RALM模型详解

αβ分别为权重系数

四、模型详解

1、用户表征学习

具体的模型结构如下图所示

微信看一看推荐系统——RALM模型详解用户表征模型结构

用户的兴趣通常是复杂而且多变的,对用户行为兴趣的建模是非常重要的,所以文章设计了一个神经网络来学习用户表征向量。

(1)采样

用户表征学习被认为是一个多分类的任务,即从多个item中选择一个用户感兴趣的item,结构也是类似于YouTube DNN模型。为了提高训练效率,文章采用负采样而不是softmax,显然如果随机的从全部item中选择部分作为负样本,采样后的分布和真实分布式不同的。为了消除采样带来的偏差, 首先对全部的item按照他们出现的频率进行排序,然后依赖排序后的序计算每个item的概率,具体如下

微信看一看推荐系统——RALM模型详解

xi表示的是第I个item,k表示的是第i个item对应的序,D表示的是所有item对应的最大的序,p(xi)表示的是选择第i个item作为负样本的概率。由于正样本对于loss的贡献非常大,这里对于正样本的数量做了限制,每个用户对应的正样本数量为50,然后正负样本比例为1:10,在采样之后利用softmax对概率进行归一化操作。

初次之外为保证推荐结果的多样性,尽可能详尽的用户行为特征被用于模型的训练,这样可以尽可能保证挖掘用户更广泛的行为兴趣。

(2)模型结构

本文的用户表征学习的模型和youtube DNN模型最大的不同就在于对于不同fields embedding向量的处理上,在YouTube DNN模型中,不同fields的embedding向量直接concat都一起,然而本文通过实验发现,不同fields对于任务目标的贡献是不同的,强相关的fields更容易使模型陷入过拟合,而弱相关的fields更容易使模型陷入欠拟合,这就使得模型对于不同fields的学习不够充分,从而使得系统的多样性欠缺,所以本文提出了Attention Merge Layer,利用Attention机制对不同fields的embedding进行加权处理,熟悉Attention机制的应该比较容易理解,具体Attention Merge Layer结构如下所示

微信看一看推荐系统——RALM模型详解Attention Merge Layer模型结构

2、look-alike学习

(1)模型结构

look-alike模型结构如下图所示

微信看一看推荐系统——RALM模型详解Look-alike模型结构

look-alike模型也是采用双塔的结构,左侧的输入是种子用户的embedding向量,右侧的输入是目标用户的embedding向量,两侧的embedding都需要经过一层FC完成到低维空间的映射,由于右侧的目标用户的embedding向量是经过用户表征学习得到的,所以为了防止过拟合,双塔的第一层FC是共享的。在经过FC层之后,左侧的塔可以得到各个簇对应的embedding,然后将各个簇的embedding和目标用户的embedding分别输入给global attention unit和local attention unit就可以得到global embedding和local embedding。attention unit模型结构如下图所示

微信看一看推荐系统——RALM模型详解Attention Unit结构

参考上图可知local embedding计算如下所示

微信看一看推荐系统——RALM模型详解

global embedding计算如下所示

微信看一看推荐系统——RALM模型详解

(2)迭代训练

在反向传播的过程中,user embedding的值发生了改变,为了保证种子用户簇的embedding和user embedding保持同步,在每一轮迭代之后,都需要重新进行聚类操作。

五、实验结果

文章同时对比了RALM模型和其他一些常用模型在离线实验中的效果,具体可以参考原始文章。这里更关注线上AB实验的效果,AB实验效果如下所示

微信看一看推荐系统——RALM模型详解线上AB实验结果

从上面的实验结果可以发现,RALM模型对于系统的多样性提升效果显著,同时对于解决推荐系统的长尾问题也很有帮助(gini系数),总的来说该模型的效果还是十分明显的。

六、结论

RALM 实现了可实时扩展用户的 look-alike 算法,它通过 User Representation learning 和 Look-alike learning 捕捉种子用户群的 local/global 信息,并学习种子用户群与目标用户的相似度表示,更好地发掘长尾内容的受众用户。RALM模型对于提升推荐系统内容多样性和长尾内容覆盖度效果显著,同时也给我们提供了很好的借鉴思路,非常值得仔细品读。

上一篇:当RNN神经网络遇上NER(命名实体识别):双向LSTM,条件随机场(CRF),层叠Stack LS


下一篇:[Graph Embedding] SDNE原理介绍及举例说明