1.物品的相似性度量、提升多样性的方法
物品相似性度量
基于属性、基于物品向量
基于图文的(CNN+BERT)
CLIP 最有效的预训练方法
n对图片+文字,组成n(n-1)对负样本
提升多样性的方法
精排:给定n个候选物品,模型打分reward1,…rewardn
从n个中选k个
2.Maximal Marginal Relevance(MMR)[两两相似度]
精排给定n个候选物品,模型打分reward1,…rewardn
相似性sim(i,j)
选中集合S,未选中集合R
计算集合中每个物品i的Marginal Relevance分数:
MRi=θ⋅rewardi−(1−θ)⋅maxj∈Ssim(i,j)
MR_i=\theta\cdot reward_i-(1-\theta)\cdot \mathop{\max}\limits_{j\in S} sim(i,j)
MRi=θ⋅rewardi−(1−θ)⋅j∈Smaxsim(i,j)
MMR:
argmaxi∈RMRi
\arg \mathop{\max}\limits_{i\in R} MR_i
argi∈RmaxMRi
把选中的有从R移动到S
算法流程
S为空集,R为全集
选择精排分数最高的物品,从R移到S
做k-1轮循环:
a.计算R中所有物品的分数{MRi}i∈R\{MR_i\}_{i\in R}{MRi}i∈R
b.选出分数最高的物品,从R移到S
滑动窗口
因为随着S增大,sim约等于1,MMR失效
设置滑动窗口W,选中最近的10个物品,用W代替S
3.业务规则下的多样性算法
重排的规则
最多连续出现k篇某种(图文、视频)笔记
每k篇笔记最多出现1篇某种笔记(运营推广笔记boost>1)
前t篇笔记最多出现k篇某种笔记
MMR+重排规则
MMR每轮选出一个物品
重排结合MMR和规则,在满足规则的前提下最大化MR
每一轮先用规则排除掉R中的部分物品,得到子集R’
4.5.DPP多样性算法[整个S相似度]
数学基础
k个向量(线性独立)决定k维超平形体
面积:底×高(根据投影计算),衡量多样性,面积/体积大→多样性
det(VTV)=vol(P(v1,...vk))2
det(V^\mathrm T V)=vol(P(v_1,...v_k))^2
det(VTV)=vol(P(v1,...vk))2
DPP解决多样性问题
精排打分reward1,…rewardn,选k个
价值大:∑reward\sum reward∑reward大
多样性好:P(S)P(S)P(S)体积大
推荐系统:argmaxS:∣S∣=kθ⋅(∑j∈Srewardj)+(1−θ)⋅logdet(VSTVS)\arg \mathop{\max}\limits_{S:|S|=k} \theta\cdot (\sum_{j\in S}{reward_j})+(1-\theta)\cdot \log \det (V^\mathrm T_S V_S)argS:∣S∣=kmaxθ⋅(∑j∈Srewardj)+(1−θ)⋅logdet(VSTVS)
求解过程
argmaxS:∣S∣=kθ⋅(∑j∈Srewardj)+(1−θ)⋅logdet(VSTVS) \arg \mathop{\max}\limits_{S:|S|=k} \theta\cdot (\sum_{j\in S}{reward_j})+(1-\theta)\cdot \log \det (V^\mathrm T_S V_S) argS:∣S∣=kmaxθ⋅(j∈S∑rewardj)+(1−θ)⋅logdet(VSTVS)
argmaxS:∣S∣=kθ⋅(∑j∈Srewardj)+(1−θ)⋅logdet(AS) \arg \mathop{\max}\limits_{S:|S|=k} \theta\cdot (\sum_{j\in S}{reward_j})+(1-\theta)\cdot \log \det (A_S) argS:∣S∣=kmaxθ⋅(j∈S∑rewardj)+(1−θ)⋅logdet(AS)
组合优化问题,从集合1…n中选中k个
贪心算法求解
argmaxi∈Rθ⋅rewardi+(1−θ)⋅logdet(AS∪{i}) \arg \mathop{\max}\limits_{i\in R} \theta\cdot reward_i+(1-\theta)\cdot \log \det (A_{S\cup\{i\}} ) argi∈Rmaxθ⋅rewardi+(1−θ)⋅logdet(AS∪{i})
每轮选一个物品i
暴力求解
对于单个i,计算AS∪{i}A_{S\cup\{i\}}AS∪{i}需要O(∣S∣3)O(|S|^3)O(∣S∣3)时间
对于所有i,计算AS∪{i}A_{S\cup\{i\}}AS∪{i}需要O(∣S∣3⋅∣R∣)O(|S|^3 \cdot |R|)O(∣S∣3⋅∣R∣)时间
要求k个物品,需要求解公式k次,总时间复杂度O(∣S∣3⋅∣R∣⋅k)=O(nk4)O(|S|^3 \cdot |R|\cdot k)=O(nk^4)O(∣S∣3⋅∣R∣⋅k)=O(nk4)
总时间复杂度:O(n2d+nk4)O(n^2d+nk^4)O(n2d+nk4)
Hulu快速算法
Cholesky分解:AS=LLTA_S=L L^\mathrm TAS=LLT,L是下三角矩阵(对角线以上的元素全0
Cholesky分解可供计算AS{A_S}AS的行列式:det(L)\det(L)det(L)等于L对角线元素乘积;det(AS)=det(L)2=∏ilii2\det(A_S)=\det(L)^2=\prod_i{l^2_{ii}}det(AS)=det(L)2=∏ilii2
添加一行或一列的Cholesky分解变化小
DPP扩展
随着S变大,相似物品越来越多,物品向量趋近线性相关,det(AS)\det(A_S)det(AS)坍缩到0,对数趋于负无穷
滑动窗口
用滑动窗口W代替S
规则约束
贪心算法每轮从R中选一个,先用规则排除一部分得到R‘,再求解选择