王树森推荐系统学习笔记_重排
重排
推荐系统中的多样性
物品相似性的度量
相似性的度量
-
基于物品属性标签。
- 类目、品牌、关键词……
-
基于物品向量表征。
- 用召回的双塔模型学到的物品向量 (不好)。
- 基于内容的向量表征 (好)。
基于物品属性标签
- 物品属性标签:类目、品牌、关键词……
- 根据 一级类目、二级类目、品牌 计算相似度。
- 物品 :美妆、彩妆、香奈儿。
- 物品 :美妆、香水、香奈儿。
- 相似度:,,。
基于图文内容的物品表征可以提升多样性。
可以用 CNN 处理图片输出特征向量,BERT 处理文字输出特征向量。最后将两个向量拼起来即可。
如何训练 CNN 与 BERT?
- CLIP 是当前公认最有效的预训练方法。
- 思想:对于 图片—文本 二元组,预测图文是否匹配。
- 优势:无需人工标注。小红书的笔记天然包含图片 + 文字,大部分笔记图文相关。
- 一个 batch 内有 对正样本。
- 一张图片和 条文本组成负样本。
- 这个 batch 内一共有 对负样本。
提升多样性的方法
粗排的后处理也需要多样性算法。
精排的后处理也被称为重排。
Maximal Marginal Relevance (MMR)
多样性
- 精排给 个候选物品打分,融合之后的分数为
- 把第 和 个物品的相似度记作 。
- 从 个物品中选出 个,既要有高精排分数,也要有多样性。
MMR多样性算法
-
计算集合 中每个物品 的 Marginal Relevance 分数:
-
是物品的精排分数, 是未选中的物品 与已选中物品的相似程度。精排分数分数越高,相似程度越低,物品的 MR 分数就越高。
-
Maximal Marginal Relevance (MMR): 从未选中物品中选出 MR 分数最高的
MMR 多样性算法
- 已选中的物品 初始化为空集,未选中的物品 初始化为全集 。
- 选择精排分数 最高的物品,从集合 移到 。
- 做 轮循环: a. 计算集合 中所有物品的分数 。 b. 选出分数最高的物品,将其从 移到 。
滑动窗口
-
MMR:
-
已选中的物品越多(即集合 越大),越难找出物品 ,使得 与 中的物品都不相似。
-
设 的取值范围是 。当 很大时,多样性分数 总是约等于 1,导致 MMR 算法失效。
-
解决方案:设置一个滑动窗口 ,比如最近选中的 10 个物品,用 代替 MMR 公式中的 。
-
标准 MMR:
-
用滑动窗口:
重排的规则
重排的规则
规则:最多连续出现 篇某种笔记
- 小红书推荐系统的物品分为图文笔记、视频笔记。
- 最多连续出现 篇图文笔记,最多连续出现 篇视频笔记。
- 如果排 到 的全部是图文笔记,那么排在 的必须是视频笔记。
规则:每 篇笔记最多出现 1 篇某种笔记
- 运营推广笔记的精排分会乘以大于 1 的系数(boost),帮助笔记获得更多曝光。
- 为了防止 boost 影响体验,限制每 篇笔记最多出现 1 篇运营推广笔记。
- 如果排第 位的是运营推广笔记,那么排 到 的不能是运营推广笔记。
规则:前 篇笔记最多出现 篇某种笔记
- 排名前 篇笔记最容易被看到,对用户体验最重要。
(小红书的 top 4 为首屏) - 小红书推荐系统有带电商卡片的笔记,过多可能会影响体验。
- 前 篇笔记最多出现 篇带电商卡片的笔记。
- 前 篇笔记最多出现 篇带电商卡片的笔记。
MMR + 重排规则
-
MMR 每一轮选出一个物品:
-
重排结合 MMR 与规则,在满足规则的前提下最大化 MR。
-
每一轮先用规则排除掉 中的部分物品,得到子集 。
-
MMR 公式中的 替换成子集 ,选中的物品符合规则。
DPP:数学基础
超平行体
-
2 维空间的 超平行体 为 平行四边形。
-
平行四边形中的点可以表示为:
-
系数 和 取值范围是 。
-
3 维空间的 超平行体 为 平行六面体。
-
平行六面体中的点可以表示为:
-
系数 取值范围是 。
超平行体
-
一组向量 可以确定一个 维超平行体:
-
要求 ,比如 维空间中有 维平行四边形。
-
如果 线性相关,则体积 。(例:有 个向量,落在一个平面上,则平行六面体的体积为 0。)
平行四边形的面积
以 为底,如何计算高 ?
-
计算 在 上的投影:
-
计算
-
性质:底 与高 正交。
平行六面体的体积
-
体积 = 底面积 × 。
-
平行四边形 是平行六面体 的底。
-
高 垂直于底 。
体积何时最大化、最小化?
-
设 、、 都是单位向量。
-
当三个向量正交时,平行六面体为正方体,体积最大化,。
-
当三个向量线性相关时,体积最小化,。
衡量物品多样性
-
给定 个物品,把它们表征为单位向量 。()
-
用超平行体的体积衡量物品的多样性,体积介于 和 之间。
-
如果 两两正交(多样性好),则体积最大化,。
-
如果 线性相关(多样性差),则体积最小化,。
-
给定 个物品,把它们表征为单位向量 。()
-
把它们作为矩阵 的列。
-
设 ,行列式与体积满足:
-
因此,可以用行列式 衡量向量 的多样性。
DPP:多样性算法
多样性问题
-
精排给 个物品打分:。
-
个物品的向量表征:。
-
从 个物品中选出 个物品,组成集合 。
- 价值大:分数之和 越大越好。
- 多样性好: 中 个向量组成的超平行体 的体积越大越好。
-
集合 中的 个物品的向量作为列,组成矩阵 。
-
以这 个向量作为边,组成超平行体 。
-
体积 可以衡量 中物品的多样性。
-
设 ,行列式与体积满足:
行列式点过程(DPP)
-
DPP 是一种传统的统计机器学习方法:
-
Hulu 的论文将 DPP 应用在推荐系统:
-
DPP 应用在推荐系统:
-
设 为 的矩阵,它的 元素为 。
-
给定向量 ,需要 时间计算 。
-
为 的一个 子矩阵。如果 ,则 是 的一个元素。
-
DPP 应用在推荐系统:
-
DPP 是个组合优化问题,从集合 中选出一个大小为 的子集 。
-
用 表示已选中的物品,用 表示未选中的物品,贪心算法求解:
求解DPP
暴力算法
-
贪心算法求解:
-
计算复杂度分析:
-
对于单个 ,计算 的行列式需要 时间。
-
对于所有的 ,计算行列式需要时间 。
-
需要求解上述式子 次才能选出 个物品。如果暴力计算行列式,那么总时间复杂度为:
-
-
暴力算法的总时间复杂度为:
Hulu 的快速算法
-
Hulu 的论文设计了一种数值算法,仅需 的时间从 个物品中选出 个物品。
-
给定向量 ,需要 时间计算 。
-
用 时间计算所有的行列式(利用 Cholesky 分解)。
-
Cholesky 分解 ,其中 是下三角矩阵(对角线以上的元素全零)。
-
Cholesky 分解可供计算 的行列式:
-
下三角矩阵 的行列式 等于 对角线元素乘积。
-
的行列式为:
-
-
已知 ,则可以快速求出所有 的 Cholesky 分解,因此可以快速计算出所有 的行列式。
-
贪心算法求解:
-
初始化: 中只有一个物品, 是 的矩阵。
-
每一轮循环:
- 基于上一轮算出的 ,快速求出 的 Cholesky 分解()。
- 从而求出 。
DPP 的扩展
滑动窗口
-
用 表示已选中的物品,用 表示未选中的物品,DPP 的贪心算法求解:
-
随着集合 增大,其中相似物品越来越多,物品向量会趋近线性相关。
-
行列式 会塌缩到零,对数趋于负无穷。
-
贪心算法:
-
用滑动窗口:
规则约束
-
贪心算法每轮从 中选出一个物品:
-
有很多规则约束,例如最多连续出 5 篇视频笔记(如果已经连续出了 5 篇视频笔记,下一篇必须是图文笔记)。
-
用规则排除掉 中的部分物品,得到子集 ,然后求解: