分享嘉宾:高伟豪博士 字节跳动 研究科学家

导读:传统的召回算法一般基于双塔结构并加以approximately nearest neighbor search (ANN) 或者maximum inner productive search (MIPS),比如fast ball tree (FBT),hierarchical navigable small world (HNSW) 等。这些传统的算法embedding的训练目标和ANN的目标不一致,导致ANN的损失无法学习。目前比较著名的解决思路是构建一个tree-based model如TDM等。

我们今天将介绍字节跳动AML Team在大规模推荐中构建的可学习的索引结构,使得embedding的训练目标和索引结构的训练目标可以一致学习,达到良好的召回效果,它不仅局限于广告业务,在推荐和搜索业务中也有应用。

本文将从以下几方面展开:

  • Deep retrieval的核心模型

  • 如何训练structure model

  • 思考与讨论

  • 精选问答

01

Deep retrieval的核心

如图所示我们可以根据DR的structure的KxD的矩阵构造出path。我们可以把这种path看成层级的聚类,每个path里面有很多的item,每个item也可以属于多个path,这样我们可以保留item的多元化信息。比如“同仁堂”可能是中药企业,也可以是一个相声,所以我们在搜索“同仁堂”对应的文章时,它既有可能在中医药的path出现,又有可能在相声中出现,达到了我们multi-path的效果。

1. 训练阶段的structure loss

从上图的图例我们可以看到网络的结构,在第一层得到用户的embedding x 对应c_1的概率,之后path中的每一段都将用户embedding与之前的path embedding串联,最终得到path中当前code的条件概率。根据联合概率公式最终的概率为:

p(c|x)=p(c_1,c_2,c_3|x)=p(c_1|x)p(c_2|c_1,x)p(c_3|c_2,c_1,x)

在训练中已知正例用户embedding x和item id y, 如果我们知道y所在的path为π(y),则:

maxlogp(π(y)|x)=logp(π(y)1|x)+logp(π(y)2|π(y)1,x)+logp(π(y)3|π(y)1, π(y)2,x)

2. serving阶段的beam search

在serving阶段我们采用的是beam search的算法,具体如图所示:

通过图中示意的方法,我们在每一层选概率最大的B个node向下传递,B是指beam size,通常选10个左右。最后我们选出B个path并merge其中的item。

02

如何训练structure model

1. EM算法

在DR中我们需要同时训练structure model的参数(记为θ),以及所有item到path的mapping(记为π),则训练目标为:

其中J是指J条path。我们想交替训练π和θ,于是采用EM算法来共同训练参数和mapping。最开始我们随机初始化θ和π并轮流进行E-step和M-step。

在E-step中,我们进行以下操作:一是可用任何基于梯度的优化算法优化θ,因为p_θ是可微的。二是对于每一个path c和item v计算它们的likelihood,记为s[v,c],也称为hidden score。

其中假设对于任何一个item v出现了n次,对应n个用户xi,我们计算平均p(c|x, θ)的likelihood。由于可能的path有K^D个而我们不可能全部计算,所以我们将只选取beam search分数较高的path并记录其hidden score。

在M-step中,我们需要从hidden path和hidden score中更新π(v)。最直接的方法是对于每一个item我们选取hidden path中分数最高的path作为新的π,这样在EM算法的objective function显然会达到很高的分数,但是这样做有一个缺点,即导致很多item学到一个path,使得path过于集中,即有的path中有大量的item,有的path里面没有item,这样的结果送到下游任务时,下游的压力就无法控制。为此我们引入patch-size penalty,我们令f(x)=x^4,α是可调参数,有:

即减去所有path,每个path里面的item个数的四次方,如果当前path的item已经很多时,可以有效抑制item继续增加。

2. 在线EM算法

对于流式训练,我们设计了在线EM算法。在E-step中,我们将使用一个滑动的平均hidden score并且动态跟踪一个固定大小的hidden path set。在M-step中我们采取定时任务的方式,从Parameter Server里面读取每个item的hidden path和hidden score,然后运行上段所说的penalty 算法计算出新的true path并写入到PS。

3. 多任务学习

现在的DR采用multi-task learning的机制,我们使用structure loss来训练structure model以及item-path mapping,同时我们也保留了点乘模型比如FFM,NN模型来训练user或者item embedding用作reranker。在serving过程中,我们通过beam search找出hidden path以及他们的item,先经过reranker经过初步筛选出固定条数的candidates,再精排。这样可以减缓了粗排和精排的压力,另一方面也可以控制出口条数。

03

思考与讨论

与传统的ANN相比,DR的聚类更注重用户侧行为而不是item本身,比如足球视频和汽车视频在ANN召回中可能不在同一类但是在DR中会在同一类。DR其实不是利用item embeddeing本身,而是利用user和item之间的信息,利用hidden score进行聚类,即虽然两个item本身并不相近,但是他们可能会被同一种user消费。所以DR中path里面item的diversity会比ANN高很多。

因此DR更偏向于偏重用户行为的应用场景,比如广告或者推荐,在搜索中DR通常会降低相关性。

DR的structure model目前只用了正例没有负例,负例只在rerank model中使用。而且structure model只使用了item ID embedding,没有使用item侧特征,item侧特征只在rerank model中使用。除此之外,DR的学习目标之来源于user,item pair没有体现相关性,如果能将相关性loss引入DR loss来端到端学习用户行为和相关性也许可以解决搜索遇到的问题。

04

精选问答

Q:同一个item是否属于同一个D?

A:首先,同一个item是可以属于多个path, 比如“同仁堂”既可以属于相声的path又可以属于中医药的path, 在不同层的code中,item也可以属于多个,比如属于1,2,3 code,1,2,4 code。着代表两个path在类方向是一致的。

Q:retrieval算法学到的聚类结构与U2U的算法的聚类结构有什么关系?

A:有可能有一定关系,聚类的结果更容易把相同用户消费的物品聚到一起。

Q:什么在检索的过程中要用beam search而不是全部检索完?

A:因为一般线上K是100到1000,D是3,如果全部检索则需要检索至少百万级别的path,是不符合实际的。所以我们需要一个方法选择比如top20的path,这个方法选择的top20和实际的top20非常相近,beam search这个方法满足了我们的需求。

Q:EM算法的收敛性是否有保证,在实际应用中是否会出现不收敛的情况?

A:在理论上是有一些paper论证过EM算法在哪些条件下可以收敛,这些理论上的假设理论性比较强。在实际情况下我们回去检验一些这些条件,有时候也可以直接看结果。在非流式训练的情况下,我们的算法经过3到5个M-step以后会收敛到稳定的值。在流式训练中,我们通过定时M-Step的方法,实际在5到10次M-step可以达到收敛,这些都是一些比较实践的方法。

Q:这个方法是召回用户的多兴趣那么也没有和其他的一些用transformer的方法做对比?

A:我们在做多兴趣召回,目前和transformer的关系还不是特别紧密,我们大概的做法也是生成不同的user embedding, 对不同的user embedding做 beam search, 对 search的结果进行一些merge并通过一些loss控制不同的embedding学习不同的兴趣,但是transformer我们还没有尝试。

Q:不加multi-task模型会变成什么样?M-step是否只做一次?

A:不加multi-task模型学到的path非常不平衡,虽然我们有penalty进行控制但是还是不够,这是因为不加multi-task负例没有被利用,item embedding也没有被充分利用,所以这就是为什么我们现阶段使用了multi-task。M-step需要做不止一次的,实际我们需要等到模型收敛,这至少要一两天的时间。

Q:这个模型的线上效果如何?

A:这个模型已经在字节跳动不少的产品上线,覆盖广告和推荐,海内外产品都有应用,效果还是很成功的。

一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定o要备注信息才能通过)

END -

KDD2021 | 华为AutoDis:连续特征的Embedding学习框架

2021-12-01

继续!从顶会论文看对比学习的应用!

2021-11-30

数据不平衡问题都怎么解?

2021-11-29

自然语言处理「迷惑行为大赏」第二季

2021-11-28

字节跳动高伟豪:端到端深度召回算法相关推荐

  1. 深度召回算法在字节跳动推荐系统的应用实践

    今天给大家带来字节跳动高伟豪所做的分享<深度召回算法在字节跳动推荐系统的应用实践.pdf>.关注推荐算法.深度召回.召回算法等的伙伴别错过了(到小程序中省时查报告中搜索"推荐&q ...

  2. 面试字节跳动Android工程师该怎么准备?深度解析,值得收藏

    前言 Android高级架构师需要学习哪些知识呢? 下面总结一下我认为作为一个资深开发者需要掌握的技能点. 1.Android开发的几个阶段 我的10年开发生涯中,有9年都是做Android相关开发, ...

  3. 谁在让字节跳动?张一鸣领衔14大将,106位高管架构首次曝光

    安妮 发自 纽凹非寺 量子位 出品 | 公众号 QbitAI 字节跳动,抖音.今日头条.西瓜视频背后的母公司. 仅去年一年,这家靠AI算法驱动的公司总部员工数量几乎增加了一倍,达到了四万人.其产品也已 ...

  4. 北京内推 | 字节跳动AML机器学习系统团队招聘机器学习训练框架研发实习生

    合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 字节跳动 AML (Applied Machine Learning) 机 ...

  5. 字节跳动只剩下小米这一个朋友了

    字母榜(ID:wujicaijing) 编辑/马钺       撰文/王雪琦 "巨头之间,竞易合难!" 罗永浩4月1日的抖音直播首秀中,一共上架了23件商品,其中,7件是小米及其生 ...

  6. 留给字节跳动的时间可能不多了!

    高估值疑云后又提高营收,留给字节跳动的时间可能不多了-- 作者 | 曾响铃 本文经授权转自科技向令说(ID: xiangling0815) 字典里没有"消停"二字的字节跳动又弄出了 ...

  7. 云队友丨字节跳动的失意版图

    深燃(shenrancaijing)原创作者 | 李秋涵编辑 | 魏佳 B站董事长兼CEO陈睿曾这样评价张一鸣,"<狮子王>中有一句话,太阳照得到的地方,都是我的疆土.我认为张一 ...

  8. 百度、字节跳动们,能否撬动在线办公市场?

    在线办公市场从来不乏新玩家. 4月27日,百度旗下在线办公品牌"百度Hi"进行了全面地升级与更名."百度Hi"更名"如流"后,其将致力于打造 ...

  9. 又一 AI 大牛离职返校!前字节跳动 AI Lab 总监李磊加入 UCSB 执教

    整理 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 近日,字节跳动AI实验室总监李磊离职,入职加州大学圣巴巴拉分校(UCSB)担任助理教授,重返学术界.去年,该实验室的AI掌门人马 ...

最新文章

  1. 赠书 | 315之后,无人旁观时我们是谁
  2. SELinux与SEAndroid
  3. protected访问权限_权限修饰符 /重写
  4. LeetCode MySQL 1141. 查询近30天活跃用户数
  5. Android Studio下载
  6. iOS 浅复制和深复制的深层理解,含示例
  7. python数字求和为什么得不出结果_WPS表格求和问题,只出公式不出结果数字
  8. Tomcat安装步骤及详细配置教程(2022最新版)
  9. 张小龙分享微信——从产品经理的角度解读微信
  10. Ring Buffer介绍
  11. 涉密计算机违规外联检查,涉密计算机违规外联及移动存储介质使用检查的研究与实现...
  12. QT5串口读取宇电温控器温度
  13. 8. G1垃圾收集日志
  14. Java批量导出word压缩后的zip文件
  15. 罗马数字(Python)
  16. 跟上学期给我们带过课的那个夹克男一样
  17. 专题教程——选队长游戏
  18. cobaltstrike 远控
  19. Tomcat debug 配置
  20. 期货反向跟单--“盘手”转化为“散户”的战斗

热门文章

  1. SAP License:CO相关知识点
  2. 信贷三类业务风险如何把控
  3. Elasticsearch 实战2:ES 项目实战(二):基本操作、批处理、高级查询
  4. BZOJ 1070: [SCOI2007]修车(费用流)
  5. [BZOJ3230]相似子串
  6. [BZOJ3772]精神污染
  7. [转载][FPGA]有限状态机FSM学习笔记(二)
  8. 机器学习 —— 极大似然估计与条件概率
  9. Resource Monitor的使用和理解
  10. XMLReader—一个可以读取XML文件的java类