微信视频号推荐算法实战:从GNN到DCN-M的多任务优化探索

张开发
2026/4/15 13:00:23 15 分钟阅读

分享文章

微信视频号推荐算法实战:从GNN到DCN-M的多任务优化探索
1. 微信视频号推荐算法的技术演进微信视频号的推荐系统经历了从传统算法到深度学习的快速迭代。早期的推荐主要依赖协同过滤和内容匹配但随着用户规模突破亿级单纯依靠用户行为统计和内容标签匹配已经难以满足精准推荐的需求。这促使技术团队开始探索更先进的算法架构。我在实际项目中发现视频号推荐面临三个核心挑战用户兴趣的多样性同一个用户可能同时喜欢美食和科技内容、行为数据的稀疏性大多数用户只会与少量内容互动、以及多目标优化的复杂性需要同时优化点赞、转发、收藏等多个指标。这些挑战促使我们尝试从图神经网络GNN到深度交叉网络DCN-M的技术路径。2. 图神经网络在推荐场景的实践2.1 构建用户-视频交互图GNN的核心思想是将用户和视频视为图中的节点用户行为作为边。我们尝试用DGL框架构建异构图网络其中用户节点和视频节点通过七种不同类型的边连接对应点赞、转发等不同行为。具体实现时每个视频节点携带512维多模态特征用户节点则包含设备类型、历史行为统计等特征。import dgl import torch # 构建异构图示例 graph_data { (user, click, feed): (torch.tensor([0,1]), torch.tensor([2,3])), (user, like, feed): (torch.tensor([0]), torch.tensor([1])) } hetero_graph dgl.heterograph(graph_data)2.2 PinSage与RGCN的实战对比我们首先实现了PinSage算法通过随机游走采样构建子图。但在实际测试中发现当用户节点度数差异较大时部分用户有上千次互动多数用户不足十次模型表现不稳定。改用RGCN关系图卷积网络后通过为不同类型的行为分配不同的权重矩阵线上AUC提升了0.02。不过GNN方案存在明显局限训练耗时是传统DNN的3-5倍且对新增冷启动视频处理效果不佳。这促使我们转向更高效的DCN-M架构。3. 深度交叉网络的多任务优化3.1 DCN-M的核心机制DCN-M的创新点在于显式特征交叉与MOE混合专家结构的结合。其交叉网络层通过以下公式实现特征组合X_{l1} X_0 * (X_l^T * W_l) X_l其中X_0是原始特征W_l是可学习参数。这种设计能以O(n)复杂度实现n阶特征交叉而传统DNN需要O(n^2)参数。我们在PyTorch中的实现关键部分如下class CrossNetMix(nn.Module): def __init__(self, input_dim, num_layers4): super().__init__() self.weights nn.ParameterList([ nn.Parameter(torch.randn(input_dim, input_dim)) for _ in range(num_layers) ]) def forward(self, x): x_0 x.clone() for weight in self.weights: x x_0 * (x weight) x return x3.2 多任务学习的工程实践视频号需要同时预测7种用户行为我们采用MMOE多门控混合专家结构。每个任务有独立的门控网络共享3个专家网络。实际部署时发现两个关键点点赞和转发任务可以共享底层专家收藏行为需要独立专家网络通过调整专家数量和各任务loss权重最终使多任务间的干扰降低了37%。模型结构如下图所示此处应有结构图但按规范省略。4. 特征工程的关键突破4.1 行为序列Embedding技巧比赛中最有效的特征是用户行为序列Embedding。具体做法是将用户历史交互的feedid视为句子用Word2Vec训练得到256维向量。这里有三个实用技巧使用Skip-gram模式比CBOW效果更好窗口大小设置为20对应约30天行为对高频feedid进行亚采样subsamplingfrom gensim.models import Word2Vec # 构建用户行为序列 user_sequences df.groupby(userid)[feedid].apply(list) # 训练Embedding model Word2Vec(user_sequences, vector_size256, window20, sg1)4.2 多模态特征融合视频号提供的多模态特征包括OCR文本、ASR语音、图像特征等。我们开发了分层融合策略初级融合对512维官方特征做PCA降维到128维中级融合将降维特征与手工统计特征拼接高级融合在DCN-M的交叉网络中进行动态特征交互这种方案使模型对短视频内容的理解准确率提升了15%。5. 实战中的经验教训在三个月算法迭代中我们踩过几个典型的坑过度依赖GNN初期花费两周优化图结构后来发现简单EmbeddingDCN效果更好忽视特征重要性分析复赛时意外发现去掉30%的统计特征反而提升效果多任务loss权重设置不当初期平等对待所有任务导致主要指标下降有效的调优策略包括采用动态加权loss根据各任务验证集表现自动调整权重渐进式特征筛选每次迭代去掉重要性最低的10%特征两阶段训练先用全量数据预训练Embedding再端到端微调当前视频号推荐系统的瓶颈在于实时性。我们正在试验将DCN-M与Faiss向量检索结合实现毫秒级更新用户兴趣向量。具体方案是在线部分维护用户Embedding离线部分每天更新全量模型。

更多文章