問題解決:構建基於深度學習架構的推薦系統!
作者:Ivan Ilin,Vladimir Chikin,Kirill Solodskih
這篇文章解決了構建基於深度學習架構的推薦系統的一般問題。文中描述的特定架構是為的新智慧饋送提供支援,提升技能,檢查其效能,請嘗試使用產品測試版。
如果你瞭解推薦系統的一般概念和主流方悉的話,並瞭解解決方案的細節,請跳過本文的前兩部分。
介紹
推薦系統改變了我們與大量服務互動的方式。它們不是提供靜態資料,而是提供了互動式體驗,可以選擇留下你的反饋,並使提供的資訊實現個性化。推薦系統為每個使用者獨立建立個性化資訊流,但也考慮了所服務的所有使用者的行為。
通常,使用者不可能透過檢查線上電影網站中的電影、線上商店中的消費品或任何其他內容來選擇各種給定選項。如果服務中存在大量內容,則使用者將面臨資訊過載的問題。解決此問題的方法之一是利用目標建議。
iki是一種服務示例,其中目標內容起著至關重要的作用。Iki將成為使用者的個人事業和專業顧問,由機器學習和人工智慧相關技術提供支援。在使用者定義了其專業興趣領域之後,iki在推薦系統的幫助下建立了日常內容來源,以及下面描述的深度學習架構。
推薦系統問題設定的一般描述
任何推薦系統中存在的主要物件是使用者U,專案R和它們之間的一些互動。這這些互動通常以矩陣F(|U|x|R|)表示,每個單元格包含一些關於互動的資訊,也就是專案已被檢視/購買的事實、給定的評級,喜歡/不喜歡或其他資訊。根據系統中使用者和專案的數量,F矩陣可能變得非常大。但是每個使用者通常只給出一些評級或僅與系統中的一小部分專案進行互動,這導致非常稀疏的評級矩陣。眾所周知,可以減少稀疏模型的獨立引數的數量而不會顯著地丟失資訊。我們討論了在推薦系統中正確呈現評級資料的問題:我們必須透過具有固定長度n的向量將每個使用者對映到一些向量空間,n << |U|和每個專案,透過具有固定長度m,m <<|R 的向量到另一個向量空間。這個問題最常用的解決方案之一是F矩陣的SVD(奇異值分解),它給出了兩個形狀為|U|xn的矩陣和nx |R|對於給定的n,其乘積是矩陣F的最佳近似值。第一矩陣的行對應於使用者的向量,第二矩陣的行對應於系統專案的向量。讓我們相應地將這些向量稱之為使用者和專案的"SVD嵌入"。
在推薦系統中建立預測的傳統方法是協同過濾。這種方法的主要假設是,過去對某些專案給出類似評級的使用者將來傾向於對其他專案給出類似評級。解決協同過濾問題的最常用方法之一是利用初始稀疏評分矩陣F的SVD建立使用者和專案的密集嵌入、NG使用者和專案的SVD嵌入。
有幾個開放庫提供了基於使用者評級矩陣來構建各種推薦系統的工具。其中我們可以命名各種矩陣因子分解方法(SVD和NMF)、不同的最近鄰演算法、聚類方法,基於使用者和基於專案的模型。此類解決方案的示例是Surprise庫和LightFM庫。
除了關於使用者與專案互動的資訊之外,推薦系統中通常還有一些其他資料分別描述使用者和專案。這些資料可以是變化的和異構的,這些專案和使用者可以包含一些文字描述、數字特徵、分類特徵、影像和其他型別的資料。處理和使用這些資料的方式取決於特定問題,而不是推薦系統的通用部分。
推薦系統的主要屬性或指標是在大量使用者或專案的情況下的推薦相關性和可擴充套件性。該設定使得共同推薦系統的體系結構由兩部分組成:生成候選者(從大型專案集中選擇相對較小的子集)和排序模組,給出對所選子集中的每個項的使用者興趣的相關性評級。此評級通常用於按照使用者將看到的順序對專案進行排序。
深度學習驅動的推薦系統架構
具有深度學習架構的基於內容的推薦系統與系統中存在的實際內容密切相關。接下來我們將深入研究iki推薦系統的細節來描述深度學習(DL)方法。
在iki中,使用者與內容的互動是檢視和評級,這是使用者可以喜歡或不喜歡的任何內容元素。我們案例中的一個專案是一個網頁,其中包含部落格、文章、教程、課程或其他提供專業知識的內容。每個內容元素都有文字描述或文字本身。
內容嵌入是文字向量化過程的結果。我們使用具有300個維度的GloVe語言模型來向量化單獨的單詞。GloVe是史丹佛大學開發的語言模型,類似於word2vec(保留單詞的語義相似性)。區別在於除了保持語義之外,GloVe還利用了統計方法,考慮了文字語料庫中出現的單詞數量。
我們計算文字語料庫中所有出現的單詞的tf-idf權重,然後將對應於內容元素的向量計算是該內容元素中具有tf-idf權重的單詞的GloVe向量的加權和。
使用者可以向他的簡歷檔案中新增關於他當前和過去的工作的一些資訊(例如每個工作的職位和內容描述)。我們的系統處理這些資料,並使用為此目的開發的特殊語言模型Skills
Extractor提取每個使用者的專業技能列表。簡而言之,這個模型的想法是在英語簡歷的語料庫中學習"技能"的語義,並能夠從非結構化的英語文字中提取以前看不見的技能。使用者還可以人工新增一些技能。為了調整內容饋送,使用者必須在類似於Apple Music mechanics的分層標籤雲上選擇一些專業興趣的領域。iki提供數百種專業興趣,以及作為使用者內容饋送的一部分。使用者的技能和選定的標籤在我們的推薦系統中用作使用者的特徵。
用於訓練我們的推薦系統的另一組特徵是在將SVD應用於使用者的評級矩陣之後獲得的內容和使用者嵌入。這不是關於系統中評級和檢視的資訊的唯一用法,我們可以建立使用者的向量表示來描述他的觀看和評級內容。這是透過以下方式完成的:透過內容的向量表示,我們可以獲取使用者所檢視內容的整個語料庫中每個座標的最小值、最大值和平均值。該操作將產生三個向量,其長度與內容嵌入相同。我們對喜歡和不喜歡的內容集實施相同的操作,獲得另外6個具有相同長度的向量。在推薦系統訓練步驟中,這些密集嵌入也用作使用者的特徵。
使用者在內容向量空間中喜歡/不喜歡和檢視的內容,為簡單起見採用3D空間來描繪
生成候選者
對於每個標籤(內容主題),我們的推薦系統建立一組單獨的推薦,特別是選擇候選者子集以進一步排序。iki推薦系統的目標不僅是提供相應主題的內容,而且還按質量和專業水平對內容元素進行排序,以使得每個使用者的專業水平適應所得到的饋送。
讓我們更深入地瞭解候選者生成步驟的細節。對於每個標籤,我們的系統在以下機制的幫助下選擇排序的候選者:最近已經接收到特定使用者的正面評級的內容元素,以及圍繞這些選定的內容元素的集合被選擇(我們採用幾個鄰域的一些內容嵌入空間)被新增到候選空間。我們還考慮了在所選標籤上具有類似近期活動的使用者組(為該組使用者計算評級和檢視向量之間的餘弦距離)。最近檢視或評級的內容元素集也被新增到候選集中。所描述的鄰域半徑的變化提供了不同數量的生成候選者。
候選者排序
對於每個標籤,訓練單獨的神經網路例項並將其用於內容候選者排序。訓練每個神經網路例項,然後用於對與該標籤相對應的內容子集進行排序。排序網路將關於內容元素和使用者的一些資料作為輸入,並輸出1和-1之間的一些數字作為用於內容元素的最終排序的預測評級。該模型根據給定的評級和觀點進行訓練;該集合的每個樣本由使用者和內容元素組成,目標值為1表示喜歡,-1表示不喜歡,0表示使用者剛剛檢視內容而未給予任何評級。
排序神經網路有6個不同維度的輸入。第一個輸入獲取有關使用者所選標籤及其技能的資訊,這些資訊在嵌入下一層的密集使用者配置檔案中進行轉換。該資訊允許系統在對與特定興趣相對應的內容進行排序時考慮特定使用者的其他興趣(標籤)。iki中有一定數量的標籤,因此有關它們的資訊用固定長度的二進位制編碼向量進行編碼(所選標籤為1,其餘為0)。
使用SkillsExtractor從使用者簡歷中提取的技能可能有很大的不同,因此我們在統計上需要將它們進行標準化,以消除非常罕見的短語,並最終得到固定長度集。然後我們以與標籤相同的二進位制方式對技能進行向量化。在定期推薦系統訓練期間,我們會更新實際的技能集。
接下來的兩個輸入採用我們之前描述的使用者向量表示,包括評級和檢視的平均內容嵌入。它們的輸出在下一層結合在一起,在內容嵌入空間中建立密集使用者的嵌入,我們將其稱為密集使用者首選項嵌入。這兩個嵌入與其他輸入結合在一起,採用內容和使用者的SVD嵌入以及內容嵌入。獲得的向量向前傳遞,並經過神經網路的幾個密集層。最後一個網路圖層的啟用函式是tanh,它給出了[-1,1]中的輸出值。
iki中冷啟動的問題透過以下方式解決:對於沒有任何評級的特定標籤,系統向新使用者推薦一組彼此之間具有顯著距離的隨機內容元素。這提供了各種完全不同的內容元素,供新使用者在其體驗開始時進行選擇。
結果與模型的基準
在構建上述最終模型之前,我們已經在研究階段測試了各種推薦系統模型和組合(如SVD、NNMF等)。我們最終得到的模型顯示了特定iki資料集的最佳結果準確性。為基於深度學習的推薦系統提供有意義的基準並不是一項簡單的任務,因為排序網路的架構是針對特定型別的資料量身定製的,很明顯這個特定的架構優於任何基於互動矩陣的推薦系統,因為它利用了形成預測分數的更多資料。
另一個問題是,當你沒有足夠大的真實使用者庫、所有配置檔案,以及評級資料時,很難模擬真正的推薦系統效能。你可以生成一個資料集,但是生成一個資料集是沒有意義的,因此你需要為某些使用者量身定製一些技能、經驗和偏好,推薦系統將解碼此資訊,並根據人工使用者配置檔案定製建議。這種方法為現實世界的自發使用者的行為處理提供了空間,這真的很重要。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31509949/viewspace-2218474/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 推薦系統工程架構架構
- 如何構建推薦系統
- YouTube深度學習推薦系統的十大工程問題深度學習
- 基於使用者的協同過濾來構建推薦系統
- 構建基於深度學習神經網路協同過濾模型(NCF)的影片推薦系統(Python3.10/Tensorflow2.11)深度學習神經網路模型Python
- 基於深度學習的圖書管理推薦系統(附python程式碼)深度學習Python
- Netflix推薦系統(Part two)-系統架構架構
- 騰訊QQ看點團隊:用遷移學習架構解決短影片冷啟推薦問題遷移學習架構
- 基於深度學習模型Wide&Deep的推薦深度學習模型IDE
- 大廠的影片推薦索引構建解決方案索引
- 推薦系統實踐學習系列(三)推薦系統冷啟動問題
- 架構師必備:系統性解決冪等問題架構
- 推薦系統之業務架構總覽架構
- 解決方案架構、系統架構和企業架構區別架構
- 知了 | 基於NLP的智慧問答推薦系統
- 用深度學習打造自己的音樂推薦系統深度學習
- 系統設計:使用Scala、Spark和Hadoop構建推薦系統SparkHadoop
- 輕鬆構建基於 Serverless 架構的小程式Server架構
- 【推薦系統篇】--推薦系統之之特徵工程部分---構建訓練集流程特徵工程
- 架構設計模式主要用於解決什麼問題?架構設計模式
- 基於hyperf架構的後臺骨架系統架構
- 基於指標管理系統建設的BI工具推薦指標
- 基於 Nebula Graph 構建圖學習能力
- 知其然,知其所以然:基於多工學習的可解釋推薦系統
- 基於深度學習的影象語義分割技術概述之背景與深度網路架構深度學習架構
- 構建高效系統:必備熱門API介面集合的推薦API
- 使用LangGraph構建多Agent系統架構!架構
- 【推薦系統篇】--推薦系統介紹和基本架構流程架構
- 知識圖譜構建與應用推薦學習分享
- 解決日常“書荒”:深度學習書籍推薦瞭解下!深度學習
- 系統架構設計師學習(二)系統架構設計師緒論架構
- 深度學習在推薦系統中的應用綜述(最全)深度學習
- Clean架構能夠解決哪些問題? - jbogard架構
- 如何使用NodeJS構建基於RPC的API系統NodeJSRPCAPI
- 構建Potatso問題集錦及解決方案
- 基於Redis構建微服務的反應式架構 - bitsrcRedis微服務架構
- 我的推薦系統學習之路
- Linux基礎——ARM架構主機系統盤亂序問題Linux架構