推荐系统的发展演进历史和模型的目标及优缺点
推薦系統發展歷程
梳理推薦系統的模型進化歷程,明白模型改進了什么,有什么缺點。做到心中有一副big picture,才能明白未來模型的趨勢。
文章目錄
- 推薦系統發展歷程
- 前言
- 一、模型進化歷程
- 二、常見問題
- 1.EGES是單獨訓練還是聯合訓練?
- 總結
前言
前期已經詳細展示了各種推薦模型的原理和詳解。本次按照時間線把各個模型串聯起來。
一、模型進化歷程
-
1、90年代,推薦算法主要是協同過濾算法,產生了基于用戶(UserCF)、基于物品(ItermCF)的協同過濾算法。
- 優點:模型最簡單,計算快。
- 模型缺點:行為數據非常稀疏,模型欠擬合
-
2、2006年,產生了基于矩陣分解的協同過濾算法
- 優點:有點embedding的意思,但是沒有明確提出embedding技術。改善了模型數據的稀疏性,可以為沒有行為數據的物品和用戶做推薦,
- 實踐:利用MF協同過濾算法,為校園BBS論壇推薦用戶關心的top10熱點帖子。
- 缺點:只能用到行為數據一個特征,沒有充分利用其他信息。
-
3 、LR模型:針對協同過濾只能用一個特征的缺點,那時傳統機器學習大行其道,很自然就能想到最簡單的線性回歸模型LR。以及一些樹決策樹模型,比如GBDT、randomforest等。其中以線性回歸LR為代表。
- 優點:能利用多維度特征數據 ,計算速度快,目前仍有召回層采用此方法。
- 缺點:
- 1、模型過于簡單,表達力不強
- 2、特征之間相互獨立,未能充分挖掘特征組合的特性。
-
3、2010年,產生FM模型,針對LR模型未充分挖掘特征之間的相關性,引入了特征交叉的概念,借鑒了二階多項式模型,引入了特征之間的二階交叉項。
然后利用矩陣分解等優化手段,最終優化后表達式
讓FM可以達到線性時間的訓練和預測,精度高于LR。FM
后面再2017年,臺灣人提出了對FM的改進模型FFM,引入了field的概念,FFM把相同性質的特征歸于同一個field,有點特征降維和特征正交化的意思。FFM 由于引入了場,使得每兩組特征交叉的隱向量都是獨立的,可以取得更好的組合效果。 -
2013年,谷歌提出Word2vec模型,提出了embedding概念,開啟了全新是視角,后被廣泛應用到推薦系統,后續產生了Iterm2vec等一系列算法,為后續模型的發展,奠定了基礎。
- 優點:全新視角,用稠密向量表示物品,讓計算物品間的相似性成為可能。
- 缺點:只能處理類似時序性的序列,有些沒有很強時序性,比如人際關系網這種圖型結構,表達能力有限。
-
2014年,進一步在Word2vec embedding基礎上,產生了Graph Embedding算法,比如DeepWalk,采用隨機游走的方式,去捕獲關聯物品間的機構化信息。
- 優點:對圖結構有了表達能力
- 缺點: 僅僅考慮了圖節點間的鏈接權重,未進一步挖掘圖結構的結構信息,比如中興節點,周圍節點。
- 后續2016年斯坦福大學提出了Node2vec,通過調整隨機游走的權重,從而體現網絡的同質性(DFS)和結構性(BFS)。
-
同年2014年,Facebook提出了GBDT+LR模型,開啟了組合模型的概念,充分利用各個模型的優點,進行強強聯合,從而達到當個模型更好的準確率,性能提升3%。此時的GBDT決策樹有點特征自動組合交叉的意思。GBDT+LR在當時比賽中也常見。
- 優點:在當時算是傳統機器學習中最好的模型。2014年中國人陳天奇發明的XGboost算法,目前應該是決策樹模型的天花板,至今在各個數據比賽中依然常見,用XGboost+LR模型結合,模型的精度還是會比單個XGboost更好,我的cdsn論文中有描述。
- 實踐:實習時,采用此模型做了一個網上鮮花店的顧客興趣商品top10推薦。效果不錯。
- 缺點:傳統學習算法到達了性能瓶頸,再優化很難,未能充分挖掘物品之間的內在聯系信息。
-
2016年,谷歌提出了wide&deep模型正式把深度神經網絡引入到推薦系統,運用在了app推薦場景中。也成了后續改進模型的baseModle。整體有點集成學習的思想,wide部分是一個線性模型,利用了線性模型的記憶功能,deep部分是個3層的神經網絡,對稠密后的特征向量進行自動特征提取,因此具有泛化能力,最后集成wide和deep部分,聯合訓練,得到最終的結果。
- 優點:實現了對記憶和泛化能力的統一建模,提供了一種很好的思想,為后續模型改進提供了思路。
- 缺點:Wide部分還是需要人為的特征工程,人工地設計特征叉乘。
-
2017年,華為提出了DeepFM,也就是用FM替換了Wide&deep中的LR部分,這也是很容易想到的對LR模型是升級部分,但FM模型的特征交叉僅限于二階交叉,因此此模型的創新性不大。
- 優點:升級了Wide&Deep模型
- 缺點:特征交叉僅限二階,特征提取還不夠充分。
-
2017年,微軟提出了DCN模型,嘗試告別人工做特征交叉,提出了一種用cross network替換wide&deep模型的LR部分,cross network有點類似殘差網絡的結構,下一層元素等本層元素乘以第一層元素,然后再加上本次元素,因此,cross network設計多少層,就能做到多少階的特征交叉。此外,相比于wide@Deep,DCN的cross部分和deep部分的輸入是相同的,實驗表明,cross部分能幫助deep部分收斂。
- 模型優點:cross network自動做特征交叉。
- 模型缺點:這種特征交叉是bit(位)界別的,不是向量級別的。特征向量作為一個整體才更能表達一個特征維度,拆分成bit,可能會失去向量整體的意思表達。
-
2017年,新加坡國立大學提出了NeutralCF,也就是著名的雙塔結構,即采用神經網絡來優化最初的協同過濾算法。優化點有兩個:1、基于矩陣分解的協同過濾算法,最后用點積計算相似度,點積計算相似度還是太簡單了,把點積替換成了MLP,2、MLP可以下推分別放置在物品側和用戶側,最后模型就成著名的雙塔結構,塔頂的輸出就是物品側和用戶側的embedding向量,存儲起來,線上服務時,直接取embedding相似性作為推薦結果。
- 模型優點:對傳統協同過濾進行了升級,且易于部署。
- 缺點:模型還是過于簡單,特征利用率低,
- 只能使用一個特征,而 NeutralCF可以在矩陣分解得到的向量后,追加其他特征,最后送進MLP中,這個模型待求證。
-
2017年,阿里巴巴提出DIN模型,場景的出發點是覺得把用戶的embedding向量固定成一個,很難發現用戶和目標商品的相關性,如果用戶embedding向量能跟著待推薦商品的變化而變化,就更能精準的把握用戶的興趣向量,也就能推薦的越準確,baseModel就是把用戶embedding,歷史物品的平均池化embedding,和待推薦的目標物品embedding,加上場景信息embedding,concate成一個長長的向量,然后送進MLP進行學習訓練,DIN的創新點在于引入了激活單元,也就是歷史物品和待推薦物品的相關性,因為用戶的歷史物品和目標物品的關聯性不同,權重自然就應該不同,因此單純用average pooling會損失一些信息,所以我們先用一個激活單元,先算的目標商品和歷史商品之間的權重,然后再用權重進行pooling,有效的抽取到用戶的興趣。
- 優點:引入了用戶向量隨商品變動的機制,用戶向量更加靈活,興趣更能提取。
- 缺點: 沒有抓取用戶歷史物品的時序特性,同時,模型存在冷啟動問題。
-
2018年,針對冷啟動問題,阿里提出了EGES,也就是在deepwalk生成graph embedding時,加入了補充信息,即side information,很好的解決了冷啟動問題,工程實踐很很強,因為物品除了id類屬性,還有自身固有屬性,比如所屬商品分類等,也是重要信息,全新的商品加入時,用KNN選出最近鄰的N個商品,做average pooling,就能很好的表示出新商品的embedding,當然,阿里的EGES還引入了注意力機制,因為每個屬性的重要程度不一樣,所以把每個屬性的權重,也加入到模型進行訓練,最后的到根據權重相加的embedding。
- 優點:很好的解決冷啟動問題,工程實踐強,graph embedding方法主流就有Deepwalk、Node2vec、EGES。
- 缺點:目前沒有發現明顯缺點。
-
2019年,阿里巴巴對DIN未抽取時序特性進行了升級,得到DIEN,其實很好理解,對于時序性特征,最常見的處理手段是通過RNN、LSTM、GRU的專門處理時序的模型,其中以GRU最常見,因為模型最簡單,門控信號就只有更新門和重置門,而效果上和具有 遺忘門、輸入門、輸出門的3門LSTM效果相差不大。但阿里的創新點在于在GRU的基礎上添加了注意力attention機制,相當于在GRU中多添加了一個門叫attention門,最終輸出用的是歷史商品embedding是這個帶attention的GRU的輸出,達到了即抓住了用戶歷史序列特性,有抓住了歷史物品和目標物品的相關性。可以模擬用戶興趣隨時間的變化,所以叫興趣進化網絡。
- 優點:改進DIN無法抽取時序性特征的弱點。
- 缺點: 把歷史序列當成一個大集合,沒有進行細分,也就是沒有考慮用戶興趣變遷的過程。
-
干貨來了。推薦系統一直都在借用NPL中的算法,包括Word2vec,現在NPL也在快速發展,已經沒有人用Word2vec了,因為Word2vec無論是CBOW還是skip-gram,都僅僅是按詞頻提取了局部信息,無法獲取語境,比如apple,可以表示蘋果,也可以代表一個公司,Word2vec把詞用一個embedding向量表示,就無法根據上下語境來推測具體含義,因此,我們需要以更宏觀、全局的角度去獲取語境信息。
- 于是有了Seq2Seq模型,首次引入了encoder和decoder,編碼器和解碼器的概念,是基于RNN模型的序列輸入序列輸出模型,比Word2vec有10%的效果提升。但是RNN天生的缺點是會遺忘,原始的RNN記憶能力更差,具有輸入門、輸出門、遺忘門的LSTM會把記憶大致分成長期記憶和短期記憶,效果會好點,簡化的更新門和重置門的GRU計算量會稍微好點,當遺忘特性依然存在,后來有了雙向RNN,都是在改進遺忘特性。
- 另外RNN是串行模型,無法并行計算,所以計算效率也是短板。
- 接著,人們摒棄了RNN,發現了attention和self-attention,現在NPL已經沒人用RNN了,attention的優點是不會遺忘,并且可以并行計算。每次計算都會和之前的狀態計算相關性,然后把之前狀態按權重累加,做到了: 全局瀏覽、重點關注,所以叫attention注意力機制。當然計算量也會比Seq2Seq高,有三個權重矩陣需要訓練,分別為WKW_KWK?,WQW_QWQ?,WVW_VWV?,計算復雜度是encoder和decoder維度乘積。如果全局使用一個WKW_KWK?,WQW_QWQ?,WVW_VWV?叫單頭attention,如果使用多個WKW_KWK?,WQW_QWQ?,WVW_VWV?矩陣,類似于卷積神經網絡中的不用卷積核去提取信息,得到不同的結果。最后把不同的attention結果拼接起來,則叫多頭attention。多頭attention可以理解為疊加多次單頭attention的結果。
- 接著,模型進一步演化成了Transformer,現在,Transformer才是NPL領域的標準,Transformer利用6層attention和selfattention,配合全連接層來搭建encoder和decoder,摒棄了RNN結構,比seq2seq效果提升了5%。然后發展了bert,bert主要是用來預訓練transformer的encoder模塊,主要思想是隨機遮擋單詞進行預測,以及隨機拼接句子進行是否相鄰的判斷。目前,NPL最好的模型就是bert。
- 但是bert也有缺點:1、模型復雜,訓練非常耗時,2、bert無法準確捕獲序列時序位置信息。
- 2021年的AAAI論文中,很多就是基于bert進行進一步簡化和改進,比如fastBert、lightBert、miniBert等等。另外還有對位置信息的捕獲改進,比較出名的就是圖形分類的Ait模型,直接把位置信息加入到了bert最后得到的向量中,一起訓練,目前Ait模型性能已經超過最好的基于深度CNN模型的Alxnet。這一點也給我了一些啟發,后面詳細說下。
- 介紹了NPL,對推薦系統有什么改進呢?
-
2019年,阿里巴巴對DIEN進一步優化,得到了DSIN,重點是引入了session的概率和引入attention機制,因為用戶的興趣,在一段時間內可能會重點關注同一類物品,也就是一個session內是物品基本相似的,同質的,而在不同的時間段也就是不同session內是有較大差距的,也就是異構的,顯然之前的模型一股腦把歷史行為序列雜糅在一起,沒有準確抓住這種興趣隨時間變遷的規律。session最初出現在Airbnd模型中,也不是阿里原創,DSEN處理過程為:1、把歷史行為數據按時間段,比如30分鐘,拆分成一個個session,2、每個session提取一個 興趣向量, 3、每個session的興趣向量用attention機制,獲得每個興趣向量在全局中的embedding向量。4、attention的缺點是無法準確捕獲時序性和位置信息,自然會想到用處理時序新的LSTM、GRU等模型處理,這里創新點在于于用了BI-LSTM,也就是雙向(前向和后向都進行LSTM,然后進行拼接),這樣更能發現序列間的內在相關性。5、最后把歷史session興趣向量和目標商品進行權重計算,得到相關性,最后累加一起,得到最終商品的embedding向量。
- 優點:引入了attention機制和session處理,對用戶歷史序列進行了更細粒度處理,當然能挖掘到更多規律。
- 缺點: 模型復雜,時效性差。因為BI-LSTM也是串行模型,無法高效的并行計算。
- 個人可優化DSIN的點:
- 1.直接去掉BI-LSTM,因為BI-LSTM部分主要用來彌補attention獲得的embedding向量無法包含位置信息的缺點,那為何不直接把位置信息疊加進attention后的embedding向量,一起訓練,這樣模型直接學習到位置信息,還可以并行計算。這里可參照ViT模型的處理技巧,Vit是首次把Transformer運用在圖片分類中,于2021年發表,ViT模型在大數據上已經超越了基于CNN的ResNet等模型,在ViT模型中,把位置信息直接編碼,然后疊加到attention得到的向量上,這種方法被檢驗有效。另外BI-LSTM本身用在推薦模型在某些順序時序性場景就有點不切合,比如用戶買了筆記本電腦,大概率會買無線鼠標來配合使用電腦,這種先后順序很好理解,而反方向LSTM則會理解為,用戶先買了鼠標,然后為了配合鼠標使用,買了電腦,這明細不合適。給買了筆記本電腦的用戶推薦鼠標,CVR會較高,而給買了鼠標的用戶推薦筆記本電腦,CVR未必高。
- 2.session的劃分,按照時間窗口,難免會產生邊界效應或者叫興趣割裂,用戶瀏覽一個興趣商品的時間可長可短,用固定時間窗去分割,明顯不是最佳方式。我們重要的是抓住用戶興趣變化的點。我想到的辦法是用近期物品的embedding和以前一個時間窗中所有物品做相關性計算,如果近期的幾個物品和以往物品相關性小于某個閥值,則可以切分為不用的session。
- 3、降噪處理,根據步驟二中那近期物品和歷史物品進行相關性計算,還可以發現噪聲,比如用戶無意間點擊了一下廣告,然后又回到主興趣上來,此時用戶無意點擊的廣告信息,就可以當做噪音進行丟棄處理,或者當做第二興趣特征,平行訓練,這個需要依據依據業務特點進行確定。
- 目前正在模型的改進和驗證中,可考慮在國內期刊投稿。
-
重點介紹工程性很強的YoutubeNet及升級方式:
- 2016年,YoutubeNet因為極強的工程落地性,成了經典模型,目前知乎、山燭視頻等知名互聯網都在使用,模型設計也很巧妙,用來預測用戶對視頻的播放時長。很能切合實際的業務場景。
- 實踐:上市公司信息推薦app中,業務目標是:1、讓用戶對公司信息能深入閱讀,防范風險,2、讓用戶能接觸到更多用戶感興趣的上市公司,從而投資時能把資金分散到各個上市公司,避免雞蛋放在一個籃子里,從而降低投資風險。
- 商業模式:收取交易手續費,提高用戶投資金額就能獲得更多手續費。但更重要的是讓用戶能充分了解投資目標的基本面情況,降低投資風險。
- 技術解讀:預測對上市公司信息的閱讀時長,越長表示用戶越感興趣。
- 選型:業務場景和YouTube模型契合,和阿里的DIN、DIEN、DSIN不契合。
- YouTubeNet 創新點:
-
離線得到用戶embedding和物品embedding的設計很巧妙,先用用戶歷史序列embedding做avg-pooling,然后結合用戶的屬性信息,送進3層神經網絡,最后softmax預測目標視頻,巧在把最后softmax層對應的權重向量作為物品最終的embedding向量,而把softmax前一層的神經元輸出作為用戶embedding,這樣確保了用戶和物品embedding向量在同一個向量空間。
-
召回層直接用局部敏感哈希或者用Facebook開源的Faiss庫來快速召回物品。
-
其次,線上模型部分,訓練時加權邏輯回歸作為最終輸出,預測時用指數進行輸出,經過公式的推導和近似處理,發現指數輸出剛好是目標視頻的觀看時長。
-
- YouTubeNet模型的改進:實際中我們對模型進行了改進,用阿里EGES計算歷史物品的embedding向量,這樣很好的解決了冷啟動問題,同時加入了物品更多的補充信息side information,物品的embedding向量也更準確。
二、常見問題
1.EGES是單獨訓練還是聯合訓練?
總結
提示:這里對文章進行總結:
本文主要多推薦算法常見模型進行一個簡單的梳理,里面很多細節都可以拿出來問。徹底搞懂一個很重要。
總結
以上是生活随笔為你收集整理的推荐系统的发展演进历史和模型的目标及优缺点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tensorflow2 训练和预测使用不
- 下一篇: .net 窗体清除上次显示的内容_acc