# 带有多样性的重排
## 物品相似度的度量
### 使用业务相关的特征
根据业务相关的特征,直接构造公式计算相似度

### 使用向量表征
塔模型学习得到的物品向量往往在长尾内容上学习表现不好,因此不适合用于物品间平等地度量相似度。
可使用CLIP算法自监督学习向量表征。


## MMR(Maximal Marginal Relevance)



### 滑动窗口优化

### 结合人工规则

## DPP
### 数学基础
对于一个 $n$ 维空间内,由 $k$ 个向量组成的集合 $S$ 或矩阵 $\bold V_S$($k \le n$),其构成的超平行体 $P(S)$ 的体积 $vol(P(S))$有如下规律:
- 当 $S$ 中的向量两两正交,$vol(P(S))$ 有最大值
- 当 $S$ 线性相关,$vol(P(S))$ 有最小值$0$
因此可以用 $vol(P(S))$ 作为优化目标,提升候选物品向量组的多样性(不相关性)

$vol(P(S))$ 有一种简单的计算方式:
$$
vol(P(S)) = det(\bold V_S^T\bold V_S)
$$
令 $\bold A_S = \bold V_S^T\bold V_S$, 使用Cholesky分解:
$$
\bold A_S = \bold L\bold L^T
$$
其中 $L_{k\times k}$ 为下三角矩阵,则计算又可简化为:
$$
\begin{align*}
vol(P(S)) &= det(\bold V_S^T\bold V_S) \\
&= det(\bold A_S) \\
&= det(\bold L\bold L^T) \\
&= det(\bold L)\space det(\bold L^T) \\
&= (\prod_{i\in 1,2, \dots, k} \bold L_{ii})^2
\end{align*}
$$
### 算法实现


### 滑动窗口与人工规则
与MMR一样,DPP也可以简单地引入滑动窗口优化或人工规则。