首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >知识蒸馏怎么用?召回-粗排篇

知识蒸馏怎么用?召回-粗排篇

作者头像
NewBeeNLP
发布于 2022-06-06 02:13:55
发布于 2022-06-06 02:13:55
1.7K0
举报
文章被收录于专栏:NewBeeNLPNewBeeNLP

作者 | Chilia 哥伦比亚大学 nlp搜索推荐 整理 | NewBeeNLP

之前我们讲过了知识蒸馏在精排中的应用:知识蒸馏在推荐精排中的应用与实践

其实,知识蒸馏在召回-粗排-精排这三个模块都有用武之地,今天我们就来讲讲在粗排和召回中的应用。

0x01. 背景

一般知识蒸馏采取 Teacher-Student 模式:将复杂模型作为 Teacher,Student 模型结构则较为简单;用 Teacher 来辅助 Student 模型的训练。

Teacher 学习能力强,可以将它学到的暗知识 ( Dark Knowledge ) 迁移给学习能力相对弱的 Student 模型,以此来增强 Student 模型的泛化能力。复杂笨重但是效果好的 Teacher 模型不上线,就单纯是个导师角色,真正上线的是灵活轻巧的 Student 小模型。

0x02. 召回和粗排在推荐系统中的角色

召回环节从海量物品库里快速筛选部分用户可能感兴趣的物品(召回模型可以选择基于业务逻辑的tag召回、ItemCF、userCF,也可以选择FM、双塔模型);

之后是粗排模块,通常采取使用少量特征的简单排序模型 ,对召回物料进行初步排序,并做截断,进一步将物品集合缩小到合理数量;然后传递给精排模块,精排环节采用利用较多特征的复杂模型,精准排序。

在召回和粗排中,我们不追求最高的推荐精度,毕竟在这两个环节,如果准确性不足可以靠返回物品数量多来弥补。而模型小、速度快则是模型召回及粗排的重要目标之一 -- 这就和知识蒸馏的优势相吻合。

0x03. 具体方法

3.1 logits蒸馏

一个直观的方法是,用复杂的精排模型作为 Teacher,而召回模型(FM/DNN双塔)作为 Student。Student 模型去学习Teacher的输出logits。

用精排模型做teacher有两个好处:

  • 推荐效果好。因为 Student 经过复杂精排模型的知识蒸馏,所以效果虽然弱于、但是可以非常接近于精排模型效果;
  • 全链路一致性。通过 Student 模型模拟精排模型的排序结果, 可以使得召回/粗排这两个前置环节的优化目标和推荐任务的最终优化目标保持一致 ,在推荐系统中,前两个环节优化目标保持和精排优化目标一致,其实是很重要的,但是这点往往在实做中容易被忽略,或者因条件所限无法考虑这一因素:例如非模型召回(tag召回、itemCF、userCF),从机制上是没办法考虑这点的。

对于粗排或者召回模型,一般会用 DNN 双塔模型建模,只需要将粗排或召回模型作为 Student,精排的复杂模型作为 Teacher,两者同时 联合训练 (训练的样本是召回样本,即正样本为点击、负样本为随机负采样),要求 Student 学习 Teacher 的 Logits,同时采取特征 Embedding 共享(这三点都和精排蒸馏一样)。

但是,由于双塔结构将用户侧和物品侧特征分离编码,所以中间层蒸馏(要求 Student 隐层学习 Teacher 隐层响应)是很难做到的。粗排尚有可能,因为粗排不一定要使用双塔模型,但是召回环节几无可能,除非把精排模型也改成双塔结构,可能才能实现这点,但这样可能会影响精排模型的效果。

我们也可以使用 两阶段 而不是联合训练的方法,第一阶段先训练好 Teacher 模型,第二阶段再训练 Student。在 Student 训练过程中会使用训练好 Teacher 提供额外的 Logits 信息 (让teacher过一遍粗排的训练数据来打logit),辅助 Student 的训练。

不过个人感觉这种方法会带来selection bias问题,因为毕竟我们线上训练的精排模型的训练样本集是曝光样本,而召回模型的训练样本集是全空间,如果只用线上的精排模型做Teacher,它对于那些未曝光的随机样本会有比较好的输出结果吗?这个是未可知的,需要实际尝试看一看。

代表论文:Distillation based Multi-task Learning: A Candidate Generation Model for Improving Reading Duration (SIGIR'21,腾讯)

这篇文章主要解决的问题是,如何把精排时的 多任务目标 融合到粗排/召回中。

多任务预估的重要性不言而喻,我们在排序的时候不仅要考虑CTR,还要考虑诸多指标,例如阅读时长。因为如果只考虑CTR,会导致排序算法把那些“标题党”的文章排在前面,虽然“引诱”用户点击了,但是用户并不喜欢。

在排序中引入多任务预估有很多成熟的算法了,比如MMoE、ESSM、PLE、SNR等,但是把排序中的多任务预估引入召回则不是一件容易的事。因为召回的双塔模型似乎只能建模一个目标(两个塔求点积然后sigmoid,只能得到一个输出。我们一般就用双塔模型建模CTR,正样本为用户点击、负样本为随机抽样)。

然而,把排序中的多目标引入召回正是全链路一致性的优化方法。所以,这篇文章试图通过知识蒸馏的方法,把精排的多任务目标(点击+阅读时长)融合进召回/粗排模型。

首先我们来看多目标的复杂Teacher模型。对于点击任务,正例当然就是点击样本了,负例是随机负样本(而不是曝光未点击!);对于阅读时长任务,正例是阅读超过50s的文章、其他作为负例(正例、负例都一定是点击样本的子集)。由于点击任务和阅读时长任务的样本空间本来就不一样,所以我们采用ESSM的方法,用“行为序列”点击->转化来建模两个任务。

记输入的特征(user+item embedding拼接)为 xi , 点击label为yi 、阅读时长(是否超过50s)label为 zi ,则有:

p(zi=1|xi)=p(yi=1|xi)p(zi=1|yi=1,xi)

即:要想转化,必须首先点击。为了避免selection bias,使用ESSM的方法显式建模CTR和CTCVR(loss也只是对CTR和CTCVR计算),然后隐式的学习CVR。同时,文章还使用了MMoE来建模CTR和CVR,使用2个expert和2个gate,防止CTR、CVR这两个任务之间的冲突。

如何去把复杂多目标Teacher模型的这个多目标给迁移到粗排/召回双塔模型中呢?

这就要用到logits蒸馏了。由于召回/粗排是采用双塔模型,两个塔的点积只能计算一个目标,那么我们可以用这个logits和CTCVR的logits计算KL loss,这个KL loss作为更新粗排模型的唯一的loss。两个模型联合训练,训练结束之后把双塔的item塔拿去建立索引。

代表论文:Privileged Features Distillation at Taobao Recommendations(KDD2020,淘宝)

什么是优势特征(privileged feature)呢?

在【粗排阶段】,主要的任务是预估召回阶段返回的候选集中每个物品的CTR,然后选择排序分最高的一些物品进入精排阶段。粗排阶段输入的特征主要有用户的行为特征(如用户的历史点击/购买行为)、用户属性特征(如用户id、性别、年龄等)、物品特征(如物品id、类别、品牌等)。

有一些【交叉特征】对粗排效果有明显的提升,比如用户在过去24小时内在 待预估商品类目 下的点击次数、用户过去24小时内在 待预估商品所在店铺 中的点击次数等。但是对于这些交叉特征,如果放到用户侧,那么针对每个物品都需要计算一次用户侧的塔;如果放到物品侧,同样针对每个物品都需要计算一次物品侧的塔,这会大大加大计算复杂度,增加线上的推理延时。

因此,这些交叉特征对于粗排阶段的模型来说,通常在线上无法应用,我们就称它们为 粗排CTR预估中的Privileged Features

那么,怎么能把优势特征的信息教给粗排双塔模型呢?

这就要用到“优势特征蒸馏”了。

“优势特征蒸馏”本身和普通的模型蒸馏不同,因为它不能够降低参数量,而只是起到融合优势特征的作用。具体地,令X表示普通特征,X*表示优势特征,y表示标签,L表示损失函数。Student模型只在普通特征X上构建模型,而Teacher模型在普通模型X和优势特征X*上构建模型。则特征蒸馏的目标函数抽象如下:

上面的损失函数被分为两部分,两部分都是计算交叉熵。损失的第一部分是可以称为hard loss,其label是0或者1,就是student输出对真实label的损失;第二部分可以称为distillation loss,其label是Teacher网络的带温度Softmax输出,是概率值。

如上述公式中所示,教师模型的参数需要预先学好,这直接导致模型的训练时间加倍。所以,能不能同步更新学生和教师模型呢?同步更新的目标函数变成如下形式,即增加了Teacher对于真实标签的loss:

尽管同步更新能显著缩短训练时间,但也会导致训练不稳定的问题。尤其在训练初期,教师模型还处于欠拟合的情况下,学生模型直接学习教师模型的输出会导致训练偏离正常。

解决这个问题的方法也非常简单,只需要在开始阶段将λ 设定为0,不让Student跟Teacher学;然后在预设的迭代步将 λ设为固定值。

值得一提的是,我们让蒸馏误差项(distillation loss)只影响学生网络的参数的更新,而对教师网络的参数不做梯度回传,从而避免学生网络和教师网络相互适应(co-adaption)而损失精度。也就是说,只能学生向老师学,而不能老师向学生学。

另外,为了能够对粗排模型进行参数量的缩减,我们可以使用优势特征蒸馏 + 普通模型蒸馏的方法:

其实上面这个图想表达的意思非常简单·,就是我们使用更加复杂的精排模型、使用优势特征(交叉特征X*)作为Teacher,然后粗排的双塔模型作为Student,二者联合训练,做logits蒸馏。然后上线的时候只使用双塔模型。

3.2 without-logits蒸馏

当然了,我们也可以使用without-logit的方法,这是因为精排的输出结果是有序的(排在前面的结果,就是精排认为用户更会点击/转化等的物品),这个顺序可以对粗排进行一些指导。

也就是说,粗排或者召回环节的 Student 的学习目标是: 像精排模型一样排序 。当然,也可以用推荐系统在精排之后,经过 Re-ranker 重排后的排序结果,这样甚至可以学习到一些去重、打散等业务规则,更能实现全链路一致性。

具体的做法是,我们可以取精排每次返回的 Top K 物品,将其指定为正例,位置K之后的例子,作为负例,用这个正负样本来训练粗排模型。其实,我认为这样的做法也可以不叫作“知识蒸馏”,而看作一种hard negative采样。即,选取精排的靠后样本作为召回时候的难负例。

也可以采用直接构造 pair-wise 对的方法:精排的排序结果是有序列表,那么我们可以在列表内随机任意抽取两个 Item,并利用它们的偏序关系,以前面的item为正例,以后面的某个 Item 作为负例,以此方式构造训练数据来训练模型。

在推荐领域,最常用的 Pair Wise Loss 是 BPR 损失 函数。我们构造足够多的成对训练数据,以此目标来优化召回模型,使得模型可以学会 Item 间的偏序关系。

参考资料:知识蒸馏在推荐系统的应用[1](张俊林大佬的文章真的写的深入浅出,非常有启发!)

本文参考资料

[1]

知识蒸馏在推荐系统的应用: https://zhuanlan.zhihu.com/p/143155437

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 NewBeeNLP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
召回向排序靠齐:多目标排序蒸馏召回
召回主要是将用户所有可能感兴趣的内容取出来,排序(粗排、精排)主要是预测用户对每条内容感兴趣的程度。召回为整个推荐系统的后续阶段提供数据,保证了效果的上确界。排序对召回提供的数据再更细致化的分析、预测和排序,保证最终用户看到的结果。可以说召回是服务于后续排序模型。
NewBeeNLP
2022/11/11
1.4K0
召回向排序靠齐:多目标排序蒸馏召回
深度总结 | 知识蒸馏在推荐系统中的应用
链接 | https://zhuanlan.zhihu.com/p/143155437
张小磊
2020/05/29
1.6K0
深度总结 | 知识蒸馏在推荐系统中的应用
全链路总结!推荐算法召回-粗排-精排
大家好,这里是NewBeeNLP。现在的推荐系统都是一个很大的漏斗,将整个推荐系统分为(recall -> pre-rank -> rank -> rerank)。
NewBeeNLP
2022/11/16
3.8K0
全链路总结!推荐算法召回-粗排-精排
[SIGIR'21] DMTL:召回场景基于蒸馏的多目标学习方案
推荐系统中,点击率预估是很通用的排序方法。但是,在feeds流中,pCTR只能说明用户点击这个内容的概率,而不能说明用户有多喜欢或者说在点击之后是否有可能阅读或者停留的概率。有些低质量但是标题党的内容,用户就很容易点击。但其实点击完之后,可能并不会阅读。所以,只对点击建模不能保证用户对这些点击过的内容的满意度。在feeds流中,为了提升用户体验,阅读时长也应该被考虑进来。
Houye
2021/12/02
1.4K0
[SIGIR'21] DMTL:召回场景基于蒸馏的多目标学习方案
KDD'23 | 阿里淘宝:重新审视搜索粗排
大家好,我是kaiyuan。最近大模型LLM的各类信息有种乱花渐欲迷人眼的感觉,刷几篇KDD'23的文章冷静一下。
NewBeeNLP
2023/08/29
2K0
KDD'23 | 阿里淘宝:重新审视搜索粗排
美团搜索粗排优化的探索与实践
总第528篇 2022年 第045篇 粗排是工业界搜广推系统的重要模块。美团搜索排序团队在优化粗排效果的探索和实践中,基于业务实际场景,从精排联动和效果性能联合优化两方面优化粗排,提升了粗排的效果。本文介绍了美团搜索粗排的迭代路线、基于知识蒸馏和自动神经网络选择的粗排优化工作,希望为从事相关工作的同学带来一些启发或者帮助。 1. 前言 2. 粗排演进路线 3. 粗排优化实践 3.1 精排联动效果优化 3.2 效果性能联合优化 4. 总结 5. 附录 1. 前言 众所周知,在搜索、推荐、广告等大规模工业界应
美团技术团队
2022/08/26
9620
美团搜索粗排优化的探索与实践
RS Meet DL(62)-[阿里]电商推荐中的特殊特征蒸馏
今天介绍的论文是:《Privileged Features Distillation for E-Commerce Recommendations》 论文下载地址为:https://arxiv.org
石晓文
2019/08/28
2K0
RS Meet DL(62)-[阿里]电商推荐中的特殊特征蒸馏
推荐系统[八]算法实践总结V0:腾讯音乐全民K歌推荐系统架构及粗排设计
② 除了内容推荐外,我们也会负责一些其他类型的推荐,包括直播推荐、点歌推荐、歌房推荐和点评推荐,都是在K歌生态下独有的推荐。
汀丶人工智能
2023/02/27
1.1K0
推荐系统里,可以用蒸馏吗?
无论是商品推荐,还是广告推荐,都大致可以分为召回,预排序(粗排),精排等阶段,如上篇<淘宝搜索中基于embedding的召回>的图所示:
炼丹笔记
2021/09/24
1.3K0
知识蒸馏在推荐精排中的应用与实践
知识蒸馏主要分为两类:logits蒸馏和中间特征蒸馏。其中,logits蒸馏指的是在softmax时使用较高的温度系数,提升负标签的信息,然后使用Student和Teacher在高温softmax下logits的KL散度作为loss。中间特征蒸馏就是强迫Student去学习Teacher某些中间层的特征。
NewBeeNLP
2022/04/14
1.2K0
知识蒸馏在推荐精排中的应用与实践
图文并茂!推荐算法架构——粗排
导语 | 粗排是介于召回和精排之间的一个模块,是典型的精度与性能之间trade-off的产物。理解粗排各技术细节,一定要时刻把精度和性能放在心中。 在上篇《详细解读!推荐算法架构——召回》中我们结合算法架构召回进行解读分析,本篇将深入重排这个模块进行阐述。 一、总体架构 粗排是介于召回和精排之间的一个模块。它从召回获取上万的候选item,输出几百上千的item给精排,是典型的精度与性能之间trade-off的产物。对于推荐池不大的场景,粗排是非必选的。粗排整体架构如下: 二、粗排基本框架:样本、特征、模
腾讯云开发者
2022/04/21
2.2K0
图文并茂!推荐算法架构——粗排
百度双塔召回引擎MOBIUS
对于一个搜索或者推荐系统来说,分阶段的设计都是当下的一个标配,主要是为了平衡效率和效果,在百度的广告系统中,也是分成了如下的三层结构:
felixzhao
2023/04/01
8500
百度双塔召回引擎MOBIUS
召回 粗排 精排,如何各司其职?
前两讲从比较宽的范围讲了一下推荐系统做什么,以及在这个时代背景下的发展历程。从这一讲开始,我们则会逐渐进入技术细节。
NewBeeNLP
2021/10/20
2.4K0
推荐系统[三]:粗排算法常用模型汇总(集合选择和精准预估),技术发展历史(向量內积,Wide&Deep等模型)以及前沿技术
在搜索、推荐、广告等需要进行大规模排序的场景,级联排序架构得到了非常广泛的应用。以在线广告系统为例,按顺序一般包含召回、粗排、精排、重排等模块。粗排在召回和精排之间,一般需要从上万个广告集合中选择出几百个符合后链路目标的候选广告,并送给后面的精排模块。粗排有很严格的时间要求,一般需要在10~20ms内完成打分。在如此巨大的打分量以及如此严格的RT需求下,粗排是如何平衡算力、RT以及最后的打分效果呢?
汀丶人工智能
2023/02/23
1.9K0
得物社区推荐精排模型演进
得物社区是一大批年轻人获取潮流信息、分享日常生活的潮流生活社区。其中用户浏览的信息,进行个性化的分发,是由推荐系统来决策完成的。目前得物社区多个场景接入了推荐算法,包括首页推荐双列流、沉浸式视频推荐、分类 tab 推荐流、直播推荐流等多个场景,为了给用户提供更好的服务和体验,我们从整个推荐系统维度为相关服务做了大量优化。现在主流的推荐系统都会有召回、粗排、精排和机制等多个模块组成,本文主要介绍我们在精排层面演进过程中做的一些工作和思考。
得物技术
2023/07/04
1.5K0
得物社区推荐精排模型演进
三大视角,聊聊我眼中的广告系统
从实习到工作,接触过一些大大小小的广告系统,有麻雀虽小但五脏俱全的小 dsp,也有把 ssp、adx、dsp 都打包了的大媒体 ,算是对业界的广告系统有了一个初步的了解。趁着放假这几天,简单地梳理一下当前了解到的广告系统知识,主要是想对零散的知识做个整理。
NewBeeNLP
2021/09/14
1.5K0
推荐系统[二]:召回算法超详细讲解[召回模型演化过程、召回模型主流常见算法(DeepMF_TDM_Airbnb Embedding_Item2vec等)、召回路
召回这里稍微有些复杂,因为召回是多路的。首先我们要解释主路和旁路的差别,主路的意义和粗排类似,可以看作是一个入口更大,但模型更加简单的粗排。主路的意义是为粗排分担压力。但是旁路却不是这样的,旁路出现的时机往往是当主路存在某种机制上的问题,而单靠现在的这个模型很难解决的时候。举个例子,主路召回学的不错,但是它可能由于某种原因,特别讨厌影视剧片段这一类内容,导致了这类视频无法上升到粗排上。那这样的话整个系统推不出影视剧片段就是一个问题。从多路召回的角度来讲,我们可能需要单加一路专门召回影视剧的,并且规定:主路召回只能出3000个,这一路新加的固定出500个,两边合并起来进入到粗排中去。这个栗子,是出现旁路的一个动机。
汀丶人工智能
2023/02/22
3.7K0
【深度学习】深度学习中的知识蒸馏技术(上)简介
在化学中,蒸馏是一种有效的分离不同沸点组分的方法,大致步骤是先升温使低沸点的组分汽化,然后降温冷凝,达到分离出目标物质的目的。化学蒸馏条件:(1)蒸馏的液体是混合物;(2)各组分沸点不同。
黄博的机器学习圈子
2021/04/16
6.7K0
【深度学习】深度学习中的知识蒸馏技术(上)简介
聊一聊搜推广粗排思考
五花八门的说法越来越多,但是粗排的意义本质还是由于在工业界中业务链路性能、算力的约束下,漏斗链路设计中的一环,其使命就是在既定资源、性能约束下从全量候选集合中选出一个“优质候选集合”
NewBeeNLP
2024/06/17
1K0
聊一聊搜推广粗排思考
推荐系统[八]算法实践总结V1:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】
内容化这几年越来越成为电商的重点,用户来到网购的时候越来越不局限在只有明确需求的时候,而更多的是没有明确需求的时候,就像是逛街一样。逛逛就是在这样的背景下诞生的内容化产品,打造出有用、有趣、潮流、奇妙、新鲜的内容,为消费者提供全新的内容消费体验。在这个场景下的内容召回有很多问题需要探索,其中主要的特点和挑战有:
汀丶人工智能
2023/02/25
2.6K0
推荐阅读
相关推荐
召回向排序靠齐:多目标排序蒸馏召回
更多 >
交个朋友
加入架构与运维工作实战群
高并发系统设计 运维自动化实践
加入腾讯云技术交流站
洞悉AI新动向 Get大咖技术交流群
加入架构与运维趋势交流群
技术趋势前瞻 架构演进方向
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档