字节跳动高伟豪:端到端深度召回算法
分享嘉宾:高伟豪博士 字节跳动 研究科学家
导读:传统的召回算法一般基于双塔结构并加以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
字节跳动高伟豪:端到端深度召回算法相关推荐
- 深度召回算法在字节跳动推荐系统的应用实践
今天给大家带来字节跳动高伟豪所做的分享<深度召回算法在字节跳动推荐系统的应用实践.pdf>.关注推荐算法.深度召回.召回算法等的伙伴别错过了(到小程序中省时查报告中搜索"推荐&q ...
- 面试字节跳动Android工程师该怎么准备?深度解析,值得收藏
前言 Android高级架构师需要学习哪些知识呢? 下面总结一下我认为作为一个资深开发者需要掌握的技能点. 1.Android开发的几个阶段 我的10年开发生涯中,有9年都是做Android相关开发, ...
- 谁在让字节跳动?张一鸣领衔14大将,106位高管架构首次曝光
安妮 发自 纽凹非寺 量子位 出品 | 公众号 QbitAI 字节跳动,抖音.今日头条.西瓜视频背后的母公司. 仅去年一年,这家靠AI算法驱动的公司总部员工数量几乎增加了一倍,达到了四万人.其产品也已 ...
- 北京内推 | 字节跳动AML机器学习系统团队招聘机器学习训练框架研发实习生
合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 字节跳动 AML (Applied Machine Learning) 机 ...
- 字节跳动只剩下小米这一个朋友了
字母榜(ID:wujicaijing) 编辑/马钺 撰文/王雪琦 "巨头之间,竞易合难!" 罗永浩4月1日的抖音直播首秀中,一共上架了23件商品,其中,7件是小米及其生 ...
- 留给字节跳动的时间可能不多了!
高估值疑云后又提高营收,留给字节跳动的时间可能不多了-- 作者 | 曾响铃 本文经授权转自科技向令说(ID: xiangling0815) 字典里没有"消停"二字的字节跳动又弄出了 ...
- 云队友丨字节跳动的失意版图
深燃(shenrancaijing)原创作者 | 李秋涵编辑 | 魏佳 B站董事长兼CEO陈睿曾这样评价张一鸣,"<狮子王>中有一句话,太阳照得到的地方,都是我的疆土.我认为张一 ...
- 百度、字节跳动们,能否撬动在线办公市场?
在线办公市场从来不乏新玩家. 4月27日,百度旗下在线办公品牌"百度Hi"进行了全面地升级与更名."百度Hi"更名"如流"后,其将致力于打造 ...
- 又一 AI 大牛离职返校!前字节跳动 AI Lab 总监李磊加入 UCSB 执教
整理 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 近日,字节跳动AI实验室总监李磊离职,入职加州大学圣巴巴拉分校(UCSB)担任助理教授,重返学术界.去年,该实验室的AI掌门人马 ...
最新文章
- 赠书 | 315之后,无人旁观时我们是谁
- SELinux与SEAndroid
- protected访问权限_权限修饰符 /重写
- LeetCode MySQL 1141. 查询近30天活跃用户数
- Android Studio下载
- iOS 浅复制和深复制的深层理解,含示例
- python数字求和为什么得不出结果_WPS表格求和问题,只出公式不出结果数字
- Tomcat安装步骤及详细配置教程(2022最新版)
- 张小龙分享微信——从产品经理的角度解读微信
- Ring Buffer介绍
- 涉密计算机违规外联检查,涉密计算机违规外联及移动存储介质使用检查的研究与实现...
- QT5串口读取宇电温控器温度
- 8. G1垃圾收集日志
- Java批量导出word压缩后的zip文件
- 罗马数字(Python)
- 跟上学期给我们带过课的那个夹克男一样
- 专题教程——选队长游戏
- cobaltstrike 远控
- Tomcat debug 配置
- 期货反向跟单--“盘手”转化为“散户”的战斗