網站首頁 編程語言 正文
一、前言
1、背景
探索了在用戶-商品圖上的自監督學習,以提高GCNs推薦的準確性和魯棒性。該思想是用一個輔助的自監督任務來補充經典的推薦監督任務,通過自鑒別器來強化節點表示學習。具體來說,我們生成一個節點的多個視圖,最大化同一個結點不同視圖表示之間的相似性,最小化不同結點表示之間的相似性。我們設計了三個操作來生成視圖,分別是節點dropout、邊dropout和隨機游走,以不同的方式改變圖的結構。
傳統圖網絡例如PinSage,LightGCN。盡管基于GCN的方法取到了不錯的效果,但我們認為這些方法仍然受到了一些限制:
- 監督信號稀疏(數據稀疏):目前大多數推薦學習任務都是基于監督學習的范式,其中監督信號一般指用戶和物品的交互數據。然而這些交互數據通常來說是異常稀疏的,不足以學習高質量的表征。
- 傾斜的數據分布(冪律分布):推薦系統的交互數據通常呈現冪律分布,其中長尾部分low-degree的物品節點缺乏監督信號。然而,high-degree的物品節點在鄰居聚合和監督學習損失中占據了主導地位,對表征學習影響更大。因此,基于GCNs的方法傾斜于high-degree物品節點,犧牲了low-degree物品推薦的性能。
- 交互噪音:用戶提供的交互大多數是隱式的(clicks,views),而不是顯式的(ratings,likes,dislikes)。因此,收集到的交互通常包含噪聲,如用戶誤點擊了一個物品。而GCNs中的鄰居聚合操作則會加大這些交互噪音的影響,使得模型訓練更容易受到交互噪音的影響。
2、準備工作
這一部分很簡單,就是GCN的聚合操作,這里其實也是以lightGCN為根基在上面的改動
?過聚合鄰域節點的表示來更新自我節點的表示:
?這兩個公式就是一個意思,通過聚和鄰居節點,生成下一階的表示
下面這個是層結合生成最終的結點嵌入表示:(每一層嵌入的整合一起)
接下來就是內積預測得分:
?損失函數,使用BPR:
?二、SGL模型
定義自監督圖學習(Self-supervise Graph Learning, SGL)范式,作為監督學習任務的補充,下圖展示了SGL的流程,簡單來說,自監督學習任務從輸入數據之間的關聯構建監督信號。
在圖結構上設計了三個操作符:節點丟失、邊緣丟失和隨機行走,以創建不同的節點視圖。這些操作符同一表示如下:
?1、Node Dropout(ND)
圖中每個節點都可能以概率?ρ?被舍棄,連帶其連接的邊一起舍棄。
2、?Edge Dropout(ED)
圖中每條邊都可能以概率?ρ被舍棄。具體如下表示:
?3、Random Walk (RW)
上述兩個操作符生成的子圖在圖卷積的所有層中保持一致。為了探索higher capability,我們每層應用不同的子圖。這可以看做對于每個節點隨機游走的過程。這里做法為對每層單獨進行ED(不同的dropout rate 或 random seed),也就是說RW的掩碼矩陣是對層感知的:
?4、對比學習
在建立了節點的增強視圖后,我們將同一節點的視圖作為正對,將任意不同節點的視圖作為負對
,正對的輔助監督促進了同一節點的不同視圖之間的一致性來進行預測,而負對的監督則加強了不同節點之間的差異。形式上,我們遵循SimCLR,并采用對比損失,InfoNCE,以最大化正對的一致性,并最小化負對的一致性:
s(·)度量兩個向量之間的相似度,設為余弦相似度函數;τ 是超參數,稱為softmax中的溫度。
同理,物品的loss
5、多任務訓練
為了改進SSL任務的推薦,我們利用多任務訓練策略來聯合優化經典的推薦任務和自監督學習任務。
實驗結果:
原文鏈接:https://blog.csdn.net/zhao254014/article/details/126976609
相關推薦
- 2022-03-01 格式化日期‘年月日-時分秒’方法
- 2022-12-16 Python中選擇結構實例講解_python
- 2023-12-13 SpringMVC——訪問action報404錯誤詳解
- 2022-02-19 成功解決ParserError: Error tokenizing data. C error: E
- 2022-06-17 Go語言使用Request,Response處理web頁面請求_Golang
- 2022-01-11 Css設置border從中間向兩邊的顏色漸進效果
- 2022-05-08 總結Python函數參數的六種類型_python
- 2022-07-21 ubutu虛擬機和主機共享同一網絡
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支