【论文解读】RALM:微信看一看中基于Attention机制的实时Look-alike推荐模型

【论文解读】RALM:微信看一看中基于Attention机制的实时Look-alike推荐模型

前段时间读了来自微信团队发表在KDD2019上的一篇论文《Real-time Attention Based Look-alike Model for Recommender System》,简称是RALM,主要介绍的是一种将Attention机制与look-alike模型结合后的实时推荐模型,这个算法目前应用在了微信“看一看”模块上。

在读论文的过程中产生了许多疑问,也查找了不少资料。因为网上对这篇论文的解读不算很多,因此也把我阅读过程中的一些理解和寻找到的答案整理记录下来,希望对大家有一些帮助。在文章最后列出了论文原文与引用参考部分的链接。

微信看一看界面

背景

首先介绍一下这个算法的业务背景。

推荐系统的初衷是猜你喜欢什么,然后对你进行个性化推荐。但是目前主流的一些推荐算法(比如协同过滤),它们都非常依赖于item的历史行为特征,所以一些比较冷门、但是高质量的长尾内容,可能就会被预测出比较低的得分。也就是说,热门的文章和目标用户已经点击过的文章总是被推荐,然后变得越来越热门,造成了推荐系统中的“马太效应”。如果长时间这样,就会造成推荐疲劳,推荐系统边界收窄。所以许多模型也在致力于去消除马太效应。

业务背景:马太效应

那么,解决这个问题的一种思路就是Look-alike模型,这是广告领域流行的一类方法,其核心思想就是针对某个item,先根据历史行为圈定一部分种子用户,然后通过模型寻找与种子用户相似的人群,为他们推荐该item。

Look-alike模型主要分两个大方向:

  • Similarity based models (LSH局部敏感哈希/k-means)
  • Regression based models (LR/FM/MLP)

这些模型其实在广告系统中都得到了还不错的效果,但是在新闻资讯的推荐系统中并不适用。因为它有以下2个特点:

  1. **时效性要求非常高。**一般一条新闻的生命周期比较短,我今天没看到,明天就不感兴趣了。
  2. **候选集更新频率非常高。**一天可能有上百万条新内容,而传统的模型每新加入一个item就需要重新训练模型。这对于高时效性高频率更新的资讯推荐系统来说是难以接受的。

业务背景:新闻推荐系统的要求

那么RALM就是针对以上这个背景提出的一种实时Look-alike模型,所以它能够做到以下3点:

  • 实时:如果出现了新的item,它不需要重新训练模型,能够直接实时完成种子用户扩展
  • 高效:在保持CTR前提下加强对于长尾内容的挖掘和推荐,获得更准确和更具多样性的用户表达
  • 快速:降低了计算复杂度,精简预测计算,满足线上的耗时性能要求

论文框架

接下来我们就来介绍一下算法的总体框架和流程。

整体框架

首先是整个算法的框架,其实就是以Look-alike模型为核心,加入实时计算

对于所有的候选内容(包括latest news和long-tail contents等),先根据每一篇内容的历史行为圈定一部分种子用户seeds,然后通过某种方式得到的user embeddinng去计算两者的look-alike score,根据得分去确定要不要推荐该item。大体流程可以看左边这张图。\

论文框架:Look-alike模型及本文创新点

那么根据这张图呢,也能总体说明这篇论文在哪些部分进行了创新:

  • User-users Model:这是一个u2users的模型,它用一大群种子用户得到了种子用户群,然后使用用户群的特征代替了候选item行为特征。

  • User Representation:这一部分的学习过程是基于Youtube DNN来做的,Youtube DNN模型使用了深度网络结构来学习用户的embedding,然后将其输入concatenation层,最后输入MLP中。RALM中对其作了一些改进,使用了Attention-merge layer来代替它,希望能够保证强/弱特征都能产生效果。

  • Seeds Representation:在推荐系统中有大量的用户,那么如何使用每个用户的representation来表示种子群是一个比较关键的问题。在这里,RALM使用了global 和local 两部分的representation来保证其稳健性和自适应能力。

  • Real-time Look-alike:它是一个实时模型,那么为了减少线上计算的时间复杂度,RALM对种子用户进行了聚类,然后保存了每一类的质心,那么线上只需要计算质心的embedding和目标用户的相似度即可,将耗时从1000ms降低到了20ms

实现流程

RALM模型主要分为三个流程:离线训练、在线异步处理、在线服务。这里先简单介绍一下它们都干了啥,模型细节在后面聊。

离线训练

离线训练目的是为了得到用户的高阶特征。

  • 输入:Multi-Fields User Features
  • User Representation Learning
  • Look-alike Learning (部分)
  • 输出: Look-alike Embedding(cache)

它的输入是一些multi-fields的用户特征,训练过程主要包括两个阶段的训练:user representation learning和look alike learning。这里需要的注意的是,虽然look-alike学习在框架图中写在离线训练部分,但其实相似度计算、在线异步处理其实都是look-alike建模过程中的流程,而这里的离线训练只是look-alike学习中的一部分。

  • User Representation Learning:在user representation learning 这一步是为了去学习用户的高阶画像,得到是所有user *(包括seed users和target user)*共有的特征,然后将其传入look alike learning。
  • Look-alike Learning:look alike模型在离线训练的这一部分中,会对前面的user representation再次经过一次FC,然后得到look-alike user embedding,这一部分会被储存下来,以供线上服务直接拉取。

系统架构:离线训练

在线异步处理

离线训练结束后,是在线异步处理,这一步的目的是为了得到seeds的Raw Feeds Embedding。

  • 【对候选集中所有内容遍历进行以下操作】
  • 输入:最新的300万点击用户的user embedding
  • 每5分钟进行 K-means 聚类,保存簇中心
  • 输出: Raw Feeds Embedding & E g l o b a l E_{global} E
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值