预训练 Embedding + 轻量级线上模型
1. 推荐系统的“离线重兵线上轻骑”范式一句话概括这是一种经典的“离线训练、在线推理”的工业界架构。它利用大规模离线集群通过复杂的深度模型如双塔DNN、Graph Embedding将用户和物品预先编码为稠密向量Embedding然后在线上服务时仅使用极其轻量级的计算如向量点积、余弦相似度或单层LR来完成最终的推荐排序。核心逻辑离线重复杂模型→训练用户向量 Eu 和 物品向量 Ei \text{离线重}\text{复杂模型} \xrightarrow{\text{训练}} \text{用户向量 } E_u \text{ 和 物品向量 } E_i离线重复杂模型训练用户向量Eu和物品向量Ei在线轻实时计算Scoref(Eu,Ei)通常是点积或浅层MLP \text{在线轻}\text{实时计算} \quad \text{Score} f(E_u, E_i) \quad \text{通常是点积或浅层MLP}在线轻实时计算Scoref(Eu,Ei)通常是点积或浅层MLP2. 详细案例推导短视频 App 的“双塔召回与排序”我们以业界最经典的**双塔模型Two-Tower Model**应用为例详细拆解该范式的全过程。2.1 场景设定平台某短视频 App如抖音/TikTok。任务用户打开 App 时从千万级视频库中快速筛选出用户最可能点击的 100 个视频。策略离线预训练 Embedding 线上 Faiss 向量检索 轻量级点击率CTR校准。2.2 步骤一离线预训练重计算阶段我们使用历史日志用户点击、观看时长训练一个双塔 DNN 模型。用户塔User Tower输入用户 ID、性别男1、年龄25、最近30天观看类别分布如 [搞笑:0.6, 科技:0.3, 美食:0.1]。物品塔Item Tower输入视频 ID、作者 ID、类别如“搞笑”、平均观看完成率。为了手算方便我们设定最终的输出维度为 3 维。训练完成后我们取出对应的预训练 Embedding 向量用户 ( U )小明25岁男偏好搞笑的预训练向量Eu[0.2,0.8,0.3] E_u [0.2, 0.8, 0.3]Eu[0.2,0.8,0.3]候选视频 A搞笑猫猫视频类别匹配度高的预训练向量EvA[0.9,0.4,0.7] E_{vA} [0.9, 0.4, 0.7]EvA[0.9,0.4,0.7]候选视频 B硬核科技讲座类别匹配度低的预训练向量EvB[0.1,0.2,0.8] E_{vB} [0.1, 0.2, 0.8]EvB[0.1,0.2,0.8]2.3 步骤二线上轻量级推理极速计算此时线上服务器不需要加载庞大的 DNN 模型只需要加载上述生成的向量表到内存或向量数据库 Faiss中。线上服务收到小明的请求时执行最简单的**向量点积内积**作为匹配得分视频 A 得分ScoreAEu⋅EvA0.2×0.90.8×0.40.3×0.7 \text{Score}_A E_u \cdot E_{vA} 0.2 \times 0.9 0.8 \times 0.4 0.3 \times 0.7ScoreAEu⋅EvA0.2×0.90.8×0.40.3×0.7ScoreA0.180.320.210.71 \text{Score}_A 0.18 0.32 0.21 0.71ScoreA0.180.320.210.71视频 B 得分ScoreBEu⋅EvB0.2×0.10.8×0.20.3×0.8 \text{Score}_B E_u \cdot E_{vB} 0.2 \times 0.1 0.8 \times 0.2 0.3 \times 0.8ScoreBEu⋅EvB0.2×0.10.8×0.20.3×0.8ScoreB0.020.160.240.42 \text{Score}_B 0.02 0.16 0.24 0.42ScoreB0.020.160.240.42由于 ( 0.71 0.42 )线上系统仅用了3 次乘法和 2 次加法轻量级就判断视频 A 更适合小明并将其优先推送。3. 该范式的核心优势为什么流行极致的线上低延迟将复杂的非线性计算MLP、Attention全部抛给离线集群线上只做内存读取和浮点数乘法QPS每秒查询数可以达到数万甚至数十万。解耦服务推荐系统的召回匹配和排序精排可以分离工程架构更清晰。海量候选集快速检索配合近似最近邻ANN算法如 Faiss可以在毫秒级从千万级向量中捞出 Top-K。4. 不足之处硬伤与挑战虽然该范式极大地解放了线上算力但它存在四个致命的缺陷尤其在面对实时变化的推荐场景时显得“力不从心”。4.1 缺陷一灾难性的“实时性滞后”无法捕捉兴趣漂移预训练 Embedding 通常每天甚至每周更新一次。在这一天之内用户的兴趣可能发生剧烈变化例如用户刚刚搜索了“婴儿奶粉”。举例推导小明在上午 10 点点击了 5 个“孕妇食谱”视频。离线模型 ( E_u [0.2, 0.8, 0.3] ) 尚未更新。线上轻量模型依然基于旧的 ( E_u ) 计算得分疯狂推荐搞笑视频。结果推荐系统完全忽视了用户当下的即时意图导致用户体验断崖式下降。4.2 缺陷二无法捕捉“非线性高阶特征交叉”表达能力受限线上轻量级模型通常是点积本质上是线性的。它无法处理特征间的复杂非线性关系如“年轻男性”在“深夜”刷到“游戏视频”的突增点击概率。数学推导证明设线上轻量模型为(Score∑k1dwk⋅(Eu,k⋅Ei,k))( \text{Score} \sum_{k1}^{d} w_k \cdot (E_{u,k} \cdot E_{i,k}) )(Score∑k1dwk⋅(Eu,k⋅Ei,k))加权点积。这等价于一个一阶线性模型。而复杂的非线性交互如(Age×Category)( \text{Age} \times \text{Category} )(Age×Category)在预训练时虽然被双塔学习过但被压缩进了 3~5 维的向量中。在这个过程中大量细粒度的非线性交叉信息被丢失了信息瓶颈。线上模型无法像 DeepFM 或 DIN 那样基于当前的上下文如时间、设备动态调整特征权重。4.3 缺陷三严重的“离线-在线目标不一致”Serving Skew离线训练时双塔模型的优化目标可能是“点击率CTR”或“余弦相似度”。但在线上我们往往想优化“观看时长”或“互动率”。离线模型为了拟合点击把搞笑视频的向量拉得很近。但线上轻量模型无法改变权重重心它只能死板地计算这个固定的点击向量无法根据线上实时的“完播率”指标去微调排序导致线上核心业务指标如留存不升反降。4.4 缺陷四“冷启动”时的表象相似困境当一个新视频如“新晋网红张三的日常”上传时它没有历史交互数据只能靠物品的内容向量标题、封面来生成 Embedding。由于离线模型没见过该视频的协同过滤信号生成的 Embedding 往往与其真实潜在受众有偏差。线上轻量模型对此毫无纠正能力导致新视频很难被探索出来永远被压制在旧的热门视频之下。5. 总结架构演进方向该范式并非完美无缺它是“高并发”与“高精度”之间的妥协产物。为了解决上述缺陷工业界目前的演进方向包括在线学习Online Learning使用流式计算如 Flink实时更新用户 Embedding替代“预训练”的静态向量。轻量级深度排序网络Lightweight Deep Ranking在线上不只用点积而是部署经过剪枝、量化后的极简 MLP如 2 层 32 个神经元允许在毫秒级内进行非线性交叉即“粗排”阶段的模型化。强化学习的引入如 DRN利用实时奖励点击、观看时长在线微调轻量级模型的参数弥补离线 Embedding 滞后带来的损失。