阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

Google 工业风最新论文, Youtube 提出双塔结构流式模型进行大规模推荐

  • 2020-03-19
  • 本文字数:1305 字

    阅读完需:约 4 分钟

Google工业风最新论文, Youtube提出双塔结构流式模型进行大规模推荐

本文主要介绍 Google 在 RecSys 2019 上的最新论文,提出了双塔结构流式模型应用于 Youtube 进行大规模推荐



介绍


工业界现有的推荐系统都需要从一个超大规模的候选集中拉取 item 进行打分排序。解决数据稀疏和指数级候选集分布的一种通常做法是从 item 的内容特征中学习出 item 的稠密表示。这里很自然地就想到了工业界大名鼎鼎且应用广泛的双塔神经网络结构,其中的一塔就是从丰富的 item 内容特征中学习到 item 的表示。


工业界目前训练双塔结构一般是通过随机 mini-batch 的方式来优化损失函数。这种训练方式存在的一个显著问题就是 in-batch loss 会因为随机采样偏差而导致模型效果不好,尤其是当样本分布出现明显倾斜的时候。我们提出了一种全新的算法,可以从流式数据中预估 item 的频率。通过理论分析和实验,新算法有能力在不知道候选集全部的词典情况下做出无偏差的估计并且可以自适应候选集分布的变化。在 Youtube 线上的实验也证明了该算法的有效性。


模型架构


我们考虑一种通用的推荐问题设定:给定一系列 query 和候选集,目标就是在给定 query 的情况下返回最相关的一个候选子集。针对这里的 query 和候选集中的 item,都可以用各自的特征向量来进行表示。在个性化推荐场景中,则是用户 user 和会话的上下文 context 构成这里的 query 侧


都知道 Youtube 的推荐架构主要分为两个阶段:召回和排序。而本文则主要聚焦于新增一路如下图所示的双塔召回。query 侧的塔是由大量的用户观看历史形成的 user features 以及共同的 seed features 构成,候选集侧的塔则是由视频特征构成。训练样本的 Label 则是由用户的点击和播放时长加权得到。



序列式训练


Youtube 的训练数据按天依次产生,训练数据以 streaming 的方式喂给分布式训练集群。这样模型就可以自动学习并适应最新数据分布的变化。训练算法如下图所示,当收到一个 batch 的训练样本时,首先针对候选集的 item 进行采样概率预测,然后根据预测的采样概率构建损失函数,最后迭代训练即可。



流式频率预估的算法如下图所示。由于候选集 item 的词典不是固定的,时刻都会有新的 item 产生。因此这里针对 item 使用 hash 函数做了一个映射。针对一个指定的候选 item y,A 表示 y 被采样最近一次步骤,B 则表示 y 的预估频率。一旦候选 item y 在迭代步骤 t 中出现,即可以按照下面迭代公式更新 B。



索引和模型预估


如下图所示,索引 pipe 分为三个阶段:候选集生成,embedding 预测和 embedding 索引。


上述序列式训练生成的双塔模型会定期地保存成为 SavedModel 并与线上的预测模型保持同步。对于索引库里的所有候选 item,可以使用双塔模型的候选集侧的塔生成 item 的 embedding;然后再通过基于树或者量化 hash 的方式来建立索引。



实验


为了评估所提出算法框架的有效性,我们进行了在 item 频率预估上的仿真实验、Wikipedia 上的检索实验以及 Youtube 上的实验。这里我们主要关注于在 Youtube 线上的实验。


模型结构采用上面介绍的结构,针对共同的输入特征,相应的 Embedding 在 query 和 item 的两个塔之间是共享的。双塔均使用三层 DNN 网络 1024 x 512 x 128。



本文转载自知乎专栏:深度推荐系统。


原文链接:https://zhuanlan.zhihu.com/p/88255834


2020-03-19 21:381411

评论

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

第十三次课

云栖大会边缘计算分论坛倒计时7天,这2点值得期待

阿里云Edge Plus

边缘计算

大数据应用场景

朱月俊

MySQL中修改数据表存储引擎的三种方法

Matrix Chan

MySQL 运维 数据表引擎

Docker Compose 搭建 Redis Cluster 集群环境

哈喽沃德先生

redis Docker Docker-compose redis集群 redis cluster

极客大学架构师训练营 0 期 week 13 学习笔记

chun1123

大数据 学习

架构师训练营——第13周作业

jiangnanage

大数据思考

朱月俊

达达双云双活实践

夜读AI

容器 微服务 openresty 多云架构 双活容灾

week13 作业

Geek_196d0f

公有云常用数据分析指标

leis

第13周作业

刘卓

PageRank

GalaxyCreater

第13周学习总结

刘卓

极客大学架构师训练营 0 期 week 13 作业

chun1123

数据分析 PageRank

架构师训练营——第13周学习总结

jiangnanage

架构师训练营-week13-学习总结

晓-Michelle

极客大学架构师训练营

开始编译第一个typescript实例

程序员学院

Java typescript 大前端

【在云端 003】 星星之火,可以燎原——云时代的IoT

Bora.Don

云计算 IoT AIOT

week13 小结

Geek_196d0f

Google 搜索引擎之PageRank 算法

莫莫大人

极客大学架构师训练营

Week13 总结

leis

java安全编码指南之:Number操作

程序那些事

java安全编码 java安全 安全编码规范

手握阿里P8亲传Redis和MongoDB利器,怕什么面试官

小Q

Java 数据库 redis mongodb 面试

Spring 5 中文解析核心篇-集成测试之TestContext(中)

青年IT男

Spring5 JUnit

第13周数据分析

陆不得

synchronized实现原理及代码证明各种锁

Darren

源码 synchronized 轻量级锁 偏向锁 Monitor

架构师训练营第十三周作业

子豪sirius

oeasy 教您玩转linux 之 010209 装酷利器 hollywood

o

windows10 CUDA环境搭建

yuanhang

tensorfl

从零开始搭建完整的电影全栈系统(三)——restfulApi的编写

刘强西

RESTful 电影api

Google工业风最新论文, Youtube提出双塔结构流式模型进行大规模推荐_语言 & 开发_深度传送门_InfoQ精选文章