系列文章传送门
(1)工业界推荐系统-小红书推荐场景及内部实践【业务指标、链路、ItemCF】
(2)工业界推荐系统-小红书推荐场景及内部实践【UserCF、离线特征处理】
(3)工业界推荐系统-小红书推荐场景及内部实践【矩阵补充、双塔模型】
(4)工业界推荐系统-小红书推荐场景及内部实践【正负样本选择】
(5)工业界推荐系统-小红书推荐场景及内部实践【线上召回和模型更新】
(6)工业界推荐系统-小红书推荐场景及内部实践【其他召回通道】
该系列文章根据小红书搜推算法工程师、团队负责人王树森B站上主讲的《工业界的推荐系统》之小红书业务场景及内部实践整理而得。感谢大佬分享工业界前沿的推荐系统实战技术!
矩阵补充
基本思路
数据集
训练
矩阵补充
实践中效果并不好,原因有:
1. 仅用ID embedding,没利用物品、用户属性。
- 物品属性:类目、关键词、地理位置、作者信息。
- 用户属性:性别、年龄、地理定位、感兴趣的类目。
- 双塔模型可以看做矩阵补充的升级版。
2. 负样本的选取方式不对。
- 样本:用户—物品的二元组,记作 ( 𝑢 , 𝑖 ) (𝑢,𝑖) (u,i) 。
- 正样本:曝光之后,有点击、交互。(正确的做法)
- 负样本:曝光之后,没有点击、交互。(错误的做法)
3. 做训练的方法不好。
- 內积 < a 𝑢 , b 𝑖 > <a_𝑢,b_𝑖> <au,bi> 不如余弦相似度。
- 用平方损失(回归),不如用交叉熵损失(分类)。
线上服务
模型存储
通常采用 近似最近邻查找(Approximate Nearest Neighbor Search) 的方法。即将矩阵B存储到支持最近邻查找的系统库中(如:Milvus、Faiss、HnswLib等等)。
衡量最近邻的标准:
- 欧式距离最小(L2 距离)
- 向量內积最大(內积相似度)
- 向量夹角余弦最大(cosine相似度)
双塔模型
模型架构
模型训练
- Pointwise:独立看待每个正样本、负样本,做简单的 二元分类。
- Pairwise:每次取一个正样本、一个负样本。
参考Paper:Embedding-based Retrieval in Facebook Search - Listwise:每次取一个正样本、多个负样本。
参考Paper:Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations
问题:正负样本的选择?
- 正样本:用户点击过的物品。
- 负样本:
- 没有被召回的?
- 召回但是被粗排、精排淘汰的?
- 曝光但是未点击的?
Pointwise训练
- 把召回看做二元分类任务。
- 对于正样本,鼓励 c o s ( 𝐚 , 𝐛 ) cos(𝐚,𝐛) cos(a,b) 接近+1。
- 对于负样本,鼓励 c o s ( 𝐚 , 𝐛 ) cos(𝐚,𝐛) cos(a,b) 接近−1。
- 控制正负样本数量为 1: 2 或者 1: 3。
Pairwise训练
改进的损失函数 logistic loss:
Listwise训练
引入Softmax 激活函数,最小化交叉熵损失,相当于最大化
S
+
S^+
S+,也即最大化正样本的相似度。
最后,再说一下不适用与召回模型的网络架构,如下图:
这种架构是在早期阶段对用户和物品进行融合,一般应用在粗排和精排阶段,因为需要将用户和每个物品(亿级别)都过一遍神经网络,时间复杂度非常高。