推荐、搜索、广告中的召回、相关性、多目标精排 - 召回篇

一、召回

智能推荐算法在直播场景中的应用 - 知乎

花椒直播推荐系统高级算法工程师王洋:智能推荐系统在直播场景中的应用_哔哩哔哩_bilibili

1:基于item的协同过滤(求出来item之间的相似性,也叫itemCF),然后根据用户已经交互过的item求出来用户对没有交互的物品的交互概率。再限制一些条件,就可以得到召回结果(在直播里面,item可以分为商家item商品item),商家item数量少,使用itemCF计算、存储上不会太多,直播售卖的商品item一般也不会太多(不像电商里面,一个羽毛球就可能是几千种,在直播中不可能这几千种羽毛球都有进行直播售卖,大多数情况下是一些大厂的、热门的羽毛球才会开直播)

对A,B两个物品计算相似性:分母是根号3*根号1,根号3是因为A与3个用户都有交互,根号1是因为B只和1个用户有交互,分子是共同有交互的个数。实际上理解这个有个极端的例子:假如AB都和3个用户有交互,那么根号3*根号3是3,最终相似性是1

在计算user和item的相似性时,可以看到user1和两个item都计算后进行相加,user3只和1个item计算后相加,显然不公平,因为相加的越多自然越大。但是user之间是不可比的,每个user在计算的时候,会同时和相同个数量的item进行计算

2:基于隐向量的协同过滤 利用用户和item的交互稀疏行为,进行矩阵分解,得到用户矩阵,item矩阵,然后进行内积召回

 

这种矩阵分解,后面有一些改进(用深度学习的方法,上面学习user item隐向量后,再用dnn学习两者的交互函数),比如

神经网络+矩阵分解(NCF),得到user、item的向量后,不是直接内积,而是concat再过mlp层最终得到score

神经矩阵分解(NeuMF):得到user、item的向量后,不仅求得内积,也像NCF一样经过mlp,然后两部分concat,最后得到score

这种办法更适用于item数量多一些的业务,就不像上面的协同过滤那样担心存储问题了,每个user、item的都可以保存下来

3:Youtube-dnn。后面的各种召回模型中都有item侧特征,在直播中应该是商家item、商品item共同提取的特征才对

4:双塔召回(也叫基于内积模型的向量检索方法),及其优化办法

阿里广告技术最新突破:全链路联动-面向最终目标的全链路一致性建模 - 知乎

上面的youtube-dnn实际上是一种双塔召回,双塔召回的办法有许多,阿里对这个做了优化,从下面几个问题分析

(1) 在优化召回整个过程中,应该像阿里这样:沿着精准值预估的技术路线,在召回提出了新的可以面向任意目标(RPM (RPM=CTR*Bid) ,GMV (GMV=CTCVR*Price等)的全库向量召回技术PDM

(2) ctr为预估目标,这个从样本上就能学习到,不用特地优化

(3) 多样性,多兴趣

其中(1)两个点在阿里这篇文章中进行了解决。将user item的向量内积融入bid单价,导致向量内积的结果会包含RPM最大化

首先这个u a代表user和item的向量(通过pctr模型训练得到),然后乘上了加权系数,最基本的权重1,然后是和bid相关的权重,这里为了使得bid的权重更大些,使用user和所有item的平均相关性作为分母,相当于做了下加权。但是这样可能过于考虑了bid,可能相乘更好一些(而且不是user和item的平均相关性,而是user和当前item的相关性,也就是当user和某个item相关性强时,考虑bid的意义也大些)。ln(bid)是个常见的对数值特征的处理办法,在大值处减少影响程度

上面是考虑ecpm这个目标的RPM最大化,如果要考虑GMV的话,需要把user item的向量从pctr模型得到换成pctcvr得到即可 

同时文章中提到,从最开始效果比较差的曝光、点击样本,到再加入unpv样本

整个架构图是上面这样,有几个点需要注意

(1) 首先是召回模型+精排模型联合训练,召回模型的loss组成由下面这几部分

曝光、点击样本上的loss(这个loss不是上面的pctr那条链路,而是旁边的auc_pctr,这个在每个batch中,正样本加入了batch内的随机K个item的负采样) + 蒸馏loss(蒸馏loss只针对unpv样本,而且loss的计算是精排模型的预测结果 - 召回双塔的预测结果,就像把精排模型的预测结果当做label一样去拟合,distill_loss = (logit_rank - logit_recall)**2) 

(2) 联合训练时user_feature item_feature是共享embedding,蒸馏loss不对精排产生影响

5:bert召回

使用bert的3个优点

(1) BERT采用pre-train+fine-turning的训练模式,基于超大量语料进行pre-train,在pre-train过程BERT已经能学好单词、句法、语义等特征,具体任务只需用较少量的数据进行fine-truning。

(2) BERT是双向语言模型,拥有上下文信息。相比GPT(单向语言模型)和ELMO(粗暴的双向语言模型,前向和后向简单相加),BERT有得天独厚的优势 

(3) BERT采用Transformer作为特征提取器,相比RNN LSTM,Transformer具有两点优势:RNN不可并行,BERT可并行;RNN很难捕捉长序列的依赖关系,Transformer可以

性能不好,但是效果好的bert召回,这种一般上不了线。将query和doc按照bert的输入方式放在输入层,然后后面是bert,最后output中,既可以先sum_polling再mlp得到score(58同城),也可以把[CLS]那个位置的embedding用来做二分类看两个相关性多少(美团好像是)

深度语义模型 BERT 在 58 同城搜索的实践 - AIQ

最基础的双塔bert,因为query和doc是各自编码,少了交互,所以精度不高。但是有点也很明白,编码部分是可以提前计算的(58、qq看点都这样做过)

QQ看点:https://baijiahao.baidu.com/s?id=1652686974246350252&wfr=spider&for=pc

对双塔bert最后面计算query和doc向量的值时选择的办法(回归和pairwise最好)

双塔的基础上进行模型蒸馏(使用有交互的bert)

Poly-Encoder,介于没有交互和完全交互之间的思想。将query(假设长度是32)经过bert编码后,下一层定义N(N<=query的长度,一般不会太大,因为要做attention)个code,然后这N个code和32个编码向量做attention,得到N个attention向量,这N个向量再和item经过bert后的向量进行attention得到query最终的向量。然后这个向量和item向量做回归/pairwise(这个也是58他们做的最好的一个模型)

58同城的item是多模态的(多种表达),在直播中也是这样,直播间名+直播间介绍+主播名+卖的商品名+卖的商品的介绍。人为的把文档划分成多个文本域,每一个文本域经过一个独立的Bert塔,得到各文本域的语义向量。划分成多个文本域之后,文档这部分,就可以得到多个文本域的语义表达,而Query塔这边得到一种语义表达,然后也是进行Attention计算,得到一个动态的文档语义表达,最后接一个匹配层。这是在Embedding层进行交互

6:多兴趣召回。这种常常发生在用户在电商场景,直播场景,因为在里面用户会看不同类目的item,将这些类目混杂在一起进行召回是不合理的,最好是分别求出来向量进行内积召回

可以具体看这篇文章,里面加入了博主在调研时候发现的一些好文章,博主把自己总结的一些点也总结在了里面:Multi-Interest Network with Dynamic Routing for Recommendation at Tmall(MIND)_1066196847的博客-CSDN博客

下面给出这种思路中最重要的动态路径这个思想的两张重要的图

7:多模态召回

全民K歌直播推荐算法实践

在全民K歌中,除了item传统的特征之外,还另起了两个其他的item-tower,分别是歌曲song的特征、视频的特征,如果在淘宝直播中那么就是淘宝商品的embedding、整个直播视频的embedding。上面图中是把user-embedding和item的这3个embedding汇总到一个圆圈中,我觉得应该是把Live-view和song-view和media-view concat在一起再和user-embedding进计算

8:图网络召回 

 陌陌直播如何做到推荐系统的从 0 到 1 - AIQ

在直播推荐这个场景,构建图矩阵的时候,应该是一个异构图,图里面包含用户和主播、商品的各种交互关系(点击观看、评论、送礼物、关注),构建出来这样的图之后,比如用户和主播 观看这层数据,利用graphsage这种图卷积可以来得到node的embedding,然后在搜索/推荐时,利用向量进行召回;也可以设计规则利用user - (query) - item这样的关系,召回有link关系的node作为召回结果

9:规则召回

Dolphin.海豚会|基于推荐算法提升直播业务的效能实践_用户

上面5类中,相似召回(item协同过滤)、向量召回在前面都讲过了,前面3类在淘宝直播中大概不会有,但是前1 2是会有的

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值