本文主要啟發來源SIGIR2018的這篇綜述性slides《Deep Learning for Matching in Search and Recommendation》,重點闡述搜索和推薦中的深度匹配問題,非常solid的綜述,針對里面的一些方法,尤其是feature-based的深度學習方法增加了近期一些相關paper。推薦系統和搜索應該是機器學習乃至深度學習在工業界落地應用最多也最容易變現的場景。而無論是搜索還是推薦,本質其實都是匹配,搜索的本質是給定query,匹配doc;推薦的本質是給定user,推薦item。本文主要講推薦系統里的匹配問題,包括傳統匹配模型和深度學習模型。
深度學習之風雖然愈演愈烈,但背后體現的矩陣分解思想、協同過濾思想等其實一直都是貫穿其中,如svd++體現的userCF和itemCF的思想,FM模型本質上可以退化成以上大多數模型等。多對這些方法做總結,有助于更深刻理解不同模型之間的關聯。
圖1 推薦和搜索的本質,都是match的過程
整個目錄大綱如下所示:
1.推薦系統概述
1.1 推薦系統本質
推薦系統就是系統根據用戶的屬性(如性別、年齡、學歷、地域、職業),用戶在系統里過去的行為(例如瀏覽、點擊、搜索、購買、收藏等),以及當前上下文環境(如網絡、手機設備、時間等),從而給用戶推薦用戶可能感興趣的物品(如電商的商品、feeds推薦的新聞、應用商店推薦的app等),從這個過程來看,推薦系統就是一個給user匹配(match)感興趣的item的過程。
1.2 推薦和搜索比較
推薦和搜索有很多相同又有很多不同的地方,放到一起的原因是兩者其實都是一個match的過程,圖1.1展示的是一個搜索引擎的架構,需要match的是query和相關的doc;圖1.2展示的是一個推薦系統的架構,需要match的是user(可能會帶有主動意圖的query)和相關的item。
圖1.1 搜索引擎架構
圖1.2 推薦引擎架構
1.2.1 搜索和推薦不同之處
(1) 意圖不同
搜索是用戶帶著明確的目的,通過給系統輸入query來主動觸發的,搜索過程用戶帶著明確的搜索意圖。而推薦是系統被動觸發,用戶是以一種閑逛的姿態過來的,系統是帶著一種“猜”的狀態給用戶推送物品。
簡單來說,搜索是一次主動pull的過程,用戶用query告訴系統,我需要什么,你給我相關的結果就行;而推薦是一次push的過程,用戶沒有明顯意圖,系統給用戶被動push認為用戶可能會喜歡的東西吧。
(2) 時效不同
搜索需要盡快滿足用戶此次請求query,如果搜索引擎無法滿足用戶當下的需求,例如給出的搜索結果和用戶輸入的query完全不相關,盡是瞎猜的結果,用戶體驗會變得很差。
推薦更希望能增加用戶的時長和留存從而提升整體LTV(long time value,衡量用戶對系統的長期價值),例如視頻推薦系統希望用戶能夠持續的沉浸在觀看系統推薦的視頻流中;電商推薦系統希望用戶能夠多逛多點擊推薦的商品從而提高GMV。
(3) 相關性要求不同
搜索有嚴格的query限制,搜索結果需要保證相關性,搜索結果量化評估標準也相對容易。給定一個query,系統給出不同結果,在上線前就可以通過相關性對結果進行判定相關性好壞。例如下圖中搜索query為“pool schedule”,搜索結果“swimming pool schedule”認為是相關的、而最后一個case,用戶搜索“why are windows so expensive”想問的是窗戶為什么那么貴,而如果搜索引擎將這里的windows理解成微軟的windows系統從而給出結果是蘋果公司的mac,一字之差意思完全不同了,典型的bad case。
圖1.3 部分query和document的相關性匹配
而推薦沒有明確的相關性要求。一個電商系統,用戶過去買了足球鞋,下次過來推薦電子類產品也無法說明是bad case,因為用戶行為少,推完全不相關的物品是系統的一次探索過程。推薦很難在離線階段從相關性角度結果評定是否好壞,只能從線上效果看用戶是否買單做評估。
(4) 實體不同
搜索中的兩大實體是query和doc,本質上都是文本信息。這就是上文說到的為什么搜索可以通過query和doc的文本相關性判斷是否相關。Query和doc的匹配過程就是在語法層面理解query和doc之間gap的過程。
推薦中的兩大實體是user和item,兩者的表征體系可能完全沒有重疊。例如電影推薦系統里,用戶的特征描述是:用戶id,用戶評分歷史、用戶性別、年齡;而電影的特征描述是:電影id,電影描述,電影分類,電影票房等。這就決定了推薦中,user和item的匹配是無法從表面的特征解決兩者gap的。
圖1.4 推薦系統的兩大實體:user和item
(5) 個性化要求不同
雖然現在但凡是一個推薦系統都在各種標榜如何做好個性化,“千人千面”,但搜索和推薦天然對個性化需求不同。搜索有用戶的主動query,本質上這個query已經在告訴系統這個“用戶”是誰了,query本身代表的就是一類用戶,例如搜索引擎里搜索“深度學習綜述”的本質上就代表了機器學習相關從業者或者對其感興趣的這類人。在一些垂直行業,有時候query本身就夠了,甚至不需要其他用戶屬性畫像。例如在app推薦系統里,不同的用戶搜索“京東”,并不會因為用戶過去行為、本身畫像屬性不同而有所不同。
圖1.5 應用寶搜索京東,不太需要很強的個性化結果
而推薦沒有用戶主動的query輸入,如果沒有用戶畫像屬性和過去行為的刻畫,系統基本上就等于瞎猜。
1.2.2 搜索和推薦相同之處
(1)本質是都是match過程
如果把user比作query,把item比作doc,那么推薦和搜索在這個層面又是相同的,都是針對一個query(一個user),從海量的候選物品庫中,根據query和doc的相關性(user過去的歷史、畫像等和item的匹配程度),去推薦匹配的doc(item)
(2)目標相同
搜索和推薦的目標都是針對一次context(或者有明確意圖,或者沒有),從候選池選出盡可能滿足需求的物品。兩者區別只是挑選過程使用的信息特征不同。
(3)語義鴻溝(semantic gap)都是兩者最大的挑戰
在搜索里表現是query和doc的語義理解,推薦里則是user和item的理解。例如,搜索里多個不同的query可能表示同一個意圖;而推薦里用來表示user和item的特征體系可能完全不是一個層面的意思。
2.推薦系統的傳統匹配模型
2.1 基于Collaborative Filtering的方法
2.1.1 CF模型
說到推薦系統里最經典的模型,莫過于大名鼎鼎的協同過濾了。協同過濾基于一個最基本的假設:一個用戶的行為,可以由和他行為相似的用戶進行預測。
協同過濾的基本思想是基于
(1)User-base CF:通過對用戶喜歡的item 進行分析,如果用戶a和用戶b喜歡過的item差不多,那么用戶a和b是相似的。類似朋友推薦一樣,可以將b喜歡過但是a沒有看過的item推薦給a
(2)Item-base CF: item A和item B如果被差不多的人喜歡,認為item A和item B是相似的。用戶如果喜歡item A, 那么給用戶推薦item B大概率也是喜歡的。比如用戶瀏覽過這篇介紹推薦系統的文章,也很有可能會喜歡和推薦系統類似的其他機器學習相關文章。
(3)model-base CF: 也叫基于學習的方法,通過定義一個參數模型來描述用戶和物品、用戶和用戶、物品和物品之間的關系,然后通過已有的用戶-物品評分矩陣來優化求解得到參數。例如矩陣分解、隱語義模型LFM等。
CF協同過濾的思路要解決的問題用數據形式表達就是:矩陣的未知部分如何填充問題(Matrix Completion)。如圖2.1所示,已知的值是用戶已經交互過的item,如何基于這些已知值填充矩陣剩下的未知值,也就是去預測用戶沒有交互過的item是矩陣填充要解決的問題。
圖2.1 用戶對左圖評分過的電影,可以用右圖矩陣填充表達
矩陣填充可以用經典的SVD(Singular Value Decomposition )解決,如圖2.1所示
圖2.2 SVD矩陣分解
其中左側M=m*n表示用戶評分矩陣,m矩陣的行表示用戶數,n矩陣的列表示item數,在大多數推薦系統中m和n規模都比較大,因此希望通過將M分解成右側低秩的形式。一般來說SVD求解可以分為三步:
(1) 對M矩陣的missing data填充為0
(2) 求解SVD問題,得到U矩陣和V矩陣
(3) 利用U和V矩陣的低秩k維矩陣來估計
對于第二步種的SVD求解問題,等價于以下的最優化問題:
其中yij為用戶i對物品j的真實評分,也就是label, U和V為模型預估值,求解矩陣U和V的過程就是最小化用戶真實評分矩陣和預測矩陣誤差的過程。
這種SVD求解方法存在以下問題:
(1) missing data(在數據集占比超過99%)和observe data權重一樣
(2) 最小化過程沒有正則化(只有最小方差),容易產生過擬合
因此,一般來說針對原始的SVD方法會有很多改進方法。
2.1.2 MF模型(矩陣分解)
為解決上述過擬合情況,矩陣分解模型(matrix factorization)提出的模型如下
MF模型的核心思想可以分成兩步
(1)將用戶u對物品i的打分分解成用戶的隱向量vu,以及物品的隱向量vi
(2)用戶u和物品i的向量點積(inner product)得到的value,可以用來代表用戶u對物品i的喜好程度,分數越高代表該item推薦給用戶的概率就越大
同時,MF模型引入了l2正則來解決過擬合問題
當然,這里除了用l2 正則,其他正則手段例如l1正則,cross-entropy正則也都是可以的。
2.1.3 FISM模型
上述提到的兩種模型CF方法和MF方法都只是簡單利用了user-item的交互信息,對于用戶本身的表達是userid也就是用戶本身。2014年KDD上提出了一種更加能夠表達用戶信息的方法,Factored Item Similarity Model,簡稱FISM,顧名思義,就是將用戶喜歡過的item作為用戶的表達來刻畫用戶,用數據公式表示如下:
注意到用戶表達不再是獨立的隱向量,而是用用戶喜歡過的所有item的累加求和得到作為user的表達;而item本身的隱向量vi是另一套表示,兩者最終同樣用向量內積表示。
2.1.4 SVD++模型
MF模型可以看成是user-based的CF模型,直接將用戶id映射成隱向量,而FISM模型可以看成是item-based的CF模型,將用戶交戶過的item的集合映射成隱向量。一個是userid本身的信息,一個是user過去交互過的item的信息,如何結合user-base和item-base這兩者本身的優勢呢?
SVD++方法正是這兩者的結合,數學表達如下
其中,每個用戶表達分成兩個部分,左邊vu表示用戶id映射的隱向量(user-based CF思想),右邊是用戶交互過的item集合的求和(item-based CF思想)。User和item的相似度還是用向量點擊來表達。
這種融合方法可以看成早期的模型融合方法,在連續3年的Netflix百萬美金推薦比賽中可是表現最好的模型。
2.2 Generic feature-based的方法
上述的方法中,無論是CF, MF, SVD, SVD++,還是FISM,都只是利用了user和item的交互信息(ratin g data),而對于大量的side information信息沒有利用到。例如user本身的信息,如年齡,性別、職業;item本身的side information,如分類,描述,圖文信息;以及context上下文信息,如位置,時間,天氣等。因此,傳統模型要講的第二部分,是如何利用這些特征,去構造feature-based的model.
圖2.3 特征體系三模塊:用戶信息、物品信息、交互信息
2.2.1 FM模型
首先要介紹的是大名鼎鼎的FM模型。FM模型可以看成由兩部分組成,如圖2.4所示,藍色的LR線性模型,以及紅色部分的二階特征組合。對于每個輸入特征,模型都需要學習一個低維的隱向量表達v,也就是在各種NN網絡里所謂的embedding 表示。
圖2.4 FM模型的稀疏one-hot特征輸入
FM模型的數學表達如圖2.5所示
圖2.5 FM模型的數學表達分解
注意紅色部分表示的是二階特征的兩兩組合(特征自己和自己不做交叉),向量之間的交叉還是用向量內積表示。FM模型是feature-based模型的一個范式表達,接下來介紹的幾個模型都可以看成是FM模型的特殊范例。
2.2.2 FM模型和MF關系
假如只使用userid和itemid,我們可以發現其實FM退化成加了bias的MF模型,如圖2.6所示
圖2.6 FM模型可以退化成帶bias的MF模型
數學表達式如下:
2.2.3 FM模型和FISM關系
如果輸入包含兩個變量,1)用戶交互過的item集合;2)itemid本身,那么,此時的FM又將退化成帶bias的FISM模型,如圖2.7所示,藍色方框表示的是用戶歷史交互過的item(rated movies),右邊橙色方框表示的是itemid本身的one-hot特征
圖2.7 FM模型可以退化成帶bias的FISM模型
此時的FM模型數學表達如下:
同樣道理,如果再加上userid的隱向量表達,那么FM模型將退化成SVD++模型??梢姡琈F, FISM, SVD++其實都是FM的特例。
2.3 傳統模型總結
上面介紹的模型都是通過打分預測來解決推薦系統的排序問題,這在很多時候一般都不是最優的,原因有如下幾個方面:
(1)預測打分用的RMSE指標和實際的推薦系統排序指標的gap
預測打分用的RMSE擬合的是最小方差(帶正則),而實際面臨的是個排序問題
(2) 觀察數據天然存在bias
用戶一般傾向于給自己喜歡的item打分,而用戶沒有打分過的item未必就真的是不喜歡。針對推薦系統的排序問題,一般可以用pairwise 的ranking來替代RMSE
如上述公式所示,不直接擬合用戶對item的單個打分,而是以pair的形式進行擬合;一般來說,用戶打分高的item>用戶打分低的item;用戶用過交互的item>用戶未交互過的item(不一定真的不喜歡)
3.基于representation learning的深度匹配模型
終于要講到激動人心的深度學習部分了。深度學習匹配模型從大致方向上可以分為兩大類,分別是基于representation learning的模型以及match function learning的模型。
本章主要講述第一種方法,representation learning,也就是基于表示學習的方法。這種方法會分別學習用戶的representation以及item的representation,也就是user和item各自的embedding向量(或者也叫做隱向量),然后通過定義matching score的函數,一般是簡單的向量點擊、或者cosine距離來得到兩者的匹配分數。整個representation learning的框架如圖3.1所示,是個典型的user和item的雙塔結構
圖3.1 基于representation learning的匹配模型
基于representation learning的深度學習方法,又可以分為兩大類,基于CF以及CF + side info的方法。下面的介紹將分別從input 、representation function和matching function三個角度分別看不同的模型有什么不同
3.1 基于Collaborative Filtering的方法
3.1.1 CF模型(collaborative filtering)
重新回顧下傳統方法里的協同過濾方法,如果從表示學習的角度來看,就是個經典的representation learning的模型,分別學習user和item的隱向量。
(1) Input layer
只有兩個,分別是userid(one-hot),itemid(one-hot)
(2) representation function
線性embedding layer
(3) matching function
向量內積(inner product)
圖3.2 CF是representation learning最基礎的模型
3.1.2 模型(Deep Matrix Factorization)
DMF模型也就是深度矩陣分解模型,在傳統的MF中增加了MLP網絡,整個網絡框架如圖3.3所示。
(1)input layer
由兩部分組組成,其中user由user交互過的item集合來表示,是個multi-hot的打分表示,如[0 0 4 0 0 … 1 5 …],在矩陣中用行表示;item也由交互過的user集合來表示,也是個multi-hot的表示,如[5 0 0 3 … 1 3],在矩陣中用列表示
圖3.3 DMF深度矩陣分解模型框架
可以發現這里的輸入都是one-hot的,一般來說M用戶數比較大,N作為item數量假設是百萬級別的。
(2)representation function
Multi-Layer-Perceptron,也就是經典的全連接網絡
(3)matching function
用cosine點擊表示兩個向量的匹配分數
對比普通的CF模型,最大的特點是在representation function中,增加了非線性的MLP,但是由于輸入是one-hot的,假設用戶規模是100萬,MLP的第一層隱層是100,整個網絡光user側的第一層參數將達到1億,參數空間將變得非常大
3.1.3 AutoRec模型
借鑒auto-encoder的思路,AutoRec模型對輸入做重建,來建立user和item的representation,和CF一樣,也可以分為user-based和item-based的模型。對于item-based AutoRec,input為R里的每列,即每個item用各個user對它的打分作為其向量描述;對于user-based AutoRec則是用R里的每行來表示,即每個user用他打分過的item的向量來表達。
用ru表示用戶向量,ri表示item向量,通過autoencoder將ru或者ri投射到低維向量空間(encode過程),然后再將其投射到正常空間(decode過程),利用autoencoder中目標值和輸入值相近的特性,從而重建(reconstruct)出用戶對于未交互過的item的打分。
(1) input layer
和DMF一樣,user用user作用過的item集合表示,item則用itemid本身表示,圖中在原slides是說user-autoencoder,但個人在看原始autoRec論文時,這塊應該有誤,應該是item-based的,因為m表示的是用戶數,n表示item數,下方的輸入表示所有user(1,2,3,…m)對item i的交互輸入
圖3.4 item-based的autoRec模型
(2)representation function
通過auto-encoder的結構表示,其中,h(r; theta)表示的是輸入層到隱層的重建;由于輸入的是用戶交互過的item(multi-hot),所以在隱層中的藍色節點表示的就是user representation;而輸出的節點表示的是item的representation,這樣就可以得到user和item各自representation,如下面公式所示
損失函數為最小化預測的平方差以及W和V矩陣的L2正則
(3)matching function
有了user和item的representation,就可以用向量點擊得到兩者的匹配分數
3.1.4 模型 (Collaborative Denoising Auto-Encoders )
CDAE模型類似SVD++的思想,除了userid本身表達用戶,也將用戶交互過的item作為user的表達。
(1) input layer
用戶id,用戶歷史交互過的item;以及itemid??梢园l現對比上述基礎的autoRec,用戶側輸入同時使用了用戶歷史交互過的item以及userid本身這個bias,思想很類似SVD++。如圖3所示的input layer節點,綠色節點表示每個用戶交互過的item,最下面的紅色節點user node表示用戶本身的偏好,可以認為是userid的表達
(2) representation function
圖3.5 CDAE模型結構
其中,中間藍色的隱層節點作為用戶表示,其中Vu為input layer中的user node的representation,針對所有用戶id會學習一個和item無關的vu向量表達,可以認為是用戶本身的bias,例如有些用戶打分本身比較嚴格,再好的item打分也不會太高;有些用戶打分很寬松,只要item別太差都會給高分,加上Vu可以更好的刻畫用戶之間天然的bias。
而對于輸出層的節點,可以認為是用戶u對物品i的打分預測
(3) matching function
使用向量點積作為匹配分數
3.1.5 基于CF方法的深度模型總結
總結下以上基于CF的方法,有以下幾個特點
(1)user或者item要么由本身id表達,要么由其歷史交互過的行為來表達
(2)用歷史交互過的行為來作為user或者item的表達,比用id本身表達效果更好,但模型也變得更復雜
(3) Auto-encoder本質上等同于MLP+MF,MLP用全連接網絡做user和item的representation表達
(4) 所有訓練數據僅用到user-item的交互信息,完全沒有引入user和item的side info信息
3.2 基于Collaborative Filtering+ side information的方法
基于CF的方法沒有引入side information,因此,對于representation learning的第二種方法,是基于CF + side info,也就是在CF的方法上額外引入了side info。
3.2.1 DCF模型(Deep Collaborative Filtering)
(1) input layer
除了用戶和物品的交互矩陣,還有用戶特征X和物品特征Y
(2) representation function
和傳統的CF表示學習不同,這里引入了用戶側特征X例如年齡、性別等;物品側特征Y例如文本、標題、類目等;user和item側的特征各自通過一個auto-encoder來學習,而交互信息R矩陣依然做矩陣分解U,V。整個模型框架如圖3.6所示。
圖3.6 DCF模型框架
其中W1, 表示的用戶側特征X在auto-encoder過程中的encode部分,也就是輸入到隱層的重建,P1表示的是用戶特征到交互矩陣R的映射;而W2表示物品側特征Y在auto-encoder過程中的encode部分。P2表示的是物品特征到交互矩陣R的映射。
損失函數優化,需要最小化用戶側特征的reconstruction和item側的encoder部分,以及交互矩陣和預測矩陣的平方差,還有加上L2正則。如圖3.7第一個公式
圖3.7 CDAE模型的損失函數分解
圖3.7下面兩組公式中,可以看出用戶側和物品側特征都由兩項error組成,第一項衡量的是input和corrupted input構建的預估誤差,需要保證W1和W2對于corrupted 后的input x 和y不能擬合太差;第二項表達的是映射后的隱層特征空間W1X和投射到U矩陣的誤差不能太大。
簡單理解,整個模型的學習,既需要保證用戶特征X和物品特征Y本身encode盡可能準確(auto-encoder的reconstruction誤差),又需要保證用戶對物品的預估和實際觀測的盡可能接近(矩陣分解誤差),同時正則化也約束了模型的復雜度不能太高
3.2.2 DUIF模型(Deep User and Image Feature Learning)
(1) input layer
除了用戶和物品的交互矩陣,還有用戶特征X和物品特征Y
(2) representation function
整個match score可以用下圖表示:fi表示原始圖片特征,通過CNN網絡提取的圖片特征作為item的表達,然后用一個線性映射可以得到item的embedding表達
(3) match function
通過模型學到的pu作為用戶的representation,以及通過CNN提取的圖片特征作為item的 representation, 兩者通過向量點積得到兩者的匹配分數
3.2.3 ACF模型(Attentive Collaborative Filtering)
Sigir2017提出的Attention CF方法,在傳統的CF里引入了attention機制。這里的attention有兩層意思,第一層attention,認為用戶歷史交互過的item的權重是不一樣的;另一個attention意思是,用戶同一個item里到的視覺特征的權重也是不一樣的,如圖3.8所示。
圖3.8 ACF模型結構
(1) input layer
a) 用戶側:userid;用戶歷史交互過的item
b) Item側:itemid; item相關的視覺相關特征
(2) representation function
可以分為兩個attention,一個是component 層級的attention,主要是提取視覺特征;第二層是item層級的attention,主要提取用戶對物品的喜好程度權重。
a) component-attention
在該paper里的推薦系統針對的是multi-media的,有很多圖文和視頻的特征信息提取,所以引入的第一層attention指的是component attention,認為對于不同的components 對item representation的貢獻程度是不同的,如圖3.9所示
圖3.9 component attention框架
對第l個item,輸入為不同region本身的特征xl1, xl2, xlm,表示的是m個不同的item feature, 以及用戶輸入ui,最終item的表達為不同的region的加權embedding。
其中第一個公式表示用戶i對物品l第m個component(例如圖片特征中的局部區域特征,或者視頻中不同幀的特征)的權重;第二個公式softmax對attention權重歸一化
b) item attention
第二層attention,認為用戶作用過的item歷史中,權重應該是不同的。這里文章使用了SVD++的方式,用戶本身的表達引入了a(i, l),代表的是用戶i對其歷史交互過的物品l的權重.
用戶i對第l個item的權重表達可以用如下的數據表示:
其中ui是用戶本身的latent vector, vl是物品l的latent vector,pl是物品l的輔助latent vector; xl是表示前面提到的從圖文信息提取的特征latent vector。用戶最終的表達是自身ui的latent vector,以及歷史行為的attention加權的representation表示。
模型使用的是pairwise loss進行優化
(3) representation function
使用user和item的向量點擊作為匹配分數
3.2.4 CKB模型(Collaborative Knowledge Base Embedding)
CKB模型是在2016年KDD提出的,利用知識圖譜做representation learning,模型框架如圖3.10所示。整個CKB模型框架其實思想比較簡單,分別在結構化信息、文本信息和視覺信息中提取item側特征作為item的representation
圖3.10 CKB模型框架
(1) input layer
a) user側:userid
b) item側:itemid; 基于知識圖譜的item特征(structural, textual, visual )
(2) representation function
主要是從知識圖譜的角度,從結構化信息,文本信息以及圖文信息分別提取item側的表達,最終作為item的embedding
a) 結構化特征struct embedding: transR, transE
圖3.11 struct embedding框架
b) 文本特征Textual embedding: stacked denoising auto-encoders (S-DAE)
圖3.12 textual embedding框架
c) 視覺特征Visual embedding: stacked convolutional auto-encoders (SCAE)
圖3.13 visual embedding框架
(3) matching function
得到用戶向量和item向量后,用向量點擊表示user和item的匹配分數;損失函數則用如下的pair-wise loss表示
3.3 基于representation的深度匹配方法總結
總結上述基于CF的方法,可以用如下的范式作為表達
圖3.14 基于CF的深度匹配模型范式
(1)representation learning: 目的是學習到user和item各自的representation(也叫latent vector, 或者embedding)
(2) 特征表達:user側特征除了用戶id本身userid,可以加上其他side info;item側特征除了物品id本身itemid, 還有其他文本特征、圖文特征、視頻幀特征等信息
(3) 模型表達:除了傳統的DNN,其他結構如Auto-Encoder(AE), Denoise-Auto-Encoder(DAE),CNN,RNN等。
基于representation learning的深度匹配模型不是一個end-2-end模型,通過user和item各自的representation作為中間產物,解釋性較好,而且可以用在出了排序階段以外的其他環節,例如求物品最相似的item集合,召回環節等。
4.基于match function learning 的深度匹配模型
對比representation learning的方法,基于match function learning最大的特點是,不直接學習user和item的embedding,而是通過已有的各種輸入,通過一個neural network框架,來直接擬合user和item的匹配分數
圖4.1 基于match function learning的深度匹配模型框架
簡單來說,第一種方法representation learning不是一種end-2-end的方法,通過學習user和item的embedding作為中間產物,然后可以方便的計算兩者的匹配分數;而第二種方法matching function learning是一種end2end的方法,直接擬合得到最終的匹配分數。本章主要介紹基于match function learning的深度學習匹配方法。
4.1 CF-based的深度模型
前面傳統匹配模型以及基于表示學習的模型,其base模型都離不開協同過濾,也可以稱為基于矩陣分解的模型。基于match function learning的模型也不例外。
4.1.1 基于NCF框架的方法
基于神經網絡的學習方法(NCF)為何向南博士在2017年提出,對比傳統的CF網絡,在得到user vector和item vector后,連接了MLP網絡后,最終擬合輸出,得到一個end-2-end的model。這套框架好處就是足夠靈活,user和item側的雙塔設計可以加入任意side info的特征,而MLP網絡也可以靈活的設計,如圖4.2所示。
圖4.2 基于神經網絡的協同過濾框架
NCF框架對比第三章所說的CF方法最主要引入了MLP去擬合user和item的非線性關系,而不是直接通過inner product或者cosine去計算兩者關系,提升了網絡的擬合能力。然而MLP對于直接學習和捕獲從mf提取的user和item vector能力其實并不強。在wsdm2018的一篇文章質疑的就是MLP對特征組合的擬合能力
圖4.3 DNN模型擬合數據實驗
該paper做了一組實驗,使用1層的MLP網絡去擬合數據;實驗證明對于二維一階的數據,也需要100個節點才能擬合;如果超過2階,整個MLP的表現將會非常差。文章因此說明了DNN對于高階信息的捕捉能力并不強,只能捕捉低階信息。
下文要講的模型,也是在模型結構或者特征層面做的各種變化。
4.1.1.1 NeuMF模型(Neural Matrix Factorization)
Neural MF,顧名思義,同時利用了MF和神經網絡MLP的能力來擬合matching score;MF利用向量內積學習user和item的關聯,同時MLP部分捕捉兩者的其他高階信息。這篇paper其實和NCF框架是出自同一篇paper的。模型可以分為GMF和MLP兩個部分來看,如圖4.4所示。
圖4.4 NeuMF模型結構框架
(1) GMF(General Matrix Factorization)部分
user和item都通過one-hot編碼得到稀疏的輸入向量,然后通過一個embedding層映射為user vector和item vector。這樣就獲得了user和item的隱向量,一般可以通過向量點積或者哈達馬積(element-wide product)得到交互,不過在NeuMF中多連接了一個連接層,也就是GMF layer
(2) MLP部分
輸入和GMF部分一樣,都是one-hot的稀疏編碼,然后通過embedding層映射為user vector和item vector。注意到這里user和item的vector 和GMF部分是不一樣的,原因是GMF和MLP兩個網絡結構對隱層維度要求不同,MLP部分會高一些(個人感覺share embedding能更充分訓練embedding)
embedding層之后就是幾層常規的MLP,這塊沒什么好說的,最后一層輸出作為MLP的output。
4.1.1.2 NNCF模型(Neighbor-based NCF)
CIKM2017提出的一種基于neighbor的NCF方法,最大的不同在于輸入除了user和item的信息,還各自引入了user和item各自的neighbor信息。
圖4.5 NNCF模型框架
圖4.5所示的輸入由兩部分組成,中間xu和yi為原始的user和item的one-hot輸入,通過embedding層后映射為pu和qi的embedding向量,然后通過哈達馬積作為MLP的輸入。而輸入層兩側的nu和ni是user和item各自的neighbor信息的輸入,這里nu和ni息如何提取可以采用多種手段,如二部圖挖掘,user-CF或者item-CF等。
對于neighbor信息,由于每個用戶和item的neighbor數不一致,輸入是不定長的,通過卷積和pooling后提取得到定長的embedding,然后和user以及item本身的向量concat后輸入到模型中
4.1.1.3 ONCF模型(Outer-Product based NCF)
何向南博士2018年在NCF模型框架上提出了outer-product based NCF,在原有的NCF框架上,引入了outer product的概念,如圖4.6所示。
圖4.6 ONCF模型框架
在embedding layer之后,O-NCF模型引入了interaction map也就是特征交叉層,對于用戶u的向量pu和物品i的向量qi,引入兩者的outer-product
E是一個k*k維的矩陣,其中的每個element兩兩相乘,得到2維的矩陣。到這,可以通過把二維矩陣展開變成一個k2維度的向量,作為MLP的輸入。假設k=64,那么E就是個4096的向量,每一層隱層單元個數設置為上一層的一半,那么第一層的維度為4096*2048約需要840萬的網絡參數需要訓練,參數量非常巨大。
因此,文章提出了一種利用CNN局部連接共享參數的方法來減少embedding layer到hidden layer之間的參數,如圖4.7所示。
圖4.7 ConvNCF模型框架
假設隱層維度K=64,有6層hidden layer,每一層有32個卷積核(feature map),步長stride=2,那么經過每個卷積核后的feature map大小為原來的1/4(長和寬各少了一半)。以第一層卷積為例。
那么第一層卷積后得到的網絡是個323232的3維vector,其中最后一個32代表feature map個數。這里如何體現特征交叉的思想呢?ei,j,c代表的就是在前一層的feature map中,第i個單元和第j個element的二階交叉。第一層feature map中,每個單元提取的是上一層22區域的local連接信息,第三層提取的就是第一層44的信息,那么在網絡的最后一層就能提取到原始feature map里的global 連接信息,從而達到高階特征提取的目的。
總結來說,使用原始的outer-product思想,在第一層網絡處有近千萬的參數需要學習,而使用CNN網絡一方面能夠減少參數量,另一方面又同時提取了低階和高階特征的組合。個人覺得引入CNN固然能節省內存,但也同時會帶來訓練和推理時間的增加,是一種時間換空間的思想。另外用CNN是否能夠比原始MLP更有效擬合特征組合也需要結合數據分布去看。
4.1.1.4 小結
基于NCF框架的方法基礎原理是基于協同過濾,而協同過濾本質上又是在做user和item的矩陣分解,所以,基于NCF框架的方法本質上也是基于MF的方法。矩陣分解本質是盡可能將user和item的vector,通過各種方法去讓user和item在映射后的空間中的向量盡可能接近(用向量點擊或者向量的cosine距離直接衡量是否接近)。
而另外一種思路,基于翻譯的方法,也叫translation based model,認為user和item在新的空間中映射的vector可以有gap,這個gap用relation vector來表達,也就是讓用戶的向量加上relation vector的向量,盡可能和item vector接近。兩種方法的區別可以用圖4.8形象的表示。
圖4.8 基于矩陣分解和基于翻譯的模型區別
4.1.2 基于translation框架的方法
4.1.2.1 transRec模型
2017年的recsys會議上提出的一種基于“translate”的推薦方法,要解決的是next item的推薦問題?;舅枷胧钦f用戶本身的向量,加上用戶上一個交互的item的向量,應該接近于用戶下一個交互的item的向量,輸入是(user, prev item, next item),預測下個item被推薦的概率
圖4.9 transRec模型框架
用戶向量表達如下:
這里ri和rj表示的是用戶上一個交互的item i和下一個交互的item j,tu為用戶本身的向量表達。而在實際的推薦系統中,往往存在數據稀疏和用戶冷啟動問題,因此,作者將用戶向量tu分解成了兩個向量。
這里t可以認為是全局向量,表示的是所有用戶的平均行為,tu表示用戶u本身的bias,例如對于冷啟動用戶,tu可以設置為0,用全局用戶的表達t作為冷啟動。
對于熱門item由于出現次數非常多,會導致最終熱門item的向量和絕大多數用戶向量加上item向量很接近,因此文章對熱門item做了懲罰,最終,已知上一個item i,用戶和下一個item j的匹配score表達為:
其中, 第一項beta_j表示的是物品j的全局熱度;第二項d表示的是用戶向量加上物品i的向量與物品j向量的距離;距離越小表示i和j距離越接近,被推薦的可能性就越大
4.1.2.2 LRML模型(Latent Relational Metric Learning)
前面講到,基于translation框架的方法對比基于CF框架方法最大的不同,在于找到一個relation vector,使得user vector + relation vector盡可能接近item vector。WWW2018提出的LRML模型通過引入memory network來學習度量距離。可以分為三層layer,分別是embedding layer, memory layer和relation layer。
圖4.10 LRML模型框架
(1) embedding layer
底層是常規的雙塔embedding,分別是用戶embedding矩陣和物品的embedding矩陣,用戶one-hot輸入和item的one-hot輸入通過embedding后得到用戶向量p和物品向量q
(2) memory layer
記憶網絡層是文章的核心模塊,作者通過引入memory layer作為先驗模塊。這個模塊可以分為三個步驟進行計算:
a)用戶和物品embedding融合
embedding層得到的user和item向量p和q需要先經過交叉合成一個向量后輸入到下一層,作者提到使用哈達碼積效果優于MLP效果,也更簡單
b)用戶-物品key addressing
從第一步得到的向量s中,去和memory記憶網絡模塊中的各個memory vector挨個計算相似度,相似度可以用內積表達并做歸一化
得到的ai代表的是當前用戶-物品輸入對(p, q)與memory-network中的第i個向量的相似度.
c)最終加權表達
最終得到的relation vector是第二步得到的memory記憶網絡中不同vector的加權表達,如下所示
(3) relation layer
從memory layer得到的r向量可以認為是用戶向量p與物品向量q的relation vector,最終的距離用平方損失衡量,如圖4.11所示。
圖4.11 LRML relation層以及loss結構
由于解決的是推薦物品的排序問題,文章使用的是pairwise loss,因此在網絡的最后一層,對user和item分別進行負樣本采樣得到p’和q’,然后使用pairwise hinge loss進行優化
4.2 feature-based的深度模型
4.1介紹的基于CF的方法,對大多數推薦系統來說,輸入的特征向量往往都是非常高維而且稀疏的,而特征之間的交叉關系對模型來說往往都是非常重要的。例如,用戶一般會在一天快吃三餐的時候,打開和訂餐相關的app,這樣,用戶使用訂餐app和時間存在著二階交叉關系;又比如說,男性的青年群體,往往更喜歡射擊類的游戲,性別、年齡以及類目之間存在著三階的交叉關系。因此,如何捕捉特征之間的交叉關系,衍生了眾多基于特征的模型,在這里將這些捕捉特征交叉關系的模型稱為feature-based model。
4.2.1 wide&deep 模型
提到深度學習模型,最經典的莫過于2016年google提出的wide and deep模型。說是模型,不如說是通用的一套范式框架,在整個工業界一舉奠定了風靡至今的模型框架,如圖4.12所示。
圖4.12 wide&deep 模型框架
在這個經典的wide&deep模型中,google提出了兩個概念,generalization(泛化性)和memory(記憶性)。
(1) 記憶性:wide部分長處在于學習樣本中的高頻部分,優點是模型的記憶性好,對于樣本中出現過的高頻低階特征能夠用少量參數學習;缺點是模型的泛化能力差,例如對于沒有見過的ID類特征,模型學習能力較差。
(2) 泛化性:deep部分長處在于學習樣本中的長尾部分,優點是泛化能力強,對于少量出現過的樣本甚至沒有出現過的樣本都能做出預測(非零的embedding向量),容易帶來驚喜。缺點是模型對于低階特征的學習需要用較多參數才能等同wide部分效果,而且泛化能力強某種程度上也可能導致過擬合出現bad case。尤其對于冷啟動的一些item,也有可能用用戶帶來驚嚇。
圖4.13 wide&deep模型特征框架
值得注意的是,雖然模型的deep部分擬合和泛化能力很強,但絕對不意味著把特征交叉都交給MLP就夠了。實際證明,對于重要的一些人工經驗的特征,對于提升整體效果還是非常重要的,如圖4.13所示。這個人工特征的所謂缺點,也是后續各種模型結構想對其進行“自動化”的優化點。
4.2.2 deep crossing模型
微軟在2016年提出了一套框架deep crossing,這篇文章在輸入到embedding這里到是和wide&deep 沒有太多不同,主要區別在于MLP部分。
google的wide&deep模型里深度網絡的MLP部分是全連接網絡,每一層的網絡輸入都是前一層的輸入出,受限于模型結構,越往后越難學習到原始輸入的表達,一般深度不會太深,超過5層的網絡在工業界已經算很少見了。為了解決這個問題,deep crossing網絡引入了resnet殘差網絡的概念,通過short-cut,在MLP的深層網絡,也能接收來自第一層的輸入,這樣可以使得模型的深度達到10層之多,如圖4.14所示。
圖4.14 deep crossing模型框架
上述提到的wide&deep以及deep crossing框架更像是在模型結構做的改進,一個引入了wide&deep,一個引入了resnet,特征層面并沒有做太多改造,如何體現feature-base呢?sigIR2017就有一篇文章做了個實驗,對wide&deep以及Deep&Cross實驗按照embedding是否做初始化分別做了實驗。實驗發現,如果embedding是隨機初始化的,兩個深度模型連基礎的FM模型都打不過;哪怕經過FM初始化了embedding,wide&deep模型效果也僅僅略好于FM模型,而deep crossing模型依然比不過FM模型,實驗結果如圖4.15所示
圖4.15 不同初始化對模型影響
這個結論也引出了關于MLP的一些思考,全連接網絡表面上看對所有節點都進行了連接,理論上應該學習到了各個節點的交叉特征,但是從結果上來看,MLP對這些特征交叉的學習能力確實非常差的。糾其原因,還是在模型結構的設計上。
圖4.16 wide&deep模型和deep crossing模型
圖4.16里無論是wide&deep還是deep crossing network,embedding層之后到MLP之間,都是將embedding做concat的。這些concat后的信息其實能夠表達的特征交叉信息其實是非常有限的,僅靠MLP想完全捕捉到特征的有效交叉其實是非常困難的。因此,有大量工作關于在embedding這里如何捕捉特征交叉,其實就是在MLP網絡之前,利用更多的數學先驗范式做特征交叉去提取特征,這也是本節提到的方法叫做feature-based的原因。
4.2.3 PNN模型
embedding layer進入MLP之前,引入了product layer 來顯式的學習每個field的embedding向量之間的兩兩交叉,如圖4.17所示。
圖4.17 PNN模型框架
左邊z為embedding層的線性部分,右邊為embedding層的特征交叉部分。這種product思想來源于,推薦系統中的特征之間的交叉關系更多是一種and“且”的關系,而非add"加”的關系。例如,性別為男且喜歡游戲的人群,比起性別男和喜歡游戲的人群,前者的組合比后者更能體現特征交叉的意義。根據product的方式不同,可以分為inner product(IPNN)和outer product(OPNN),如圖4.18所示。
圖4.18 PNN模型的兩種不同交叉方式
其中,IPNN模型每個特征是個inner product, f個field兩兩交叉,得到的新的特征組合有f*(f-1)/2個;outer product是兩個向量的乘積,得到的新的特征組合有個。
4.2.4 deepFM模型
google的wide&deep框架固然強大,但由于wide部分是個LR模型,仍然需要人工特征工程。華為諾亞方舟團隊結合FM相比LR的特征交叉的功能,在2017年提出了deepFM,將wide&deep部分的LR部分替換成FM來避免人工特征工程,如圖4.19所示。
圖4.19 deepFM模型框架
比起wide&deep的LR部分,deeFM采用FM作為wide部分的輸出,FM部分如圖4.20所示。
圖4.20 deepFM模型中的FM部分
除此之外,deepFM還有如下特點:
(1) 更強的低階特征表達
wide部分取代WDL的LR,與4.2.1和4.2.2提到的wide&deep模型以及deep crossing模型相比更能捕捉低階特征信息
(2)embedding層共享
wide&deep部分的embedding層得需要針對deep部分單獨設計;而在deepFM中,FM和DEEP部分共享embedding層,FM訓練得到的參數既作為wide部分的輸出,也作為DNN部分的輸入。
(3)end-end訓練
embedding和網絡權重聯合訓練,無需預訓練和單獨訓練
4.2.5 NFM模型(Neural Factorization Machines)
deepFM在embedding層后把FM部分直接concat起來(f*k維,f個field,每個filed是k維向量)作為DNN的輸入。Neural Factorization Machines,簡稱NFM,提出了一種更加簡單粗暴的方法,在embedding層后,做了一個叫做Bi-interaction的操作,讓各個field做element-wise后sum起來去做特征交叉,MLP的輸入規模直接壓縮到k維,和特征的原始維度n和特征field維度f沒有任何關系,如圖4.21所示。
圖4.21 NFM模型框架
這里論文只畫出了其中的deep部分, wide部分在這里省略沒有畫出來。Bi-interaction所做的操作很簡單:讓f個field兩兩element-wise相乘后,得到f*(f-1)/2個維度為k的向量,然后直接sum起來,最后得到一個k維的向量。所以該層沒有任何參數需要學習,同時也降低了網絡復雜度,能夠加速網絡的訓練;但同時這種方法也可能帶來較大的信息損失。
4.2.6 AFM模型(Attention Factorization Machines)
前面提到的各種網絡結構中的FM在做特征交叉時,讓不同特征的向量直接做交叉,基于的假設是各個特征交叉對結果的貢獻度是一樣的。這種假設往往不太合理,原因是不同特征對最終結果的貢獻程度一般是不一樣的。Attention Neural Factorization Machines,簡稱AFM模型,利用了近年來在圖像、NLP、語音等領域大獲成功的attention機制,在前面講到的NFM基礎上,引入了attention機制來解決這個問題,如圖4.22所示。
圖4.22 AFM模型框架
AFM的embedding層后和NFM一樣,先讓f個field的特征做了element-wise product后,得到f*(f-1)/2個交叉向量。和NFM直接把這些交叉項sum起來不同,AFM引入了一個Attention Net,認為這些交叉特征項每個對結果的貢獻是不同的,例如xi和xj的權重重要度,用aij來表示。從這個角度來看,其實AFM其實就是個加權累加的過程。Attention Net部分的權重aij不是直接學習,而是通過如下公式表示
這里t表示attention net中的隱層維度,k和前面一樣,為embedding層的維度。所以這里需要學習的參數有3個,W, b, h,參數個數共tk+2t個。得到aij權重后,對各個特征兩兩點積加權累加后,得到一個k維的向量,引入一個簡單的參數向量pT,維度為k進行學習,和wide部分一起得到最終的AFM輸出。
圖4.23 AFM模型中attention的可視化解釋
關于AFM還有個好處,通過attention-base pooling計算的score值aij體現的是特征vi和vj之間的權重,能夠選擇有用的二階特征,如圖4.23所示。
4.2.7 DCN模型(Deep Cross Network)
前面提到的幾種FM-based的方法都是做的二階特征交叉,如PNN用product方式做二階交叉,NFM和AFM也都采用了Bi-interaction的方式學習特征的二階交叉。對于更高階的特征交叉,只有讓deep去學習了。為解決這個問題,google在2017年提出了Deep&Cross Network,簡稱DCN的模型,可以任意組合特征,而且不增加網絡參數。圖4.24為DCN的結構。
圖4.24 DCN模型結構
整個網絡分4部分組成:
(1)Embedding and stacking layer
之所以不把embedding和stacking分開來看,是因為很多時候,embedding和stacking過程是分不開的。前面講到的各種 XX-based FM 網絡結構,利用FM學到的v向量可以很好的作為embedding。而在很多實際的業務結構,可能已經有了提取到的embedding特征信息,例如圖像的特征embedding,text的特征embedding,item的embedding等,還有其他連續值信息,例如年齡,收入水平等,這些embedding向量stack在一起后,一起作為后續網絡結構的輸入。當然,這部分也可以用前面講到的FM來做embedding。為了和原始論文保持一致,這里我們假設X0向量維度為d(上文的網絡結構中為k),這一層的做法就是簡答的把各種embedding向量concat起來。
2)deep layer network
在embedding and stacking layer之后,網絡分成了兩路,一路是傳統的DNN結構。表示如下
為簡化理解,假設每一層網絡的參數有m個,一共有Ld層,輸入層由于和上一層連接,有dm個參數(d為X0向量維度),后續的Ld-1層,每層需要m(m+1)個參數,所以一共需要學習的參數有 dm+m(m+1)*(Ld-1)。最后的輸出也是個m維向量
3)cross layer network
embedding and stacking layer輸入后的另一路就是DCN的重點工作了。每一層l+1和前一層l的關系可以用如下關系表示
可以看到f是待擬合的函數,xl即為上一層的網絡輸入。需要學習的參數為wl和bl,因為xl維度為d,當前層網絡輸入xl+1也為d維,待學習的參數wl和bl也都是d維向量。因此,每一層都有2*d的參數(w和b)需要學習,網絡結構如下。
圖4.25 DCN模型的cross原理
經過Lc層的cross layer network后,在該layer最后一層Lc層的輸出為Lc2的d維向量
(4)combination output layer
經過cross network的輸出XL1(d維)和deep network之后的向量輸入(m維)直接做concat,變為一個d+m的向量,最后套一個LR模型,需要學習參數為1+d+m。
總結起來,DCN引入的cross network理論上可以表達任意高階組合,同時每一層保留低階組合,參數的向量化也控制了模型的復雜度。cross網絡部分的交叉學習的是特征向量中每一個element的交叉,本質上是bit-wise的。
4.2.8 xdeepFM模型(extreme Deep Factor Machine)
xDeepFM模型從名字上聽好像是deepFM模型的升級,但其實更應該拿來和DCN模型做對比。DCN模型引入了高階特征交叉,但是特征的交叉本質上是在bit-wise的。而xDeepFM模型認為特征向量i和特征向量j的交叉過程中,i本身的元素交叉沒有意義,提取i和j的向量交叉才是更有效捕捉特征的方式,也就是vector-wise的交叉,整個模型的框架如圖4.26所示,最核心的模塊在于特征交叉的CIN模塊。
圖4.26 xDeepFM模型結構
首先我們來看下整個CIN的整體框架圖,如圖4.27所示,假設特征field個數是m,每個field的隱層維度為d,那么原始embedding層的大小為m*d,而cross network有Hk層,提取的是特征的交叉。每一層網絡在做什么事情呢?就是和第一層x0做特征交叉得到新的特征向量后,然后這Hk層cross net得到的特征向量concat到一起,作為MLP的輸入。那么,這里面,每一層的特征xk到底是如何輸入層x0發生交互的?
圖4.27 CIN模塊結構
以cross net的第k層和原始輸入x0為例,我們看下如何提取得到新的特征,圖4.28是其特征交叉的過程。其中xk的維度為HkD,表示的是第k層有Hk個vector,而原始輸入x0的維度為mD,表示輸入層有m個D維的vector。
圖4.28 CIN模塊中特征交叉過程
這里Wk,h表示的是第k層的第h個vector的權重,是模型需要學習的參數。整個公式的理解是整個xdeepFM理解的關鍵,我們具體看下發生了什么
(1) 首先,從前一層的輸入Xk-1(一共有Hk-1個vector),取出任意一個vector;從原始輸入x0(一共有m個vector),取出任意一個vector,兩者兩兩做哈達碼積,可以得到Hk-1*m個vector
(2) 這Hk-1*m個交叉得到的vector,每個vector維度都是D,我們通過一個W矩陣做乘積進行加權求和,相當于是個帶權重的pooling, 最終得到加權求和后的vector Xh,k,表示的是第h層第k個vector。這里的W矩陣就是模型要學習的
(3) 為什么說是壓縮,壓縮體現在哪里?還是用圖說話,這里我們看下原始論文給出的圖示,有助于整個過程的理解。
圖4.29 CIN模塊具體結構
在圖4.29左圖中,我們把D看成是原始二維平面的寬度,我們沿著D的方向挨個進行計算。先看xk向量中D的第一維,有Hk個數;x0向量中D的第一維,有m個數,讓Hk和m兩兩計算,就可以得到Hkm的一個平面。一直沿著D方向,2,3,4,…D,我們就可以得到一個Hkm*D的三維矩陣,暫且叫做zk+1,注意這個過程只是簡單的矩陣計算,沒有參數需要學習。
在4.29右邊的圖中,我們開始提取前面zk+1的信息,還是以D方向的第一維為例,一個mHk的平面,乘以一個大小一樣的mHk矩陣W,然后加權求和,就可以得到這個平面最后壓縮的一個實數。整個平面被“壓縮“成為了一個一維的數。一直沿著D方向求解每個平面壓縮后的數,就可以得到一個D維的向量。
這就是整個“壓縮”的取名原因。整個過程非常類似CNN的filter卷積思想,W就是卷積核,得到的每個特征映射的值就是feature map。
4.2.9 FGCNN模型(Feature Generate by CNN)
CNN模型在圖像,語音,NLP領域都是非常重要的特征提取器,原因是對圖像、視頻、語言來說,存在著很強的local connection信息。而在推薦系統中由于特征輸入都是稀疏無序的,很難直接利用CNN作為特征提取。華為諾亞方舟在2019年的WWW會議上提出了一種巧妙的利用CNN提取特征的方法FGCNN,整個模型框架如圖4.30所示。
圖4.30 FGCNN模型框架
其中利用CNN提取新特征是整個paper的核心模塊,具體框架如圖4.31所示,可以分為4個層,卷積層、池化層、重組層以及特征輸出層。下面分別介紹這4個不同的層,分別看下各自的輸入,輸出以及具體的網絡結構。
圖4.31 CNN模塊從原始特征提取新特征
(1) 卷積層Convolution Layer
圖4.32 卷積層的特征卷積過程
原始one-hot特征經過embedding后,進入的是卷積層。卷積的思想和TextCNN類似,通過一個高度為hp,寬度為d的卷積核進行卷積;其中高度hp代表的是每次卷積連接的鄰域的個數,以圖4.32為例,hp=2,表示二維特征的交叉,從上到下卷積,表示的是N&A, A&H, H&G卷積,分別表示名字和年齡、年齡和身高、身高和性別的交叉;而寬度方向d需要和embedding的維度d保持一致,這和TextCNN的思想是一致的,只在高度方向上進行卷積。
1)Convolutional layer 輸入
特征one-hot之后經過embedding層后的輸出作為卷積層的輸入,輸入維度為nf*k。nf為field個數,k為隱層維度
2)Convolutional layer 輸出
經過二維平面大小不變,增加第三維卷積核大小,第一層卷積層的輸出大小為nfkmc1,mc1為第1個卷積層的卷積個數,以l=1為例,C:,:,i表示的是第一層卷積層第i個feature-map,每個feature map的大小為nf*k,Cp,q,i表示的是第一層第i個feature map的坐標為(p, q)的元素
(2) 池化層Pooling Layer
特征經過第一層卷積層之后,從nfk變成了nfk*mc1,維度反而擴了mc1倍,這和預期的特征降維不一致,解決辦法和CNN里常用的套路一樣,通過pooling做降維。該paper使用的是max pooling,在原先卷積高度hp上選擇最大值作為卷積后的特征表達,表達如下所示
pooling層輸入
卷積層的輸出作為池化層的輸出,以第一層為例,pooling層的輸入維度為nfkmc1
pooling層輸出
卷積層輸出的時候在高度方向上選擇max,只有高度方向維度發生變化,卷積輸出后維度為nf/hp * k *mc1,hp為卷積核高度,相當于沿著field的方向壓縮了hp倍
(3) 重組層Recombination Layer
經過特征卷積層和特征池化層后,可以通過特征重組Recombination layer生成新的特征組了。還是以第一層的Recombination layer為例,mc1為原始feature map的個數,mr1為新生成的特征feature map的個數,
其中s1為池化層的輸出,而WR1和BR1為該層待學習的參數
1)Recombination層輸入
卷積層的輸出S1為該層的輸入,通過WR1的矩陣進行特征的recombination
2)Recombination層輸出
新生成的特征維度為nf/hpkmr1
(4) 特征輸出層Concatenation Layer
第一層Convolution layer->pooling layer->recombination layer后,生成第一層的新特征R1,連同第2,3,4,…,nc層的新特征R2,R3,R4,…,Rnc層一起concat起來,組成新的特征R=(R1,R2,…,Rnc)。之后R可以和原始特征一樣做各種可能的交叉,例如和原始特征做二階交叉等,再一起輸入到模型層
圖4.33 FGCNN新特征的生成
1)concatenation層輸入
重組層Recombination layer輸出的新特征R1, R2, R3, Rnc,作為concatenation layer的輸入
2)concatenation層輸出
原有的特征E和新特征R連在一起作為concatenation的特征輸出,作為NN層的輸入
4.2.10 FiBiNet模型(Feature Importance & Bilinear feature Interaction)
新浪微博張俊林團隊2019年提出的結合特征重要性(Fi)和雙線性特征交叉(Bi)的方法,Feature Importance & Bilinear feature Interaction,簡稱FiBiNet,其實是兩個相對獨立的模塊,兩個模塊可以獨立套用在其他的網絡結構上,整體框架如圖4.34所示
圖4.34 FiBiNet模型框架
(1) SENet:特征重要性提取層
該層作用主要是提取特征重要性??梢苑譃槿龑覵queeze, Extract, Reweight,從原始的特征e1,e2,e3,…,ef 提取到新的特征v1,v2,v3,…, vf,其中f為特征field的個數,整體框架如下
圖4.35 SENet框架
1)Squeeze層
特征壓縮層,對每個特征組中的embedding向量進行匯總統計量的pooling操作,每個field的維度為k,從中squeeze壓縮提取最重要的1維。典型的方法一般有Max pooling或者average pooling,在更原始的SENet里用的是max pooling,但是在該paper里作者提到average pooling表現更好,個人其實也傾向于認為average pooling直覺上更加make sense,只用max pooling從d維特征提取一維信息損失實在太大。當然具體表現也需要結合具體數據實驗才知道
經過S層,第i維特征從ei變成了zi,從維度為d的向量變成了一個維度為1的實數。整個輸入從f*d的矩陣變為f維的向量
2)Excitation層
特征激活層,向量先做壓縮r(r為壓縮的倍數),然后擴展恢復,類似auto-encoder思路
W1和W2為兩個轉換矩陣,先經過壓縮然后恢復,最終得到的A還是一個維度為f的向量
3)Reweight層
經過前面Squeeze和Excitation得到的A相當于是原始特征E的權重向量,乘以原始的特征E后,可以得到最終加權提取的V向量,可以認為是原始特征的重要性表達
總結來說:SENet,用兩層全連接階層提取每個field的特征重要性
S層:壓縮提取field中最重要的特征(max或者average特征)
E層:對s層提取的特征信息進行auto-encoder式的信息提取
R層:SE提取到的每個field特征重要性,進行加權提取
(2) Bilinear特征交叉層
從SENet提取到的新特征V,還有原始特征E,可以組合成為新的特征一起輸入到模型的MLP網絡中。但是如前面提到的MLP對特征交叉很弱的學習能力一樣,本文一樣提出了一些做特征交叉的方法。我們回顧下在前面提到的兩個向量的交叉,無非是向量內積,得到一個實數;或者是向量的哈達馬積分如圖4.36的a所示,得到的還是一個向量,如圖中4.36的b方法所示。這兩種方法都是直接計算的,沒有新的參數學習。在該paper中,作者提出了另一種引入參數的方法,也就是Bilinear雙線性特征交叉的方法,如圖中4.36的c方法所示
圖4.36 不同特征交叉方法
假設特征field的個數是f個,每個field的隱層維度為d。那么,如何確定需要學習的參數W呢?根據W的共享情況,可以分為以下三種類型
1) field type
W在所有特征之間是完全共享的,也就是說在任意兩個需要交叉的特征i和特征j之間(vi, vj)共享一個W,W的參數維度為k*k
2) field each
對于每個特征i來說,都需要學習唯一的一個Wi矩陣,該Wi只和左乘的特征vi有關,和右乘特征vj無關,一共有f個field,所以W的參數維度為fkk
3) field-interaction type
對于任意兩個需要交叉的特征vi和vj,都需要學習一個唯一的矩陣Wij,Wij不僅和左乘的特征有關,也和右乘的特征有關,也就是說,vi和vj的交叉,以及vj和vi的特征交叉,兩者用到的wij和wji是不一樣的,所以W的參數維度為ffk*k
當然,以上三種不同的特征類型沒有絕對的誰好誰壞,不存在越復雜效果越好的情況,對于簡單的數據集,可能w共享是最好的,具體還是需要實驗才能知道。在文章里用了criteio和avazu數據集進行實驗時,使用不同的模型,三種交叉方法也是各有千秋。
總結本文的兩個核心工作,第一個工作,SENet,目的是從一個fd的特征向量中,提取得到表達了特征重要性的同樣維度為fd的新特征向量,該網絡結構可以和其他模型結構套用。第二個工作bi-net, 從輸入的embedding特征中提出了幾種不同的特征交叉的方法,也可以給其他網絡模型做特征交叉提供一些不同的手段。
4.2.11 AutoInt模型(Auto Feature Interaction)
目前為止講到的模型中,使用到attention的是AFM模型,而在AutoInt文章中,作者除了attention機制,還使用了在transform中很火的multi-head和self-attention的概念,整體框架如圖4.37所示
圖4.37 AutoInt模型框架
文章中的輸入沒有什么特別需要講的,就是常規的one-hot稀疏的特征經過embedding層得到dense value。這里embedding層倒是值得一提,一般在大多數推薦系統里,對于one-hot做embedding是因為需要轉成dense的特征,而原本就是dense的特征原本就是定長dense特征,比較少見到做embedding的,而在該文章中將連續值特征和one-hot一樣去做embedding處理。不過這一塊不影響auto-int部分的理解。
圖4.38 embedding層輸入
該paper里提到的attention機制,才是文章里的核心亮點,在介紹文章的核心機制之前,先在這里簡單介紹下NLP里的attention里涉及到的3個重要的概念,query, keys, value。想象一下,你在搜索引擎輸入了一個搜索詞,這個搜索詞就是query,假設你搜了“應用寶”,然后存在一堆候選結果就叫做keys,例如“下載app的地方”,“手機應用市場”,“app store“,“手機系統”等等,對這里的每個key,都去計算和候選詞query的相似度,例如“手機應用市場“對“應用寶”的權重,顯然是要高于“手機系統”,最終的表達,其實就是每個keys的value的加權求和,也就是說,誰和query的相似度高,在結果中value的權重占比就更高。經典的QKV結果表達如下:
回到本文的attention機制中,假設特征field個數為M,對于第m個field,在第h個head空間下的特征表達如下
圖4.39 特征m在空間h下的QKV結構
(1) 特征m在空間h下的新映射
每個特征m,在空間h下都有3組向量表示,分表代表特征m在空間h下的query向量Equery、key向量Ekey、value向量Evalue
這里需要學習的參數為WQuery,Wkey,Wvalue,每個矩陣的維度為d’*d,從而將特征從d維映射為d’。W在所有特征中都是共享的,并不是每組特征都需要學習3個W
(2) 特征k對特征m相似度表達,使用向量的點積
(3) 特征k對特征m的歸一化注意力(M個特征做歸一化)
(4) 特征m在空間h下的加權新特征
(5) 特征m的全空間表達
有H個head,特征m最終的表達為H個新特征的concat,特征長度為H*d’
(6) 特征m最終表達: resnet保留原始信息
作者為了保留更多信息,除了第5步得到的multi-head的新特征,也將原始的特征em引入到進來,其實就是一種resnet思路,所以在這里需要有個額外的參數WRes需要學習,需要將原始的特征維度d映射為和em一致的H*d’,所以WRes的參數維度為d’Hd
4.2.12 DIN模型(Deep Interest Network)
4.2.11提到的AutoInt里特征的attention機制有個特點,就是在計算特征的重要性的時候,所有特征都有機會成為query, 將其他特征作為keys去計算和當前query的重要性從而得到權重的。而提到推薦系統里的attention機制,不得不提的就是阿里的這篇deep interest network了,簡稱DIN。工業界的做法不像學術界,很多模型網絡結構優化并不一味的追求模型的復雜和網絡結構有多fancy,每一步背后都有大量的業務思考后沉淀下來的。
阿里這篇din也如此。在了解din之前,我們先看下din前身的模型,GwEN模型(Group-wise Embedding Network,阿里內部稱呼)
圖4.40 GwEN模型結構(DIN的baseline)
前面講到的很多模型,輸入層都是大規模稀疏特征,經過embedding層后輸入到MLP網絡中。這里的一個假設就是,每個field都是one-hot的,如果不是one-hot而是multi-hot,那么就用pooling的方式,如sum pooling,average pooling,max pooling等,這樣才能保證每個特征field embedding都是定長的。DIN的前身GwEN模型也一樣,對于multi-hot特征的典型代表,用戶歷史行為,比如用戶在電商系統里購買過的商品,往往都是幾十幾百甚至幾千的,需要經過sum pooling和其他特征concat一起。
而這種數學假設其實往往都是和實際的發生場景不一致的。例如一個女性用戶過去在淘寶買過白色針織衫、連衣裙、帽子、高跟鞋、單肩包、洗漱用品等,當前候選商品是一件黑色外套,白色針織衫對黑色外套的權重影響應該更大,洗漱用品權重應該更小。如果將這些歷史行為過的商品做sum pooling,那么無論對于當前推薦什么商品,用戶都是一個固定向量的表達,信息損失很大,顯然優化空間很大。
圖4.41 DIN模型框架
針對sum/average pooling的缺點,DIN提出了一種local activation的思想,基于一種基本的假設:用戶歷史不同的行為,對當前不同的商品權重是不一樣的。例如用戶過去有a, b, c三個行為,如果當前商品是d,那么a, b, c的權重可能是0.8,0.2,0.2;如果是商品e,那么a, b, c的權重可能變成了0.4,0.8,0.1。也就是說,不同的query,激發用戶歷史行為不同的keys的權重是不一樣的。
(1)query: 用戶歷史行為,長度為H,e,e2,…,eH表示用戶歷史行為的向量表示
(2)keys: 當前候選廣告(店鋪、類目、或者其他item實體)
關于DIN里的activation weight還有個可以稍微講幾句的點。兩個向量的相似度,在前面講各種CF的方法的時候基本是用的點積或者cosine,2017年DIN掛在arXiv的版本中是使用了兩個向量本身以及concat后進入MLP得到其相似度,2018發在KDD的版本中多了outer product,以及向量相減,相當于引入和保留了更多特征的信息。另外作者在文章提到為了保持不同歷史行為對當前attention的影響,權重也不做歸一化,這個和原始的attention也有所不同。
圖4.42 DIN模型中的Attention Unit
作為工業界的落地實踐,阿里在DIN上很“克制”的只用了最能表達用戶個性化需求的特征--用戶行為keys,而query也是當前候選的商品廣告,與線上提升ctr的指標更為吻合,對工業界的推薦系統來說借鑒意義還是很大的。當然這不是說之前的其他attention機制模型沒用,不同的數據集,不同的落地場景需求不一致,也給工業界更多的嘗試提供了很多思路的借鑒。
4.2.13 DIEN模型(Deep Interest Evolution Network)
在前面講到的模型中,所使用的特征都是時間無序的,din也如此,用戶的行為特征之間并沒有先后順序,強調的是用戶興趣的多樣性。但是實際用戶的興趣應該是在不斷進化的,用戶越近期的行為,對于預測后續的行為越重要,而用戶越早期的行為,對于預測后續行為的權重影響應該小一點。因此,為了捕獲用戶行為興趣隨時間如何發展變化,在din提出一年后,阿里又進一步提出了DIEN,引入了時間序列概念,深度興趣進化網絡。
DIEN文章里提到,在以往的推薦模型中存在的序列模型中,主要利用RNN來捕獲用戶行為序列也就是用戶歷史行為數據中的依賴關系,比對用戶行為序列直接做pooling要好。但是以往這些模型有兩個缺點,第一是直接將RNN的隱層作為興趣表達,而一般來隱層的表達和真正表達的商品embedding一般不是等價的,并不能直接反映用戶的興趣;另外一點,RNN將用戶歷史行為的每個行為看成等權的一般來說也不合理。整個DIEN的整體框架,如圖4.43所示。
圖4.43 DIEN模型框架
(1) 輸入層
和DIN的輸入一樣。按照類型可以分為4大類
a) 用戶畫像特征:如年齡、性別、職業等
b) context特征:如網絡環境、時間、IP地址、手機型號等,與user以及item無關
c) target ad特征:當前候選廣告
d) 用戶行為特征:DIEN里最重要的能體現用戶個性化的特征,對于每個用戶來說,假設有T個歷史行為,按照發生的先后順序依次輸入模型
(2) embedding層
將one-hot特征轉為dense的embedding向量
(3) 興趣抽取層(interest extractor layer)
該層的主要作用和DIN一樣,為了從embedding層中抽取出用戶的興趣。該paper認為用戶當前對候選廣告是否感興趣,是和歷史行為behavior有關的,所以引入了GRU的序列模型來擬合抽取用戶興趣。
經過GRU結構后,商品的embedding表達從e(t)變成了h(t),表示第t個行為序列的embedding表達。
圖4.44 DIEN中的輔助loss結構
除了GRU結構提取隱層的向量,DIEN還引入了有監督學習,強行讓原始的行為向量e(t)和h(t)產生交互。如圖4.44所示,引入了輔助loss(auxiliary loss),當前時刻h(t)作為輸入,下一刻的輸入e(t+1)認為是正樣本(click),負樣本進行負采樣(不等于當前時刻);然后讓h(t)與正負樣本分別做向量內積,輔助loss定義為:
最終的loss表達為:
其中a為超參數,代表的是輔助loss對整體loss的貢獻。有了這個輔助loss,t時刻提取的隱層向量h(t)可以比原始的h(t)更有助于表達用戶興趣,也可以加速網絡的訓練過程。
(4) 興趣進化層(interest evolving layer)
理論上來說,h(t)如果替代e(t)作為商品的最終表達其實也是可以的,把用戶序列t=1,2,3,…,T當成用戶的T個行為過的商品,然后和當前的候選廣告套用DIN的attention 網絡去計算每個行為和當前候選廣告的權重,最終得到用戶的歷史行為加權表達也是完全ok的。但作者認為用戶的行為模式是會發展的,因此引入了第二層GRU網絡來學習每個歷史行為序列和當前候選廣告之間的權重.
對于每個歷史行為ht,當前候選廣告ea,通過softmax求出兩者的權重。注意這里不是直接向量點擊,而是引入了矩陣W,可以認為是簡單的一層全連接網絡。
如何使用這里學習的attention作為興趣進化層的輸入,作者又提出了三種計算方法
(1) AIGRU(attention input with GRU)
最基礎的版本,興趣進化層第t個行為序列的input就是隱層ht的加權
作者嘗試后發現效果并不好,原因是如果是輸入0,也會參與到隱層ht的計算和更新,相當于給用戶興趣的提取引入了噪音,不相關的用戶行為會干擾模型的學習
(2) AGRU(attention base GRU)
這里作者使用了attention權重at來取代原始GRU中的更新門,表達如下
(3) AUGRU(GRU with attentional update gate)
這里作者依然對原始GRU做了改造,公式如下
圖4.45 AUGRU結構
其中,ut’引入了at來取代原有的更新向量ut,表達的是當前ut’對結果的影響。如果當前權重at較大,ut’也較大,當前時刻ht’保留更多,上一個時刻ht-1影響也會少一點。從而整個AUGRU結果可以更平滑的學習用戶興趣
4.3 feature-based模型總結
Feature-based的模型主要在于學習特征之間的交叉,是近年來整個推薦系統在排序層面的主流研究方向,按照不同維度,我個人把4.2列到的模型分為4個類型,同一個模型可能會分到不同的類型里。這里的分類僅僅代表個人的觀點,歡迎探討。
4.3.1 基于框架的模型
(1) wide&deep模型
深度加寬度的模型范式,本身并不是一個具體的模型,wide和deep部分可以用任意結構框架,wide的baseline是LR模型;deep的baseline是MLP模型。
(2) deep crossing模型
和wide&deep最大的不同是deep部分引用了res-net,但個人覺得在目前主流的模型里用的較少。雖然res-net理論上可以使用更深的模型提升效果,但在目前工業界大規模稀疏的推薦系統里,還沒見到太多往res-net方向取得較大進展的工作。
4.3.2 基于FM特征二階組合的模型
學習特征交叉的主要手段是將特征的embedding做交叉,特點是特征的交叉是二維的,無非是二階交叉如何做。
(1)deepFM模型
特征交叉使用的element-wise product,最終得到的是一個實數
(2)NFM模型
交叉使用的bi-interaction,可以理解成是所有vector的sum pooling,最終得到的是一個向量
(3) AFM模型
交叉使用的帶權重的bi-interaction,可以理解成所有vector的weight sum pooling,然后使用一個簡單的線性模型得到最終的值
(4) PNN模型
PNN模型放到基于FM的模型是因為本質上和FM一樣,都是在學習特征的二階組合。和deepFM不同的是,以IPNN為例,PNN的所有特征兩兩product交叉學習得到的值conat后得到現實的product vector后進入MLP模型;而deepFM是直接將FM模型的vector輸入到MLP模型中。
4.3.3 基于attention的模型
(1) AutoInt模型
使用multi head機制,每個特征用self-attention得到其他特征和自己的attention權重。每個特征的所有head得到的特征concat起來作為新特征
(2) DIN模型
只使用戶歷史行為特征作為keys,keys之前沒有時間序列;得到keys和當前候選item的attention。
(3) DIEN模型
只使用用戶歷史行為特征作為keys,keys之間具有先后順序,引入兩層GRU表達,第一層GRU學習用戶歷史行為序列的信息,每個時刻t輸出的隱層embedding為該時刻item的embedding表達;第二層GRU用來學習歷史每個時刻t的歷史行為和當前候選廣告的權重。
(4) FiBiNet 模型
把FiBiNet模型放在attention模型主要是它的SENet部分,通過squeeze->Excitation->reweight提取原始embedding的特征重要性,得到新特征,這里其實也體現了每個特征embedding的attention。
4.3.4 基于特征高階組合的模型
(1) DCN模型
使用多層的cross 來做特征交叉,對于cross網絡中每一層的輸入都由前一層以及第一層的輸入組成,從這個維度上代表的是高階特征的組合。比如說,第四層網絡的輸出包含了第三層和第二層的輸入;而第三層又包含了第二層和第一層,因此這里就是個3階的特征交叉。特征的交叉使用的是bit-wise,也就是每個特征內部embedding的element也會兩兩交叉
(2) xdeepFM模型
使用CIN模型來提取特征交叉。和DCN模型一樣的是,這里也使用了多層的cross,每一層的輸入也是由第一層和上一層的輸入組成,不同的是,xdeepFM模型的特征交叉是vector wise層級的,而DCN模型是bit-wise的
(3)FGCNN模型
通過使用CNN模塊,先是卷積層提取局部特征的連接,如高度等于3能夠提取相鄰3個field的特征的關系,因此具有高階特征的交叉能力。然后又通過池化層提取global信息,確保特征的輸入順序對結果的影響能夠被捕捉到。
5.總結
推薦和搜索的本質其實都是匹配,前者匹配用戶和物品;后者匹配query和doc。具體到匹配方法,分為傳統模型和深度模型兩大類,第二章講的是傳統模型,第三章和第四章講的是深度模型。
對于傳統模型,主要分為基于協同過濾的模型和基于特征的模型,兩者最大的不同在于是否使用了side information。基于協同過濾的模型,如CF, MF, FISM, SVD++,只用到了用戶-物品的交互信息,如userid, itemid, 以及用戶交互過的item集合本身來表達。而基于特征的模型以FM為例,主要特點是除了用戶-物品的交互之外,還引入了更多的side information。FM模型是很多其他模型的特例,如MF, SVD++,FISM等。
對于深度模型,主要分為基于representation learning的深度模型以及match function learning的深度模型。基于representation learning的深度模型學習的是用戶和物品的表示,然后通過匹配函數來計算,這里重點在與representation learning階段,可以通過CNN網絡,auto-encoder, 知識圖譜等模型結構來學習。
對于match function learning的深度模型,也分為基于協同過濾的模型和基于特征的模型。前者和傳統CF模型一樣,不同在于后面接入了MLP模型來增強非線性表達,目的是為了使得user 和item的vector盡可能接近,這種方法就是基于NCF的模型;也有通過引入relation vector來是的user vector加上relation vector后接近item vector,這種方法是基于翻譯的模型。
對于match function learning另一種模型框架,是基于特征層面的,有基于fm模型的,基于attention的,以及高階特征捕捉的,另外還有基于時間序列的文章中只提到了DIEN模型。
整理本篇綜述主要基于原始slides,對其中的paper部分粗讀部分精讀,收獲頗多,在全文用如何做好推薦match的思路,將各種方法盡可能串到一起,主要體現背后一致的思想指導。多有錯漏,歡迎批評指出。
6. 參考文獻
(1) https://www.comp.nus.edu.sg/~xiangnan/sigir18-deep.pdf
(2) Xiangnan He, Hanwang Zhang, Min-Yen Kan, and Tat-Seng Chua. Fast matrix factorization for online recommendation with implicit feedback. In SIGIR 2016.
(3) Yehuda Koren, and Robert Bell. Advances in collaborative filtering. Recommender systems handbook. Springer, Boston, MA, 2015. 77-118.
(4) Santosh Kabbur, Xia Ning, and George Karypis. Fism: factored item similarity models for top-n recommender systems. In KDD 2013.
(5) Yehuda Koren. Factorization meets the neighborhood: a multifaceted collaborative filtering model. In KDD 2018.
(6) Steffen Rendle. Factorization machines. In ICDM 2010.
(7) Hong-Jian Xue, Xin-Yu Dai, Jianbing Zhang, Shujian Huang, and Jiajun Chen. Deep matrix factorization models for recommender systems. IJCAI 2017.
(8) Suvash Sedhain, Aditya Krishna Menon, Scott Sanner, and Lexing Xie. Autorec: Autoencoders meet collaborative filtering. In WWW 2015.
(9) Yao Wu, Christopher DuBois, Alice X. Zheng, and Martin Ester. Collaborative denoising auto- encoders for top-n recommender systems. In WSDM 2016.
(10) Sheng Li, Jaya Kawale, and Yun Fu. Deep collaborative filtering via marginalized denoising auto- encoder. In CIKM 2015.
(11) Xue Geng, Hanwang Zhang, Jingwen Bian, and Tat-Seng Chua. Learning image and user features for recommendation in social networks. In ICCV 2015.
(12) Jingyuan Chen, Hanwang Zhang, Xiangnan He, Liqiang Nie, Wei Liu, and Tat-Seng Chua. Attentive collaborative filtering: Multimedia recommendation with item-and component-level attention. In SIGIR 2017.
(13) Fuzheng, Zhang, Nicholas Jing Yuan, Defu Lian, Xing Xie, and Wei-Ying Ma. Collaborative knowledge base embedding for recommender systems. In KDD 2016.
(14) Xiangnan He, Lizi Liao, Hanwang Zhang, Liqiang Nie, Xia Hu, and Tat-Seng Chua. Neural collaborative filtering. In WWW 2017.
(15) Ting Bai, Ji-Rong Wen, Jun Zhang, and Wayne Xin Zhao. A Neural Collaborative Filtering Model with Interaction-based Neighborhood. CIKM 2017.
(16) Xiangnan He, Xiaoyu Du, Xiang Wang, Feng Tian, Jinhui Tang, and Tat-Seng Chua. Out Product-based Neural Collaborative Filtering. In IJCAI 2018.
(17) Tay, Yi, Shuai Zhang, Luu Anh Tuan, and Siu Cheung Hui. "Self-Attentive Neural Collaborative Filtering." arXiv preprint arXiv:1806.06446 (2018).
(18) Ruining He, Wang-Cheng Kang, and Julian McAuley. Translation-based Recommendation. In Recsys 2017.
(19) Yi Tay, Luu Anh Tuan, and Siu Cheung Hui. Latent Relational Metric Learning via Memory-based Attention for Collaborative Ranking. In WWW 2018.
(20) Heng-Tze Cheng, Levent Koc, Jeremiah Harmsen, Tal Shaked, Tushar Chandra, Hrishi Aradhye, Glen Anderson et al. Wide & deep learning for recommender systems. In DLRS 2016.
(21) Ying Shan, T. Ryan Hoens, Jian Jiao, Haijing Wang, Dong Yu, and J. C. Mao. Deep crossing: Web-scale modeling without manually crafted combinatorial features. In KDD 2016.
(22) Xiangnan He, and Tat-Seng Chua. Neural factorization machines for sparse predictive analytics. In SIGIR 2017.
(23) Jun Xiao, Hao Ye, Xiangnan He, Hanwang Zhang, Fei Wu, and Tat-Seng Chua. Attentional factorization machines: Learning the weight of feature interactions via attention networks. IJCAI 2017.
(24) Guo, Huifeng, Ruiming Tang, Yunming Ye, Zhenguo Li, and Xiuqiang He. Deepfm: A factorization-machine based neural network for CTR prediction. IJCAI 2017.
(25) Ruoxi Wang, Gang Fu, Bin Fu, Mingliang Wang. Deep & Cross Network for Ad Click Predictions. ADKDD2017.
(26) Jianxun Lian, Xiaohuan Zhou, Fuzheng Zhang, Zhongxia Chen, Xing Xie, Guangzhong Sun. xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems. KDD2018.
(27) Bin Liu, Ruiming Tang, Yingzhi Chen, Jinkai Yu,Huifeng Guo, Yuzhou Zhang. Feature Generation by Convolutional Neural Network for Click-Through Rate Prediction. WWW2019.
(28) Tongwen Huang, Zhiqi Zhang, Julin Zhang. FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction. Recsys2019.
(29) Weiping Song, Chence Shi, Zhiping Xiao, Zhijian Duan, Yewen Xu, Ming Zhang,Jian Tang. AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks. CIKM2019.
(30) Guorui Zhou, Xiaoqiang Zhu, Chengru Song, Ying Fan, Han Zhu, Xiao Ma,Yanghui Yan,Junqi Jin,Han Li, Kun Gai. Deep Interest Network for Click-Through Rate Prediction. KDD2018.
(31) Guorui Zhou, Na Mou, Ying Fan, Qi Pi,Weijie Bian, Chang Zhou, Xiaoqiang Zhu and Kungai. Deep Interest Evolution Network for Click-Through Rate Prediction. AAAI2019.
責任編輯:xj
原文標題:三萬字整理深度匹配模型
文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
-
FM
+關注
關注
1文章
181瀏覽量
59114 -
匹配
+關注
關注
0文章
44瀏覽量
13956 -
卷積
+關注
關注
0文章
95瀏覽量
18499 -
深度學習
+關注
關注
73文章
5492瀏覽量
120975
原文標題:三萬字整理深度匹配模型
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論