查看原文
其他

粗排优化探讨|得物技术

阿寿 得物技术 2024-01-29

目录

一、背景

二、粗排定位

    1. 粗排与精排的异同

    2. 粗排与召回的异同

三、评估指标与方案设计

    1. 全域 Hitrate 评价体系

    2. 评估方案设计

四、样本设计

    1. 样本选择方法

    2. 粗排样本组成方案

五、粗排技术路线

    1. 两种技术路线

    2. 发展路线

六、粗排优化方向

    1. 双塔

    2. 知识蒸馏

    3. 轻量级全连接

    4. 多目标

    5. 多场景

七、相关实践

    1. 双塔单目标粗排

    2. 三塔多目标粗排

    3. 多目标+场景特征优化

八、总结

背景

本文期望系统性梳理推荐中的粗排阶段,探讨粗排优化方向,为进一步提升推荐效率做好准备。

粗排定位

粗排处于召回、精排之间,有承上启下的作用。粗排提升召回的准确性,也决定了精排的上限。

粗排与精排的异同

打分量级不同:粗排的打分量一般在几千或者一万多,精排一般在几百量级。

延迟效率不同:因为打分量级差异,粗排对单个商品的打分延迟要求更严格,粗排可以适当下调精度。

目标基本一致:都需要选出用户最感兴趣的 Top 商品,不过粗排的打分量往往是精排的数十倍。也可以理解为精排注重头部商品的排序精度,粗排需对腰部商品也有排序能力

特征基本一致:精排的特征粗排都可使用,不过受制于算力与 RT,粗排往往无法应用需要复杂处理的特征。

粗排与召回的异同

候选集不同:粗排候选集来自于各路召回的融合,召回往往需要从全域集合中挑选。

策略重心不完全一致:召回侧重于挑选,粗排还需具备一定的排序能力。

存在不同程度的样本选择偏差:相对精排,粗排和召回都存在样本选择偏差,其中召回的偏差更大。在设计粗排和召回模型时,往往需要进行适当的采样设计。

评估指标与方案设计

粗排对比精排,还需有衡量集合选择效果的指标,相对召回,还需有衡量排序效果的指标。

粗排需要对用户喜欢和不喜欢的边界具备较强的区分能力,而不是在喜欢的商品集合中精准预测更喜欢哪个。

全域Hitrate评价体系

深度统一粗排在淘宝主搜索的优化实践[1]

淘宝主搜将 “全域成交 Hitrate” 作为粗排最重要的评价标准,提出两类评价指标,分别描述“粗排->精排损失”和“召回->粗排损失”。

全域成交分两类:场景内成交和场景外成交。

粗排模型在场景内外的 Hitrate 表现如下:

他们还发现,在 10^3 至 10^4 区间粗排可能比精排打分 Hitrate 更高,验证了粗排相对精排,对腰部商品排序更准确。

衡量粗排->精排的损失

  • 以场景内成交为准,计算场景内 Hitrate@TopK 。衡量 Top 集合命中程度,越高代表越贴合精排;

  • 曝光商品粗排总分与精排效率分数的NDCG。衡量排序结果的一致性,越高代表结果与精排越一致;

  • 同批评估样本下的 AUC。衡量模型打分结果的准确率,越高代表准确率越高。

衡量召回->粗排的损失

  • 以场景外成交为准,计算场景外 Hitrate@TopK。衡量粗排对全域成交的命中程度,越高代表全域提升越好。

补充:可衡量用户不喜欢程度的指标

  • 以曝光未点击样本为准,计算场景内这批样本的 Hitrate@TopK。衡量 Top 集合对用户不喜欢商品的命中程度,越低代表区分不喜欢商品的能力越高。

评估方案设计

模拟线上链路,以一次请求为统计单位,整理各链路样本。包括:

  • 融合层输出样本(粗排实际输入样本);

  • 实际曝光样本;

  • 曝光点击样本;

  • 曝光未点击样本;

  • 全域曝光样本:当天用户在所有场景的曝光样本;

  • 全域点击样本:当天用户在所有场景的点击样本;

  • 全域点击修正后的曝光点击样本:通过全域点击样本关联上实际曝光样本获取。

指标

  • 场景点击 TopK 命中率

Hitrate_clk@TopK:评估所有融合层输出样本,取 TopK 商品,如包括曝光点击样本就算一次命中。统计所有请求中的命中占比。

  • 场景未点击 TopK 命中率

hitrate_unclk@TopK:评估所有融合层输出样本,取 TopK 商品,如包括曝光未点击样本就算一次命中。统计所有请求中的命中占比。

  • 全域点击 TopK 命中率

All_Hitrate_clk@TopK:取用户首次曝光的样本计算用户向量,评估用户全域曝光样本,取 TopK 商品,如包括全域点击样本就算一次命中,统计所有请求中的命中占比。

  • 全域修正点击TopK命中率

Adj_Hitrate_clk@TopK:取全域点击修正后的曝光点击样本,评估所有融合层输出样本,取 TopK 商品,如曝光全域点击修正后的点击样本就算一次命中,统计所有请求中的命中占比。

  • NDCG:实际曝光样本,以精排的分为准,按粗排分排序后计算 NDCG 指标;

  • AUC:评估实际曝光样本,计算 AUC。

离线在线一致性分析

待补充实际效果

样本设计

粗排相较于精排样本选择偏差(SSB)的问题更加严重,借鉴召回经验,可以通过适当采样减少偏差。采样设计的目的也是希望离线训练样本尽可能与线上分布一致。

样本选择方法

负样本可选范围

  • 曝光未点击样本;

  • 全库除转化外样本;

  • 精排靠后样本;

  • 除曝光外的召回样本。

正样本可选范围

  • 曝光点击样本;

  • 全域点击样本;

  • 延迟点击样本(如下一天点击样本)。

样本采样方式

  • 随机采样;

  • 热门商品打压,正负样本都可以适当进行针对热门商品的降采样;

  • 同类目(或品牌或系列)下的商品。

粗排样本组成方案

方案 1

正样本:曝光点击样本

负样本:曝光未点击样本

方案 2

目标:通过扩正负样本减少样本选择偏差

正样本:曝光点击样本 + 全域点击修正样本

负样本:曝光未点击样本 + 除曝光外召回样本随机采样

方案 3

目标:拟合精排序

正样本:曝光点击样本 + 除去曝光后的精排靠前商品适当采样

负样本:曝光未点击样本 + 精排靠后商品适当采样

粗排技术路线

两种技术路线

以集合为建模目标,选出满足精排的集合。

与精排相互作用,受其影响,稳定性不高。

代表技术:Listwise

以值为建模目标,直接对转化进行精确预估。

可控性强,受精排影响小,可自主迭代。

代表技术:Pointwise

本人倾向于直接建模最终目标,方便自主迭代。

发展路线

  • 质量分

  • 传统机器学习模型,如 LR 和 XBG 等;

  • 深度学习模型-向量内积模型,如双塔、三塔等;

    • 线上计算速度快,对工程依赖少,实现复杂度低;

    • 无法直接应用交叉特征,需要针对性设计。

  • 深度学习模型-交叉多层模型,如 COLD 框架。

    • 也有研究认为两者没有明显差异 https://arxiv.org/abs/2005.09683[2];

    • 可直接应用交叉特征,多层结构一般认为表达能力要优于多塔结构;

    • 一般耗时长,工程实现难度大。

本人倾向于向量内积模型,理由如下:

  • 没有明确研究表明向量表达能力弱于多层结构,反而在粗排阶段,多层结构对工程能力要求高。

  • 个人认为在实际迭代过程中,如何克服样本选择偏差,如何实现多目标建模,如何解决多场景差异才是重点。如果过于依赖工程能力,不利于快速迭代。

粗排优化方向

双塔

基础结构

线上 Serving 方式

User 塔部署在线上,用于实时获取 User Embeding,每次请求做一次推理,获取用户向量。

Item Embedding 离线计算好,存储在引擎中,建 Faiss 索引。

那用户向量去索引库检索得到关联商品及相似得分。

优化点:加强重要特征传递

代表:SENet 双塔模型,微博 SENet 双塔模型:在推荐领域召回粗排的应用及其它[3]

出发点:认为基础双塔结构缺乏对重要特征的识别能力,受噪声影响大。

通过在 User 塔和 Item 塔各自引入一个 SENet 模块,对特征进行动态权重调整,强化重要特征,SENet 分两阶段:Squeeze 阶段对特征向量信息进行压缩汇总,Excitation 阶段对特征权重进行还原。

优化点:加强序列特征学习

代表:KDD'21 | 淘宝搜索中语义向量检索技术[4]

出发点:用户塔网络升级,多粒度划分行为序列并联合语义一起建模。

用户塔引入实时、短期、长期行为序列和 Query 语义表征,关注于行为序列部分,作者针对不同序列设计不同结构,实时输入为商品序列,采用 LSTM+ 多头注意力结构实现,短期较实时少 LSTM,长期输入为 4 种属性序列做 Pooling。在关联 Query 时,作者有个巧妙的优化点是引入全零向量,来消除噪声和解决用户历史行为与当前 Query 可能完全无关的情况。

优化点:提升内积表达能力

代表:并联双塔,腾讯 “并联”双塔模型 | 你还不知道怎么玩吗![5]

出发点:认为通过并联多个双塔结构可以缓解内积的表达瓶颈。

表示层并联各种深度神经网络模块(MLP、DCN、FM、CIN等),DCN 做法主要是通过 DCN 结构分别对用户特征和商品特征进行各自塔内特征交叉。FM 做法是分别取重要的用户特征和商品特征组成特征二阶交互矩阵。CIN 做法是分别取重要用户特征和商品特征组成三阶交互矩阵。匹配层将各个塔的输出拼接过 LR。

优化点:增强双塔交叉程度

代表:对偶增强双塔,美团引入对偶增强向量的双塔召回模型[6]

出发点:希望前置引入对侧塔的信息,加强双塔之间的交叉。

通过在两边塔新增对侧塔与正行为相关的信息增强向量实现,如 User 塔加入代表商品塔侧信息的 a_u 向量,在模型训练时,设计 Mimic loss,使仅在 Label=1 的时候更新 a_u 向量,让 a_u 靠近那个时刻 Item 塔的输出。当 Label 不为 1 时,a_u 作为 User 塔的输入,模拟 Item 塔信息实现交叉。

有观点认为,仅在 Label=1 时更新增强用户增强信息,相当于在用户侧将对商品的历史行为序列作为特征进行输入。

知识蒸馏

知识蒸馏内容挺多的,可以参考知识蒸馏(一)概述[7]。知识蒸馏设计为压缩深度神经网络的集合。通常需要将知识从更深、更宽的神经网络转移到更浅、更窄的神经网络。

学生网络的结构通常有以下选择:

  • 教师网络的简化版本,层数更少,每一层的通道数更少;

  • 保留教师网络的结构,学生网络为其量化版本(高精度转低精度,如 Float32 转 Int8);

  • 具有高效基本运算的小型网络;

  • 具有优化全局网络结构的小网络;

  • 与教师网络的结构相同,通常会伴随着简化特征等操作。

淘宝优势特征蒸馏 PFD(Privileged Features Distillation)

https://arxiv.org/pdf/1907.05171.pdf[8]

  • 优势特征蒸馏(PFD):教师模型和学生模型使用相同网络结构,而处理不同的输入特征,教师模型输入额外的优势特征;

  • 模型蒸馏(MD):教师模型和学生模型处理相同的输入特征,其中教师模型会比学生模型更为复杂。

粗排是学生,采用双塔结构,精排是老师,精排较粗排多的优势特征主要是交叉特征。线上 Serving 时可用向量检索。

美团 AutoFAS:粗排场景自动特征与结构选择算法

https://arxiv.org/pdf/2205.09394.pdf[9]

在给定时延限制和精排打分知识指导的条件下,提出一种可以同时选出最优粗排特征和结构组合的方案。

借助 Feature Masks 结合时延和效率的约束实现特征选择。模型结构选择方面,通过对 Mixop 模块的筛选形成递归结构,结合蒸馏损失、时延损失、粗排损失实现联合建模,简化粗排模型结构。

轻量级全连接

代表:COLD 阿里定向广告最新突破:面向下一代的粗排排序系统 COLD[10]

借助 SEBlock 模块计算特征重要性,保留重要特征,并通过并行化、量化、列计算等实现性能优化。

多目标

业务场景的目标通常都很复杂,千川(得物主端通用推荐系统)目前就同时存在 DPV 和 UV 价值两个目标,如果在粗排阶段就能区分目标,对最终效果影响无疑更大。那么如何在粗排实现多目标建模呢。

共享底层参数的多塔结构

每个目标对应一个用户塔和一个商品塔,目标各自建模,不过共享底层参数。

各个目标相对独立,建模思路简单,不过共享的底层参数在不同目标之间的区分能力弱。

基于 MMoE 的双塔结构

用户塔和商品塔各自采用 MMoE 结构,加强对不同目标的区分。

所有目标共用 User Embedding

转化相关目标如互动目标的正样本相对稀疏,使得 User 的互动目标很难学习,通过共用 User Embedding 可一定程度避免。还可以借鉴 Esmm 思路,实现对 CTCVR 的联合预估。

借助蒸馏

代表:腾讯 https://arxiv.org/pdf/2102.07142.pdf[11]

教师和学生网络共同训练,教师网络采用全链接 MMoE 结构,学生网络采用双塔结构。

多目标线上融合

融合公式:推荐系统多目标优化专题(2)—融合公式设计思路[12]

  • 线性加分

  • 指数乘法

  • 带权指数加分

  • 带权指数乘法

参数检索方式:

  • Grid search;

  • 自动化参数搜索如 PSO。

多场景

多场景主要面临问题是场景偏差,体现在场景用户、场景定位、场景商品分布等的不同。如女性频道、新人频道、补贴频道、奢品频道等。粗排阶段暂时还没看到针对多场景相关研究,可参考精排的多场景建模思路。

场景相关特征

  • 场景统计特征:如场景下 CTR CVR 等;

  • 用户场景交叉统计特征:如场景下女性用户占比、场景下新人 CTR CVR 等;

  • 用户场景行为特征:如用户在收藏页的点击行为;

  • 商品场景交叉统计特征:如场景下鞋类商品的 CTR CVR 等。

场景特征作为输入

场景作为 Bias

用场景特征搭建场景偏差子网络,在输出层直接与主网络结果关联。

代表:阿里 SAML 推荐系统(二十三) 基于场景感知和交互的多场景推荐模型[13]

针对的问题:

不同场景存在的差异性导致统一的多场景模型难以捕捉不同场景之间的相似性和差异性。

解决的方法:

  • 通过 Embedding 和注意力机制,把特征映射到全局和场景特定的子空间,分别构建场景无关和场景依赖的特征;

  • 设计了一个辅助网络来对场景中的共享知识建模,使用多分支网络对场景之间的差异性建模;

  • 通过交互单元自适应学习不同场景的差异性和相似性,保持当前场景的主导地位,从相似场景中捕获信息。

动态权重

将场景特征分别通过一层网络 Reshape 到主网络的各个层,生成与主网络每层维度相同的向量,然后与主网络中间层特征向量相乘,实现场景信息融入到主网络的中间层。

动态权重:推荐算法的新范式[14]

代表:阿里 M2M M2M: A Multi-Scenario Multi-Task Meta Learning Approach for Advertiser Modeling 论文解读[15]

针对的问题:

  • 每个场景或任务的模型存在无法扩展的问题;

  • 数据样本有限场景下,难以对新场景建模;

  • 场景间的相关性很复杂,并且可能因不同的任务而有所不同。

解决的方法:

提出 M2M 方法。

  • 在该方法中利用 Meta Unit 结合场景知识来学习场景之间的相关性,并基于此可以扩展到新的场景;

  • 设计了一个元注意力模块,来捕捉不同任务之间的相关性。

利用场景信息,通过元学习给每个场景各自生成对应的参数,然后该场景中的任务是在该场景生成的参数上进行前向传播和 Embedding 注意力机制的融合。场景信息利用元学习生成各自场景的参数用于后续任务,而不同任务则通过任务 ID 进行门控。

分阶段学习:预训练+微调

预训练阶段学习场景特征,微调阶段拟合最终目标。

代表:阿里 SASS https://blog.csdn.net/abcdefg90876/article/details/128246212[16]

针对的问题:

  • 在多场景之间缺乏细粒度和解耦的信息迁移控制;

  • 未充分利用整个空间样本;

  • 商品的多场景表征解耦问题。

解决的方法:

提出场景自适应和自监督的模型:

  • 设计了具有场景自适应门控单元的多层场景自适应迁移模块,以细粒度和解耦的方式选择和融合场景的迁移信息;

  • 两阶段训练,预训练阶段基于场景监督的对比学习,微调阶段利用预训练好的商品和用户表征模型得到商品和用户的表征,并针对特定场景的目标进行微调。

预训练阶段,在用户视角下,不同场景的用户表征可以看做是对比学习中的数据增广后对应的样本,同一用户的为正样本对,商品视角也是一样。

相关实践

双塔单目标粗排

结构:双塔结构,用户塔+商品塔。

目标:预估 CTR。

样本:正样本,曝光点击样本;负样本:曝光未点击样本。

效果:对比无粗排,DPV+6%,UV 价值+3%。

三塔多目标粗排

结构:类似 ESMM 的三塔结构,用户 CTR 塔 + 用户 CVR 塔 + 商品塔。

目标:预估 CTR 和 CVR。

样本:正样本,曝光点击样本;负样本:曝光未点击样本。

融合公式:带权指数乘法。

效果:对比单目标粗排。

离线训练 AUC+1%

叠加融合公式后,离线评估 CTR_AUC+5.6%,CVR_AUC+45%。

线上效果,DPV+0.5%,UV价值+4.5%。

多目标+场景特征优化

结构:上述多目标粗排结构。

特征:用户塔引入用户场景特征,商品塔引入商品场景特征,场景特征作为新增特征加入,其他特征也有加入。

效果:对比上个版本的多目标粗排,离线训练 AUC+2%,线上效果,DPV+2.6%,UV 价值+4.9%。

总结

粗排作为推荐中关键一环,可以做的内容丰富,对效率提升也很重要。后续将在多目标和多场景方向持续优化,争取进一步提升推荐效率。

参考文章:

[1] https://zhuanlan.zhihu.com/p/630985673

[2] https://arxiv.org/abs/2005.09683

[3] https://zhuanlan.zhihu.com/p/358779957

[4] https://zhuanlan.zhihu.com/p/409390150

[5] https://mp.weixin.qq.com/s/karPWLyHITu-qZceEhpn-w

[6] https://zhuanlan.zhihu.com/p/608636233?utm_id=0

[7] https://zhuanlan.zhihu.com/p/581286422

[8] https://arxiv.org/pdf/1907.05171.pdf

[9] https://arxiv.org/pdf/2205.09394.pdf

[10] https://zhuanlan.zhihu.com/p/186320100

[11] https://arxiv.org/pdf/2102.07142.pdf

[12] https://zhuanlan.zhihu.com/p/500237779

[13] https://zhuanlan.zhihu.com/p/524201399

[14] https://mp.weixin.qq.com/s/gphLbCsimD3w-IoWtdz-pg

[15] https://zhuanlan.zhihu.com/p/496820123

[16] https://blog.csdn.net/abcdefg90876/article/details/128246212




往期回顾


1. 一口气看完43个关于 ElasticSearch 的使用建议|得物技术
2. Flutter 全埋点的实现|得物技术
3. 测试左移与提测流水线的应用实践|得物技术
4. 前端monorepo大仓权限设计的思考与实现|得物技术
5. 一次性讲清楚「连接池获取连接慢」的所有原因|得物技术
6. 得物大模型平台,业务效果提升实践



*文/阿寿

关注得物技术,每周一、三、五更新技术干货
要是觉得文章对你有帮助的话,欢迎评论转发点赞~
未经得物技术许可严禁转载,否则依法追究法律责任。

扫码添加小助手微信

如有任何疑问,或想要了解更多技术资讯,请添加小助手微信:

继续滑动看下一个

粗排优化探讨|得物技术

阿寿 得物技术
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存