智能推荐算法在直播场景中的应用
本文概覽:
1. 推薦系統(tǒng)是什么?
推薦系統(tǒng)是幫助用戶發(fā)現(xiàn)內(nèi)容,克服信息過載的重要工具;
它通過分析用戶行為,對用戶興趣建模。從而預測用戶的興趣并給用戶做推薦;
信息過載: 信息過載是信息時代信息過于豐富的負面影響之一。指社會信息超過了個人或系統(tǒng)所能接受、處理或有效利用的范圍,并導致故障的狀況。人們接受了太多信息,卻無法有效整合、組織及內(nèi)化成自己需要的信息,以致影響到人們的工作、生活以及人際關系等。信息過載主要表現(xiàn)為:(1)受傳者對信息反映的速度遠遠低于信息傳播的速度;(2)大眾媒介中的信息量大大高于受眾所能消費、承受或需要的信息量;(3)大量無關的沒用的冗余的數(shù)據(jù)信息嚴重干擾了受眾對相關有用信息的準確性的選擇。
興趣建模: 根據(jù)用戶過去的喜好來推測未來可能喜歡什么物料的過程。
2. 早期的推薦系統(tǒng)
早期的花椒推薦系統(tǒng)是基于熱度推薦的。對當前直播間的觀看人數(shù)、送禮人數(shù)、互動人數(shù)等做一定的加權求和,得到這個直播間的熱度分數(shù),根據(jù)這個分數(shù)對直播間進行排序做推薦。這不是一種模型推薦,更像是一種策略和規(guī)則推薦。
好處:
熱度高的直播質量有保證。熱度高大概率符合大眾的喜好或者符合當前的潮流趨勢等等,是有脫穎而出的地方。
壞處:
流量全部集中在頭部主播,小主播難以得到有效的曝光。 如果這一情況長期存在,小主播直播熱情沒了,可能就不直播了。這樣會對平臺的整體利益造成損害。
難以做到“千人千面”的個性化推薦效果。 有可能所有用戶看到的都是頭部主播,這樣就無法做到個性化推薦,也會造成用戶看膩的情況。
3. 現(xiàn)代推薦系統(tǒng)架構簡介
現(xiàn)代化推薦系統(tǒng)可以分為以下階段:首先,從百萬量級的全樣本數(shù)據(jù)中通過粗排序模型(召回模型) 生成百千級別的候選集;然后,通過精排序模型生成百十級別的候選集展現(xiàn)給用戶。可以看到,粗排一般用到的是比較簡單的如協(xié)同過濾模型等,并且一般只用到用戶的歷史行為數(shù)據(jù)作為特征。精排一般用一些基于特征的推薦系統(tǒng)模型,如深度類型的模型wide&deep,除了用到用戶的歷史行為數(shù)據(jù),還用到各種各樣的旁路信息。
4. 召回 VS 排序
召回階段: 用些成本低、易實現(xiàn)、速度快的模型(如協(xié)同過濾)進行初步篩選;
排序階段: 用更全面的數(shù)據(jù)、更精細的特征、更復雜的模型進行精挑細選;
當然,除了召回階段、排序階段,在實際業(yè)務中可能還有重排序和人工規(guī)則階段,這里是個策略出沒之地,就是集中了各種業(yè)務和技術策略。比如為了更好的推薦體驗,這里會加入去除重復、結果打散增加推薦結果的多樣性、強插某種類型的推薦結果等等不同類型的策略。按理說,這一階段沒什么可講的。但是,從技術發(fā)展趨勢角度看,重排階段上運用模型,來代替各種花樣的業(yè)務策略,是個總體的大趨勢。重排階段一般用List Wise排序,關于List Wise排序,可以從兩個角度來說:一個是優(yōu)化目標或損失函數(shù);一個是推薦模塊的模型結構。關于重排具體內(nèi)容可以看這篇文章:推薦系統(tǒng)技術演進趨勢:從召回到排序再到重排 - 張俊林的文章 - 知乎 https://zhuanlan.zhihu.com/p/100019681
5. 召回(Recall)
5.1 ?基于鄰域的協(xié)同過濾
5.1.1 ?鄰域建模的目的
鄰域建模的目的為:
把用戶對電影的原始評分日志轉換成評分矩陣的形式,并且矩陣中會存在大量的空白項;
建模的過程就是填充空白項的過程,這樣就得到了所有用戶對所有電影的評分(喜好程度),然后就可據(jù)此進行個性化推薦了;
那么,如何求解這些空白項呢?求解的過程可以分為兩步:
計算用戶/物品之間的余弦相似度:
基于相似度和現(xiàn)有評分矩陣填充缺失值:
5.1.2?基于物品的協(xié)同過濾
看上面的公式可能不太好理解,我們舉一個簡單的基于物品的協(xié)同過濾例子:
第一步:在評分矩陣中,1表示用戶交互過的評分,0表示算法需要填充的評分。用余弦相似度公式計算物品之間的相似度。然后,得到一個物品相似度矩陣。
第二步:根據(jù)公式,算出用戶對缺失物品的評分。把所有的評分算好后,可以填充評分矩陣中缺失的值。
通過上面的計算,假如我們要對用戶3進行推薦,得到用戶3未操作的物品B的評分為0.58,未操作的物品C的評分為0.82,按照評分大小進行排序,生成有序的推薦集,那么用戶3的推薦集為(物品C>物品B)。
5.1.3 ?花椒直播如何用?
花椒直播用的是item(主播)based model,即基于主播的協(xié)同過濾算法。
主要基于以下原因:
主播數(shù)量遠小于用戶數(shù)量,相似度矩陣維度小,計算少、易存儲(? );
根據(jù)用戶的歷史行為推薦,可以讓用戶比較信服(可解釋性強);
新用戶只要看過一個主播,就可以很快得到其他相似主播的推薦;
5.1.4 ?基于鄰域方法的小結
這是一種基于統(tǒng)計的方法,不是優(yōu)化學習的方法。(沒有學習過程和設立指標進行優(yōu)化得到最優(yōu)模型的過程)
只用了局部數(shù)據(jù)計算相似度、進行推薦,更像是一種策略。沒有用到全局數(shù)據(jù)。
當用戶或物品維度很大時,會占用很大的內(nèi)存。
基于這些原因,后面出現(xiàn)了基于隱向量的協(xié)同過濾方法進行推薦。
5.2 ?基于隱向量的協(xié)同過濾
5.2.1 ?傳統(tǒng)的矩陣分解
(1) 傳統(tǒng)矩陣分解建模的目的
和基于鄰域的方法一樣,基于矩陣分解方法建模的目的也是補全缺失值,只是補全的方法和基于鄰域的方法不太一樣。
(2) 顯示反饋VS隱式反饋
(3) 顯示反饋常用方法
顯示反饋常用方法就是把高維稀疏評分矩陣? 分解成兩個小矩陣?,? 乘積的形式,用兩個小矩陣乘積來擬合原始的大評分矩陣。目標函數(shù)就是均方誤差,公式形式很像LR,小矩陣擬合的越好,? 差值越小,最后損失函數(shù)也就越小。? 是一個正則化項。
(4) 隱示反饋常用方法
對于花椒直播推薦系統(tǒng)來說,隱式反饋是更常見的。因為我們不會讓用戶每看一個主播就打一個分數(shù),一般采用用戶和主播的交互程度來作為用戶對主播的偏好,交互程度一般選擇為觀看時長、點擊次數(shù)和觀看次數(shù)等。所以,隱式反饋做法和顯示反饋做法不太一樣。
隱式反饋首先根據(jù)交互程度? 來得到一個? 。比如,我們定義觀看時長大于10秒時? ,觀看時長小于10秒時? 。? 代表用戶的評分矩陣,取值范圍為? 。? 表示用兩個小矩陣來擬合全是0和1的大矩陣? 。這里比顯示反饋多了一項? ,表示用戶對物品的置信度,它正比于反饋次數(shù)? ,反饋越強烈,這一項值越大。可以把? 理解為加權訓練,交互程度越高,樣本的權重也就越高,占的損失也就越大,這樣訓練出來的模型效果會更好一點。
相關論文:
【1】Hu Y, Koren Y, Volinsky C. Collaborative filtering for implicit feedback datasets[C]//2008 Eighth IEEE International Conference on Data Mining. Ieee, 2008: 263-272.
(5) 如何求解X,Y矩陣?
不管是顯示反饋還是隱式反饋,只要定義好損失函數(shù)或者目標函數(shù),就可以通過最小二乘法(ALS)交替求解、矩陣。
(6) 線上怎么用?
中每行為一個用戶的隱向量,中每列為一個物品的隱向量。離線訓練好后將、兩個矩陣存起來,線上用時用戶來了取出用戶的隱向量,然后取出在線的主播的隱向量,算一下用戶向量和主播向量的內(nèi)積,內(nèi)積也就是得分,最后根據(jù)得分的高低進行排序。
(7) 傳統(tǒng)矩陣分解方法小結
優(yōu)點:
模型簡單易實現(xiàn);
線上速度快(可以離線訓練,線上只需要做點積);
存儲少(高維稀疏的評分矩陣變?yōu)閮蓚€低維稠密的隱向量矩陣);
缺點:
推薦結果可解釋性較差;
未用到其他特征,不夠綜合、全面(和ranking系列模型比);
(8) 基于矩陣分解和基于鄰域協(xié)同過濾方法的比較
5.2.2 ?基于深度學習的矩陣分解
(1) 深度學習+矩陣分解
有些示例表明,學到用戶/物品的隱向量后,直接用內(nèi)積描述用戶-物品交互關系(matching function) 有一定的局限性,即內(nèi)積函數(shù)(inner product function)限制了MF的表現(xiàn)力 。
隨著深度學習的興起,有學者提出了新的模型:即借鑒深度學習中的方法,使用深度神經(jīng)網(wǎng)絡 (DNN) 從數(shù)據(jù)中自動學習用戶/物品隱向量的交互函數(shù)(即內(nèi)積函數(shù)),在增強表現(xiàn)力的同時也可以引入一定的泛化能力。示例:NCF框架。(Neural Collaborative Filtering)
(2) Neural Collaborative Filtering(NCF)
下圖中,左邊是用戶的隱向量,右邊是物品的隱向量,如果直接做內(nèi)積的話,就是傳統(tǒng)的矩陣分解。NCF直接把內(nèi)積計算換成了DNN,并且變成了傳統(tǒng)機器學習的模式,用神經(jīng)網(wǎng)絡訓練的方式學習交互關系。
NCF論文:
【1】He X, Liao L, Zhang H, et al. Neural collaborative filtering[C]//Proceedings of the 26th international conference on world wide web. 2017: 173-182.
(3) NeuMF
集大成者的一個模型就是NeuMF(神經(jīng)矩陣分解)。如下圖所示,它提出了一個GMF Layer(廣義矩陣分解層)和一個DNN層。可以看到拿到用戶和物品的隱向量之后,一方面在GMF層做元素級別的乘積,其實內(nèi)積就是對應位置相乘再相加,NeuMF稍微改進了一下,對應位置相乘完之后,不是直接相加,而是再學一次權重,這就是在接一個Dense層來學習一下權重,相當于傳統(tǒng)的矩陣分解權重不在都為1,而是用網(wǎng)絡學習。另一方面,加入了一個DNN層。把用戶隱向量和物品隱向量直接Concatenate起來以后,直接接入一個DNN層。最后將兩方面的結果Concatenate起來接到輸出層。
這樣做的好處是,GMF Layer保留了內(nèi)積的方式NeuMF又引入了DNN的方式,結論表明這樣做既可以增強傳統(tǒng)矩陣分解的表現(xiàn)力又可以引入DNN自己的一些高階特征交叉的特點進而引入了一定的泛化性。
NeuMF論文:
【1】He X, Liao L, Zhang H, et al. Neural collaborative filtering[C]//Proceedings of the 26th international conference on world wide web. 2017: 173-182.
最后,關于深度協(xié)同過濾的內(nèi)容到這里就結束了,大家感興趣的話,可以參考“花椒技術公眾號”里文章:深度學習在花椒直播中的應用—神經(jīng)網(wǎng)絡與協(xié)同過濾篇,地址:https://mp.weixin.qq.com/s/ERfIcCJ7ne4OjfRStdR_vw 。這篇文章專門講一些神經(jīng)網(wǎng)絡和協(xié)同過濾的內(nèi)容,也含有一些代碼和實例,也是曾經(jīng)在花椒直播平臺用作召回的模型。
5.3 ?其它模型
隨著時代發(fā)展,基于鄰域的協(xié)同過濾和基于隱向量的協(xié)同過濾是比較常見的,現(xiàn)在也有其他模型的出現(xiàn),比如說Youtube的召回模型。
5.3.1 ?Youtube召回模型
Youtube的召回模型是比較復雜的,上面提到的召回模型都是用到了用戶和物品的id類特征,而Youtube模型用到了性別、地理信息、樣本的時間和一些embedded特征等。這個模型的特點就是:模型最后一層的輸出當作用戶的隱向量,是在線上實時計算的,就是每次用戶來經(jīng)過嵌入層變成向量再到ReLU這樣的網(wǎng)絡得到一個輸出作為用戶的隱向量;最后一層的權重當作物品的隱向量,這一部分是離線訓練好后直接存儲起來,線上不用直接更新,直接拿出來用就行;這些線上拿到用戶的隱向量以及存儲的物品隱向量以后,做一個基于類似最近鄰查找的方法基于內(nèi)積進行最近鄰查找,其實就是把用戶隱向量和所有物品隱向量做內(nèi)積,然后根據(jù)內(nèi)積進行排序。
Youtube的召回模型總的來說就是提出了下圖所示的框架,物品隱向量離線訓練完存好,用戶線上實時拿,并且可以用到很多個特征,而不是局限于上面提到的模型只用到用戶和物品的id類特征。這個模型還是挺火的,但是復雜度、延時要高一些。
Youtube召回模型論文:
【1】Covington P, Adams J, Sargin E. Deep neural networks for youtube recommendations[C]//Proceedings of the 10th ACM conference on recommender systems. 2016: 191-198.
5.3.2 ?其他召回模型
其他比較火的召回模型,比如說雙塔模型,基于DNN或FM的雙塔模型,這種模型的特點就是用戶和物品各一個塔,從這兩個塔中得到用戶和物品的隱向量,在線上也是用兩個隱向量進行內(nèi)積得到用戶對物品的得分,然后對得分進行排序。除此之外,其他召回模型還有基于用戶多興趣的模型、知識圖譜模型和圖神經(jīng)網(wǎng)絡等。這些模型都是比較新、比較潮流的,感興趣的話可以根據(jù)自己的場景進行試驗。
6. 精排(Ranking)
把特征輸入到模型中,用模型來做二分類,大于等于0.5是喜歡,小于0.5是不喜歡。如果是喜歡的話,怎么分喜歡和更喜歡呢?對物品做排序,分高的是更喜歡,其次是喜歡。
比如上圖中的例子,我們希望模型學到這樣的效果:北京35歲的年輕男性用戶王先生喜歡看“正在跳舞互動多的年輕女主播”,不喜歡“男性游戲主播”。這里面“北京”、“35歲”、“男性”、“王先生”(id類特征)是用戶特征,“正在跳舞”、“互動多”、“年輕”、“女主播”是主播特征。我們希望通過許多樣本,讓模型學出不同用戶的喜好。
6.1 ?特征工程
6.1.1 ?特征工程
6.1.2 ?訓練集的生成
根據(jù)用戶和主播前N天的數(shù)據(jù)來組成用戶畫像。
比如說,標簽的產(chǎn)生:以今天為例,看某個主播30秒,我們就認為是正樣本。看某個主播2秒,我們就認為是負樣本。訓練數(shù)據(jù)的產(chǎn)生:今天前N天的數(shù)據(jù)提取成用戶和主播的特征。比如,提取出用戶前N天看過哪些主播的行為序列數(shù)據(jù)或者用戶前N天累計送禮是多少的數(shù)據(jù)。由這些天的數(shù)據(jù)組成用戶和主播的畫像。最后,把用戶畫像、主播畫像和標簽對應起來就會形成一條樣本。我們就可以把今天的數(shù)據(jù)提取出來,組成訓練樣本。
當然,只用一天的數(shù)據(jù)作為訓練樣本肯定不夠。因為用戶不能保證每天都來,主播也不能保證每天都在。所以,我們要以上述的方式選出M天數(shù)據(jù),把M天訓練數(shù)據(jù)組成整體訓練集。這樣一方面可以保證數(shù)據(jù)量的要求,另一方面也能保證用戶和主播覆蓋度的要求。
特別需要注意,不能有數(shù)據(jù)穿透! 就是說,今天的數(shù)據(jù)我們當做標簽的話,生產(chǎn)畫像的時候,就一定不能包含今天的數(shù)據(jù),而是用不包含今天的前N天數(shù)據(jù)來生產(chǎn)畫像。
6.2 ?排序模型
6.2.1 ?早期的排序模型
LR
FM/FFM
GBDT+LR
(1) 邏輯回歸(LR)
可解釋性比較強:LR一個特征對應一個權重,很容易知道哪個特征比較重要,很容易解釋出什么樣的用戶喜歡什么樣的主播。
缺點:LR是一個線性模型,如果要引入非線性,就需要人工進行特征交叉,這樣成本就會很高。因為要保證特征交叉有效果,就要有相關業(yè)務的經(jīng)驗,要熟悉具體的業(yè)務場景。比如說做直播,工程師要熟悉直播的場景,才能知道什么樣的特征交叉在一起才是有效果。只有訓練集中出現(xiàn)過的特征組合才能學習到,沒有出現(xiàn)過的特征組合就學習不到,因此LR是偏重記憶泛化性差。
基于LR的上述缺點,有人就會想能不能進行自動的特征交叉?
(2) 因式分解機(FM)
FM缺點:FM只能進行二階特征交叉,如果想學高階特征交叉,FM公式后邊又要加入很多項,這樣組合起來的維度是爆炸的,所以就引入了GBDT+LR模型。
(3) GBDT+LR
樹模型是基于特征進行結點分裂的,樹模型從根結點到葉子結點這條路徑本身就是一種特征組合。比如說,根結點根據(jù)年齡大于等于20為左子樹、小于20為右子樹,下一層根據(jù)性別為男是左葉子結點、性別女為右葉子結點,那么從根節(jié)點依次下來就是年齡大于等于20且性別為男。有了特征交叉以后,把樹葉子結點進行編號。把編號作為LR模型的輸入進行訓練。
GBDT+LR的優(yōu)點是提出了一種用模型自動學習特征交叉的思想,這個是很重要的改進。因為人工特征交叉成本太高,用模型自動學習特征交叉的思想很重要。后來深度學習興起以后,各種Embedding特征交叉也算是這種思想的延伸。GBDT+LR模型還提出分步更新的級聯(lián)結構,因為模型分為兩部分,不是聯(lián)合訓練的,是分步訓練的,先訓練樹模型,然后葉子節(jié)點編好號,再訓練LR模型。
樹模型的缺點是不能并行且速度慢,尤其是GBDT樹,它的下一棵樹的輸入是前一棵樹的殘差,只能串行訓練,速度很慢。工業(yè)界的解決辦法就是分兩步,樹模型可以以天級別或周級別進行更新,LR模型可以在線上進行實時更新,就類似于利用FTRL這種實時框架來進行實時更新。樹模型容易過擬合高維稀疏數(shù)據(jù)。LR模型記憶性好,但是泛化性差。
GBDT+LR論文:
【1】He X, Pan J, Jin O, et al. Practical lessons from predicting clicks on ads at facebook[C]//Proceedings of the Eighth International Workshop on Data Mining for Online Advertising. 2014: 1-9.
6.2.2 ?深度排序模型
以上講的三個模型是早期的排序模型,隨著深度學習的興起,又出現(xiàn)了一大堆深度排序類的模型,為了方便我們把模型分為兩大類:
Wide&Deep類模型,如(x)DeepFM、DCN、DIN;
以多任務學習為基礎的聯(lián)合訓練模型,如ESMM、MMOE;
6.2.2.1 Wide&Deep類模型
(1) 深度神經(jīng)網(wǎng)絡(DNN)
DNN的優(yōu)點是學習特征間潛在關系,因為DNN是全連接層,所有元素級特征連接在一起,這樣盡管訓練集中沒有出現(xiàn)過的特征組合,DNN也可以學習到,有一定的泛化能力。
(2) Wide&Deep
有LR模型還有DNN模型,自然有研究者就把這兩者結合在一起。因為LR的好處就是記憶性,缺點就是人工特征交叉、特征工程復雜;DNN的好處就是泛化能力強、可以自動學習特征之間潛在關系、是一種端到端的模型。所以把它們兩個結合在一起后,即兼顧了記憶性、泛化性,還能端到端的訓練,serving起來也是比較簡單的。
從上圖的Wide&Deep模型中可以看出,左邊是一個LR,右邊是一個DNN。這種深淺雙塔結構的提出極大的促進了后續(xù)模型的發(fā)展,后續(xù)很多模型都是基于這個模型的改動。
Wide & Deep論文:
【1】Cheng H T, Koc L, Harmsen J, et al. Wide & deep learning for recommender systems[C]//Proceedings of the 1st workshop on deep learning for recommender systems. 2016: 7-10.
(3) FM + DNN = DeepFM
既然LR能和DNN結合,自然又有研究者想到FM也能和DNN結合,這就是DeepFM模型。與Wide&Deep模型的區(qū)別在于把左邊的LR換成了FM,這樣即能保證有LR部分的特點,還能多一個二階自動交叉的FM特點。
DeepFM論文:
【1】Guo H, Tang R, Ye Y, et al. DeepFM: a factorization-machine based neural network for CTR prediction[J]. arXiv preprint arXiv:1703.04247, 2017.
(4) DIN
還有一個比較有代表性的工作是阿里的DIN模型(深度興趣網(wǎng)絡)。這個模型的特點就是,把NLP領域中的Attention Network引入進模型中。把當前要預測的物品與用戶交互過的物品放到一個Attention層里,經(jīng)過Attention層會對用戶交互過的每一個物品學到不同的權重,然后進行加權平均拿到一個總的Embedding。Attention有效是基于這樣一種現(xiàn)象:觀察到用戶興趣的“多峰分布”以及“部分激活”的數(shù)據(jù)特點,舉個例子,假如當前我們要預測的物品是一件衣服,用戶的歷史行為里面有各種各樣的物品(衣服、吃的、玩的),我們預測衣服的時候,用戶過去吃的和玩的物品對當前的衣服預測是沒有參考價值的,只有過去交互過的衣服對于當前預測衣服是有價值的,Attention的作用就是對過去交互過的衣服賦予較大的權重,對吃的玩的物品賦予較小的權重,這樣就可以減少其它類物品的干擾。DIN模型也反映了模型是服務于場景的這一理念。
DIN論文:
【1】Zhou G, Zhu X, Song C, et al. Deep interest network for click-through rate prediction[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2018: 1059-1068.
(5) Wide&Deep類模型總結
我們對Wide&Deep類模型進行總結,近年來的許多深度模型都可以歸類為Wide&Deep類模型,這些模型有以下特點:
首先輸入離散特征轉化為Embedding,所有的Embedding經(jīng)過stacking layer級聯(lián)在一起。stacking layer有很多級聯(lián)方式,比如說最簡單的concatenate,像前面講的DNN那樣,把所有embedding橫向拼接在一起,然后接全連接層。還可以加權平均,比如某用戶瀏覽過十個物品,十個物品對應十個embedding,我們可以直接加起來求平均值,當成一個特征。還有也可以做內(nèi)積或者外積,這里也有對應的網(wǎng)絡。還有復雜點的,可以做Attention,像DIN一樣,把當前物品和用戶交互過的物品一起放到Attention網(wǎng)絡里面。根據(jù)這一層的不同可以劃分出好多網(wǎng)絡模型。
還有一個特點在特征交互層。特征交互層的wide部分可以用LR,也可以用FM,還可以用Deep & Cross Network中的交叉網(wǎng)絡。特征交互層的Deep部分,根據(jù)交互方法可以分為隱式/顯示、元素級/向量級、二階/高階。隱式的比如DNN這種,直接是全連接。顯示的比如說FM這種,每個特征都帶一個Embedding,可以把不同特征的Embedding以向量級的形式顯示的兩兩交叉。全連接就是元素級,FM就是向量級,向量級不會把特征的Embedding每一位拆開,向量級是直接把兩個特征的Embedding以向量的形式做內(nèi)積。二階交叉就像FM這種的,典型的只有二階交叉。高階交叉就像XDeepFM,它可以調(diào)節(jié)CIN網(wǎng)絡的個數(shù)來達到你想要的任意階的交叉。
所以,Wide&Deep類模型區(qū)別就在兩部分:一是特征交叉的方式是隱式/顯示、元素級/向量級、二階/高階中的哪一個;二是所有Embedding的級聯(lián)方式是concatenate/weighted sum/product/attention中的哪一種。
相關文章:
【1】深度學習在花椒直播中的應用——排序算法篇,地址:https://mp.weixin.qq.com/s/e6Spp7smIEUUExJxHzUOFA 。這篇文章主要是分析Wide&Deep類模型,這里面只簡單的介紹了五種排序模型,但是還有好多模型都可以歸為Wide&Deep類,都是在Wide部分或者Deep部分有一些改動,總體框架都是差不多的。
6.2.2.2 多任務類模型
推薦系統(tǒng)的多目標優(yōu)化,是目前業(yè)界的主流之一,也是很多公司的研發(fā)現(xiàn)狀。以花椒直播為例,可以優(yōu)化的目標有點擊、觀看、送禮、評論、關注、轉發(fā)等等。
多任務模型旨在平衡不同目標的相互影響,盡量能夠做到所有指標同步上漲,即使不能,也要盡量做到在某個優(yōu)化目標上漲的情況下,不拉低或者將盡量少拉低其它指標,力求達到全局最優(yōu)的效果。
(1) ESMM模型
ESMM模型首次把樣本空間分成了三大部分,從曝光到點擊再到轉化的三步行為鏈,并引入了瀏覽轉化率(pCTCVR)的概念。我們正常做CVR任務的時候,默認只在點擊的空間上來做,認為曝光、點擊并轉化了就是正樣本,認為曝光、點擊并未轉化為負樣本。如果這樣想的話,樣本全空間只有點擊的樣本,而沒有考慮沒有點擊的樣本。ESMM論文就提出曝光點擊、曝光不點擊以及點擊之后是否轉化所有的這些樣本都考慮進來,因此提出三步的行為鏈,提出如下公式:
因此提出了瀏覽轉化率公式,進而提出了上圖所示的網(wǎng)絡模型,一個雙塔模型,它們是共享底層Embedding層的,只是上面的不一樣,一個用來預測CTR,這個可以在全樣本空間上進行訓練。另一個是用來預測CVR,CVR是一個輔助任務。最后的CTCVR可以在全樣本空間中訓練。ESMM模型是一個雙塔、雙任務的模式在全樣本空間上進行訓練。這樣訓練的好處可以解決兩個問題:一是,樣本選擇的問題,CVR是在點擊的基礎上進行訓練,訓練集只有點擊的,實際數(shù)據(jù)可能有曝光點擊和曝光未點擊的數(shù)據(jù),我們往往把曝光未點擊的數(shù)據(jù)給忽略了,這樣就造成了樣本選擇偏差,訓練集和實際數(shù)據(jù)分布不一致的情況。二是,解決數(shù)據(jù)稀疏的問題。因為我們現(xiàn)在在全樣本空間上進行訓練,不是只在點擊的樣本上進行訓練,所以樣本就多了很多,所有樣本可以進行輔助更新CVR網(wǎng)絡中的Embedding,這樣Embedding向量就會訓練的更加充分。ESMM還提出子網(wǎng)絡MLP可以替換,為我們提供了一種可擴展的多任務模型架構。
ESMM模型有一個缺點:共享底層。共享底層在多任務上可能有問題,所有就有了MMOE的文章。
ESMM論文:
【1】Ma X, Zhao L, Huang G, et al. Entire space multi-task model: An effective approach for estimating post-click conversion rate[C]//The 41st International ACM SIGIR Conference on Research & Development in Information Retrieval. 2018: 1137-1140.
(2) MMOE模型
很多多任務模型是上圖(a)這種模式,共享一個底層的Embedding之后,然后兩個塔得到兩個任務。但是它的使用表明如果多任務的相關性比較低的話,模型的效果就比較差。基于這種現(xiàn)象就提出了上圖所示的(b)(c)專家網(wǎng)絡,希望不同的任務可以從輸入得到不同的東西,這就有點類似于Attention的部分了。用門來決定塔可以從輸入拿到什么東西,這樣的好處就是每一個Tower可以拿到不同的輸入,這樣就可以減少任務之間相互拖后腿的情況。這種架構也是目前比較常見的。
上面分享了花椒直播推薦系統(tǒng)從0到1的搭建過程,包括召回和排序過程,但可以發(fā)現(xiàn)這些其實是很通用的,完全可以應用于商品推薦、小視頻推薦等其他場景。下面會分享些直播場景和其他場景不一樣的地方。
MMOE論文:
【1】Ma J, Zhao Z, Yi X, et al. Modeling task relationships in multi-task learning with multi-gate mixture-of-experts[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2018: 1930-1939.
7. 智能推薦遇上花椒直播
7.1 ?直播內(nèi)容的理解和識別
直播中的推薦和商品推薦等場景有所不同,是“活的”而不是“死的”,因為直播是長時間連續(xù)性的,并且內(nèi)容是實時在變的,比如用戶喜歡看跳舞直播,那么當主播不跳的時候用戶可能也不想看了。因此我們需要把直播最核心、最精彩的部分挖掘出來推薦給用戶。這就需要對多模態(tài)內(nèi)容進行理解、融合,包括但不限于:
文本(如直播間標題、彈幕等);
圖片(如主播頭像、封面等);
視頻(如可以識別主播是否在跳舞、游戲、掛機等);
音頻(如可以識別主播是否在唱歌,在唱什么類型的歌等);
7.2 ?直播實時性特征
除了上面所說需要對直播的多模態(tài)內(nèi)容進行理解, 一些實時的數(shù)據(jù)也是非常重要的,它們一定程度上可以反映當前直播的火熱程度和受歡迎程度,放到模型中作為特征可以加強推薦系統(tǒng)的準確性和實時性。包括但不限于:
7.3 ?花椒直播推薦中的排序模型結構
原始輸入層:用戶特征、上下文特征、過去交互過的物品特征和當前要預測的物品的特征。
特征交互層:特征交互層就像上文總結的Wide&Deep類模型一樣,可以有很多部分。比如,FM可以來提取特征之間的二階交叉,舉例,拿用戶性別的Embedding和候選主播的Embedding來做二階交叉,FM可能會學到男用戶喜歡看女主播。CIN是多階交叉,可以拿多個特征放到CIN中進行高階特征組合。Attention就像DIN那種方式,可以把過去交互過的主播和當前要預測的主播放到Attention中。這樣當前預測主播是跳舞,可以把用戶過去看過的游戲主播權值訓練的小一些,過去看過的跳舞主播權值大一些,這樣就達到了篩選優(yōu)化的作用。還有簡單的方式,就是把這些Embedding全都連接起來,接一個全連接層。
特征拼接層:特征拼接層就是把特征交互層得到的Embedding向量拼接在一起,然后接個全連接。這個全連接可以起到降維的作用,把Embedding的維度降小一點。因為,多目標輸出層中還有多個tower。
多目標輸出層:類似MMOE的結構,可以設計一個專家網(wǎng)絡,這樣每個任務從特征拼接層的輸出中學到不同的東西,避免造成各任務之間相互干擾的情況。常見的任務有:點擊,用戶是否點擊了這個主播。觀看,可以定義觀看多少秒以下是無意義的觀看,多少秒以上是有意義的觀看,并且可以把觀看時長作為一個權重進行加權訓練。送禮,送的是正樣本,沒送的是負樣本,送了多少可以當成權重進行加權訓練。多任務訓練的好處就是可以用全樣本數(shù)據(jù),且原始輸入層中的Embedding也會訓練的更加充分。
7.4 ?模型訓練和更新的邏輯
訓練原始數(shù)據(jù)有用戶數(shù)據(jù)、物品數(shù)據(jù)、實時數(shù)據(jù)和上下文數(shù)據(jù)。用這些數(shù)據(jù)解析成用戶/主播畫像作為訓練數(shù)據(jù),用戶主播交互標簽作為訓練數(shù)據(jù)的label。離線訓練的部分,就是上文所講的訓練集生成的過程。每天生成一天的訓練樣本,把多天的訓練樣本組合起來形成全量樣本,滿足覆蓋度和數(shù)據(jù)量的要求。全量樣本直接存儲在HDFS上,以天或周的級別進行更新,這樣可以保證模型的準確性。另一部分是增量樣本,比如flink流,可以線上對模型進行流式更新,這樣可以滿足模型實時性的要求。模型驗證模塊,驗證模型指標有沒有達到我們期望的閾值,防止一些不好的特征把模型訓練壞了,還推上線的情況。模型驗證好之后,需要上線服務就可以用Tensorflow Serving這種框架來進行線上服務。推薦引擎用的是golang來處理用戶的請求,以及將請求轉化為特征,并把特征喂給Tensorflow Serving的一個流程。golang的性能比較高。
8. 總結
本文分享總結了花椒直播沿著業(yè)內(nèi)的發(fā)展路線從0到1搭建個性化推薦系統(tǒng)的過程,先后嘗試了許多模型,每個模型除了其典型的結構外,還有許多非常珍貴的細節(jié),比如公式推導、參數(shù)的選擇、工程上的trick等等,這些大家可以查閱相關模型論文。
要注意的是,沒有“最好的模型”,只有“最適合的模型”,并不是說模型越fancy越復雜,線上效果就會越好。比如阿里提出了DIN模型,是因為工程師們首先發(fā)現(xiàn)了數(shù)據(jù)中“多峰分布”、“部分激活”的現(xiàn)象,而在直播場景中這個特點就不是很明顯,因此上線了DIN模型后的提升也不是很大。
但直播場景也有其自身的特點,如多模態(tài)、實時性和熱點效應等。只有深入理解了場景,并基于用戶行為和數(shù)據(jù)提取出能表現(xiàn)這個場景的特征,再對應的開發(fā)適用于這個場景的模型,才能取得最佳的效果。
9. Reference
本文是Microstrong在觀看花椒直播推薦系統(tǒng)高級算法工程師王洋在B站上講解的《智能推薦算法在直播場景中的應用》視頻的筆記。
【1】花椒直播推薦系統(tǒng)高級算法工程師王洋:智能推薦系統(tǒng)在直播場景中的應用,視頻,地址:https://www.bilibili.com/video/av90507035?t=1453
【2】回顧 | 花椒直播推薦系統(tǒng)高級算法架構師王洋:智能推薦算法在直播場景中的應用,地址:https://mp.weixin.qq.com/s/1Hrl25TjDKiEvPa35RDyNQ
【3】深度學習在花椒直播中的應用——排序算法篇,地址:https://mp.weixin.qq.com/s/e6Spp7smIEUUExJxHzUOFA
【4】深度學習在花椒直播中的應用—神經(jīng)網(wǎng)絡與協(xié)同過濾篇,地址:https://mp.weixin.qq.com/s/ERfIcCJ7ne4OjfRStdR_vw
【5】深度學習在花椒直播的應用——Tensorflow 原理篇,地址:深度學習在花椒直播的應用——Tensorflow 原理篇
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習在線手冊深度學習在線手冊AI基礎下載(pdf更新到25集)本站qq群1003271085,加入微信群請回復“加群”獲取一折本站知識星球優(yōu)惠券,請回復“知識星球”喜歡文章,點個在看
總結
以上是生活随笔為你收集整理的智能推荐算法在直播场景中的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【TF-IDF】传统方法TF-IDF解决
- 下一篇: 2020年应届生找工作难?Python爬