Datawhale学习笔记——深度语义匹配模型DSSM详解、实战与FAQ

DSSM深度语义匹配模型详解与实战

一、 核心思想:它是什么?为什么有效?

DSSM(Deep Structured Semantic Model),又称“双塔模型”,是深度学习在搜索、推荐、广告领域应用的奠基性工作之一。其核心思想是将用户(User)和物品(Item)映射到同一个低维、稠密的向量空间(Embedding Space),并通过计算向量之间的距离(如余弦相似度)来衡量它们的相关性

为什么有效?

  1. 语义匹配:传统的检索模型(如BM25)依赖于关键词的直接匹配,无法处理“一词多义”和“一义多词”的问题。DSSM通过深度网络学习到的分布式表示(Embedding),能够捕捉到文本深层的语义信息。
  2. 维度统一:无论用户查询(Query)多长,物品(Document)多长,最终都被映射为固定长度的向量,便于后续高效的相似度计算和大规模检索。
  3. 端到端学习:模型直接优化用户和物品向量的相似度目标(如点击率),让最终的Embedding更适合下游任务。

二、 模型架构:双塔是怎么工作的?

DSSM的架构非常直观,就像两座对称的“塔”,因此得名“双塔模型”。

  1. 输入层(Input Layer):

    • 用户塔输入:通常是用户的历史行为、搜索词(Query)、人口属性等特征。在本文的U2I场景中,输入是(user_id, history_sequence)
    • 物品塔输入:通常是物品的标题、描述、类别等特征。输入是(item_id, item_features)
  2. 表示层(Representation Layer) - “塔身”:

    • 两边各是一个深度神经网络(DNN),通常结构相同(对称),但不共享权重
    • 网络可以是简单的全连接层(MLP)、CNN或RNN,用于将高维稀疏的输入特征转化为低维稠密的向量。
    • 最终,用户塔输出一个向量 u,物品塔输出一个向量 i
  3. 匹配层(Matching Layer):

    • 计算两个向量 ui 的余弦相似度,得到它们的相关性分数。
    • score(u, i) = cosine(u, i) = (u · i) / (||u|| * ||i||)
  4. 损失函数(Loss Function):

    • 模型的目标是最大化正样本(用户点击过的物品)对的相似度,最小化负样本(随机采样或未点击的物品)对的相似度。
    • 最常用的损失函数是 Softmax交叉熵损失Pairwise Ranking Loss(如BPR, Hinge Loss)

三、 实战步骤(U2I场景)

参考教程中的代码,我们可以将DSSM的实现分为以下几步:

步骤一:数据准备与采样

这是最关键的一步,数据质量直接决定模型效果。

  1. 正样本:用户真实点击、购买、观看等交互行为记录 (user_id, item_id, label=1)
  2. 负样本
    • 曝光未点击:最理想的负样本,但通常难以获取。
    • 全局随机采样:从全量物品中随机抽取,简单有效,是最常用的方法。
    • 批量内随机采样:在同一个训练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(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值