## [Deep Recommender System: Fundamentals and Advances - Introduction](https://www.youtube.com/watch?v=L2ombXN5L6k) 1. 推薦系統的定義與背景:推薦系統的目標是通過預測用戶對某些物品的偏好,來幫助用戶從大量的資料或者物品中篩選出相關的內容,但隨著網路普及與進步,資料量越來越多過於豐富導致的篩選困難,以上為推薦系統誕生的背景。 2. 推薦系統的資料來源:通常仰賴用戶與物品之間的歷史資料,還有用戶的特徵例如性別、職業、社交關係,以上的資料都可以幫助推薦系統預測用戶偏好。 - 這邊就可以衍伸出 [快速了解基礎推薦系統](https://medium.com/@winnie54liu0504/%E6%8E%A8%E8%96%A6%E7%B3%BB%E7%B5%B1%E6%98%AF%E4%BB%80%E9%BA%BC-what-is-recommender-system-445abf82795), [Recommendation System 推薦系統—常見演算法 CB, CF](https://jasmine880809.medium.com/recommender-system-%E6%8E%A8%E8%96%A6%E7%B3%BB%E7%B5%B1-content-based-filtering-and-collaborative-filtering-9d338b7b22bd) - ![image](https://hackmd.io/_uploads/Hy6mT4HRA.png) - 推薦系統的挑戰通常在於要如何從歷史資料中學習出用戶的偏好。 CF(協同過濾) 是一個常用的技術,基於用戶或者物品的歷史交互來做出預測 - 延伸出去的是 DL 相關的推薦系統,例如一般的 DL, RL, GNN 等方面 ## [Deep Recommender System: Fundamentals and Advances](https://www.youtube.com/watch?v=DzdM9d1nqKA) - Deep RS 基礎架構:embedding layer、hidden layer和predict layer。 - 常見的 Deep RS 包括使用 神經網路進行矩陣分解(Neural MF),結合線型模型與非線性模型的特熱,通過用神經網路架構提升用戶與物品之間的建模效果。 - 深度FM(DeepFM)结合了因子分解(FM)和神經網路,在不需要手動特徵工程的情況下同時學習淺層與深層的特徵互動的內容。 - 在社群推薦系統中,使用者的社交關係可用於增強使用者的表示學習,典型模型包括深度社交協同過濾(Deep Social Collaborative Filtering)和對抗學習社交推薦模型,利用双向映射函数學習不同領域的使用者表示。 - 顺序推薦模型通过使用者的歷史交互序列預測其未来行為,常用方法包括基于循環神經(RNN)和self-attention的模型,能够有效捕捉使用者的行為模式。 ### 延伸問題 - FM 是什麼 => 什麼是 Deep FM - CF => Deep CF ## [Deep Learning based Recommender System: A Survey and New Perspectives](https://arxiv.org/pdf/1707.07435) ### Overview - 這篇 papper 的目標是徹底回顧基於深度學習的推薦系統的文獻進展,為讀者提供一個全景視圖,讓他們能迅速了解並進入深度學習推薦領域。這篇 papper 為推薦系統領域的創新奠定了基礎,並探索了這一研究領域的豐富性。 總結來說,這篇 papper 的主要貢獻有三點: 1. 對基於深度學習技術的推薦模型進行了系統性回顧,並提出了一個分類方案來定位和組織當前的工作 2. 提供了對最先進技術的概述和總結 3. 討論當前 (2019 )挑戰和未解決的問題,並確定了這一研究領域的新趨勢和未來方向,以分享願景並擴展基於深度學習的推薦系統研究的視野。 <!-- 本文的其餘部分組織如下:第2節介紹推薦系統和深度神經網絡的基礎知識,我們還討論了基於深度神經網絡推薦模型的優勢和劣勢。第3節首先提出我們的分類框架,然後詳細介紹最先進的技術。第4節討論了挑戰和突出且未解決的研究問題。第5節總結了本文內容。 --> ### DL 技術 2.2 深度學習技術 - 多層感知機 (MLP) 大家很熟了就略過 - 自編碼器 (AE) 是一種非監督模型,試圖在輸出層重建其輸入數據。通常,瓶頸層(最中間的層)用作輸入數據的顯著特徵表示。自編碼器有許多變體,如去噪自編碼器、邊緣化去噪自編碼器、稀疏自編碼器、收縮自編碼器和變分自編碼器 (VAE)。 - 卷積神經網路 (CNN) 大家很熟了就略過。 - 循環神經網路 (RNN) 大家很熟了就略過。 - 受限玻爾茲曼機 (RBM) 是一種由可見層和隱藏層組成的雙層神經網路。它可以輕鬆堆疊成深度網路。這裡的「受限」指的是在可見層或隱藏層中沒有層內通信。 - 神經自回歸分佈估計 (NADE) 是一種基於自回歸模型和前饋神經網路的非監督神經網路。它是一種可處理且高效的數據分佈和密度建模估計器。 - 對抗網路 (AN) 是一種生成神經網路,由鑑別器和生成器組成。這兩個神經網路在極小化遊戲框架中相互競爭並同時訓練。 - 注意力模型 (AM) 是基於可微分的神經架構,通過對輸入序列(或圖像)進行軟內容尋址來操作。注意力機制通常在計算機視覺和自然語言處理領域中無處不在。然而,它在深度推薦系統研究中也成為一個新興趨勢。 - 深度強化學習 (DRL)。強化學習基於試錯範式運作。整個框架主要包括以下組件:代理、環境、狀態、行動和獎勵。深度神經網路與強化學習的結合形成了深度強化學習,並在多個領域(如遊戲和自動駕駛汽車)達到了人類水準的表現。深度神經網路使代理能夠從原始數據中獲取知識,並從中推導出高效的表示,而無需手工設計的特徵和領域啟發。 ### Why Deep Neural Networks for Recommendation? - Nonlinear Transformation:相對於線性模型,深度神經網絡能夠利用非線性激活函數來建模數據中的非線性。這一特性使其能夠捕捉複雜而微妙的用戶與物品之間的交互模式。傳統方法如矩陣分解 [這裡面就有補充到關於矩陣分解的內容](https://jasmine880809.medium.com/recommender-system-%E6%8E%A8%E8%96%A6%E7%B3%BB%E7%B5%B1-content-based-filtering-and-collaborative-filtering-9d338b7b22bd)、因子機和稀疏線性模型本質上是線性模型。例如,矩陣分解通過線性組合用戶和物品的潛在因子來建模用戶與物品之間的交互 ;因子機屬於多變量線性模型系列;顯然,SLIM 是一個具有稀疏性約束的線性回歸模型。線性假設作為許多傳統推薦系統的基礎,過於簡化,將大大限制它們的建模表達能力。眾所周知,神經網絡能夠通過改變激活函數的選擇和組合,以任意精度近似任何連續函數。這一特性使其能夠處理複雜的交互模式,並精確地反映用戶的偏好。 - Representation Learning:深度神經網絡在從輸入數據中學習潛在的解釋因子和有用的表示方面非常有效。在實際應用中,關於物品和用戶的大量描述性信息是可用的。利用這些信息可以增進我們對物品和用戶的理解,從而帶來更好的推薦。因此,將深度神經網絡應用於推薦模型的表示學習是自然的選擇。使用深度神經網絡輔助表示學習的優勢主要有兩方面: 1. 減少了手動特徵設計的工作量。特徵工程是一項勞動密集型工作,深度神經網絡能夠從原始數據中自動學習特徵,無論是無監督還是有監督的方法; 2. 使推薦模型能夠包含異質內容信息,**如文本、圖像、音頻甚至視頻**。深度學習網絡在多媒體數據處理方面取得了突破,並在從各種來源學習表示方面顯示了潛力。 - Sequence Modelling:深度神經網絡在多個序列建模任務中顯示出良好的結果。RNN 和 CNN 在這些任務中起著關鍵作用。兩者在挖掘數據中的序列結構方面都廣泛適用且靈活。建模序列信號是挖掘用戶行為的時間動態和物品演變的重要主題。例如,下一個 next-item/basket prediction 和基於會話的推薦是典型應用。 - Flexibility:簡單來說就是很多新興套件出現所以可以很輕易地建構複雜且有效的模型 ### 潛在限制 深度學習在推薦系統中的幾個潛在限制及其挑戰。儘管深度學習在預測方面取得了成功,但其“黑箱”特性使得**可解釋性**變得困難,然而,新的神經 Attention model 提高了模型的可解釋性。其次,深度學習對數據的需求量大,但在推薦系統領域中,獲取大量數據相對容易。最後,雖然深度學習需要大量的超參數調優,但這並不是其獨有的問題,而是整個機器學習領域普遍存在的挑戰。 ### 2019 當時最先進的 DL 推薦系統 待補 ## [Wide & Deep Learning for Recommender Systems](https://arxiv.org/pdf/1606.07792) - 2016 年的 model,閱讀這篇的目的是開始嘗試調查 DeepLearning 是如何引用進入推薦系統之中的 ### Abstraction - 廣義線性模型(GLMs)結合非線性特徵轉換,廣泛用於大型稀疏輸入的迴歸和分類問題。通過廣泛的交叉乘積特徵轉換來記憶特徵交互,既有效又可解釋,但泛化需要更多的特徵工程工作。深度神經網絡(DNNs)通過學習稀疏特徵的低維密集嵌入,可以在沒有太多特徵工程的情況下更好地泛化到未見過的特徵組合。然而,當用戶-項目交互稀疏且高階時,具有嵌入的深度神經網絡可能會過度泛化並推薦較不相關的項目。 > 這邊有提到 GLMs 廣義線性模型需要找時間補齊 ### Introduction - Memorization 記憶:所謂的 Memorization 就是從過去的interaction data 去學習什麼樣的 item 或是 feature 會常常出現,藉此去探討correlation的關係以作出推薦,所以Memorization主要著重的是推薦使用者「跟他過去使用產品相似的新產品」,有點類似Content-based推薦系統的概念 - Generalization 泛化:Generalization 的重點在於擴展使用者的 interest,增加使用者推薦列表中的 diversity,主要是利用 correlation 的 transitivity 來尋找一個使用者「還沒接觸過但是潛在會感興趣的 feature 或 item」 [引用自](https://shanewang0817.medium.com/%E8%AB%96%E6%96%87%E7%AD%86%E8%A8%98-wide-deep-learning-for-recommender-systems-8e0afd74a145) - Wide & Deep學習框架,用於聯合訓練具有嵌入的前饋神經網絡和具有特徵轉換的線性模型,適用於具有稀疏輸入的通用推薦系統。 - Wide & Deep推薦系統在Google Play上的實現和評估,Google Play是一個擁有超過十億活躍用戶和超過一百萬個應用程式的移動應用商店。至少已經商用過了 - 我們已經將我們的實現以及高層級API開源在TensorFlow1中。有開源 TF2 應該也要有不然就是要有更好的 > 這邊有提到 factorization machines 這個部分需要找時間把洞補起來 ### 推薦系統概覽 ![image](https://hackmd.io/_uploads/SyKSqtL00.png) - Retrieval(也有人叫他Candidate Generation):負責產生一個使用者有可能感興趣的list,作法多半是結合ML model以及人為定義的規則 - Ranking:就是將Retrieve出來item比較少的list計算分數並且排序,此部分會考量到使用者的個人資料(e.g. 國籍、語言)、背景資料(e.g. 使用的手機型號、今天是星期幾的幾點)、歷史資料(e.g. 使用者過去看過什麼App、下載過哪些) - 這篇文章中,我們重點關注使用 Wide & Deep學習框架的排序模型。 ### WIDE & DEEP LEARNING ![image](https://hackmd.io/_uploads/H1-u9KLCA.png) - 這邊總共分了三個不同種的模型,最左是只有 Wide Models,最右是只有 Deep Models,中間是一個模型的混合。 #### The Wide Component - Wide&Deep當中的wide component (左半) 是一個generalized linear model,主要使用的就是Logistic Regression ### #Deep Model - Wide&Deep當中的deep component (右半) 是一個feed-forward neural network,input是一些自行定義的feature(e.g., “language=en”),首先會先將這些high dimension, sparse的向量轉換到low dimension, dense的向量、也就是所謂的embedding vector或latent vector,最後再將這些embedding向量輸入Neural Network並得到最終的output。 - Deep Model在對這些feature做降維的過程中,能夠做到更好的Generalization,從low-dimensional feature學到一些feature之間的關係,並進而為user發現新的interest。 #### Joint Training of Wide & Deep Model ![截圖 2024-09-29 下午4.21.03](https://hackmd.io/_uploads/SJhxAYICC.png) - 這邊的joint training與ensemble並不相同,所謂的ensemble是將不同models各自訓練,在最後要預測時才會把output logit相加取平均、concat或weighted sum,而joint training則是在訓練時就將兩個models的output logit結合作為訓練時的輸出。在使用上也有不同的限制 ### Conclusion - 記憶和泛化對於推薦系統都非常重要。廣義線性模型可以使用交叉乘積特徵轉換有效地記憶稀疏特徵交互,而深度神經網絡可以通過低維嵌入泛化到以前未見過的特徵交互。我們介紹了Wide & Deep學習框架,結合了這兩種模型的優點。我們在Google Play的推薦系統上進行了生產化和評估,Google Play是一個大規模商業應用商店。線上實驗結果顯示,Wide & Deep模型與僅使用Wide或僅使用Deep的模型相比,顯著提高了應用程式的獲取率。 ### 實驗結果 > 這邊延伸出了,推薦系統是以什麼指標作為評估來評估模型好壞? - 這邊他們使用了 app acquisition rate 來去做評估,並且使用 online A/B test 來去做實驗,發現到在 Wide & Deep 推薦系統相較於控制組與 Deep 組都有更好的表現。 - 另外有關於 AUC 的指標,而很直觀的可以理解 Wide & Deep的版本相較於 Deep 來說更好。 ## TODO - [ ] 什麼是 factorization machines? - [x] 什麼是 GLMS - [ ] 推薦系統的模型評估 ### 評估推薦系統指標 - [AUC 在推薦系統的解釋](https://cloud.baidu.com/article/3323363) - 簡單來說就是預測用戶是否點擊,再去算 ROC curve 進而計算,與二元分類無異 ### Factorization Machine - [How does Netflix recommend movies? Matrix Factorization ](https://www.youtube.com/watch?v=ZspR5PZemcs&t=457s) - [paper](https://ieeexplore-ieee-org.nthulib-oc.nthu.edu.tw/document/5694074) ### GLMS 補充 廣義線性模型(Generalized Linear Model,GLM)是一種統計模型的擴展,它擴展了傳統線性回歸模型,能夠處理不符合常態分布的資料。GLM 的核心概念在於通過**連結函數(link function)**將線性預測變量和響應變量之間建立關係,從而可以應用於更廣泛的分布(如二項分布、泊松分布等)。GLM 的結構可以分成三部分: 1. **隨機成分**:響應變量 $Y$ 的分布,這個分布來自於指數分布族(Exponential Family),比如常態分布、泊松分布、二項分布等。 2. **系統成分**:一個線性預測變量,即自變量 $X$ 與回歸係數之間的線性組合。這一部分形式上與線性回歸一樣: $\eta = X\beta$ 其中,$\eta$ 是線性預測變量,$X$ 是自變量矩陣,$\beta$ 是回歸係數。 3. **連結函數(Link Function)**:用來連接系統成分(線性預測變量 $\eta$)與響應變量 $Y$ 的期望值 $E(Y)$。連結函數 $g(\cdot)$ 定義如下: $g(E(Y)) = \eta$ 這意味著響應變量的期望值通過某種函數變換與線性預測變量相連。 ### 常見的 GLM 類型 1. **線性回歸**:響應變量為常態分布,連結函數為恆等函數 $g(E(Y)) = E(Y)$。 2. **邏輯回歸**:響應變量為二項分布,連結函數為 logit 函數 $g(E(Y)) = \log\left(\frac{p}{1-p}\right)$,適用於二元分類問題。 3. **泊松回歸**:響應變量為泊松分布,連結函數為對數函數 $g(E(Y)) = \log(E(Y))$,適用於計數資料。 ### GLM 的特點 - **靈活性**:它不僅可以處理連續型資料,還能處理離散型資料。 - **統一框架**:不同的統計模型(如線性回歸、邏輯回歸、泊松回歸等)都可以在 GLM 的框架下得到解釋。 總結來說,GLM 是一種具有廣泛適用性的統計建模方法,能夠根據不同的數據分布選擇合適的連結函數和隨機成分。 ### 總結 GLMS 是一種線性模型的泛化,包含了線性回歸邏輯回歸柏松回歸的模型,不同模型差異只在於他們的連結函數,具有可以接收連續型與離散型資料的模型。 ## 使用者資料 1. 點擊行為(Clicks) - 當使用者點擊某篇貼文、影片或連結時,表示他們對這個內容有興趣。這是社群平台上常見的隱式回饋。 2. 瀏覽時長(Time Spent) - 在某篇貼文、影片或故事上的停留時間越長,通常反映了使用者對該內容的較高興趣。 3. 點讚(Likes) - 點讚是社群平台上一個強烈的隱式回饋信號,表示使用者對這篇內容有正面反應。 4. 評論(Comments) - 使用者主動對內容進行評論表明他們的高參與度,並且也可能反映出對該內容的深度興趣或意見。 5. 分享行為(Shares or Reposts) - 分享或轉發某個內容表示使用者認為這個內容值得讓他們的朋友或追蹤者看到,這是一個非常正面的隱式回饋信號。 6. 私訊分享(Direct Message Shares) - 將某篇內容透過私訊分享給朋友,表示使用者認為該內容具有私密性或更個人化的價值。 7. 瀏覽貼文互動區域(Viewing Comments or Reactions) - 當使用者進入某個貼文的互動區域(如點開查看評論或反應),這可以表明他們對該貼文有進一步的興趣。 8. 滾動行為(Scrolling Behavior) - 在社群平台上,當使用者不斷瀏覽和滑動訊息流時,對滑過的內容進行不同的互動(如點開或略過)可以幫助系統推斷哪些內容對他們更具吸引力。 9. 觀看影片進度(Video Watch Progress) - 當使用者觀看影片時,停留的時間或播放的進度是重要的隱式回饋。如果影片被完整播放,表示它非常吸引人;如果影片被快速跳過或關閉,表示吸引力較低。 10. 社交互動網絡(Social Graph Interaction) - 使用者與特定朋友或群組的互動頻率越高,社群平台可能會推斷這些人發佈的內容對使用者更相關,從而優先推薦這些內容。 11. 標記或提及(Mentions or Tags) - 當使用者在貼文或評論中標記朋友,這表示該內容具有一定的社交價值,可能對其社交圈中的其他人有吸引力。 12. 加入群組或社群活動(Group Joining or Event Participation) - 這類行為表明使用者對某類主題或活動有興趣,平台可以根據這些行為推薦相關的內容或活動。 13. 取消追蹤或屏蔽(Unfollowing or Muting) - 這是一個負面的隱式回饋信號,當使用者取消追蹤某人或屏蔽某個帳號,表示他們對這些內容不感興趣。 14. 打開通知或提醒(Notification Engagement) - 當使用者點擊來自某個帳號的通知,這代表他們對該帳號的內容感興趣,這可以幫助平台進一步推送相關內容。 1. 假資料、模擬資料 2. 最終的樣子大概長怎樣(個人化推薦) 3.