日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

简单典型二阶系统_FFM及DeepFFM模型在推荐系统的探索

發布時間:2023/12/29 windows 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单典型二阶系统_FFM及DeepFFM模型在推荐系统的探索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/本文是我18年12月在AICon(全球人工智能與機器學習大會)的講稿,感謝極客邦的同學,幾乎一字不落地把演講內容轉成了文字,我在這個基礎上簡單修正了一些內容。/

大家好,先簡單自我介紹一下,我叫張俊林,目前在微博機器學習團隊負責AI Lab的日常工作,主要是推動一些業界新技術應用到業務里去。

今天我們主要介紹一下,FFM模型和它的深度學習模型版本,以及我們在這個基礎上改造的兩個模型。這頁PPT是我要跟大家分享的一個提綱。

首先,我會給大家介紹一下大規模推薦系統的整個流程框架和其中一些比較核心的技術點。

第二,我們知道,做推薦系統的Rank模型會面臨一個選擇:是用傳統模型還是用目前比較火的深度學習模型。所以我會簡單地介紹一下這兩大類模型的發展歷程,包括它們各自的特點。

第三,傳統的線性模型,我們聚焦在FFM模型上。FFM模型有它的優點,也有它的問題,所以針對它的問題,我會介紹一個我們提出的一個改進的版本,我把它叫做“雙線性FFM模型”。

另外,我也會大致介紹一下,典型的深度學習模型有哪些,他們各自的特點是什么、使用場景是什么。

最后,我會介紹一下DeepFFM,這可以認為是我們針對FFM做的神經網絡版本的進一步改進版本,至于它是怎么做的,效果怎么樣,我在后面會重點介紹。

大規模推薦系統介紹

首先進入第一部分,大規模推薦系統的介紹。

推薦系統大家實際都非常熟悉了,因為大家現在都用手機App,我覺得只要是上網的話,70%的時間你一定會受到推薦系統的影響,只不過你可能沒有意識到它的存在。

舉幾個典型的例子:網易云音樂的音樂推薦,我個人覺得網易音樂的推薦做得是相當不錯的;此外還有豆瓣的電影推薦、阿里商品推薦等等,我這里只列了幾個比較典型的例子,主要是大家可能平常比較關注的一些場景。

以微博為例:常見推薦系統場景

因為我來自于微博,所以我簡單地介紹一下,在微博有哪些場景是應用推薦、CTR以及排序任務的。

典型的有三個場景。你如果刷微博就會看到,第一個就是關系流Feed排序。最早的關注流Feed排序是按時間排序的,但后來因為國外的Facebook、Twitter都陸續上了機器學習的ranking機制,所以說現在微博的關系流實際是加了機器學習排序的。可是時間因素在其中還是起著很關鍵的作用,這種場景對于機器學習模型雖然有使用,但是有限制,限制就是排序對時間權重的依賴還是比較高。

另外一個是熱門流。這個是比較典型的、完全個性化的一個流,因為它給用戶的推薦是不需要用戶關注的,只要認為通過用戶過去的點擊行為,判斷其可能對什么感興趣,就會給用戶推薦,這是一個完全個性化的信息流。

此外,還有正文頁的推薦。用戶點開一個微博進去之后,下面會推薦一個用戶可能感興趣的微博,這是一個附屬的推薦場景。

這三個場景在微博上是典型的信息流排序,或者是推薦的使用場景。

以微博為例:大規模推薦系統架構

我們以微博的推薦系統為例,來簡單介紹一下:現在工業級的大規模推薦系統是怎么來做推薦架構和推薦流程的。

盡管我說是以微博為例,但是我可以肯定的說,目前工業界90%的推薦系統就是這個結構,只不過可能在有些具體算法和實施方式上有些區別,但是架子大都是這個架子。

我簡單捋一下這個過程。

首先它分為兩大部分,最上面那部分是在線推薦部分,底下部分是離線部分。

先說在線部分。我們習慣把微博叫做物料庫,實際就是item,物料庫的規模會比較大,一般會先過召回模塊,為什么要走召回?做過推薦的人都很清楚:要給微博的每一個用戶在熱門流推出個性化的信息流,假設一天新發的微博條數以億計算,再加上歷史的條數,任何一個人登上微博去刷熱門流,都需要算幾億條微博給這一個人。如果不增加召回環節,直接部署排序模型,這個計算量是很巨大的,速度上根本算不過來。

召回的目的很簡單,就是把個性化的推薦item數目降下來。召回等于說把用戶可能感興趣的物料進行一些縮減,縮到一定的數量范圍里面,但是還要跟用戶興趣相關。如果如果召回Item的數量還是比較多,可以部署一個粗排模塊,用簡單的排序模型再篩選一下,Item數量就可以再往下減一減,然后進入精排環節。因為到這一步已經經過兩輪篩選,對于某個用戶來說,剩下的物料已經不多了。所謂精排的意思就是:在此基礎上可以加一些復雜模型,精制地給把少量微博根據用戶興趣排一排序,把用戶真正感興趣的內容排到前面去。

之后還有業務邏輯。比如說要把已讀的微博內容過濾掉,需要考慮推薦結果的多樣性以及其它各方面的業務邏輯。

我們會捕捉用戶行為,舉個例子,用戶看過哪些微博、反饋過哪些微博、互動過哪些微博,這些行為就被收集起來,對于實時的用戶行為,我們一般會部署一個實時的模型,可以實時地更新在線模型,這體現在:召回可以改成實時的模式,包括ranking也可以改造成實時的模式。

所謂實時的意思就是:用戶刷了一條微博,或者互動了一條微博,立刻就在刷出下一條微博的時候,體現出用戶剛才這個行為了。

當然還會計算離線模型,因為這個模型它的訓練數據更充分、更精準。通過這種方式,我們會定期地更新線上的這三個模型,這就是典型的工業界做大規模推薦系統的整體流程。

正如我上面所講的,這個框架是大多數做推薦的公司的推薦業務基本框架,只不過可能幾個關鍵環節使用的具體技術方法不同而已。

線上推薦系統的兩個階段

現在我們來細致地看一下在線部分。

我剛才說了三個過程:召回、粗排、精排,但是最常見的還是兩個階段的,就這張圖展示的。

第一階段,召回,第二階段,排序。我再重復一下:召回是用來做什么的,它的特點是什么,ranking在干什么,我覺得搞推薦系統,先要把這些事搞明白。

#### 召回階段

我剛剛也提到了,首先是因為面臨的侯選數據集非常大,而最根本的要求是速度快,因為要求速度快,所以就不能部署太復雜的模型。另外要使用少量的特征,這是召回階段的特性。召回階段要掌握一點:怎么快怎么來,但是也要兼顧用戶興趣。簡單來說,召回會把大量的物料減到幾百上千的量級,然后扔給后面的ranking階段。

#### 排序階段

它和召回階段的特性完全不一樣,ranking階段只有一點需要記住:模型要夠準,這是它的根本。此外,因為這一階段處理的數據量比較少了,所以就可以部署復雜模型,就可以使用我能想到的任意有用的特征,但歸根結底是為了一件事:怎么排得準。

排序模型:工業界算法的演進路線

CTR模型、推薦模型發展的歷史很久了,舉個例子,百度部署廣告系統,同時也部署了CTR的預估系統,到目前為止應該有十幾到二十年的經驗了。那么我們要歸納一下,公司做推薦的話,模型是按照一個什么樣的軌跡發展的。下面PPT展示了這個發展過程。

最早的是規則。什么叫規則?這個規則可能和你想的規則不太一樣,比如說給用戶推薦最熱門的內容,這是一種規則,此外還可以添加很多其他的規則。規則的好處是什么?特別簡單,如果想通過一個規則去做推薦,三天就能上線,效果也不會特別差,訓練速度快,而且還可能不需要有監督地去訓練。但是如果后來的規則越來越多的話,問題就出現了,它們會相互沖突,系統的綜合效果,很難往上提升,因為對于系統來說,很難有個明確的優化目標,這是問題所在。

在早期的規則推薦之后,業內一般會用LR,也就是邏輯回歸。LR之后,一般就是LR加GBDT。所有的CTR模型,它的核心就是有效特征的選擇,以及有效的特征組合的發現和利用。所以,怎么有效解決特征組合的問題,是個引領技術發展的綱領,CTR或者排序模型的發展路徑就按照這個方向發展。

LR的特性是可以人工做特征組合,但是人工做特征組合有個問題:需要投入相當大的人力才可以做好。那么GBDT相對LR來比的話,有什么好處?GBDT可以半自動化地做一些特征組合,于是LR后面大家就用LR+GBDT模型,能夠半自動地做特征組合了,不完全依賴人工。

再往后發展就是FM。FM跟LR+GBDT區別又是什么?它可以全自動化地做特征組合。那么從特征組合的角度講,又有什么新的特點呢?很簡單,我們用FM的時候,因為一般因為計算量的問題,只做二階特征組合。那么什么叫二階特征組合?很好理解,舉個例子,比如兩個特征,一個特征是性別,假設“性別=女”,另外一個特征是時間,假設“時間=雙十一”,這兩個特征如果組合到一起,你會發現是一個非常強的指示,是用戶會不會買東西的一個特征,這就叫二階組合特征,因為有兩個單特征進行組合。

再往后,也就是現在這個階段,大家都在講DNN排序模型。那么DNN相對FM有什么好處?除了一階和二階特征外,它可以捕獲三階特征、四階特征、五階特征等更高階的特征組合; FM一般來說很難捕獲高階的特征,DNN典型的特點就是可以捕獲更高階的特征。按照這個路線往后捋,你要把握核心的一點是:特征組合自動化,包括更高階的特征怎么融合進去,這是CTR模型進化的總體方向。

通過上面這個PPT,我再把后面要講的內容捋一捋:

  • 第一部分我會先介紹下排序模型的發展;
  • 第二部分會介紹一下經典的線性排序模型有哪些,特性是什么;
  • 第三部分會講我們針對FFM提出的改進的“雙線性FFM”模型;
  • 第四部分,我們講一下ranking模型的發展趨勢。目前來說,有兩種演化的分支,一個就是以W&D做為起點的演化分支,另外一個以Deep&Cross做為起點的演化分支;
  • 第五部分,也是最后一部分,我們對排序模型第一個演化分支也做了一個改進模型。核心思想是,FFM模型怎么做成深度網絡版本的,我們給出了一個新的改進版本的神經網絡FFM模型。

線性排序模型:從LR到FFM模型

我先介紹一下線性模型。大家可能都有些機器學習的基礎,這應該是有監督模型中最簡單的一個。

所謂線性模型,比如說要做CTR,很好理解,看這個公式:

xi就是某個特征值,意思要給每個特征學習一個對應的權重:wi,最終的模型預測值就是所有的特征值乘以這個權重,加起來求和,這就是最簡單的線性模型。

一般我們做LR,會在上面求和基礎上,套一個sigmoid函數,也就是上圖中黃色的曲線,因為線性模型取值范圍已經不可控,可以無限大,所以不好用。通過S形函數把它壓到0和1之間,我就可以判斷,是正面的結果還是負面的結果,LR就是這樣的過程。

那么線性模型有什么優點和缺點呢?首先它簡單,所以好理解,上線快,速度快,這是它典型的優點。盡管我們到了深度學習時代了,但事實上,很多公司還在用LR,因為它確實很好用。但它也有問題,我剛才講了一句話:CTR模型的核心是特征組合,但是你從上圖的公式里看不到任何特征組合的跡象:單個特征乘以權重,特征間的關系沒有被考慮,這就是LR最大的一個缺點。線性模型有這個問題,它不能夠捕獲特征組合,所以要改造一下這個公式,把特征組合揉進來。

特征組合要怎么組合?任意兩個特征的組合,可以把一個特征組合當作一個新特征,但既然它是新特征,它也要學個權重,下圖公式中標紅的wi,j就是這個特征組合的權重。

這樣,我們就能把組合特征顯式地、簡單的揉進了這個公式,所以它的好處是:現在能夠捕獲兩兩特征組合。其實這么做,它也有問題,剛才我們這么改過來的模型本質是SVM,它的問題是特征組合的泛化能力弱,于是我們可以進一步對它進行如下修改。

上面PPT中的公式,前面還是一樣,就是LR模型,后面的也是體現了任意兩個特征組合,和剛才公式唯一的區別在:原先的wi,j,換成了vi和vj的點積。vi和vj又是什么含義呢?vi的意思是:對于xi這個特征來說它會學到一個embedding向量,特征組合權重是通過兩個單特征各自的embedding的內積呈現的,因為它內積完就是個數值,可以代表它的權重,這其實就是FM模型。

SVM泛化能力弱,FM的泛化能力強。

在FM之后,我們再改進一個新版本,就是FFM模型。我先定性地說下這個模型:它的效果比FM好,但是問題在于,參數量太大。

首先, FFM模型的特性是什么?

舉例來說,有三個特征fields,這是一個在線投廣告的應用場景,比如說我要往ESPN這個網站投廣告,第一個特征Publisher是要投放廣告的網站是誰,第二個特征是這個廣告主(Advertisor)是誰,本例中假設是Nike;第三個特征,閱讀者(Gender)是誰,閱讀者的性別是男性(male);那么他會不會點擊?這個例子中是會點擊;那么我們在這個例子上再想,FFM在做什么事?

首先這個公式做了任意兩個特征組合,它的特性是要把任意一個特征學成embedding,這就是剛才講的FM的做法,那么FFM是怎么做的呢?

FFM是FM的一個特例,它更細致地刻畫了這個特征。首先它做了任意兩個特征組合,但是區別在于,怎么刻劃這個特征?FM只有一個向量,但FFM現在有兩個向量,也就意味著同一個特征,要和不同的fields進行組合的時候,會用不同的embedding去組合,它的參數量更多。對于一個特征來說,原先是一個vector,現在會拓成F個vector,F是特征fields的個數,只要有跟其它特征的任意組合,就有一個vector來代表,這就是FFM的基本思想。

對于FFM的某個特征來說,會構造F個vector,來和任意其他的fields組合的時候,各自用各自的。它有什么特點呢?首先,FFM相對FM來說,參數量擴大了F倍,效果比FM好,但是要真的想把它用到現實場景中是有問題的,而問題同樣在于參數量太大。參數量太大導致做起來特別耗內存,特別慢,所以我們的改進目標是把FFM模型的參數量降下來,并且效果又能達到FFM的效果。于是我們改了一個新模型,我把它叫“雙線性FFM模型”。

FFM模型改進版:雙線性FFM(Bilinear-FFM)模型

下面我們介紹一下雙線性FFM怎么做的,這是18年5月份左右,我們(張俊林&黃通文)在改進FFM的過程中嘗試出的一個有效的改進模型。這個圖基本就顯示原理了:

因為每個特征現在有F個vector來表示它的參數空間,每個特征都需要跟上F個vector,一般CTR任務中的特征數量是非常大的,所以FFM的參數量就異常地大。能不能把跟每個特征走的參數矩陣,抽出它們的共性,所有特征大家一起共享地來用這個參數?如果你一起用的話,就能夠共享這個參數矩陣,你就能把參數量降下來,這就是我們講的雙線性FFM的核心思想。vi,vj還是跟FM一樣,還是用一個vector來表達,但是把兩個特征交互的信息放在共享參數里面去學,這就是雙線性FFM的核心思想。

我剛才講了一個簡單的思路,理論上里面還有些變化點,比如這個共享參數矩陣W怎么設計?這是有些學問在里面的。我們可以有三種選擇。

類型1,不論有多少個特征,大家都共享同一個W,這是參數量最小的一種形式。W的參數量是K×K,K就是特征embedding的size。

還有什么改進的方法嗎?能不能每個fields給一個不同的W呢?應該是可以的,我們在類型2就用到了這個方法,有12個Fields,就有12個W,每個Fields,各自學各自的W。

還可以拓展,就是類型3。我們知道,Fields還可以組合,有12個不同Fields,就有12×12種Fields間的組合,如果每個組合給一個W,這就能更加細化地描述特征組合了。

所以這里可以有有三種不同的W定義。此外還可以有一個變化點,即可以加入Layer Norm,我們試過,加入Layer Norm影響比較大。

我們看一下結果。

暫時不說剛才幾個改進模型,先說幾個基礎模型:LR、FM、FFM。這是我們在Criteo和Avazu兩個數據集上做的實驗,這兩個數據集是工業級,大約在四千到四千五百萬的CTR數據。

先說LR和FM,可以從數據里面看出來,FM是顯著優于LR的,這兩個數據都是這樣。首先要確認一點,不要期望太高。你期待提了五個點、十個點,在CTR里,尤其是這兩個數據集合,你是見不到這種現象的,在很多大規模數據集合里,AUC能升一個點就是非常顯著的一個增加。FFM跟FM比,AUC從0.7923到0.8001,也是顯著提升的,這是這三個模型的特性。

上面說過,雙線性FFM的共享參數矩陣W有三種類型。這三個類型中哪個效果好?雙線性FFM的AUC達到了0.7995,Fields組合效果是最好的,接近于FFM,但稍微低一點。還有個變化點,可以加入Layer Norm,同樣加到了那三個模型里面去,最好的效果達到了0.8035,已經超過FFM,而且效果比較顯著。

所以我們可以下結論:雙線性FFM的推薦效果是可以達到與FFM相當,或者說超過FFM的性能的,而且Layer Norm對這個事情有明顯的提升作用。

我們來估算一下,改進的雙線性FFM模型,它的參數量跟FFM比是什么情況?如果說我們用Criteo這個4500萬的數據集,它有230萬個特征,39個Fields,假設embedding size是10,如果用FFM就會有8.97億的參數量,而用雙線性FFM,FM部分是大概2300萬的參數,剛才三個改進模型中,類型一100個參數,類型二3900個參數,類型三15萬參數,與FFM相比,參數差了38倍,但性能兩者是相當的,這就是這個模型的價值所在。

總結一下雙線性FFM模型:它的性能接近于FFM,但是參數量是FFM模型的2.6%,這是它的優點所在。

深度排序模型:從Wide&Deep到XDeepFM模型

下面我介紹一下深度模型,首先介紹一下它的發展歷程。

所有的深度學習,做CTR的模型時都會有DNN的部分,沒有例外。什么含義呢?特征輸進去,然后把它轉換成embedding,上面套兩個隱層進行預測,這是所有模型公有的一部分。

我把現在這個深度CTR模型會分成了兩大類。從結構來說,第一類我把它叫并行結構,它有DNN結構外的另外一個組件,我管它叫FM Function,它捕捉特征的兩兩組合,兩者關系看上去是個并行的,所以我把它叫并行結構。

除了并行還能怎么修改這個結構?可以把它搞成串行的,前面一樣是onehot到embedding特征編碼,然后用FM Function做二階特征組合,上面套兩個隱層做多階特征捕獲,這是串行結構。典型的模型包括:PNN、NFM、AFM都屬于這種結構。

如果再歸納一下,你會發現深度排序模型,現在有朝兩個研究路線走的趨勢。這兩條演進路線怎么走的呢?

第一條路線,提出新型的FM Function,就是怎么能夠設計一個新的FM Function結構,來更有效地捕獲二階特征組合,比如說典型的模型包括Wide&Deep,DeepFM,NeuralFFM等,就是用來做這個的。

第二條演進路線,就是顯式地對二階、三階、四階···K階組合進行建模。目前的研究結論是這樣的:對CTR捕獲二、三、四階都有正向收益,再捕獲五階以上就沒什么用了。典型的代表模型是DeepCross、xDeepFM。

針對這兩條演進路線,我會各自介紹兩到三個代表系統。

第一個代表系統:Wide&Deep,這個系統我相信大家都聽說過。

Wide&Deep的結構是什么呢?實際上就是我畫的并行結構,右邊就是DNN部分,左邊的FM Function用的是線性回歸。我個人認為,Wide&Deep是相對原始的模型,LR有的問題它也有,特征組合需要人去設計,Wide&Deep也有這樣的問題。

我們可以改進一下。DeepFM模型,它相對Wide&Deep做出了什么改進呢?很簡單,其實就是把FM Function的LR換成了FM,就能自動做特征組合了,這就是DeepFM。如果想部署深度模型,我建議可以考慮這個模型,這是目前效果最好的基準模型之一。而且我認為DeepFM是個目前技術發展階段,完備的深度CTR模型。所謂完備,是指的里面的任意一個構件都有用,都不能少,但是如果再加新東西,感覺意義又沒那么大,或者太復雜了工程化有難度。完備是從這個角度說的。

第二條路線的兩個代表是:Deep& Cross和xDeepFM。Deep&Cross用來做什么?顯式地做高階特征組合。就是說設計幾層神經網絡結構,每一層代表其不同階的組合,最下面是二階組合,再套一層,三階組合,四階組合,一層一層往上套,這就叫顯式地捕獲高階特征組合,Deep&Cross是最開始做這個的。

xDeepFM是微軟2018年發的一篇新論文,它是用來把二階、三階、四階組合一層一層做出來,但無非它用的是類CNN的方式來做這個事的。這是第二個路線的兩個代表。盡管這個符合模型發展趨勢,我個人認為這種模型太復雜,真正部署上線成本比較高,不是優選方案。

接著來講一下,我對深度CTR模型的個人看法。

首先可以看到,現在所有的模型結構趨同,要么并行,要么串行,幾乎沒有例外,這其實是能側面反映出一些問題的,至于是什么你可以考慮考慮;第二,輸入問題基本解決了,基本都是onehot和embedding做映射。模型的核心所在是二階特征組合怎么設計網絡結構。幾乎所有的方法,或者大多數方法變化點集中在這。另外就是通過多層網絡,顯式地做二、三、四階,這是目前的一個趨勢。再有,多模態融合肯定也是個大趨勢,在這個場景下,深度學習是有其不可替代的作用的。為什么這樣?你可以考慮一下,其實原因很簡單。

DeepFFM模型

最后介紹一個改進版本的DeepFFM。

首先我拋給大家一個問題:剛才我們講了,FFM模型有它的對應版本,是DeepFM模型,那么問題來了:能不能設計一個模型神經網絡版的FFM?肯定是可以的。

我先給出一個前導模型:NeuralFFM,這是2017年南京大學楊毅等人提的,他們在參加騰訊的競賽中提出了這個模型,這個模型效果比較好,是單模型的第三名。我們對這個模型做了一個改進,把它叫做DeepFFM。

先說一下NeuralFFM模型怎么做的,這是我剛才拋給大家問題的解答。

要做一個神經網絡版的FFM模型該怎么做?先把它想成DeepFM,再想怎么把FM部分改成FFM。如果是DeepFM,一個特征、一個vector,然后在上面做兩兩特征組合,這就是DeepFM的思路。FFM區別在哪里?一個特征現在不是一個vector,是F個vector,在兩兩做特征組合的時候,需要做特征交叉,這不就是深度的FFM模型嗎?很簡單,NeuralFFM就是這個思想。

但是這里有個變化點。兩個特征進行組合的時候,可以用內積做,也可以用哈達馬積做,這是有區別的。什么是內積呢?就是兩個向量,每個位置對應的相乘求和,表示一個數值;哈達馬積怎么做的呢?它比內積少做了一步,把對應的位置相乘,乘完之后不進行求和。

我們這個DeepFFM是怎么改進的呢?在特征交互層,也就是兩兩特征在這組合,我們加了一個Attention,也就是一個注意力模型進去。兩兩特征組合有很多,但是有的組合特征比較重要,有的沒那么重要,怎么體現這個思想?給每個特征組加個權重就可以。怎么給權重?加個Attention就可以了。這就是我們DeepFFM的核心思想。當然,我本人認為這種給特征組合權重的方式意義不大,所以就簡單試了試,包括AFM,也是類似思想,所以意義也不大,個人意見。我自黑起來是有很高水平的,不過這次是真心話。

至于什么是Attention,時間原因不介紹了,不懂的可以自己去查。Attention是個必備基礎知識,無論在推薦還是NLP里都是這樣。

再回頭講,我們是怎么改進的,也就是怎么給特征組合做Attention的。在特征交互層,我們先給出個內積版Attention,這是一個特征組合,組合完是一個值,我給每個兩兩特征組合的值都加個權重a1-an,加完權重之后,再把權重乘到值里,再加上Layer Norm,往上面DNN的隱層去走,這是第一個改進版本。

有沒有新的改進版本?肯定有,前面說過,不僅有內積,還有哈達馬積。哈達馬積是說兩個特征組合完之后是個向量,這是一個特征組合,里面有若干個神經元,但它整體代表一個特征組合。我給組合完的vector整體加個權重a1-an,每個都加權重,一樣再乘回來,上面再套LN,這就是哈達馬積版本。

那么,能不能繼續改進?我剛才是把它當作一個整體求Attention,還可以把每一位拆開,每個位都加Attention,每個位上面套層LN,這就是第三個版本。

來看一看實驗結果。先看剛才講的幾個深度典型模型的代表是什么效果?

DeepFM,我們實際測過,想改造其它模型把指標做得比它高得明顯,這是很不容易的;xDeepFM是3個基礎模型中效果最好的;NeuralFFM和DeepFM比,在這個數據集上并沒有很大提高,比原來稍有一點提升,但是在Avazu上是有明顯提升的;DeepFFM什么效果呢?下面標紅這三個,尤其是第二個模型做到0.8091,也就是說在所有的模型里面效果最好的,當然,提升也比較有限在Avazu來說也是效果最好的。

總結

最后總結一下。

今天講了大規模推薦系統是怎么構成的:包括召回加ranking,我們的主要內容放在ranking階段;之后,我回顧了一下線性模型,重點提到了雙線性模型,它的特點是可以在參數量極小的情況下,性能達到類似于FFM的效果;然后,我給大家分享兩個深度模型的演進路線,以及改進版本的DeepFFm,效果目前來看還是比較好的。當然,我個人不認為FFM模型是個好的實用化的往線上部署的模型,當然,這是另外一個話題。

謝謝大家。

總結

以上是生活随笔為你收集整理的简单典型二阶系统_FFM及DeepFFM模型在推荐系统的探索的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。