CTR预估模型演进史:从FM、DeepFM到DLRM,我们到底在解决什么问题?

张开发
2026/4/19 10:49:23 15 分钟阅读

分享文章

CTR预估模型演进史:从FM、DeepFM到DLRM,我们到底在解决什么问题?
CTR预估模型演进史从FM到DLRM的工程思维跃迁推荐系统的核心在于精准预测用户点击率CTR这背后是一场持续二十年的特征工程与模型架构革命。当你在电商平台看到猜你喜欢的推荐结果时背后可能是由数百个特征经过数十层神经网络计算得出的概率值。但这条技术演进路径并非直线前进而是充满了对计算效率与模型效果的权衡取舍。1. 特征工程的石器时代逻辑回归的局限与突破2007年Google发表《Ad Click Prediction: a View from the Trenches》论文时逻辑回归LR仍是CTR预估的主流选择。这种线性模型的优势在于训练效率高单机即可处理亿级样本可解释性强权重直接反映特征重要性工程成熟已有成熟的分布式实现方案但它的致命缺陷很快暴露无法自动捕捉特征交叉。工程师们不得不手动构造组合特征比如将用户年龄和商品类别组合成新特征。当时雅虎团队的实验显示人工设计的二阶交叉特征能使模型AUC提升1.2%。典型特征组合代码示例# 人工构造交叉特征 df[age_x_category] df[user_age].astype(str) _ df[item_category].astype(str)这种方法的瓶颈显而易见特征组合爆炸n个特征可能产生n²量级组合无法处理未见过的特征组合依赖领域知识且人力成本高2. 矩阵分解的启示FM模型的思想革命2010年Rendle提出因子分解机Factorization Machines带来了三个关键创新2.1 隐向量内积代替人工组合FM用隐向量的点积自动学习特征交叉数学表达简洁优美$$ \hat{y}(x) w_0 \sum_{i1}^n w_i x_i \sum_{i1}^n \sum_{ji1}^n ⟨v_i,v_j⟩ x_i x_j $$其中$v_i$就是第i个特征的隐向量。这种做法的精妙之处在于参数量从O(n²)降到O(n×k)k为隐向量维度即使交叉特征在训练集中未出现也能通过隐向量生成预测隐向量可预先计算预测时仍保持线性复杂度2.2 工程实现的优雅妥协FM在实际落地时面临计算效率挑战。聪明工程师们发现二阶交叉项可以改写为$$ \sum_{ij}⟨v_i,v_j⟩x_ix_j \frac{1}{2}\left[\left(\sum_{i1}^n v_i x_i\right)^2 - \sum_{i1}^n (v_i x_i)^2\right] $$这种变形将计算复杂度从O(kn²)降到O(kn)使FM能处理百万级特征。这种在数学等价性基础上追求工程效率的思维成为后续模型发展的DNA。2.3 冷启动问题的缓解相比LR依赖大量共现数据FM通过隐向量共享机制使得稀疏特征也能获得合理预测。例如新上架商品虽无历史点击数据但其类目、价格等特征的隐向量已在其他商品训练中获得。3. 深度学习的融合DeepFM与它的变种们当深度学习席卷计算机视觉和NLP领域时推荐系统也迎来了神经网络的入侵。但不同于其他领域的推倒重来CTR模型展现出惊人的路径依赖。3.1 双路并行的架构哲学2017年华为提出的DeepFM是这一阶段的典型代表[输入层] │ ├─[FM层]───[特征交叉] │ └─[DNN层]──[高阶非线性] │ [拼接]──[输出层]这种架构的精妙之处在于FM部分保留显式二阶交叉DNN部分捕捉隐式高阶关系共享输入Embedding减少参数量3.2 内存与计算的拉锯战随着Embedding层规模膨胀内存占用成为瓶颈。业界发展出多种优化技术技术原理收益代价特征哈希用哈希函数压缩特征空间内存减少80%可能哈希冲突动态采样只对活跃用户保留完整Embedding内存降低60%需要缓存机制混合精度用FP16存储Embedding显存减半需梯度缩放这些方案没有绝对优劣完全取决于业务场景。比如电商推荐可能选择特征哈希而社交推荐更倾向动态采样。4. 工业级的简约美学DLRM的设计哲学当技术演进到2019年Facebook的DLRM展现出截然不同的工程思维——用最简单的结构解决最本质的问题。4.1 模型架构的减法艺术DLRM的核心结构只有四个部分Embedding层统一处理稀疏特征# PyTorch实现示例 self.embeddings nn.ModuleList([ nn.Embedding(num_embeddings, embedding_dim) for num_embeddings in categorical_sizes ])底部MLP处理稠密特征交互层显式特征交叉# 特征两两点积 interactions [] for i in range(num_features): for j in range(i1, num_features): interactions.append(torch.sum(embeddings[i] * embeddings[j], dim1))顶部MLP最终预测这种设计刻意避开了当时流行的注意力机制、门控单元等复杂结构追求极致的训练效率。4.2 特征交互的实用主义DLRM选择最朴素的点积作为交互方式而非更复杂的操作因为点积的计算复杂度是O(1)在GPU上能高效批处理实际效果与复杂操作差距小于1%这种选择体现了工业界的典型思维当两个方案效果相近时永远选择更简单的那个。4.3 工程细节的魔鬼论文中透露的关键实现技巧Embedding分片将大Embedding表拆分到多个GPU异步更新缓解通信瓶颈量化压缩Embedding采用8位整型存储这些看似平凡的优化往往能带来数倍的训练速度提升。在工业级推荐系统里1%的AUC提升可能不如20%的训练加速有价值。5. 技术演进的内在逻辑回顾这段发展史可以提炼出三条不变的法则特征交叉始终是核心问题从人工组合到自动学习形式在变本质未变效率决定技术生命周期任何不能线性扩展的方案终将被淘汰简单有效的方案最持久FM的思想延续十年点积操作历久弥新现代推荐系统已进入大模型时代但CTR预估模型演进的这些底层逻辑依然在指导着新一代架构的设计。那些能平衡算法创新与工程约束的方案往往才是最终赢家。

更多文章