
简介本资源是2021年微信大数据挑战赛WBDC2021多目标行为预测的完整参赛解决方案面向数据科学竞赛选手、推荐系统学习者及短视频平台算法工程师聚焦微信视频号场景下用户七类互动行为读评论、点赞、点击头像、收藏、转发、发表评论、关注的联合建模与点击率预测。压缩包共19个文件含7个核心Python训练/推理脚本、3个Shell自动化流程脚本train.sh/inference.sh/init.sh、2份Markdown说明文档及配套requirements.txt和说明文本整体仅84KB轻量但结构完整便于快速复现与调试。已有82人学习下载提供从环境初始化、模型训练到结果推理的端到端流程附赠资源文档进一步梳理技术选型逻辑与多目标损失设计思路适合中高级选手深入理解工业级行为预测中的特征工程、任务权重平衡与线上部署适配要点。1. 项目背景与核心挑战从单目标到多目标的跨越去年我带队参加了微信大数据挑战赛赛题聚焦在微信视频号场景下的用户互动行为预测。这和我们之前做过的很多点击率预测项目都不一样它不是一个简单的“用户会不会点击”的二分类问题而是要求同时预测用户对一条视频内容可能产生的七种具体互动行为读评论、点赞、点击头像、收藏、转发、发表评论、关注。这七种行为每一种的触发逻辑、用户心理和发生频率都截然不同。比如“点赞”是一个低成本、高频率的轻量级反馈而“关注”则是一个高成本、低频次的深度承诺行为。把它们打包成一个任务就是典型的多目标预测问题。这个赛题的设计非常贴近真实业务场景。在视频号这样的内容推荐系统中平台的目标早已不是单一的点击率最大化。如果只追求点击可能会推出一堆“标题党”或擦边球内容用户点进去看两眼就退出了没有任何后续互动这对平台的长期生态和用户粘性是有害的。平台真正关心的是用户的深度参与和长期价值。一次“转发”带来的社交裂变一个“关注”带来的长期订阅关系其价值远高于一次简单的“点击”。因此构建一个能精准预测多种互动行为的模型对于优化推荐策略、提升内容分发效率和用户体验至关重要。我们面临的挑战是多维度的。首先数据稀疏且不平衡。七种行为的正样本比例天差地别“点赞”可能相对常见但“发表评论”和“关注”就稀少得多。模型很容易被高频率行为主导而忽略了那些低频但高价值的行为。其次行为间存在复杂的依赖和互斥关系。一个用户更可能先“点赞”再“转发”还是先“收藏”再“转发”“点击头像”和“关注”之间是否有强关联这些关系需要模型去捕捉。最后特征工程和模型设计复杂度剧增。我们不能再用一个简单的深度模型输出一个0到1之间的概率就完事了需要设计一个能同时输出七个概率并且能有效学习它们之间关系的网络结构。2. 数据理解与特征工程从原始日志到模型输入比赛提供的数据是典型的用户行为序列日志包含了用户ID、视频ID、以及一系列上下文特征如时间、设备、网络环境等和用户历史行为。我们的第一步就是把这些原始的、离散的日志数据转化为模型能够有效学习的稠密特征向量。2.1 核心特征构建特征工程是多目标预测的基石。我们主要构建了以下几大类特征用户侧特征这是刻画用户长期兴趣和活跃度的关键。用户统计特征用户历史总互动次数、各类型行为读、赞、点、藏、转、评、关的计数和占比。例如计算用户历史“点赞数/总互动数”得到用户的“点赞倾向”。用户兴趣Embedding使用Word2Vec或Graph Embedding技术将用户历史交互过的视频ID序列视为“句子”学习出每个用户的兴趣向量。这个向量能捕捉用户偏好的内容主题。用户活跃度时序特征用户最近1天、7天、30天的互动频率捕捉其近期活跃度的变化。视频侧特征用于描述内容本身的吸引力。视频统计特征视频的历史曝光次数、各行为的累计次数及转化率如点击率、点赞率、转发率。这里需要平滑处理尤其是对新视频冷启动直接使用原始计数会导致方差极大。我们采用贝叶斯平滑例如对于点赞率平滑后点赞率 (累计点赞数 全局平均点赞率 * 平滑因子) / (累计曝光数 平滑因子)。视频内容特征如果提供了视频的标题、标签、类别信息我们会用TF-IDF或预训练的语言模型如BERT提取文本特征。对于封面图可以使用预训练的CNN如ResNet提取视觉特征。视频创作者特征创作者的历史表现、粉丝数、视频平均质量等。用户对创作者的信任度会显著影响其互动行为。上下文特征描述本次曝光发生的具体环境。时间特征小时、星期几、是否是周末/节假日。用户在工作日午休和周末晚上的行为模式可能完全不同。环境特征设备类型iOS/Android、网络类型Wi-Fi/4G/5G。在移动网络下用户可能更不愿意点击高清视频或进行“转发”这类消耗流量的操作。场景特征视频是在推荐流、关注流还是朋友赞过中曝光的不同的场景下用户的意图和耐心度不同。交叉特征与序列特征这是提升模型性能的“银弹”。用户-视频交叉特征计算用户历史行为与当前视频的匹配度。例如用户过去对与当前视频同创作者、同标签的内容的互动率。用户行为序列特征将用户最近N次交互行为包括观看、点击、点赞等按时间排序形成一个序列。使用Transformer或GRU等序列模型来学习用户的短期兴趣动态。例如用户刚刚连续看了几个搞笑视频下一个推荐美食视频时他“点赞”的概率可能会降低。实时统计特征视频在当前小时内的实时点击率、点赞率等。这对于捕捉突发热点内容至关重要。注意特征工程中最容易踩的坑是数据穿越。所有统计特征如视频历史CTR必须严格使用当前样本时间点之前的数据进行计算绝不能用到未来的信息。在实际比赛中需要仔细划分训练集和验证集的时间窗口确保特征提取的逻辑在时间上是成立的。2.2 特征处理与编码对于类别型特征用户ID、视频ID我们使用Embedding层将其映射为低维稠密向量。这里Embedding的维度需要调优对于高频ID可以设置大一些如64维对于低频ID可以小一些如16维。对于数值型特征我们进行标准化或分桶处理。对于多值特征如视频标签采用Sum Pooling或Mean Pooling等方式进行聚合。3. 多目标预测模型架构设计Shared-Bottom与MMoE的抉择特征准备好后核心问题就是模型设计。如何让一个模型同时学习七个相关但不完全相同的任务我们对比并实践了两种主流的多任务学习架构。3.1 Shared-Bottom 模型这是最基础的多任务学习结构。所有任务共享同一个底层网络Shared Bottom这个底层网络学习从输入特征到通用表示的映射。然后每个任务拥有自己独立的塔式网络Tower将通用表示转化为该任务特定的输出。优点结构简单参数少训练速度快。当多个任务高度相关、共享大量信息时这种结构能通过共享表示来减少过拟合提升泛化能力。缺点不够灵活。如果任务间差异很大比如“点击头像”和“发表评论”强行共享同一个底层表示可能会造成任务间的冲突一个任务学得好另一个可能学得差这种现象称为“负迁移”。在我们的初期实验中Shared-Bottom模型表现尚可但七个任务的AUC提升不均匀一些低频任务如“关注”的指标明显滞后。3.2 多门控混合专家模型为了克服Shared-Bottom的缺点我们转向了MMoE模型。MMoE的核心思想是引入多个“专家”网络每个专家都是一个小型神经网络擅长捕捉数据中某一种模式。然后为每一个任务单独配备一个“门控网络”。门控网络的作用是针对当前输入样本计算一个权重向量这个向量决定了融合各个专家输出时每个专家的贡献度有多大。公式可以简化为任务k的输出 Tower_k( sum( 门控权重_ki * 专家_i(输入) ) )。MMoE如何解决任务冲突不同任务的门控网络可以学习到不同的权重。例如对于预测“点赞”任务它的门控网络可能给“擅长捕捉流行度模式”的专家很高的权重而对于预测“发表评论”任务它的门控网络可能更依赖“擅长捕捉内容争议性或深度共鸣模式”的专家。这样模型在底层就实现了对不同任务的信息进行软性、自适应的路由和共享极大缓解了负迁移。我们的实现细节专家数量我们设置了8个专家。经验上专家数量通常是任务数量的1-2倍需要交叉验证调优。专家与门控网络结构每个专家是一个2-3层的全连接网络。每个任务的门控网络是一个简单的线性层加Softmax输出维度等于专家数量。任务塔每个任务塔是一个2层的全连接网络最后通过Sigmoid激活函数输出0-1之间的概率。为什么MMoE更适合本赛题因为七种用户行为背后的动机确实不同。“点击头像”可能源于对创作者的颜值或身份好奇属于浅层社交探索“收藏”是个人知识管理或兴趣标记“转发”则涉及社交形象塑造和利他分享。这些行为背后的用户心理和内容属性差异很大MMoE的灵活路由机制正好能适配这种复杂性。4. 损失函数设计与样本权重调优平衡的艺术多目标预测的另一个核心难点是损失函数的设计。我们不能简单地将七个任务的二分类交叉熵损失相加因为那样模型会主要优化样本量大的高频任务而忽视低频高价值任务。4.1 加权多任务损失函数我们采用加权求和的方式总损失 w1 * Loss_读评论 w2 * Loss_点赞 ... w7 * Loss_关注其中Loss_任务通常使用带正样本权重的二分类交叉熵损失BCEWithLogitsLoss(pos_weight正样本权重)这里有两个关键的权重需要调优任务权重手动调整每个任务损失在总损失中的占比。一个直观的策略是根据任务的重要性或样本不平衡程度来设置。例如我们认为“关注”和“转发”的价值更高可以赋予更大的任务权重如1.5或2.0而“点赞”的权重可以低一些如0.8。这需要根据验证集上各个任务的指标如AUC进行反复调整。正样本权重在单个任务的损失函数内部用于平衡正负样本。通常设置为正样本权重 负样本数 / 正样本数。这可以缓解因正样本过少导致的模型倾向性预测为负的问题。4.2 动态损失权重与不确定性加权手动调权重费时费力且可能不是最优。我们后期尝试了基于同方差不确定性的自动加权方法。其核心思想是将每个任务损失的权重视为一个可学习的参数这个参数反映了该任务噪声的大小不确定性。噪声大的任务其损失权重会自动降低防止不可靠的标签信号干扰其他任务的学习。具体实现时我们将总损失定义为总损失 sum( 1/(2*sigma_i^2) * Loss_i log(sigma_i) )其中sigma_i是任务i的可学习参数。模型在训练过程中会自动学习到一组最优的sigma从而确定各任务的损失权重。这种方法在多个任务难度和噪声水平不一致时非常有效。4.3 在线困难样本挖掘除了损失权重样本本身的重要性也不同。我们引入了在线困难样本挖掘技术。在训练时对于每个批次的数据我们根据模型当前预测的损失值即预测错误的程度对样本进行排序并优先选取损失较大的“困难样本”参与本轮梯度计算。这迫使模型更加关注那些它目前还预测不准的样本尤其是那些正样本稀少的行为类别能有效提升模型在尾部行为上的预测能力。5. 训练技巧、评估与线上部署考量5.1 模型训练与正则化多任务模型参数多容易过拟合。我们采用了多种正则化策略Dropout在专家网络、任务塔网络的全连接层之后都添加了Dropout比率设为0.3-0.5。早停使用一个独立的验证集监控七个任务AUC的加权和按业务重要性加权当该指标连续多个epoch不再提升时停止训练。梯度裁剪防止梯度爆炸特别是当多个任务的梯度方向不一致时。分层学习率对Embedding层使用较小的学习率如1e-4对模型上层网络使用较大的学习率如1e-3因为Embedding层参数巨大需要更稳定地更新。5.2 评估指标与业务对齐比赛常用的评估指标是各个任务AUC的均值或加权均值。但这只是离线评估。从业务角度看我们需要思考校准性模型预测的概率是否准确反映了真实发生的可能性这对于后续基于概率的排序和资源分配至关重要。我们使用校准曲线来检查并在必要时使用Platt Scaling或Isotonic Regression进行后处理校准。多目标排序当模型输出七个概率后如何决定最终给用户推荐哪条视频简单的做法是将七个概率按业务权重加权求和得到一个总分。更精细的做法是使用多目标排序学习如将推荐列表的曝光和后续多种互动作为反馈训练一个LambdaRank或ListNet模型来直接优化列表级的综合收益。5.3 线上服务与性能优化将这样的多目标模型部署到线上推荐系统需要考虑实时性。模型轻量化可以考虑对MMoE模型进行知识蒸馏训练一个更小、更快的单任务或共享底层的模型来近似大模型的行为。特征服务化用户和视频的ID类Embedding、统计特征等可以预先计算好存入特征数据库。线上预测时只需实时拼接上下文特征大大减少计算量。分阶段预测在召回或粗排阶段可以使用轻量级模型快速筛选出候选集。在精排阶段再使用完整的MMoE模型进行精细的多目标预测。这种级联结构是工业界的标准做法。这次比赛的经历让我深刻体会到多目标预测不是多个单目标模型的简单堆砌而是一个系统工程。它要求我们从数据理解、特征构建、模型架构、损失优化到评估部署每一个环节都仔细考量不同任务间的共性与特性。最终一个成功的多目标模型就像一个优秀的乐团指挥能够协调不同的“乐器”子任务让它们和谐共鸣共同服务于提升用户体验和平台价值的终极目标。在实际业务中这种模型带来的收益是单目标模型无法比拟的它让推荐系统从“吸引点击”进化为“促进深度互动和长期留存”的智能引擎。本文还有配套的精品资源点击获取