B站 王树森推荐系统学习笔记 P8 P8 双塔模型 : 模型和训练1.使用Embedding层将 用户与物品的ID 以及 离散特征映射为一个向量 , 连续特征则通过归一化,分桶等处理 转化为特征向量 .2.将这些向量拼接起来 , 输入到神经网络 ( 可以是简单的全连接网络 也可以是 更复杂的结构)3. 神经网络最终会输出一个向量 , 即 : 用户\物品的表征 (供召回使用)双塔模型 :左侧塔提取用户的特征 , 右侧的塔提取物品的特征 (与矩阵补充模型的不同 : 使用了ID之外的多种特征作为双塔的输入) .最终两个向量的余弦相似度用于预估用户对物品的兴趣 .双塔模型的训练 :1.pointwise : 独立看待每个正样本 , 负样本 , 做简单的二元分类 .把召回看作是二元分类任务 ; 对于正样本 , 鼓励cos(a,b)接近1 ;对于负样本 , 鼓励cos(a,b)接近-1 ; 一般做法 : 控制正负样本数量为1:2 或 1:3 ;2.pairwise : 每次取一个正样本 , 一个负样本 .每一组的输入是一个三元组 :在这里 , 两个物品塔的Embedding层 与 全连接层是相同的 (共享参数 )用户与正样本的相似度越大越好 , 最好接近1 ;用户与负样本的相似度越小越好 , 最好接近-1 ;基本想法 : 鼓励正样本的相似度大于负样本的相似度 ;如果正样本的相似度大于(负样本的相似度m) , 则没有损失 ;否则 , 损失等于(负样本相似度m) - 负样本相似度3.listwise : 每次取一个正样本 , 多个负样本 .一条数据包含 :一个用户 , 特征向量记作 a .一个正样本 , 特征向量记作 b ;多个负样本 , 特征向量记作b1- , b2- ......bn- ;训练时 , 鼓励a与正样本的余弦相似度尽量大 ; 鼓励a与负样本的余弦相似度尽量小 ;(n1个余弦相似度会先通过激活函数 , 得到n1个分数 , 右侧为正负样本标签 , 表示鼓励正样本相似度接近1 , 负样本相似度接近于0 . ; 最后计算交叉熵得到损失函数 , 训练时最小化交叉熵表示鼓励S接近于Y .P9 双塔模型 : 正负样本正样本 : 曝光且有点击的用户-物品二元组 . ( 用户对物品感兴趣 )存在的问题 : (2/8法则) 少部分物品占据了大部分点击 , 导致正样本大多是热门物品.解决方案 : 过采样冷门物品 , 或者降采样热门物品 .过采样 : 一个样本出现多次降采样 : 一些样本被抛弃 .负样本 :简单负样本 :1. 未被召回的物品 , 大概率是用户不感兴趣的 .因为未被召回的物品 ≈ 全体物品 .因此 , 可以直接从全体物品中作抽样 , 作为负样本 .如何抽样 ? 均匀 or 非均匀均匀抽样 : 对冷门物品不公平 . ( 正样本大多数是热门物品 , 如果采用均匀抽样 , 便会导致大部分负样本都是冷门物品 -- 导致 热门物品更热 , 冷门物品更冷 )非均匀抽样 : 其目的是打压热门物品 .负样本抽样概率与热门程度(点击次数)正相关 .如: 抽样概率 正比于 (点击次数)0.75次方 这里的0.75是经验值2.Batch内负样本 :1个batch 内有n和正样本 , 一个用户和n-1个物品组成负样本 ;因此 , 这个batch内共有n(n-1)个负样本 ; 这些都是简单负样本困难负样本1.被粗排淘汰的物品(比较困难) 2. 精排分数靠后的物品(非常困难)双塔模型实际上可以看成是对正负样本做一个二元分类 :若将全体物品作为负样本(简单 ) - 分类准确率高若将被粗排淘汰的物品(比较困难) 作为负样本 -- 容易分错若将精排分数靠后的物品(非常困难)作为负样本 -- 更容易分错工业界常用的做法 :将不同难度的负样本混合起来作为训练数据 : 例如 : 50%的负样本是全体物品(简单负样本) , 50%的负样本是没通过排序的物品(困难负样本) .常见的错误 : (将曝光但未点击的物品作为负样本训练召回)曝光但未点击的物品通常作为负样本训练排序模型 .召回的目标 : 快速找到用户可能感兴趣与不感兴趣的物品 . 排序的目标才是区分用户感兴趣与非常感兴趣的 .有曝光但是没点击 : 说明已经是精排推荐给用户的物品了 , 很符合用户的兴趣 , 可能碰巧没有点击 , 若作为负样本训练召回 , 将产生负收益 .