一、 核心思想:它是什么?为什么有效?
DSSM(Deep Structured Semantic Model),又称“双塔模型”,是深度学习在搜索、推荐、广告领域应用的奠基性工作之一。其核心思想是将用户(User)和物品(Item)映射到同一个低维、稠密的向量空间(Embedding Space),并通过计算向量之间的距离(如余弦相似度)来衡量它们的相关性。
为什么有效?
- 语义匹配:传统的检索模型(如BM25)依赖于关键词的直接匹配,无法处理“一词多义”和“一义多词”的问题。DSSM通过深度网络学习到的分布式表示(Embedding),能够捕捉到文本深层的语义信息。
- 维度统一:无论用户查询(Query)多长,物品(Document)多长,最终都被映射为固定长度的向量,便于后续高效的相似度计算和大规模检索。
- 端到端学习:模型直接优化用户和物品向量的相似度目标(如点击率),让最终的Embedding更适合下游任务。
二、 模型架构:双塔是怎么工作的?
DSSM的架构非常直观,就像两座对称的“塔”,因此得名“双塔模型”。
-
输入层(Input Layer):
- 用户塔输入:通常是用户的历史行为、搜索词(Query)、人口属性等特征。在本文的U2I场景中,输入是
(user_id, history_sequence)。 - 物品塔输入:通常是物品的标题、描述、类别等特征。输入是
(item_id, item_features)。
- 用户塔输入:通常是用户的历史行为、搜索词(Query)、人口属性等特征。在本文的U2I场景中,输入是
-
表示层(Representation Layer) - “塔身”:
- 两边各是一个深度神经网络(DNN),通常结构相同(对称),但不共享权重。
- 网络可以是简单的全连接层(MLP)、CNN或RNN,用于将高维稀疏的输入特征转化为低维稠密的向量。
- 最终,用户塔输出一个向量 u,物品塔输出一个向量 i。
-
匹配层(Matching Layer):
- 计算两个向量 u 和 i 的余弦相似度,得到它们的相关性分数。
score(u, i) = cosine(u, i) = (u · i) / (||u|| * ||i||)
-
损失函数(Loss Function):
- 模型的目标是最大化正样本(用户点击过的物品)对的相似度,最小化负样本(随机采样或未点击的物品)对的相似度。
- 最常用的损失函数是 Softmax交叉熵损失 或 Pairwise Ranking Loss(如BPR, Hinge Loss)。
三、 实战步骤(U2I场景)
参考教程中的代码,我们可以将DSSM的实现分为以下几步:
步骤一:数据准备与采样
这是最关键的一步,数据质量直接决定模型效果。
- 正样本:用户真实点击、购买、观看等交互行为记录
(user_id, item_id, label=1)。 - 负样本:
- 曝光未点击:最理想的负样本,但通常难以获取。
- 全局随机采样:从全量物品中随机抽取,简单有效,是最常用的方法。
- 批量内随机采样:在同一个训练batch内,将其他用户的正样本作为当前用户的负样本(如Sampled Softmax Loss)。
# 伪代码: 构造训练样本
def generate_samples(click_df, items_pool, neg_ratio=4):
samples = []
for user_id, hist in click_df.groupby('user_id'):
# 正样本
pos_items = hist['item_id'].tolist(
DSSM深度语义匹配模型详解与实战

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



