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

247 阅读3分钟

在推荐系统中,双塔模型的训练数据通常由用户特征、正样本物品特征、负样本物品特征组成,并通过监督学习优化用户和物品的Embedding相似度。以下是一个具体的示例说明:


1. 训练数据的结构

每条训练样本通常包含以下三部分:

  • 用户特征:描述用户的信息(如ID、历史行为、人口属性等)。
  • 正样本物品特征:用户实际交互过的物品(如点击,加购,购买)。
  • 负样本物品特征:用户未交互的物品(随机采样或难例挖掘)。

最终训练时,每条样本会以 (用户特征, 正样本物品特征, 负样本物品特征) 的形式输入模型。


2. 示例:电影推荐场景

假设我们有一个电影推荐系统,用户特征包括用户ID、年龄、性别、历史点击的电影ID序列;物品特征包括电影ID、类型、导演、演员、评分等。

示例数据表
用户特征正样本物品特征负样本物品特征
用户ID=123, 年龄=25, 性别=男, 历史点击=[电影A, 电影B]电影ID=电影X, 类型=动作, 导演=张艺谋, 演员=吴京, 评分=8.5电影ID=电影Y, 类型=爱情, 导演=李安, 演员=周冬雨, 评分=7.2
用户ID=456, 年龄=35, 性别=女, 历史点击=[电影C, 电影D]电影ID=电影Z, 类型=科幻, 导演=诺兰, 演员=马修, 评分=9.0电影ID=电影W, 类型=恐怖, 导演=温子仁, 演员=帕特里克, 评分=6.8

3. 数据预处理的关键步骤

(1)用户特征处理
  • 用户ID:通过Embedding层转换为稠密向量。
  • 历史行为序列:对点击的电影ID序列进行Embedding,然后通过Pooling(如平均池化)生成固定长度的向量。
  • 年龄/性别:归一化或分桶后作为数值特征输入。
(2)物品特征处理
  • 电影ID:通过Embedding层转换为稠密向量。
  • 类型/导演/演员:多值类别特征(如电影类型是“动作,冒险”),使用Multi-hot编码或Embedding。
  • 评分:归一化后作为数值特征。
(3)负样本生成
  • 随机负采样:从未交互的电影中随机选择(如示例中的“爱情片”作为男性用户的负样本)。
  • 难例挖掘:选择与用户历史行为相似但未点击的物品(需额外策略)。

4. 模型的输入输出示例

假设模型输入为结构化特征,输出为用户和物品的Embedding:

用户塔输入(示例用户123):
{
  "user_id": 123,           # Embedding输入
  "age": 25,                # 归一化为0.6(假设最大年龄40)
  "gender": "男",            # 编码为[1,0]
  "history_clicks": [电影A, 电影B]  # 序列Embedding平均池化
}
物品塔输入(正样本电影X):
{
  "movie_id": 电影X,         # Embedding输入
  "genres": ["动作", "冒险"],  # Multi-hot编码或Embedding
  "director": "张艺谋",       # Embedding输入
  "rating": 8.5             # 归一化为0.85(假设满分10)
}
模型输出
  • 用户Embedding:[0.3, -0.2, 0.5, ...](假设维度为64)
  • 物品Embedding:[0.4, 0.1, -0.3, ...]
损失计算
  • 目标:最大化用户Embedding和正样本物品Embedding的点积,最小化与负样本的点积。
  • 损失函数示例:二元交叉熵损失(正样本标签为1,负样本标签为0)。

5. 关键总结

  • 训练数据本质:通过用户与物品的交互行为(正样本)和随机/难例负样本,学习用户和物品的匹配关系。
  • 特征设计:用户侧关注行为序列和画像,物品侧关注内容和属性。
  • 端到端训练:双塔模型是联合训练的,确保用户和物品的Embedding在同一空间对齐。

通过这种数据结构和训练方式,双塔模型可以高效捕捉用户与物品的潜在关联,为后续召回阶段提供高质量的候选集。