从SENet到GateNet:特征门控技术在推荐系统中的演进与实践
推荐系统作为互联网内容分发的核心技术,其核心挑战之一是如何从海量高维稀疏特征中识别关键信息。新浪微博张俊林团队在特征重要性建模领域的三代技术演进(FiBiNet/SENet→ContextNet→GateNet),为行业提供了宝贵的工程实践参考。本文将深入剖析这一技术脉络的演进逻辑、核心创新及工业落地经验。
1. 特征重要性建模的技术背景
推荐系统的特征工程面临两个本质矛盾:特征稀疏性与参数过载。典型工业级推荐系统可能包含10亿量级的特征(主要来自用户ID、物品ID等离散特征),其中90%以上的特征出现频次不足5次。这种长尾分布导致两个突出问题:
- 无效特征干扰:低频特征携带的噪声远大于有效信息
- 存储计算浪费:传统方法为所有特征分配相同维度的Embedding
实验数据表明,在深度CTR模型中,特征Embedding参数占总参数的93.3%,而MLP部分仅占6.7%。这种参数分布失衡使得模型容易陷入过拟合。
特征建模的三个技术方向:
| 方向 | 核心思想 | 代表技术 | 类比 |
|---|---|---|---|
| 卡门槛 | 动态过滤无效特征 | SENet/GateNet | 高考分数线 |
| 挤水分 | 变长Embedding分配 | AMTL/NIS | 快慢分班 |
| 补营养 | 提升稀疏特征质量 | 对比学习/多任务 | 差生补课 |
2. 技术演进三部曲
2.1 FiBiNet与SENet:特征门控的初代实践
2019年提出的FiBiNet模型首次将计算机视觉领域的SENet模块引入推荐系统,其创新点在于:
- 动态特征过滤:通过双层MLP学习特征权重(0-1之间)
- 输入:各特征Embedding的均值(压缩为1bit)
- 输出:特征重要性得分
- 双线性交叉:改进传统特征交互方式
# SENet核心逻辑示例 def SENet_layer(feature_embeddings): # Squeeze: 各特征embedding取均值 z = GlobalAveragePooling()(feature_embeddings) # Excitation: 双层MLP weights = Dense(units=64, activation='relu')(z) weights = Dense(units=feature_num, activation='sigmoid')(weights) # 加权输出 return Multiply()([feature_embeddings, weights])工业落地发现:
- 当Embedding size>30时,SENet相对DeepFM等模型的优势扩大
- 双线性模块因计算复杂度高,实际应用较少
- 在Avazu数据集上至今保持SOTA效果
2.2 ContextNet:Transformer与门控的融合
2019-2020年设计的ContextNet是对Transformer的推荐场景改造:
- 特征级上下文感知:每个特征根据其他特征动态调整自身表达
- 精细门控设计:
- 输入:原始所有特征Embedding(bit级)
- 输出:每个特征各bit的独立权重
关键改进:
- 相比SENet的vector-wise权重,实现bit-wise精细控制
- 参数量增加但效果提升显著(AUC +0.5%~1.2%)
实际部署中发现:最上层添加MLP"帽子"可进一步提升效果,尽管会破坏模型结构美感
2.3 GateNet:门控机制的体系化
2020年提出的GateNet将门控机制系统化应用于推荐模型:
两种基础门控单元:
- 特征嵌入门(Feature Embedding Gate)
- bit-wise:每个embedding元素独立权重
- vector-wise:整个embedding共享权重
- 隐藏层门(Hidden Gate)
- 作用于MLP层间特征转换
参数共享策略对比:
| 类型 | 参数量 | 效果 | 适用场景 |
|---|---|---|---|
| Field Private | 多 | 优 | 计算资源充足 |
| Field Sharing | 少 | 良 | 线上响应要求高 |
实验表明:
- bit-wise效果普遍优于vector-wise
- sigmoid激活函数在收敛速度和AUC增益上表现最佳
- 同时使用两种门控反而不如单一门控(可能因过参数化)
3. 工业落地关键考量
3.1 效果与性能的平衡
微博线上AB测试经验:
- SENet模块:普遍带来0.8%-2.1%的CTR提升
- GateNet选择:
- 召回/粗排:Field Sharing + vector-wise(响应时延敏感)
- 精排:Field Private + bit-wise(效果优先)
3.2 工程优化实践
FiBiNet++的改进:
- 参数压缩:
- 哈达玛积→内积(参数量减少80%)
- 移除冗余双线性模块
- SENet增强:
- 分组统计(均值+最大值)
- 添加Skip Connection
- 输出bit-wise权重
部署技巧:
# 模型量化示例(TensorRT) trtexec --onnx=model.onnx \ --saveEngine=model.engine \ --fp16 \ --workspace=20483.3 业务适配经验
不同场景下的门控选择:
| 场景特征 | 推荐方案 | 理论依据 |
|---|---|---|
| 特征域少(<50) | FiBiNet++ | 避免过参数化 |
| 用户行为稀疏 | ContextNet | 增强特征交互 |
| 多目标学习 | GateNet+MMoE | 任务特异性门控 |
4. 前沿探索与未来方向
当前技术团队正在探索的特征建模新范式:
- 动态稀疏门控:结合强化学习的权重剪枝
- 跨场景知识迁移:基于门控的特征共享机制
- 门控-注意力统一框架:理论层面建立数学关联
在实践过程中发现,当模型参数量超过训练数据规模时,单纯增加模型复杂度可能适得其反。这时特征门控的价值会更加凸显——它本质上是一种面向特征的数据蒸馏机制。