写点什么

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:381668

评论

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

第一周作业

Au revoir

第八作业

Binary

Soul 网关源码阅读(六)Sofa请求处理概览

Java 源码阅读 网关

架构师训练营 4 期 第3周

引花眠

架构师训练营 4 期

产品第一周

骏马

万亿级数据库MongoDB集群性能数十倍提升及机房多活容灾实践

杨亚洲(专注MongoDB及高性能中间件)

MySQL 数据库 mongodb 分布式数据库mongodb Qcon

28天瞎写的第二百二十一天:争论 IBM AIX 版本号,只因好强?

树上

28天写作

SQL 正则表达式

.

28天写作

手写实现单例代码



长期主义是一种生活态度

JiangX

28天写作 价值 长期主义

Week13 作业

evildracula

架构

第13周作业

hunk

架构师训练营第2期

与前端训练营的日子 --Week12

SamGo

学习

绩效管理,上下同心者胜(二)

一笑

管理 绩效 28天写作

Spring-Spring整合MyBatis原理分析

魔曦

架构2期-第十三周作业(1)

浮生一梦

第十三周 2组 架构师训练营第2期

第八周学习总结

Binary

第 13 周 系统架构总结

心在那片海

软件架构-缓存技术

看山

缓存 架构

英雄惜英雄-当Spark遇上Zeppelin之实战案例

王知无

大数据 spark

你不可不知的任务调度神器-AirFlow

王知无

spark 数据可视化 airflow

新名词意味着什么?

lidaobing

28天写作 名词

产品训练营第一周作业

孤星

外星人?他们在哪儿呢?「幻想短篇 10/28」

道伟

28天写作

什么是VXLAN

第13周作业总结

hunk

架构师训练营第2期

产品经理训练营 - 第一章 - 作业

Jeremy

HDFS杂谈:Xattrs扩展属性

罗小龙

hadoop hdfs 28天写作

第 13 周 系统架构作业

心在那片海

十三周作业

落朽

Week 13 数据应用

evildracula

学习 架构

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