-
-
一、BPR损失函数公式
BPR 损失函数的核心公式如下:
L BPR = − ∑ ( u , i , j ) ∈ D ln σ ( x ^ u i j ) + λ ∣ ∣ Θ ∣ ∣ 2 L_{\text{BPR}} = - \sum_{(u, i, j) \in D} \ln \sigma(\hat{x}_{uij}) + \lambda ||\Theta||^2 LBPR=−(u,i,j)∈D∑lnσ(x^uij)+λ∣∣Θ∣∣2
其中:
- ( u , i , j ) (u, i, j) (u,i,j) 表示一个训练三元组,含义是“用户 u u u 更偏好物品 i i i(正样本)而非 j j j(负样本)”。
- x ^ u i j = x ^ u i − x ^ u j \hat{x}_{uij} = \hat{x}_{ui} - \hat{x}_{uj} x^uij=x^ui−x^uj:预测评分差值,表示用户 u u u 对物品 i i i 和 j j j 的兴趣差。
- x ^ u i \hat{x}_{ui} x^ui:模型预测的用户 u u u 对物品 i i i 的偏好分数,常用点积 p u T q i \mathbf{p}_u^T \mathbf{q}_i puTqi表示。
- σ ( ⋅ ) \sigma(\cdot) σ(⋅):sigmoid 函数, σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e−x1。
- ln σ ( x ^ u i j ) \ln \sigma(\hat{x}_{uij}) lnσ(x^uij):表示偏好差越大(即 i i i 比 j j j 更受欢迎)的可能性越大。
- λ ∣ ∣ Θ ∣ ∣ 2 \lambda ||\Theta||^2 λ∣∣Θ∣∣2:正则项,防止过拟合,( \Theta ) 表示所有模型参数,如用户/物品向量。
二、核心思想和直觉解释
BPR 的目标是学习一个排序模型,让用户 u u u 对正样本 i i i的评分高于负样本 j j j,即:
x ^ u i > x ^ u j ⇒ x ^ u i j = x ^ u i − x ^ u j > 0 \hat{x}_{ui} > \hat{x}_{uj} \Rightarrow \hat{x}_{uij} = \hat{x}_{ui} - \hat{x}_{uj} > 0 x^ui>x^uj⇒x^uij=x^ui−x^uj>0
我们希望最大化这个事件的概率,也就是最大化:
P ( x ^ u i > x ^ u j ) = σ ( x ^ u i − x ^ u j ) P(\hat{x}_{ui} > \hat{x}_{uj}) = \sigma(\hat{x}_{ui} - \hat{x}_{uj}) P(x^ui>x^uj)=σ(x^ui−x^uj)
这就变成了最大化一个排序概率的对数似然函数,也就是前面提到的 BPR 损失函数。
三、训练样本构造
由于是隐式反馈(如点击/未点击),我们无法获得负样本,只能从“未交互”中随机采样负样本:
- 对每个用户 u u u,正样本 i i i 是其交互过的物品。
- 随机采样一个用户 u u u 未交互的物品 j j j,作为负样本。
- 构造训练三元组 ( u , i , j ) (u, i, j) (u,i,j)。
四、梯度优化
对模型参数如 p u , q i , q j \mathbf{p}_u, \mathbf{q}_i, \mathbf{q}_j pu,qi,qj 进行 SGD 梯度更新时,关键是:
∂ L BPR ∂ x ^ u i j = − ( 1 − σ ( x ^ u i j ) ) \frac{\partial L_{\text{BPR}}}{\partial \hat{x}_{uij}} = - (1 - \sigma(\hat{x}_{uij})) ∂x^uij∂LBPR=−(1−σ(x^uij))
这表达了“偏好差越大,梯度越小,更新越小”,符合排序目标。
-