[推荐]DSSM双塔模型(实战2)

228 阅读3分钟

在双塔模型训练完成后,针对实时推荐新用户的场景,核心流程确实是两步:

  1. 实时生成用户Embedding:将新用户的特征输入用户塔,得到用户的实时Embedding。
  2. 相似度计算与召回:将该用户Embedding与预计算的商品Embedding库进行相似度计算(如点积、余弦相似度),返回Top-K最相似的商品。

不过,这个过程还有一些关键细节需要补充,以下是一个完整的流程说明:


1. 推荐流程详解

(1)离线预计算商品Embedding

  • 物品塔预计算:对所有商品(如百万级或亿级),提前通过物品塔生成Embedding,并存储到向量数据库(如FAISS、HNSW、Annoy)。
  • 为什么离线计算?
    商品库数量庞大,直接在线计算所有商品Embedding延迟过高。预计算后,在线只需处理用户Embedding和相似度检索。

(2)在线实时生成用户Embedding

  • 用户特征输入:当新用户访问时,系统会收集用户特征(如实时行为、基础画像)。
    • 如果用户是全新用户(冷启动):可能只有基础特征(如设备类型、地理位置),需依赖冷启动策略(如默认Embedding、热门商品兜底)。
    • 如果用户有实时行为(如最近点击的3个商品):可通过用户塔实时更新Embedding。
  • 用户塔推理:将用户特征输入用户塔,实时生成用户Embedding(毫秒级延迟)。

(3)相似度检索(召回)

  • 近似最近邻搜索(ANN):使用向量数据库快速检索与用户Embedding最相似的Top-K商品Embedding。
    • 常见方法:FAISS的IVF-PQ、HNSW等算法,支持亿级向量毫秒级检索。
    • 目标:从海量商品中筛选出几百到几千个候选集。

(4)返回召回结果

  • 将Top-K商品ID返回给下游的排序模型(如精排模型),进一步结合交叉特征、上下文特征进行精准排序。

2. 举个实际例子

场景:用户刚注册抖音,首次打开APP,系统需实时推荐视频。

  1. 用户特征

    • 冷启动特征:设备类型=iPhone,地理位置=北京,注册时间=今天。
    • 实时行为(暂无)。
  2. 生成用户Embedding

    • 用户塔将冷启动特征转换为Embedding(如[0.1, -0.3, 0.5, ...])。
  3. 相似度检索

    • 从预计算的视频Embedding库中,找到与用户Embedding最相似的1000个视频。
  4. 冷启动兜底

    • 如果模型对新用户Embedding置信度低,可混合热门视频、地域相关视频作为召回结果。
  5. 最终推荐

    • 召回结果经过排序模型,生成最终推荐的10个视频。

3. 关键问题与解决方案

(1)新用户冷启动问题

  • 策略
    • 使用默认Embedding(如全零向量 + 用户基础特征)。
    • 融合非个性化召回(如热门商品、地域趋势)。
    • 实时行为补偿:当用户产生首次点击后,立即更新Embedding。

(2)用户特征的实时性

  • 动态行为序列
    • 用户最近点击/观看的N个商品ID,需实时拼接成序列输入用户塔(如通过Flink实时处理)。
    • 例如:用户点击商品A后,Embedding会立即偏向与商品A相似的物品。

(3)物品库的更新

  • 动态更新Embedding
    • 新增商品需定期(如每天)通过物品塔生成Embedding,并更新到向量数据库。
    • 旧商品Embedding可保持不变(除非模型重新训练)。

4. 总结

你的理解完全正确!双塔模型的在线推荐本质是:

  1. 用户侧实时:用户特征→用户塔→用户Embedding。
  2. 物品侧离线:预计算商品Embedding库(提前离线计算好的商品的embedding,因为商品量巨大,实时计算有延迟)。
  3. 相似度桥梁:通过向量检索连接用户与商品。

这种架构平衡了效果与效率,是工业界大规模推荐系统的标配方案。