推荐系统的双塔
解耦 user 和 item,部署时可分离
双塔训练
训练方式
三种训练方式
pointwise
pairwise
n对pairwise – listwise softmaxwise
样本选择
正: 用户点击物品
负:没有被召回
召回但是被排序模型淘汰的
曝光但未点击的
DSSM初代双塔
softmaxwise loss 更新
首先使用的是百度广告
YOUTUBE 双塔
in batch sampled softmax
- 负采样
在模型中也并不需要 整个batch来作为负样本来计算
可以考虑1:10, 1:100
- 纠偏
sample-bias-corrected
u,v计算出一个score之后
通过剪出这个物品被采样的log(pj)得到一个新的score
pj的计算 可以使用全局被采样的概率来计算
- 重要经验
重要经验:正则化和温度系数
如果不采用正则化 而直接采用点积
$$
\overrightarrow{a}\cdot\overrightarrow{b}=|\overrightarrow{a}||\overrightarrow{b}|\cos\theta
$$
想让点积越大,角度越小。是我们预想的训练方向。
但是 在模型中可能会增加item向量的模 导致模型训练坍塌。
所以要使用正则化
正则化之后 数据难收敛 [-1,1]
举个例子:
模型完美的预测成功了正样本 且负采样10个 也同样完美的预测出来
但 使用正则化预测出的分数为0.42 就很拉
添加了温度系数 预测分数达到了0.999 就很强
所以需要添加 温度系数
负样本构造总结 – 召回阶段很重要
召回元素怎么找
- 一个用户 和所有物品算相似度
效果一定好 但是时间慢了
- annoy - 只支持CPU 用的多
将物品的向量空间 通过树的形式 分割出来,确保每个树 有定量的样本
- Faiss - 啥都支持 但是 用的少