rerank
推荐系统中的一环,考虑上下文信息对推荐结果的影响。
解决三大问题
用户体验
- 打散
- 多样性
算法效率
- 多任务融合
- 上下文感知
- 实时性提升
流量调控
- 保量:流量扶持、生态建设
- 调权:业务需求、实时干预
用户体验
打散
- 对同类目、同作者、相似封面图的 item 进行打散,有效防止用户疲劳和系统过度个性化
- 打散常用的方法
- 分桶打散法
- 不同属性 item 放入不同的桶中,一次从各桶取出 item 即可。
- 按高中低价格分桶,排序结果价格呈现多样性
- 简单,效果好。末尾容易扎堆,对原始序列改变大,可能带来指标的下降。
- 不同属性 item 放入不同的桶中,一次从各桶取出 item 即可。
- 权重分配法
- 对每一个 item 定义一个分数,计算 Count
- w 为每个属性的权重,代表打散需求的优先级
- Count 为同属性 item 已经出现的次数
- fx 为打散加权分数,从低到高对 item 进行排序,完成打散。
- 实现简单,充分考虑多种属性的叠加,扩展性强,末尾容易扎堆
- 对每一个 item 定义一个分数,计算 Count
- 滑动窗口
- 在一个长度可控的滑动窗口内,同属性 item 超过一定次数后,交换出 session。
- 考虑局部,计算量小,对原序的破坏比较低,最大限度保留相关性,也有末尾扎堆。
- 分桶打散法
多样性
- 评估方法
- 数据指标分析
- user 和 item 角度,用户曝光一二级类目数,曝光item同属一个类目的概率
- 类目、作者、标签多个维度分析
- 人工评估
- 数据指标分析
- 发展里程
- 规则约束
- 硬规则约束
- 规则引擎
- 个性化约束
- 不同类目、不同时段、不同活跃度用户配置不同
- 启发式方法:结合多样性和相关性
- [[MMR]] 最大边缘相关模型
- [[@The use of MMR, diversity-based reranking for reordering documents and producing summaries]]
- [[DPP]] 点行列式矩阵
- [[@Fast Greedy MAP Inference for Determinantal Point Process to Improve Recommendation Diversity]]
- [[Deep-DPP]] 结合深度神经网络
- [[@Practical Diversified Recommendations on YouTube with Determinantal Point Processes]]
- [[MMR]] 最大边缘相关模型
- 深度模型,加入上下文感知
- 规则约束
算法效率
多任务融合
- 精排输出多个任务的分数,在重排阶段融合。
- 常用方法
- 人工调权
- Grid Search
- 模型法
- 轻量模型融合多个打分以及其他比较重要的特征
- point-wise
- 业务场景的最终指标必须单一,重排模型的监督目标必须是一个单一任务。
- 强化学习
- 根据用户在不同状态下的行为,利用强化学习建模状态转移过程,提升业务核心目标。
上下文感知
- context-aware Learning-To-Rank
- 优化目标
-
- S 是曝光的物料序列,Y 是用户对 S 的反馈序列
- Yi 是对 Si 的反馈
- Fr 重排模型,预测 Si 被用户交互的概率。
- Loss 可以是普通的交叉熵损失函数。
- 如何表达序列中的物料 Si
- 用户针对 Si 的个性化信息,精排模型打分
- Si 在整个候选集中的排名、位置信息,刻画Si和邻居之间的相对关系,价格排名,精排序列排名
- Fr 是能对序列建模的模型
-
- 如何生成序列
-
- permute 代表排列组合能够生成的所有序列
- Utility 收益函数,Si 被购买的概率等
- Greedy Search
- 每次挑选剩下无聊中带来最大收益的那个。
-
- pair-wise 类
- 构建 pair 对比两个 item 之间的相对关系,仍然忽略全局信息。
- 正样本好于负样本的概率,利用交叉熵来拟合目标
- 对比学习loss,hinge loss, [[Triplet Loss]]
- RankSVM、GBRank、RankNet、
- LambdaRank
- RankNet 基础上引入 NDCG 目标
- 构建 pair 对比两个 item 之间的相对关系,仍然忽略全局信息。
- list-wise 类
- 直接对序列进行优化,建模 item 序列的整体信息和对比信息
- 即是使用List-Wise方法得到的候选序列,可以从list维度考虑排序,但在最终得到序列时也是逐个使用贪心方法选择候选item,还是不能做到充分上下文感知以及从整体(“长期”)收益的序列生成。
- 通过序列生成方法和强化重排解决。
- 树模型:lambdaMart
- RNN
- 分别利用 rnn+attention 和 pointer-network 来构建 seq2seq 模型
- 阿里巴巴 miRNN
- [[DLCM]]
- [[seq2slate]]
- 两段式:PRS
- PMatch 和 PRank 两个链路,通过两段式结构得到最终输出
- self-attention:[[PRM]]、setRank
- self-attention 解决长序列建模问题
- 强化学习:京东LIRO、阿里GRN
- 直接对序列进行优化,建模 item 序列的整体信息和对比信息
- 优化目标
实时性提升
- 实时性分类
- 系统响应实时性
- 用户实时行为捕捉,端上重排
- 特征实时性
- 链路数据回收延迟,用户本身行为延迟反馈
- 模型实时性
- 在线学习,实时更新模型
- 系统响应实时性
- 在线学习 ODL
- 延迟反馈
collapsed:: true- 原因:链路数据回收延迟,用户本身行为延迟反馈
- 解决方法
- 负例校正法:先标记样本为负样本,真正转化后重新插入正样本。保证模型新鲜度,但假负例对模型有一定副作用。
- Addressing delayed feedback for continuous training with neural networks in CTR prediction
- 等待法:一定时间内等待真实的成交转化,没等到就不校正。label 置信度提升,模型新鲜度有折损。
- 纠偏法:ES-DFM,对观测转化分布和真实转化分布之间的关系建模,降低假负例的权重和增加真正例的权重,来纠正样本不置信问题。
- 负例校正法:先标记样本为负样本,真正转化后重新插入正样本。保证模型新鲜度,但假负例对模型有一定副作用。
- 数据稳定性
- 电商 CVR 用户白天浏览点击,晚上下单。cvr 晚上比白天高,需要做修正。
- 延迟反馈
端上重排
优点
- 推荐响应实时性:不用请求下一页,实现即时更新
- 行为特征实时性:端上即时计算,不用回传云端
- 行为特征丰富度:负反馈、滚动速度、曝光时长等多种用户行为都可以在模型中使用,基于云端的方式受限于数据传输和存储,一般只会选择点击等关键的用户行为。
引擎
- TF-lite
- MNN
- TNN
基于双塔内积模型的实现方式
- 服务端一次下发几十个item,包括item的embedding
- 端上基于本地存储的user静态特征、统计特征,和实时行为特征,实时计算user embedding
- user和item embedding进行内积计算,对list中未展现的剩余item做重排
- 下次请求时,将更新后的user特征回传云端,方便云端模型实时更新。
发展进程
- 端上推理 EdgeRec
- 端上训练 DCCL
流量调控
保量:流量扶持、生态建设
- 规则引擎
- 冷启动、买卖家结构调整、曝光保量
- 探索和利用:通过e-greedy、Thompson sampling、UCB等EE类的方法,可以有效探索冷启item,同时利用已有item,保障效率折损最低。
调权:业务需求、实时干预
- 规则引擎
- 时效性要求高的场景,大促 item 加权
- 样本加权
- 命中调权规则的样本,增加其在 loss 中的权重。
- 实现个性化,对效率折损较低。
- 适合长期调权场景,大店和大 V
Ref
[[@推荐算法架构4:重排]]
[[@互联网大厂推荐算法实战]] 6.2 重排