-
-
一、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 puT?qi?表示。
- σ ( ? ) \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?))
這表達了“偏好差越大,梯度越小,更新越小”,符合排序目標。
-