GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

微信最新论文解读:基于内部 - 环境注意力网络的推荐多队列冷启动召回

2020 年 5 月 24 日

微信最新论文解读:基于内部-环境注意力网络的推荐多队列冷启动召回

真实世界中的综合推荐系统(例如微信看一看)通常需要从上百万异质物品中进行推荐。直接在百万候选集上使用复杂的推荐算法,往往会引入难以承受的时间成本。因此,工业级综合推荐系统一般由召回(matching)和排序(ranking)两个模块组成。召回模块负责快速从百万级数据中检索出百级别物品候选,排序模块负责准确对这些召回来的物品候选排序,得到最后的推荐结果。由于推荐物品来源多种多样,特征也不尽相同,同时也为了兼顾多样性,召回部分通常会使用多队列召回(multi-channel matching)策略。然而,在现实系统中,综合推荐系统经常会引入新的数据源,这部分冷启动的召回通道在行为稀疏时往往表现较差。为了解决这些问题,作者提出一种 Internal and contextual attention network (ICAN)模型,通过加强多队列之间特征域(feature field)交互和环境信息,得到更好的(冷启动)召回效果。作者在微信看一看系统上进行了离线和在线实验,均获得显著提升。目前 ICAN 已部署与看一看线上召回系统。


模型背景与简介

综合推荐系统(例如微信看一看)能够综合不同来源(例如公众号、新闻源、网页)和不同媒体形态(例如文章、微博、长视频、短视频等)的物品进行联合推荐,为用户提供便利的一站式的信息获取服务。随着信息的指数级爆炸增长,真实世界的综合推荐系统通常需要从千百万异质物品中进行筛选和推荐。一些复杂的 user-item pair-wise 的推荐算法,如 DIN、DeepFM、AutoInt 等,需要穷尽所有候选集进行计算。然而,在百万千万级的数据下,哪怕接近线性时间的计算复杂度也是系统难以接受的。于是,真实推荐系统往往会划分为召回(matching)和排序(ranking)两个串行的模块。召回模块负责从百万级数据中快速检索出一个小的物品候选子集(通常是几百的规模),排序模块负责准确对这些召回来的物品候选排序,得到最后的推荐结果。同时,由于综合推荐的物品来源多种多样,物品属性和特征也不尽相同,在召回部分通常会使用多队列召回(multi-channel matching)策略处理不同来源的物品。这种召回-排序结构是现在大规模推荐系统的主流架构。图 1 给出了看一看场景中综合推荐的示例,包含文章、长视频、短视频三种召回队列(channel)。



图 1:微信看一看综合推荐示例


在现实系统中,综合推荐系统经常会引入新的数据源。微信看一看中较主要的信息来源和召回队列就超过了几十个。这部分冷启动的召回通道在建立初期,用户行为往往比较稀疏,基于用户行为的 CTR 预估模型表现较差。需要注意的是,和针对冷启动用户的推荐算法不同,冷启动召回队列(新信息源的召回队列)中冷启动的是物品和物品所拥有的特征本身。一个直观的方法是使用用户在其它队列上的点击等行为,预测用户在新信息源上物品的偏好,但是不同队列包含的特征域(feature field)可能不一样。不同信息源可能会有特征域上的种类差异,即使是相同特征域(如 tag/topic/category),特征含义也很可能不相同(不同数据源的 tag/topic/category 体系和粒度不同,难以进行直接对应)。模型需要学习到不同特征域之间的映射关系,但是很少有召回工作关注冷启动队列的问题。


在这篇论文中,作者想要提升推荐系统在多队列召回,特别是冷启动召回上的表现。作者提出一种 Internal and contextual attention network (ICAN)模型,通过加强多队列之间特征域交互和环境信息,得到更好的(冷启动)召回效果。作者基于微信看一看综合推荐系统,在离线和在线上均进行了 CTR 预估实验,并在多个指标上取得了最好结果。这个工作的贡献点如下:


1、这篇工作第一次强调了推荐系统多队列冷启动召回的任务。这项任务在学术界暂时没有太多关注,但是在工业级推荐系统中是一个对结果影响重大的实际难题。


2、作者提出了一个 Internal and contextual attention network (ICAN)模型,是第一次结合了跨队列特征域之间的交互信息进行召回的工作。


3、模型在离线和在线的召回指标上均获得显著提升,并且目前成功部署于微信看一看系统,服务千万用户。


模型结构

这篇论文目的是使用多队列之间的特征域交互,辅助推荐系统在多队列(冷启动)召回上的效果。图 2 给出了 ICAN 模型的整体架构。



图 2:ICAN 的整体模型架构


如图 2 所示,ICAN 模型首先将成熟队列和冷启动队列中的用户行为序列同时作为输入,并按照特征域把每个队列中的行为序列拆分成不同的特征域序列。然后,ICAN 通过 Contextual Attention Layer 抽取多队列特征域和环境相关的特征。接下来,ICAN 通过 Internal Attention Layer 中的 field-level self-attention 挖掘不同队列的不同特征域之间的交互信息。最后,模型融合用户行为、用户基本属性、推荐上下文信息以及用户社交属性信息等,参考 RecSys2016 的 Youtube 召回模型的训练方式,离线使用 softmax 基于 CTR 预估进行训练,在线使用类似基于 FAISS 的快速召回工具进行召回。这样,线上 ICAN 召回的时间复杂度就控制在 O(log(n))。模型的核心创新点在于针对多队列冷启动召回问题提出的基于特征域的跨队列信息交互。


具体地,在第一步,模型首先将成熟队列和冷启动队列中的用户行为序列同时作为输入。和传统的 session-based recommendation 不同,ICAN 把所有队列中的每个 item 向量按照其特征域数目拆分成 n 份,并根据特征域组成 n 个新的序列。例如在 article 队列中,每个 article 的特征域由文章的[ID, tag, category]三个特征域组成,那在 ICAN 的输入中,用户在 article 队列上的点击行为即分为 ID, tag, category 三个序列。每个特征域序列经过 encoder 得到特征域的向量。


第二步,作者使用 Contextual Attention Layer,抽取前述特征域向量中和当前队列的环境(contexts)相关的特征。这里的环境主要有两个因素,其一是当前召回所在的队列,其二是推荐的上下文环境(包括网络状况等因素)。模型通过注意力机制,获得了环境特化的特征域向量:



第三步,作者使用 Internal Attention Layer,让环境特化后不同队列下的不同特征域之间进行充分的特征交互。这里,作者使用了 field-level self-attention 模型,进行不同特征域之间的特征交互:



和传统 self-attention 不同,这里输入的不是 item 矩阵,而是 item 按特征域拆分,并在队列内进行序列聚合后的特征域矩阵。这是因为 ICAN 主要目的是学习到不同队列特征之间的交互信息。这样在冷启动队列中进行推荐时,本队列用户行为不足或本队列特征学习不够充分的情况下,可以借助其他队列的信息学习到用户在冷启动队列中的偏好。另外,在使用其它成熟队列点击进行训练时,模型也可以对冷启动队列的特征进行更新。


第四步,模型融合用户行为、用户基本属性、推荐上下文信息以及用户社交属性信息,通过 MLP 得到了(环境特化后的)用户向量。模型基于用户向量,使用 softmax 进行 CTR 预估。Loss 如下:



此 loss 认为和用户向量相似的物品向量更可能被点击。因此,在线上进行实时召回时,ICAN 只需要使用一次前馈神经网络即可获得用户向量,然后基于类似 FAISS 的快速召回工具进行 K 近邻召回即可,相似度使用用户向量和物品向量之间的余弦相似度。这样,线上召回的时间复杂度就控制在 O(log(n))内,能够在线快速处理千万级物品候选。


实验结果

作者在微信看一看上进行了离线和线上实验。由于是召回模型,离线指标上 ICAN 更加关注用户可能点击的物品是否被召回,并不在意点击的物品具体排在第几位。因此,在离线指标上,作者没有使用 AUC /MAP 这类排序指标,而是使用了 hit rate 作为指标。由于线上实际使用 top500 作为召回结果,作者主要考虑了 100,200,500 三种情况。结果如下:



图 3:离线召回实验结果


在多种指标下,ICAN 模型在成熟队列和冷启动队列上都得到了最佳的效果,其中在冷启动队列上提升更为显著。ICAN 的消融实验也说明了 Contextual Attention Layer 和 Internal Attention Layer 的有效性。线上实验结果也说明 ICAN 能够提升 CTR、list-wise CTR、阅读时长和平均点击类别数(多样性指标)等多项指标,显著提升了线上效果。


除此之外,作者还进行了两种 attention 的可视化。以图 4 为例,我们可以发现在冷启动队列(短视频队列)中进行召回时,长视频的 tag 特征域似乎起到了很大的作用,甚至高于短视频自己的 category/tag 特征域的作用权重。图 5 也说明在 internal attention 中,不同特征域之间存在一定的交互范式。这样的结果说明两点:(1)使用成熟队列信息辅助冷启动队列是很有必要的。(2)把队列信息从物品级拆分成特征域级是很有必要,因为不同队列的不同特征域之间交互模式不同。



图 4:Contextual Attention 的 heatmap



图 5:Internal Attention 的 heatmap


总结

本文提出了一个 ICAN 模型,使用多队列之间的特征域交互,辅助提升推荐系统在多队列(冷启动)召回上的效果。模型针对任务进行了特征域级别的拆分,使得不同队列之间的交互变得更为精细。ICAN 使用了直观的模型,在工业级大规模推荐数据集和线上系统中均得到了成功的验证。未来,更复杂细致的交互方式和与多任务学习/迁移学习的融合可能会是潜在的研究方向。


本文提出了一个 ICAN 模型,使用多队列之间的特征域交互,辅助提升推荐系统在多队列(冷启动)召回上的效果。模型针对任务进行了特征域级别的拆分,使得不同队列之间的交互变得更为精细。ICAN 使用了直观的模型,在工业级大规模推荐数据集和线上系统中均得到了成功的验证。未来,更复杂细致的交互方式和与多任务学习/迁移学习的融合可能会是潜在的研究方向。


本文基于 IJCAI-2020 论文《Internal and Contextual Attention Network for Cold-start Multi-channel Matching in Recommendation》,论文作者是来自腾讯微信的谢若冰、丘志杰、饶君、刘毅、张博和林乐宇研究员。


2020 年 5 月 24 日 00:001231

评论

发布
暂无评论
发现更多内容

API网关

lenka

5月日更

架构实战营-详细架构设计文档

Simon

架构实战营

品牌瞄准年轻人的生意,用户外广告抓住亿万青年的钱包

󠀛Ferry

5月日更

SICP 习题2.6之丘奇数

程序员历小冰

函数式编程 SICP 5月日更

使用docker compose快速部署前后端分离项目案例

皮特王

nginx Docker Vue Docker-compose

那些激情燃烧的NFT们

zhoo299

区块链 加密货币 艺术 5月日更 NFT

如何更改 Notion 中的字体?

彭宏豪95

效率 Notion 工具 5月日更

百度大脑UNIT拍了拍你,提醒你报名智能对话训练营

百度大脑

物联网 智能对话

五一假期回乡,跟大家聊聊感触

架构精进之路

心情 杂记 5月日更

阿里云入选 2021 Gartner APM 魔力象限,国内唯一入选云厂商

阿里巴巴云原生

阿里云 容器 微服务 运维 云原生

技术实践丨如何解决异步接口请求快慢不均导致的数据错误问题?

华为云开发者社区

JavaScript typescript 浏览器 angular web前端

Python OOP-5

若尘

oop Python编程 5月日更

凭借一份“面试真经pdf”,我四面字节跳动,拿下1-2级offer

云流

Java 程序员 架构 面试

每个人都应该学习写作

IT蜗壳-Tango

5月日更

聊聊 Zabbix 和 Prometheus(一)

耳东

Prometheus zabbix 5月日更

Gartner电子书-加快数字化转型的原因和方法

Geek_bacee5

Gartner 加速数字化进程的指南

挖矿从入门到放弃:Chia

程序员架构进阶

数字货币 28天写作 Chia奇亚挖矿 5月日更

这个英语学习APP更适合小白

小天同学

学习 英语 5月日更 APP推荐

前端开发:基于原生JS的时间过滤实现

三掌柜

5月日更

Spring Cloud Kubernetes之实战服务注册与发现

Damon

微服务架构 微服务发现 5月日更

智能证件照 Tech Support

凌天一击

只会重装系统的运维,不是好运维

运维研习社

Linux 5月日更 系统修复

HarmonyOS开发者创新大赛预选赛结束,23支队伍脱颖而出闯入决赛

Geek_283163

鸿蒙

5分钟快速梳理你的HTTP体系

HaiJun

方法论 网络协议 HTTP 语言 & 开发

自动发布.NET Core Web应用

DisonTangor

DevOps 运维自动化 jenkins dotnet

语义理解过程中的崩溃

Qien Z.

nlp 语义 5月日更

你到底想做什么

ES_her0

5月日更

Golang Chaos Engineering

escray

go 极客时间 学习笔记 Go 语言从入门到实践 5月日更

【LeetCode】解码异或后的排列Java题解

HQ数字卡

算法 LeetCode 5月日更

耗时1年的前端技术框架切换之旅

华为云开发者社区

前端 软件工程 React 框架 web前端

技术干货|7个 React 性能提升技巧

拍乐云Pano

React

微信最新论文解读:基于内部-环境注意力网络的推荐多队列冷启动召回-InfoQ