[推荐]双塔模型(介绍)
个人总结
其核心思想是通过两个独立的神经网络(用户塔和物品塔)分别处理用户和物品的特征,最终通过相似度计算实现匹配或召回任务。
用户侧和物品侧的特征分别经过各自的深度神经网络(DNN)处理后,得到用户嵌入(user embedding)和物品嵌入(item embedding),然后通过相似度计算(如内积或余弦相似度)来评估用户和物品之间的匹配程度.
2个塔, 2个深度神经网络.
左边用户塔user, 右边物品塔item
用在召回阶段, 而不是排序阶段
计算2个向量的相似度来打分, 根据分数的高低, 从而进行召回.
一、什么是双塔模型?
双塔模型(Dual Tower Model)是一种基于深度学习的两分支神经网络架构,其核心特点是两个独立的编码器网络("塔")分别处理两种不同类型的数据,最后在向量空间中进行相似度计算。
基本架构
体验AI代码助手
代码解读
复制代码
左塔(用户侧) 右塔(物品侧)
↓ ↓
[编码器网络] [编码器网络]
↓ ↓
[用户向量u] [物品向量v]
\ /
\ /
↘ 相似度计算 ↙
↓
[匹配分数]
二、核心特点
-
对称/非对称双塔:
- 对称双塔:两个塔结构相同(如Siamese网络)
- 非对称双塔:根据输入特征不同设计不同的网络结构
-
解耦合设计:
- 两个塔独立处理各自的特征
- 只在最后的向量层进行交互
-
向量化检索:
- 将实体映射到统一的向量空间
- 通过向量相似度进行匹配
三、主要应用场景
1. 推荐系统(最主要应用)
- 用户-物品匹配:左塔处理用户特征,右塔处理物品特征
- 召回阶段:从百万/千万级候选集中快速筛选出几百个候选
- 典型应用:
- YouTube推荐:2016年论文《Deep Neural Networks for YouTube Recommendations》
- 新闻推荐、电商商品推荐、短视频推荐等
2. 信息检索与搜索
- 查询-文档匹配:左塔编码查询query,右塔编码文档
- 语义搜索:超越关键词匹配,理解语义相似性
- 广告检索:查询与广告的匹配
3. 自然语言处理
- 句子相似度计算:两个文本编码器
- 问答匹配:问题与答案的匹配
- 对话系统:对话上下文与回复的匹配
4. 计算机视觉
- 图像-文本检索:CLIP模型(图像编码器+文本编码器)
- 跨模态检索
5. 其他场景
- 药物-靶点匹配:生物信息学领域
- 求职匹配:简历与职位的匹配
四、为什么使用双塔模型?
优势:
-
高效检索:
- 物品向量可以离线计算并存储
- 在线服务时只需计算用户向量,然后做向量相似度检索
- 支持近似最近邻搜索(ANN),实现毫秒级响应
-
可扩展性:
- 新增物品只需计算其向量,无需重新训练整个模型
- 适合大规模动态更新的候选集
-
灵活性:
- 两个塔可以根据数据类型独立设计
- 支持多模态输入(文本、图像、行为序列等)
-
缓解冷启动:
- 通过特征工程,可以处理新用户/新物品
劣势:
-
特征交互不足:
- 用户user和物品item特征在早期就分离,缺乏细粒度交叉
- 不适合精细排序(通常用于召回,排序阶段用更复杂的模型)
-
信息损失:
- 压缩到低维向量会损失信息
五、技术实现细节
1. 特征工程
体验AI代码助手
代码解读
复制代码
用户塔特征:
├── 用户画像特征(年龄、性别、地域)
├── 历史行为序列(点击、购买历史)
├── 实时行为特征(最近点击)
└── 上下文特征(时间、设备)
物品塔特征:
├── 物品属性(标题、类目、价格)
├── 内容特征(文本描述、图像特征)
├── 统计特征(点击率、销量)
└── 嵌入特征(预训练的ID嵌入)
2. 相似度计算方式
- 点积:
score = u·v - 余弦相似度:
score = (u·v)/(||u||·||v||) - 带温度系数的softmax:
score = exp(u·v/τ)
3. 损失函数
- 多分类softmax损失(采样负样本)
- Triplet Loss
- 对比学习损失(如InfoNCE Loss)
- BPR损失(贝叶斯个性化排序)
4. 负样本采样策略
- 随机负采样
- 批量内负采样(In-batch Negative)
- 困难负样本挖掘(Hard Negative Mining)
- 曝光未点击作为负样本
六、工业实践案例
YouTube双塔召回模型
-
用户塔:
- 输入:观看历史序列、搜索历史、人口统计特征
- 结构:Embedding + MLP + 特征交叉
-
视频塔:
- 输入:视频ID、频道ID、视频主题
- 结构:Embedding + 平均池化
-
训练:
- 任务:预测用户下一个观看的视频
- 负样本:随机采样+流行度加权
-
服务:
- 离线:预计算所有视频向量存入向量数据库
- 在线:计算用户向量,ANN检索Top-K
七、最新演进方向
- 多兴趣双塔:为用户生成多个兴趣向量
- 序列建模增强:使用Transformer等捕获长序列依赖
- 跨塔信息交互:在早期引入轻量级交叉
- 多任务学习:同时优化多个相关目标
- 与图神经网络结合:融入社交关系、知识图谱
八、典型架构示例
体验AI代码助手
代码解读
复制代码
# 简化版伪代码
class DualTowerModel(nn.Module):
def __init__(self):
super().__init__()
self.user_tower = nn.Sequential(
nn.Embedding(user_vocab_size, 256),
nn.Linear(256, 128),
nn.ReLU(),
nn.Linear(128, 64) # 用户向量
)
self.item_tower = nn.Sequential(
nn.Embedding(item_vocab_size, 256),
nn.Linear(256, 128),
nn.ReLU(),
nn.Linear(128, 64) # 物品向量
)
def forward(self, user_features, item_features):
user_vec = self.user_tower(user_features)
item_vec = self.item_tower(item_features)
# 计算相似度
score = torch.matmul(user_vec, item_vec.T)
return score
总结
双塔模型是大规模推荐/检索系统的基石性架构,以其高效的向量化检索能力和良好的可扩展性在工业界得到广泛应用。虽然它在精细特征交互方面存在局限,但作为召回阶段的解决方案,其在性能与效率的平衡上具有不可替代的优势。随着技术的发展,双塔模型也在不断演进,融合更多先进技术以适应更复杂的业务需求。
作者:import_random
链接:https://juejin.cn/post/7586942589321592868
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://juejin.cn/post/7586942589321592868
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted on 2026-01-16 11:43 ExplorerMan 阅读(0) 评论(0) 收藏 举报
浙公网安备 33010602011771号