【推薦系統筆記】BPR損失函數公式

    • 一、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?))

      這表達了“偏好差越大,梯度越小,更新越小”,符合排序目標。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/81243.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81243.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/81243.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java 核心--泛型枚舉

作者:IvanCodes 發布時間:2025年4月30日🤓 專欄:Java教程 各位 CSDN伙伴們,大家好!👋 寫了那么多代碼,有沒有遇到過這樣的“驚喜”:滿心歡喜地從 ArrayList 里取出數據…

新能源行業供應鏈規劃及集成計劃報告(95頁PPT)(文末有下載方式)

資料解讀:《數字化供應鏈規劃及集成計劃現狀評估報告》 詳細資料請看本解讀文章的最后內容。 該報告圍繞新能源行業 XX 企業供應鏈展開,全面評估其現狀,剖析存在的問題,并提出改進方向和關鍵舉措,旨在提升供應鏈競爭力…

Centos 7 yum配置出現一下報錯:

One of the configured repositories failed (CentOS-$releaserver-Base), and yum doesnt have enough cached data to continue. At this point the only safe thing yum can do is fail. There are a few ways to work "fix" this: 1.解決CentOS Yum Repositor…

Redis 常見問題深度剖析與全方位解決方案指南

Redis 是一款廣泛使用的開源內存數據庫,在實際應用中常會遇到以下一些常見問題: 1.內存占用問題 問題描述:隨著數據量的不斷增加,Redis 占用的內存可能會超出預期,導致服務器內存不足,影響系統的穩定性和…

HOOK上癮思維模型——AI與思維模型【88】

一、定義 HOOK上癮思維模型是一種通過設計一系列的觸發(Trigger)、行動(Action)、獎勵(Reward)和投入(Investment)環節,來促使用戶形成習慣并持續使用產品或服務的思維框…

【playwright】內網離線部署playwright

背景:安裝好python3.9后,由于內網無法使用pip安裝playwright,多方收集資料,終于部署完成,現匯總如下: 1、playwright需要python3.7以上的版本,如果低于這個版本先要將python解釋器升級 2、在可…

Unity動態列表+UniTask異步數據請求

Unity動態列表UniTask異步數據請求 很久沒有寫東西了。最近有一個需求,在Unity項目里,有幾個比較長的列表,經歷了一翻優化,趁這幾日閑暇,記錄下來,給自己留個筆記,也送給有緣之人共同探討吧。 …

pandas讀取Excel數據(.xlsx和.xls)到treeview

對于.xls文件,xlrd可能更合適,但需要注意新版本的xlrd可能不支持xlsx,不過用戶可能同時需要處理兩種格式,所以可能需要結合openpyxl和xlrd?或者直接用pandas,因為它內部會處理這些依賴。 然后,…

2025年Jetpack Compose集成網絡請求庫的完整實施方案

Compose中集成網絡請求庫,網絡請求現在Retrofit是最流行的。 首先在Compose中如何進行網絡請求,而不僅僅是集成庫。因為Compose本身是UI框架,網絡請求其實還是通過ViewModel或者Repository來處理,然后通過狀態管理來更新UI。所以…

機器視覺開發-攝像頭掃描二維碼

以下是使用Python和OpenCV實現攝像頭掃描二維碼的最簡單示例: import cv2 from pyzbar import pyzbar# 打開攝像頭 cap cv2.VideoCapture(0)print("正在掃描二維碼... (按 q 鍵退出)")while True:# 讀取攝像頭幀ret, frame cap.read()if not ret:print…

Seata服務端回滾事務核心源碼解析

文章目錄 前言一、doGlobalRollback3.1、changeGlobalStatus3.2、doGlobalRollback 前言 本篇介紹Seata服務端接收到客戶端TM回滾請求,進行處理并且驅動所有的RM進行回滾的源碼。 一、doGlobalRollback doGlobalRollback是全局回滾的方法: ??首先依舊…

新聞客戶端案例的實現,使用axios獲取數據并渲染頁面,路由傳參(查詢參數,動態路由),使用keep-alive實現組件緩存

文章目錄 0.頁面要求1.功能要求2.開始路由配置2.1.嵌套二級路由如何配置?2.2.路由重定向,NotFound頁面,去除"#"號 3.實現底部導航欄的高亮效果4.渲染首頁:使用axios請求數據5.路由傳參5.1.回顧:查詢參數傳參或者動態路由傳參5.2.具體代碼 6.渲染詳情頁7.解決請求過程…

文件操作--文件包含漏洞

本文主要內容 腳本 ASP、PHP、JSP、ASPX、Python、Javaweb --# 各種包含函數 檢測 白盒 代碼審計 黑盒 漏掃工具、公開漏洞、手工看參數值及功能點 類型 本地包含 有限制、無限制 遠程包含 無限制、有限制…

ActiveMQ 性能優化與網絡配置實戰(二)

五、性能優化實戰 5.1 基礎配置調整 5.1.1 增加并發消費者 在 ActiveMQ 中,增加并發消費者是提高消息處理效率的重要手段之一。通過配置多個消費者并行處理消息,可以充分利用系統資源,加快消息的消費速度,從而提高系統的整體吞…

C++/SDL 進階游戲開發 —— 雙人塔防(代號:村莊保衛戰 17)

🎁個人主頁:工藤新一 🔍系列專欄:C面向對象(類和對象篇) 🌟心中的天空之城,終會照亮我前方的路 🎉歡迎大家點贊👍評論📝收藏?文章 文章目錄 二…

貪心算法精解(Java實現):從理論到實戰

一、貪心算法概述 貪心算法(Greedy Algorithm)是一種在每一步選擇中都采取當前狀態下最優決策的算法策略。它通過局部最優選擇來達到全局最優解,具有高效、簡潔的特點。 核心特點: 局部最優選擇:每一步都做出當前看…

深度學習框架:PyTorch使用教程 !!

文章目錄 一、PyTorch框架簡介 1.1 什么是PyTorch 1.2 PyTorch的優勢 二、從入門到精通的PyTorch使用教程 2.1 入門階段 2.1.1 環境安裝與配置 2.1.2 Tensor基礎操作 2.1.3 自動求導(Autograd) 2.1.4 構建神經網絡(nn模塊) 2.1.5 …

系統架構設計師:設計模式——創建型設計模式

一、創建型設計模式 創建型模式抽象了實例化過程,它們幫助一個系統獨立于如何創建、組合和表示它的那些對象。一個類創建型模式使用繼承改變被實例化的類,而一個對象創建型模式將實例化委托給另一個對象。 隨著系統演化得越來越依賴于對象復合而不是類…

Dinero.js - 免費開源的 JavaScript 貨幣處理工具庫,完美解決 JS 浮點數精度丟失問題

今天介紹一個在前后端處理貨幣的工具庫,logo 很可愛,是一只藍色的招財小貓。 本文封面圖底圖來自免費 AI 圖庫 StockCake。 Dinero.js 是一個用于貨幣計算的 JavaScript 工具庫,解決開發者在金融、電商、會計等場景中處理貨幣時的精度丟失、…

HNUST湖南科技大學-嵌入式考試選擇題題庫(109道糾正詳解版)

HNUST嵌入式選擇題題庫 1.下面哪點不是嵌入式操作系統的特點。(B) A.內核精簡 B.功能強大 C.專用性強 D.高實時性 解析: 嵌入式操作系統特點是內核精簡、專用性強、高實時性,而"功能強大"通常指的是通用操作系統&#x…