ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

得物社区精排模型演进:从多目标建模到序列与多模态融合实战

得物社区精排模型演进:从多目标建模到序列与多模态融合实战 1. 项目概述从“货架”到“社区”推荐系统的战场转移在电商领域摸爬滚打多年我见证了推荐系统从“锦上添花”到“核心引擎”的转变。早期的推荐更像是把商品整齐地码在线上货架上用户来“逛”系统负责“摆”。但“得物”这类潮流社区的出现彻底改变了游戏规则。这里不再是简单的“人找货”而是“内容找人”、“兴趣连接人”。用户沉浸在球鞋开箱、穿搭分享、潮流话题讨论中消费决策被深度嵌入到社区互动和内容消费的链条里。因此得物社区的推荐系统其核心任务从单纯的“提升商品点击率CTR”和“成交转化率CVR”演变为一个更复杂、更精细的命题如何精准理解用户在社区场景下的多元兴趣并平衡内容消费、互动参与和最终商品转化等多重目标。“精排模型”作为推荐系统链路中离用户最近、决定最终展现列表的“守门员”其演进直接反映了业务重心的变迁。从早期解决特征交叉的DeepFM到应对多目标权衡的ESMM、MMOE再到如今融合序列行为、图网络等更丰富信息的复杂模型每一次迭代都是一次对“人-内容-商品”三角关系的重新审视。这个过程充满了工程与算法的博弈也沉淀了大量教科书里不会写的实战经验。今天我就结合自己的实践和观察拆解一下得物社区精排模型的演进脉络聊聊背后的设计逻辑、踩过的坑以及那些真正影响线上效果的细节。2. 精排模型的核心挑战与设计思路演进2.1 社区场景下的独特挑战与标准电商推荐相比社区推荐的精排模型面临几个根本性的不同目标多元化与长期价值在商品详情页核心目标相对纯粹点击、加购、购买。但在社区信息流用户可能点赞一篇穿搭攻略互动、收藏一个球鞋测评深度兴趣、看完一段开箱视频内容消费时长最后才可能点击购买链接。这些行为共同构成了用户的长期价值精排模型必须能同时预估这些异构的目标并做出综合决策。兴趣的动态性与序列性用户的社区行为是强序列的。他可能刚看完一篇“夏日球鞋穿搭”的帖子紧接着就对某一款跑鞋产生了兴趣。这种短期兴趣的捕捉和利用远比对静态用户画像的依赖更重要。模型需要像一个“阅读空气”的高手实时理解用户当前在关注什么。内容与商品的异构特征融合推荐对象既有图文/视频内容富含文本、视觉特征也有商品SKU、价格、品牌。如何将文本的语义信息、图片的视觉风格与商品的属性、价格等信息在一个统一的模型空间内进行有效对齐和交叉是巨大的技术挑战。冷启动与探索社区每天涌现大量新发布的UGC内容和新品。如何让优质的新内容不被埋没如何平衡用户已知兴趣和潜在兴趣的探索是维持社区生态健康的关键。2.2 模型架构的演进路径基于上述挑战精排模型的演进大致可以划分为几个阶段每个阶段都试图解决前一阶段的痛点第一阶段精耕细作特征工程与基础CTR模型。这个阶段的核心是“认识你的用户和物品”。我们会投入大量人力进行特征工程挖掘用户静态属性性别、年龄、消费等级、商品属性类目、品牌、价格、上下文时间、位置以及它们之间的交叉组合。模型上以DeepFM及其变种为代表通过FM部分捕捉低阶特征交叉DNN部分捕捉高阶非线性关系实现了端到端的特征学习替代了大量手工交叉特征的工作。这个阶段解决了“如何有效利用特征”的问题。第二阶段多目标建模与任务关系梳理。当基础CTR模型稳定后业务方会提出“不仅要有点击还要有互动、有停留、有转化”。于是模型进入多目标时代。初期尝试简单地将多个目标如点击、点赞、购买的预估loss加权求和但效果往往不佳因为目标间可能存在冲突或数据分布差异巨大。随后ESMMEntire Space Multi-Task Model等模型通过“全空间建模”解决了CVR预估中的样本选择偏差问题。更进一步MMOEMulti-gate Mixture-of-Experts和PLEProgressive Layered Extraction等结构通过引入专家网络和门控机制显式地学习任务间的共享与特异性知识成为处理复杂多目标问题的标配。这个阶段解决了“如何同时要很多东西”的问题。第三阶段序列建模与动态兴趣捕捉。静态特征和即时上下文不足以刻画用户在社区中的行为轨迹。DINDeep Interest Network和DIENDeep Interest Evolution Network通过引入注意力机制和序列建模GRU让模型能够动态地从用户历史行为序列中选取与当前候选item最相关的部分进行计算实现了“千人千面”的动态兴趣表达。这极大地提升了推荐的相关性和惊喜度。第四阶段多模态融合与图神经网络引入。为了深度融合内容语义和商品信息模型开始引入Transformer结构处理文本序列用CNN或Vision Transformer提取图像特征并通过跨模态注意力进行对齐。同时为了挖掘“用户-内容-商品”之间更深层的关联如同一个帖子下的评论用户可能兴趣相似同一款鞋的不同穿搭内容存在关联图神经网络GNN被引入来构建和利用这些异构关系图学习更丰富的节点用户、内容、商品表征再输入给精排模型。这个阶段正在解决“如何深度理解内容与关系”的问题。3. 核心模型组件深度解析与实操要点3.1 多目标建模从MMOE到PLE的实战选择多目标建模是社区精排的基石。MMOE的结构清晰多个专家网络Expert作为共享底层每个任务有自己的门控网络Gate来加权组合专家们的输出。它的优势是灵活每个任务都能学到独特的组合方式。但在实际应用中我们发现当任务相关性差异较大时比如“点击”和“关注作者”MMOE的专家网络容易“偏向”主任务如点击导致次要任务学习不充分即所谓的“跷跷板”现象。这时PLEProgressive Layered Extraction结构往往表现更稳健。PLE的核心思想是“分层渐进式提取”任务专属专家层每个任务有自己的专属专家网络确保其特异性知识不被稀释。共享专家层所有任务共享一部分专家用于学习通用知识。渐进式分离通过多层网络逐步将共享信息与任务专属信息分离和提炼。在得物这样的社区场景我们可能将目标分为几个大类内容消费类点击、完播、时长、互动类点赞、评论、收藏、转化类点击商品、加购、下单。使用PLE时可以为每个大类设置专属专家同时保留一部分共享专家。这样模型能更好地平衡“看内容”和“买东西”这两类有时存在竞争关系的目标。实操心得多目标Loss的权重调整是个“玄学”但关键的活儿。不要凭感觉设固定权重。我们通常采用动态权重或帕累托最优的思路。例如使用Uncertainty Weight让模型自己学习每个任务Loss的不确定性自动调整权重。更工程化的做法是结合业务指标的线上A/B测试结果进行小步快跑式的调参。记住离线AUC一起涨未必代表线上综合收益好必须紧密结合业务指标如人均停留时长、互动率、GMV来评估。3.2 序列建模DIN/DIEN的工程化实现与优化DIN通过注意力机制计算用户历史行为与候选item的相关性为每个历史行为赋予不同的权重。这听起来很美但线上服务时面临巨大的性能压力。因为对于每个候选item都需要与用户上百甚至上千的历史行为序列计算一遍注意力。工程优化是关键序列长度截断与填充线上不可能使用无限长的序列。需要根据数据分析找到一个覆盖大部分用户兴趣且性价比最高的长度如最近100个行为。对于短序列进行mask处理。注意力计算简化原始的注意力计算是候选item与每个历史item做向量内积后再softmax。可以尝试简化例如使用点积注意力而非缩放点积或者对历史序列进行聚类或池化如Sum/Mean Pooling先降维再用一个轻量级网络生成一个统一的用户兴趣向量虽然会损失一些动态性但能极大提升性能。服务端缓存用户的历史行为序列特征在短时间内变化不大可以对其进行短时间缓存如几秒到一分钟避免对特征存储系统如Redis的频繁读取压力。DIEN在DIN基础上增加了GRU来模拟兴趣演化理论上更强但工程复杂度也更高。GRU的串行计算不利于并行推理延迟更高。在实际生产中是否上DIEN需要严格评估其带来的收益与增加的延迟成本。很多时候一个精心优化的DIN配合更丰富和及时的特征如实时点击序列其性价比可能超过一个“重”的DIEN。避坑指南序列特征的数据新鲜度至关重要。用户一分钟前的点击行为比一小时前的价值大得多。必须建立实时特征管道将用户最近的行为如最近10次点击的item ID在秒级内更新到线上特征库。这往往比换一个更复杂的序列模型带来的收益更大。同时要警惕“兴趣穿越”确保用于训练和推理的序列数据在时间上是严格隔离的防止数据泄露。3.3 多模态与图网络特征表达的深水区对于社区内容标题和正文的文本、封面图、视频帧都富含信息。文本处理BERT等预训练模型虽然效果好但直接用于线上推理成本过高。常见的做法是离线蒸馏用大型BERT对海量内容进行离线编码得到高质量的文本向量如句向量作为静态特征输入精排模型。或者使用轻量化的TextCNN或浅层Transformer在线进行微调。图像处理同样使用在大型图像数据集如ImageNet上预训练好的ResNet、EfficientNet等模型提取图像的特征向量例如池化层后的特征。可以同时提取通用特征和面向任务的特定特征如是否包含球鞋特写、穿搭风格分类。跨模态对齐这是难点。一种实用方法是利用社区内的行为数据作为监督信号。例如用户点击了某个带有图文的内容那么该内容的文本向量和图像向量应该与用户当时的兴趣向量在嵌入空间接近。可以通过构造对比学习Contrastive Learning任务来拉近正样本对用户点击的内容特征与用户兴趣推开负样本对从而实现跨模态特征的隐式对齐。图神经网络GNN的引入则更偏向前沿探索。可以构建“用户-点击-内容”二分图或者更复杂的“用户-内容-商品”异构图。通过几层图卷积每个节点可以聚合其邻居的信息。例如一篇内容节点的表征会融合点击过它的用户的特征以及它关联的商品的特征。这些经过图网络增强后的节点表征可以作为更丰富的特征输入精排模型。注意事项多模态和GNN特征通常是“锦上添花”在基础特征和模型结构没做到位时过早引入会徒增复杂度。务必遵循“先单模态再多模态先统计特征再图模型”的迭代路径。此外这些深度特征向量维度高直接concat输入DNN会导致参数爆炸。务必先通过一层降维层如全连接层进行压缩或采用特征交叉层如FM层先进行低阶交互。4. 模型迭代全流程实操与核心环节4.1 特征体系构建一切的基础特征决定了模型的上限。得物社区的精排特征体系通常分为几大块用户特征静态画像年龄、性别、城市、消费等级、注册时长。动态统计近1天/7天/30天的点击率、互动率、活跃时长分布、偏好类目/品牌/价格带。实时兴趣最近10次点击/搜索的item ID序列、实时兴趣标签通过短期行为实时计算。长期兴趣基于长期行为序列学习的用户嵌入向量通过如Word2Vec、GNN等方法离线生成。内容特征基础属性发布者ID、内容类型图文/视频、所属话题/频道、发布时间、热度实时点赞/评论数。多模态语义文本标题/正文的嵌入向量、图像/视频的嵌入向量、内容情感倾向正面/中性/负面。质量评估通过一个独立的模型预估的内容质量分清晰度、信息量、原创性等。商品特征当内容关联商品时基础属性商品ID、品牌、品类、价格、上市时间、库存状态。统计特征历史CTR、CVR、销量、收藏量。内容关联度该商品在历史内容中被提及或展示的频次和正向反馈。上下文特征环境特征请求时间小时、工作日/周末、用户网络环境、设备类型iOS/Android。场景特征入口场景首页推荐/关注流/话题页、本次请求的已曝光序列用于做疲劳度控制。特征生产与上线流程离线特征通过大数据平台如Hive/Spark天级或小时级产出写入特征库如HBase、Redis。实时特征通过Flink/Storm等流计算引擎处理用户实时行为日志写入高速缓存如Redis。在线服务时精排服务从特征库和缓存中拼接出完整的样本特征向量。4.2 样本构造与负采样策略样本质量直接决定模型学到的规律。在信息流推荐中曝光未点击作为负样本是常规操作但需要注意曝光位置偏差排在前面的item天然获得更多点击即使它可能不是最相关的。需要在特征中加入位置信息如展现位置rank让模型学会排除位置偏差或者采用位置消偏的模型结构。全局负采样仅使用曝光未点击作为负样本会导致模型对未曝光过的优质item过于“悲观”。通常需要引入全局负采样即从全量item池中随机抽取一部分作为负样本让模型见识更广。硬负样本挖掘随机负样本太“简单”。需要刻意挖掘那些容易被模型误判的“硬负样本”例如同一用户点击了item A但没点击相似的item B那么B可以作为一次训练的硬负样本。这能有效提升模型的分辨力。在得物社区样本构造还需考虑多目标。对于“点赞”目标正样本是曝光且点赞的日志负样本是曝光未点赞包含点击和未点击。对于“关注作者”目标则是曝光该作者的内容后是否有关注行为。每个目标都有其对应的正负样本集合在PLE等结构中这些样本会共享一部分特征但拥有不同的标签。4.3 离线训练与评估体系训练框架现在基本以TensorFlow或PyTorch为主结合分布式训练框架如TF的Parameter Server PyTorch的DDP处理海量数据。评估绝不能只看一个AUC。必须建立分层的评估体系模型指标每个任务单独的AUC、GAUC按用户分组后的AUC更能反映个性化效果、LogLoss。业务指标模拟在离线测试集上按照模型预估分排序后模拟计算前N个item的点击率、互动率、人均停留时长、商品导流率等与基线模型对比。多样性/新颖性指标计算推荐结果的类目分布、品牌分布、内容类型分布避免推荐结果同质化。统计推荐中新item发布24小时的比例评估探索能力。我们通常会维护一个离线的Replay环境用历史某天的流量和用户状态加载不同版本的模型进行“重播”得到更接近线上效果的指标预估作为上线前的重要参考。4.4 在线服务与A/B测试模型上线服务性能是生命线。精排模型在线推理的99分位延迟P99 Latency必须严格控制在几十毫秒内。优化手段模型轻量化使用模型剪枝、量化INT8量化等技术压缩模型大小加速推理。高性能算子利用TensorRT、OpenVINO等推理优化框架或者使用自研的C推理引擎。缓存策略对用户静态特征、热门内容特征进行多级缓存。异步处理对于非必须实时计算的特征如一些复杂的图嵌入可以异步计算并定期更新。任何模型迭代都必须经过严格的A/B测试。实验组和对照组流量均匀分割实验周期通常覆盖一个完整的用户活跃周期如一周。核心评估指标就是之前提到的各项业务指标。只有综合指标通常是一个权衡多个目标的综合收益分显著正向模型迭代才算成功。5. 常见问题排查与效果调优实录5.1 离线指标上涨线上效果不彰这是最令人头疼的问题。可能的原因及排查思路现象可能原因排查与解决思路离线AUC大涨线上CTR不变甚至跌特征穿越检查特征管道训练时是否使用了未来信息如用当天的统计特征预测昨天的行为。确保特征时间戳严格早于行为时间。线上线下特征不一致在线推理时特征获取失败、默认值填充逻辑与离线不一致、实时特征更新延迟。对比线上日志和离线训练样本的特征值。样本分布偏差离线评估集分布不能代表线上实时分布。构建更实时的离线评估集或采用动态采样。模型过拟合离线AUC高但LogLoss也偏高。增加正则化Dropout, L2使用更早的验证集早停或增加噪声数据。多目标模型离线各指标均涨线上综合收益分下降目标间权重不合理线上综合收益分的计算公式可能未准确反映业务价值。重新审视和校准多目标Loss的权重或采用帕累托最优方法搜索。跷跷板效应次要目标提升以牺牲主要目标为代价。检查PLE结构中任务专属专家是否足够共享专家是否被主任务“霸占”。评估指标片面只看了CTR没看互动率或时长。线上评估必须看全盘业务指标。5.2 推荐结果同质化严重用户感觉总是推荐类似的东西缺乏惊喜。解决方法引入多样性惩罚在排序分数中加入与已推荐结果的相似度负向项。多通道融合排序阶段不仅使用精排模型分也融合探索通道的分数如基于UCB、Thompson Sampling的探索策略给新内容或小众内容一定曝光机会。优化内容特征检查内容嵌入向量是否过于集中在某些区域。可以通过对比学习等无监督方法让模型学到更分散、更具判别力的内容表征。后处理重排在精排输出的Top-K列表后加入一个重排模块明确考虑类目、品牌、内容类型的多样性进行局部调整。5.3 新用户/新内容冷启动效果差新用户对于新用户行为数据稀疏依赖泛化能力强的特征。加强利用上下文特征时间、地点、设备、社交关系如果允许通过邀请关系获取初始兴趣、以及热门/优质内容池进行保底推荐。模型层面可以尝试Meta-Learning或引入跨域信息如用户在其他平台的行为需合规获取。新内容为新内容构建丰富的内容侧特征文本、图像、发布者信息是关键。建立“冷启动内容专属流量池”用小流量探索其初期表现快速收集反馈数据。可以采用Lookalike方法将新内容分发给与其特征相似的历史内容所吸引的用户群体。5.4 模型迭代周期长实验效率低这是工程组织问题。建议特征平台化建设统一的特征平台实现特征的标准化定义、生产、上线和监控减少重复开发。模型训练流水线化将数据清洗、样本生成、训练、评估、部署打包成自动化流水线支持一键触发和回滚。在线实验平台建设完善的A/B测试平台支持灵活的流量切分、指标实时监控和数据分析报告缩短实验决策周期。模型版本管理与热更新支持模型版本化管理并能在不影响服务的情况下进行动态热更新。精排模型的演进是一场没有终点的马拉松。它不仅仅是算法模型的升级更是数据、工程、产品、业务理解的综合体现。在得物这样的社区生态里模型不仅要算得准更要理解潮流、理解社区氛围、理解年轻人瞬息万变的兴趣。每一次模型迭代都是一次对“如何更好地连接人与内容”这个命题的深入思考。踩过的坑告诉我们没有银弹最好的模型永远是那个能扎实解决当前最关键业务痛点并且具备良好可扩展性以迎接下一个挑战的模型。
返回列表