<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          FM模型的原理(上) | 推薦系統(tǒng)

          共 9623字,需瀏覽 20分鐘

           ·

          2021-04-08 20:35

          文 | 七月在線
          編 | 小七


          解析:


          既然你點(diǎn)開這篇文章了,我假設(shè)你是在某司做推薦系統(tǒng)的算法工程師。這個(gè)假設(shè)的正確率我估計(jì)大約在20%左右,因?yàn)楦鶕?jù)我的經(jīng)驗(yàn),80%的算法工程師是很博愛的,只要標(biāo)題里帶有“模型/算法/深度學(xué)習(xí)/震驚/美女….”等詞匯,他們都會好奇地點(diǎn)開看三秒,然后失望地關(guān)掉,技術(shù)性越強(qiáng)的反而越容易被關(guān)掉,很可能撐不過三秒。我說得沒錯(cuò)吧?嘿嘿。為了騙點(diǎn)擊,關(guān)于本文標(biāo)題,其實(shí)我內(nèi)心沖動里最想寫下的震驚部風(fēng)格標(biāo)題是這樣的:“連女神級美女程序媛看了都震驚!FM模型居然能夠做這么大規(guī)模推薦系統(tǒng)的召回!”,然后打開文章后,文章配上的背景音樂緩緩地傳來“路燈下昏黃的剪影,越走越漫長的林徑…….”


          嗯,好吧,我承認(rèn)連我自己也忍不了上面的場景,主要是這首歌我還挺喜歡的,單曲循環(huán)快半個(gè)月了,標(biāo)題風(fēng)格比較毀歌的意境。請收拾好您此刻看到上述標(biāo)題后接近崩潰的心情,不開玩笑了。讓我再次活回到幻想中,就勉強(qiáng)假設(shè)你是位推薦算法工程師吧,您堅(jiān)持說您不是?別謙虛,您很快就是了,請立即辭職去申請相關(guān)工作……如果您真的是推薦工程師,那么首先我想揪住您問個(gè)問題:一說起推薦模型或者推薦場景下的排序模型,您腦子里第一個(gè)念頭冒出的模型是哪個(gè)或哪幾個(gè)?

          如果你第一念頭冒出來的仍然是SVD/矩陣分解啥的,那么明顯你還停留在啃書本的階段,實(shí)踐經(jīng)驗(yàn)不足;


          如果你第一念頭是LR模型或者GBDT模型,這說明你是具備一定實(shí)踐經(jīng)驗(yàn)的算法工程師,但是知識更新不足。現(xiàn)在都9102年了,我們暫且把Wide&Deep/DeepFM這些模型拋開不提,因?yàn)樵诖笠?guī)模場景下想要把深度推薦模型高性價(jià)比地用好發(fā)揮作用其實(shí)并不容易。我們退而求其次,如果現(xiàn)在您仍然不能在日常工作中至少嘗試著用FM模型來搞事情,那只能說明一定概率下(30%到90%?),您是在技術(shù)方面對自我沒有太高要求的算法工程師,未來您的技術(shù)之路走起來,我猜可能會比較辛苦和坎坷,這里先向身處2025年的另一位您道聲辛苦啦。這是我對您的算法工程師之路的一個(gè)預(yù)測,至于這個(gè)預(yù)測準(zhǔn)不準(zhǔn),往后若干年的經(jīng)歷以及時(shí)間會告訴您正確答案,當(dāng)然我個(gè)人覺得付出的這個(gè)代價(jià)可能有點(diǎn)高。

          假設(shè)你第一念頭是在排序階段使用FM模型、GBDT+LR模型、DNN模型,這說明你算是緊追技術(shù)時(shí)代發(fā)展脈絡(luò)的技術(shù)人員,很好。那么,單獨(dú)給你準(zhǔn)備的更專業(yè)的新問題來了,請問:樹上七只猴…..嗯,跑偏了,其實(shí)我想問的是:我們?nèi)粘?吹降耐扑]系統(tǒng)長什么樣子,我相信你腦子里很清楚,但是能否打破常規(guī)?

          比如下列兩個(gè)不太符合常規(guī)做法的技術(shù)問題,您可以考慮考慮:


          第一個(gè)問題:我們知道在個(gè)性化推薦系統(tǒng)里,第一個(gè)環(huán)節(jié)一般是召回階段,而召回階段工業(yè)界目前常規(guī)的做法是多路召回,每一路召回可能采取一個(gè)不同的策略。那么打破常規(guī)的思考之一是:是否我們能夠使用一個(gè)統(tǒng)一的模型,將多路召回改造成單模型單路召回策略?如果不能,那是為什么?如果能,怎么做才可以?這樣做有什么好處和壞處?

          第二個(gè)問題:我們同樣知道,目前實(shí)用化的工業(yè)界的推薦系統(tǒng)通常由兩個(gè)環(huán)節(jié)構(gòu)成,召回階段和排序階段,那么為什么要這么劃分?它們各自的職責(zé)是什么?打破常規(guī)的另外一個(gè)思考是:是否存在一個(gè)模型,這個(gè)模型可以將召回階段和排序階段統(tǒng)一起來,就是把兩階段推薦環(huán)節(jié)改成單模型單環(huán)節(jié)推薦流程?就是說靠一個(gè)模型一個(gè)階段把傳統(tǒng)的兩階段推薦系統(tǒng)做的事情一步到位做完?如果不能,為什么不能?如果能,怎么做才可以?什么樣的模型才能擔(dān)當(dāng)起這種重任呢?而在現(xiàn)實(shí)世界里是否存在這個(gè)模型?這個(gè)思路真的可行嗎?

          上面列的兩個(gè)非常規(guī)問題,18年年末我自己也一直在思考,有些初步的思考結(jié)論,所以計(jì)劃寫四篇文章形成一個(gè)專題,主題集中在推薦系統(tǒng)的統(tǒng)一召回模型方面,也就是第一個(gè)問題,同時(shí)兼談下第二個(gè)問題,每篇文章會介紹一個(gè)或者一類模型,本文介紹的是FM模型。這個(gè)系列,我春節(jié)期間寫完了3篇,等我四篇都寫完后,會陸續(xù)發(fā)出來,供感興趣的“點(diǎn)開看三秒”同學(xué)參考。

          不過這里需要強(qiáng)調(diào)一點(diǎn):關(guān)于這兩個(gè)問題,因?yàn)榉浅R?guī),網(wǎng)上也也沒有見到過類似的問題,說法及解決方案,所以沒什么依據(jù),文章寫的只是我個(gè)人的思考結(jié)果,是否真能順利落地以及落地效果存疑,還請謹(jǐn)慎參考。不過,我覺得從目前算法的發(fā)展趨勢以及硬件條件的快速發(fā)展情況來看,單階段推薦模型從理論上是可行的。我會陸續(xù)給出幾個(gè)方案,建議從事中小型推薦業(yè)務(wù)的同學(xué)可以快速嘗試一下。

          下面進(jìn)入正題,我會先簡單介紹下推薦系統(tǒng)整體架構(gòu)以及多路召回的基本模式,然后說明下FM模型,之后探討FM模型是否能夠解決上面提到的兩個(gè)非常規(guī)問題。

          工業(yè)推薦系統(tǒng)整體架構(gòu)是怎樣的



          一個(gè)典型的工業(yè)級推薦系統(tǒng)整體架構(gòu)可以參考上圖,一般分為在線部分,近線部分和離線部分。

          對于在線部分來說,一般要經(jīng)歷幾個(gè)階段。


          首先通過召回環(huán)節(jié),將給用戶推薦的物品降到千以下規(guī)模;


          如果召回階段返回的物品還是太多,可以加入粗排階段,這個(gè)階段是可選的,粗排可以通過一些簡單排序模型進(jìn)一步減少往后續(xù)環(huán)節(jié)傳遞的物品;


          再往后是精排階段,這里可以使用復(fù)雜的模型來對少量物品精準(zhǔn)排序。對某個(gè)用戶來說,即使精排推薦結(jié)果出來了,一般并不會直接展示給用戶,可能還要上一些業(yè)務(wù)策略,比如去已讀,推薦多樣化,加入廣告等各種業(yè)務(wù)策略。之后形成最終推薦結(jié)果,將結(jié)果展示給用戶。

          對于近線部分來說,主要目的是實(shí)時(shí)收集用戶行為反饋,并選擇訓(xùn)練實(shí)例,實(shí)時(shí)抽取拼接特征,并近乎實(shí)時(shí)地更新在線推薦模型。這樣做的好處是用戶的最新興趣能夠近乎實(shí)時(shí)地體現(xiàn)到推薦結(jié)果里。

          對于離線部分而言,通過對線上用戶點(diǎn)擊日志的存儲和清理,整理離線訓(xùn)練數(shù)據(jù),并周期性地更新推薦模型。對于超大規(guī)模數(shù)據(jù)和機(jī)器學(xué)習(xí)模型來說,往往需要高效地分布式機(jī)器學(xué)習(xí)平臺來對離線訓(xùn)練進(jìn)行支持。

          因?yàn)榇峙攀强蛇x的,對于大多數(shù)推薦系統(tǒng)來說,通常在線部分的主體分為兩個(gè)階段就夠,第一個(gè)階段是召回,第二個(gè)階段是排序。因?yàn)閭€(gè)性化推薦需要給每個(gè)用戶展現(xiàn)不同的信息流或者物品流,而對于每個(gè)用戶來說,可供推薦的物品,在具備一定規(guī)模的公司里,是百萬到千萬級別,甚至上億。所以對于每一個(gè)用戶,如果對于千萬級別物品都使用先進(jìn)的模型挨個(gè)進(jìn)行排序打分,明顯速度上是算不過來的,資源投入考慮這么做也不劃算。

          從這里可以看出,召回階段的主要職責(zé)是:從千萬量級的候選物品里,采取簡單模型將推薦物品候選集合快速篩減到千級別甚至百級別,這樣將候選集合數(shù)量降下來,之后在排序階段就可以上一些復(fù)雜模型,細(xì)致地對候選集進(jìn)行個(gè)性化排序。

          從上面在線推薦兩階段任務(wù)的劃分,我們可以看出,召回階段因?yàn)樾枰?jì)算的候選集合太大,所以要想速度快,就只能上簡單模型,使用少量特征,保證泛化能力,盡量讓用戶感興趣的物品在這個(gè)階段能夠找回來;而排序階段核心目標(biāo)是要精準(zhǔn),因?yàn)樗幚淼奈锲窋?shù)據(jù)量小,所以可以采用盡可能多的特征,使用比較復(fù)雜的模型,一切以精準(zhǔn)為目標(biāo)。

          多路召回怎么做


          目前工業(yè)界推薦系統(tǒng)的召回階段一般是怎么做的呢?可以用一句江湖氣很重的話來總結(jié),請您系好安全帶坐穩(wěn),怕嚇到您,這句話就是:“一只穿云箭,千軍萬馬來相見”。聽起來霸氣十足是吧?我估計(jì)看過古惑仔電影的都熟悉這句話,黑幫集結(jié)打群架的時(shí)候喜歡引用這句名言,以增加氣勢,自己給自己打氣。如果和推薦系統(tǒng)對應(yīng)起來理解,這里的“穿云箭”就是召回系統(tǒng),而千軍萬馬就是各路花式召回策略。



          目前工業(yè)界的推薦系統(tǒng),在召回階段,一般都采取多路召回策略。上圖展示了一個(gè)簡化版本的例子,以微博信息流排序?yàn)槔煌瑯I(yè)務(wù)召回路數(shù)不太一樣,但是常用的召回策略,基本都會包含,比如興趣標(biāo)簽,興趣Topic,興趣實(shí)體,協(xié)同過濾,熱門,相同地域等,多者幾十路召回,少者也有7/8路召回。

          對于每一路召回,會拉回K條相關(guān)物料,這個(gè)K值是個(gè)超參,需要通過線上AB測試來確定合理的取值范圍。如果你對算法敏感的話,會發(fā)現(xiàn)這里有個(gè)潛在的問題,如果召回路數(shù)太多,對應(yīng)的超參就多,這些超參組合空間很大,如何設(shè)定合理的各路召回?cái)?shù)量是個(gè)問題。另外,如果是多路召回,這個(gè)超參往往不太可能是用戶個(gè)性化的,而是對于所有用戶,每一路拉回的數(shù)量都是固定的,這里明顯有優(yōu)化空間。按理說,不同用戶也許對于每一路內(nèi)容感興趣程度是不一樣的,更感興趣的那一路就應(yīng)該多召回一些,所以如果能把這些超參改為個(gè)性化配置是很好的,但是多路召回策略下,雖然也不是不能做,但是即使做,看起來還是很Trick的。有什么好辦法能解決這個(gè)問題嗎?有,本文后面會講。

          什么是FM模型


          什么是FM模型呢?我隱約意識到這個(gè)問題在很多人看起來好像有點(diǎn)過于簡單,因?yàn)橐徽f起FM,開車的朋友們估計(jì)都熟悉,比如FM1039交通臺家喻戶曉,最近應(yīng)該經(jīng)常聽到交通臺這么提醒大家吧:“…春節(jié)返程高峰,北京市第三交通委提醒您:道路千萬條,安全第一條……”

          一想到有可能很多人這么理解FM,我的眼淚就不由自主流了下來,同時(shí)對他們在心理上有種莫名的親切感,為什么呢?不是說“縮寫不規(guī)范,親人兩行淚”么。下面我鄭重地給各位介紹下,F(xiàn)M英文全稱是“Factorization Machine”,簡稱FM模型,中文名“因子分解機(jī)”。

          FM模型其實(shí)有些年頭了,是2010年由Rendle提出的,但是真正在各大廠大規(guī)模在CTR預(yù)估和推薦領(lǐng)域廣泛使用,其實(shí)也就是最近幾年的事。

          FM模型比較簡單,網(wǎng)上介紹的內(nèi)容也比較多(比如這篇《FM模型理論和實(shí)踐》:https://www.jianshu.com/p/152ae633fb00 ),細(xì)節(jié)不展開說它了。不過我給個(gè)個(gè)人判斷:我覺得FM是推薦系統(tǒng)工程師應(yīng)該熟練掌握和應(yīng)用的必備算法,即使你看很多DNN版本的排序模型,你應(yīng)該大多數(shù)情況會看到它的影子,原因其實(shí)很簡單:特征組合對于推薦排序是非常非常重要的,而FM這個(gè)思路已經(jīng)很簡潔優(yōu)雅地體現(xiàn)了這個(gè)思想了(主要是二階特征組合)。

          DNN模型一樣離不開這個(gè)特點(diǎn),而MLP結(jié)構(gòu)是種低效率地捕獲特征組合的結(jié)構(gòu),所以即使是深度模型,目前一樣還離不開類似FM這個(gè)能夠直白地直接去組合特征的部分。這是你會反復(fù)發(fā)現(xiàn)它的原因所在,當(dāng)然也許是它本人,也許不一定是它本人,但是一定是它的變體。

          既然談到這里了,那順手再多談?wù)勍扑]排序模型。目前具備實(shí)用化價(jià)值的DNN版本的CTR模型一般采用MLP結(jié)構(gòu),看著遠(yuǎn)遠(yuǎn)落后CV/NLP的特征抽取器的發(fā)展水平,很容易讓人產(chǎn)生如下感覺:CTR的DNN模型還處于深度學(xué)習(xí)原始社會階段。那這又是為什么呢?因?yàn)镃NN的特性天然不太適合推薦排序這個(gè)場景(為什么?您可以思考一下。為了預(yù)防某些具備某種獨(dú)特個(gè)性特征的同學(xué)拿個(gè)別例子說事情,我先提一句:請不要跟我說某個(gè)已有的看上去比較深的CNN CTR模型,你自己試過效果如何再來說。這算是我的預(yù)防性回懟或者是假設(shè)性回懟,哈哈)。

          RNN作為捕捉用戶行為序列,利用時(shí)間信息的輔助結(jié)構(gòu)還行,但是也不太適合作為CTR預(yù)估或者推薦排序的主模型(為什么?您可以思考一下,關(guān)于這點(diǎn),我的看法以后有機(jī)會會提)。好像剩下的選擇不多了(Transformer是很有希望的,去年年中左右,我覺得Self attention應(yīng)該是個(gè)能很好地捕捉特征組合(包括二階/三階…多階)的工具,于是,我們微博也嘗試過用self attention和transformer作為CTR的主體排序模型,非業(yè)務(wù)數(shù)據(jù)測試的,當(dāng)時(shí)測試效果和DeepFM等主流模型效果差不太多。

          我現(xiàn)在回頭看,很可能是哪些細(xì)節(jié)沒做對,當(dāng)時(shí)覺得沒有特別的效果優(yōu)勢,于是沒再繼續(xù)嘗試這個(gè)思路。當(dāng)然貌似18年下半年已經(jīng)冒出幾篇用Transformer做CTR排序模型的論文了,我個(gè)人非常看好這個(gè)CTR模型進(jìn)化方向),于是剩下的選擇貌似只有MLP了,意思是:對于CTR或者推薦排序領(lǐng)域來說,不是它不想進(jìn)入模型共產(chǎn)主義階段,是大門關(guān)得太緊,它進(jìn)不去,于是只能在MLP這個(gè)門檻徘徊。

          在深度學(xué)習(xí)大潮下,從模型角度看,確實(shí)跟很多領(lǐng)域比,貌似推薦領(lǐng)域遠(yuǎn)遠(yuǎn)落后,這個(gè)是事實(shí)。我覺得主要原因是它自身的領(lǐng)域特點(diǎn)造成的,它可能需要打造適合自身特點(diǎn)的DNN排序模型。就像圖像領(lǐng)域里有Resnet時(shí)刻,NLP里面有Bert時(shí)刻,我覺得推薦排序深度模型目前還沒有,現(xiàn)在和未來也需要這個(gè)類似的高光時(shí)刻,而這需要一個(gè)針對它特性改造出的新結(jié)構(gòu),對此我是比較樂觀的,我預(yù)感這個(gè)時(shí)刻一年之內(nèi)還無法出現(xiàn),但是很可能已經(jīng)在路上,距離我們不遠(yuǎn)了。

          又說遠(yuǎn)了,本來我們主題是召回,說到排序模型里去了,我往主車道走走。上面本來是要強(qiáng)調(diào)好好學(xué)好好用FM模型的。下面我從兩個(gè)角度來簡單介紹下FM模型,一個(gè)角度是從特征組合模型的進(jìn)化角度來講;另外一個(gè)角度從協(xié)同過濾模型的進(jìn)化角度來講。FM模型就處于這兩類模型進(jìn)化的交匯口。

          從LR到SVM再到FM模型



          LR模型是CTR預(yù)估領(lǐng)域早期最成功的模型,大多工業(yè)推薦排序系統(tǒng)采取LR這種“線性模型+人工特征組合引入非線性”的模式。因?yàn)長R模型具有簡單方便易解釋容易上規(guī)模等諸多好處,所以目前仍然有不少實(shí)際系統(tǒng)仍然采取這種模式。但是,LR模型最大的缺陷就是人工特征工程,耗時(shí)費(fèi)力費(fèi)人力資源,那么能否將特征組合的能力體現(xiàn)在模型層面呢?


          其實(shí)想達(dá)到這一點(diǎn)并不難,如上圖在計(jì)算公式里加入二階特征組合即可,任意兩個(gè)特征進(jìn)行組合,可以將這個(gè)組合出的特征看作一個(gè)新特征,融入線性模型中。而組合特征的權(quán)重可以用來表示,和一階特征權(quán)重一樣,這個(gè)組合特征權(quán)重在訓(xùn)練階段學(xué)習(xí)獲得。其實(shí)這種二階特征組合的使用方式,和多項(xiàng)式核SVM是等價(jià)的。雖然這個(gè)模型看上去貌似解決了二階特征組合問題了,但是它有個(gè)潛在的問題:它對組合特征建模,泛化能力比較弱,尤其是在大規(guī)模稀疏特征存在的場景下,這個(gè)毛病尤其突出,比如CTR預(yù)估和推薦排序,這些場景的最大特點(diǎn)就是特征的大規(guī)模稀疏。所以上述模型并未在工業(yè)界廣泛采用。那么,有什么辦法能夠解決這個(gè)問題嗎?

          于是,F(xiàn)M模型此刻可以閃亮登場了。如上圖所示,F(xiàn)M模型也直接引入任意兩個(gè)特征的二階特征組合,和SVM模型最大的不同,在于特征組合權(quán)重的計(jì)算方法。FM對于每個(gè)特征,學(xué)習(xí)一個(gè)大小為k的一維向量,于是,兩個(gè)特征 xi 和 xj 的特征組合的權(quán)重值,通過特征對應(yīng)的向量 vi 和 vj 的內(nèi)積< vi,vj>來表示。這本質(zhì)上是在對特征進(jìn)行embedding化表征,和目前非常常見的各種實(shí)體embedding本質(zhì)思想是一脈相承的,但是很明顯在FM這么做的年代(2010年),還沒有現(xiàn)在能看到的各種眼花繚亂的embedding的形式與概念。所以FM作為特征embedding,可以看作當(dāng)前深度學(xué)習(xí)里各種embedding方法的老前輩。

          當(dāng)然,F(xiàn)M這種模式有它的前輩模型嗎?有,等會會談。其實(shí),和目前的各種深度DNN排序模型比,它僅僅是少了2層或者3層MLP隱層,用來直接對多階特征非線性組合建模而已,其它方面基本相同。

          那么為什么說FM的這種特征embedding模式,在大規(guī)模稀疏特征應(yīng)用環(huán)境下比較好用?為什么說它的泛化能力強(qiáng)呢?參考上圖說明。即使在訓(xùn)練數(shù)據(jù)里兩個(gè)特征并未同時(shí)在訓(xùn)練實(shí)例里見到過,意味著 xi 和 xj一起出現(xiàn)的次數(shù)為0,如果換做SVM的模式,是無法學(xué)會這個(gè)特征組合的權(quán)重的。但是因?yàn)镕M是學(xué)習(xí)單個(gè)特征的embedding,并不依賴某個(gè)特定的特征組合是否出現(xiàn)過,所以只要特征 xi 和其它任意特征組合出現(xiàn)過,那么就可以學(xué)習(xí)自己對應(yīng)的embedding向量。于是,盡管 xi和xj 這個(gè)特征組合沒有看到過,但是在預(yù)測的時(shí)候,如果看到這個(gè)新的特征組合,因?yàn)?xi 和 xj 都能學(xué)會自己對應(yīng)的embedding,所以可以通過內(nèi)積算出這個(gè)新特征組合的權(quán)重。這是為何說FM模型泛化能力強(qiáng)的根本原因。

          其實(shí)本質(zhì)上,這也是目前很多花樣的embedding的最核心特點(diǎn),就是從0/1這種二值硬核匹配,切換為向量軟匹配,使得原先匹配不上的,現(xiàn)在能在一定程度上算密切程度了,具備很好的泛化性能。

          從MF到FM模型


          FM我們大致應(yīng)該知道是怎么個(gè)意思了,這里又突然冒出個(gè)MF,長得跟FM貌似還有點(diǎn)像,那么MF又是什么呢?它跟FM又有什么關(guān)系?

          請跟我念:“打東邊來了個(gè)FM,手里提著一斤撻嘛;打西邊來了個(gè)MF,腰里別著一個(gè)喇叭;提著一斤撻嘛的FM想要?jiǎng)e著喇叭的MF腰里的喇叭……..”你要是能不打磕絆一遍念下來的話………你以為你就理解它們的錯(cuò)綜復(fù)雜的關(guān)系了是嗎?不,你就可以去學(xué)說相聲了……



          MF(Matrix Factorization,矩陣分解)模型是個(gè)在推薦系統(tǒng)領(lǐng)域里資格很深的老前輩協(xié)同過濾模型了。核心思想是通過兩個(gè)低維小矩陣(一個(gè)代表用戶embedding矩陣,一個(gè)代表物品embedding矩陣)的乘積計(jì)算,來模擬真實(shí)用戶點(diǎn)擊或評分產(chǎn)生的大的協(xié)同信息稀疏矩陣,本質(zhì)上是編碼了用戶和物品協(xié)同信息的降維模型。

          當(dāng)訓(xùn)練完成,每個(gè)用戶和物品得到對應(yīng)的低維embedding表達(dá)后,如果要預(yù)測某個(gè)的評分的時(shí)候,只要它們做個(gè)內(nèi)積計(jì)算,這個(gè)得分就是預(yù)測得分。看到這里,讓你想起了什么嗎?身為推薦算法工程師,我假設(shè)你對它還是比較熟悉的,更多的就不展開說了,相關(guān)資料很多,我們重點(diǎn)說MF和FM的關(guān)系問題。MF和FM不僅在名字簡稱上看著有點(diǎn)像,其實(shí)他們本質(zhì)思想上也有很多相同點(diǎn)。那么,MF和FM究竟是怎樣的關(guān)系呢?

          本質(zhì)上,MF模型是FM模型的特例,MF可以被認(rèn)為是只有User ID 和Item ID這兩個(gè)特征Fields的FM模型,MF將這兩類特征通過矩陣分解,來達(dá)到將這兩類特征embedding化表達(dá)的目的。而FM則可以看作是MF模型的進(jìn)一步拓展,除了User ID和Item ID這兩類特征外,很多其它類型的特征,都可以進(jìn)一步融入FM模型里,它將所有這些特征轉(zhuǎn)化為embedding低維向量表達(dá),并計(jì)算任意兩個(gè)特征embedding的內(nèi)積,就是特征組合的權(quán)重,如果FM只使用User ID 和Item ID,你套到FM公式里,看看它的預(yù)測過程和MF的預(yù)測過程一樣嗎?

          從誰更早使用特征embedding表達(dá)這個(gè)角度來看的話,很明顯,和FM比起來,MF才是真正的前輩,無非是特征類型比較少而已。而FM繼承了MF的特征embedding化表達(dá)這個(gè)優(yōu)點(diǎn),同時(shí)引入了更多Side information作為特征,將更多特征及Side information embedding化融入FM模型中。所以很明顯FM模型更靈活,能適應(yīng)更多場合的應(yīng)用范圍。

          鑒于MF和FM以上錯(cuò)綜復(fù)雜剪不斷理還亂的關(guān)系,我推論出下面的觀點(diǎn)(個(gè)人意見):
          其一:在你有使用MF做協(xié)同過濾的想法的時(shí)候,暫時(shí)壓抑一下這種沖動,可以優(yōu)先考慮引入FM來做的,而非傳統(tǒng)的MF,因?yàn)榭梢栽趯?shí)現(xiàn)等價(jià)功能的基礎(chǔ)上,很方便地融入其它任意你想加入的特征,把手頭的事情做得更豐富多彩。

          其二:從實(shí)際大規(guī)模數(shù)據(jù)場景下的應(yīng)用來講,在排序階段,絕大多數(shù)只使用ID信息的模型是不實(shí)用的,沒有引入Side Information,也就是除了User ID/Item ID外的很多其它可用特征的模型,是不具備實(shí)戰(zhàn)價(jià)值的。原因很簡單,大多數(shù)真實(shí)應(yīng)用場景中,User/Item有很多信息可用,而協(xié)同數(shù)據(jù)只是其中的一種,引入更多特征明顯對于更精準(zhǔn)地進(jìn)行個(gè)性化推薦是非常有幫助的。而如果模型不支持更多特征的便捷引入,明顯受限嚴(yán)重,很難真正實(shí)用,這也是為何矩陣分解類的方法很少看到在Ranking階段使用,通常是作為一路召回形式存在的原因。

          簡單談?wù)勊惴ǖ男蕟栴}
          從FM的原始數(shù)學(xué)公式看,因?yàn)樵谶M(jìn)行二階(2-order)特征組合的時(shí)候,假設(shè)有n個(gè)不同的特征,那么二階特征組合意味著任意兩個(gè)特征都要進(jìn)行交叉組合,所以可以直接推論得出:FM的時(shí)間復(fù)雜度是n的平方。但是如果故事僅僅講到這里,F(xiàn)M模型是不太可能如此廣泛地被工業(yè)界使用的。因?yàn)楝F(xiàn)實(shí)生活應(yīng)用中的n往往是個(gè)非常巨大的特征數(shù),如果FM是n平方的時(shí)間復(fù)雜度,那估計(jì)基本就沒人帶它玩了。

          對于一個(gè)實(shí)用化模型來說,效果是否足夠好只是一個(gè)方面,計(jì)算效率是否夠高也很重要,這兩點(diǎn)是一個(gè)能被廣泛使用算法的一枚硬幣的兩面,缺其中任何一個(gè)可能都不能算是優(yōu)秀的算法。如果在兩者之間硬要分出誰更重要的話,怎么選?

          這里插入個(gè)題外話,是關(guān)于如何做選擇的。這個(gè)話題如果你深入思考的話,會發(fā)現(xiàn)很可能是個(gè)深奧的哲學(xué)問題。在說怎么選之前,我先復(fù)述兩則關(guān)于選擇的笑話,有兩個(gè)版本,男版和女版的。

          男版是這樣的:“一個(gè)兄弟跟我說他最近很困惑,有三個(gè)姑娘在追他,一直猶豫不決,到底應(yīng)該選哪個(gè)當(dāng)女朋友呢?一個(gè)溫柔賢惠,一個(gè)聰明伶俐,另外一個(gè)膚白貌美。太難選…..三天后當(dāng)我再次遇到他的時(shí)候,他說他做出了選擇,選了那個(gè)胸最大的!”

          女版是這樣的:“一個(gè)姐妹跟我說她很困惑,最近有三個(gè)優(yōu)秀的男人在追她,一直猶豫不決,到底應(yīng)該嫁給誰呢?一個(gè)努力上進(jìn),一個(gè)高大帥氣,另外一個(gè)脾氣好顧家。實(shí)在太難選…..三天后當(dāng)我再次遇到她的時(shí)候,她說她做出了選擇,選了那個(gè)最有錢的!”

          參考這個(gè)模版,算法選擇版應(yīng)該是這樣的:“一個(gè)算法工程師一直猶豫不決該選哪個(gè)模型去上線,他有三個(gè)優(yōu)秀算法可選,一個(gè)算法理論優(yōu)雅;一個(gè)算法效果好;另外一個(gè)算法很時(shí)髦,實(shí)在太難做決定…..三天后當(dāng)我再遇見他的時(shí)候,他說他們算法總監(jiān)讓他上了那個(gè)跑得最快的!”

          怎么樣?生活或者工作中的選擇確實(shí)是個(gè)很玄妙的哲學(xué)問題吧?這個(gè)算法版的關(guān)于選擇的笑話,應(yīng)該已經(jīng)回答了上面那個(gè)還沒給答案的問題了吧?在數(shù)據(jù)量特別大的情況下,如果在效果好和速度快之間做選擇,很多時(shí)候跑得快的簡單模型會勝出,這是為何LR模型在CTR預(yù)估領(lǐng)域一直被廣泛使用的原因。

          而FFM模型則是反例,我們在幾個(gè)數(shù)據(jù)集合上測試過,F(xiàn)FM模型作為排序模型,效果確實(shí)是要優(yōu)于FM模型的,但是FFM模型對參數(shù)存儲量要求太多,以及無法能做到FM的運(yùn)行效率,如果中小數(shù)據(jù)規(guī)模做排序沒什么問題,但是數(shù)據(jù)量一旦大起來,對資源和效率的要求會急劇升高,這是嚴(yán)重阻礙FFM模型大規(guī)模數(shù)據(jù)場景實(shí)用化的重要因素。

          再順手談?wù)凞NN排序模型,現(xiàn)在貌似看著有很多版本的DNN排序模型,但是考慮到上面講的運(yùn)算效率問題,你會發(fā)現(xiàn)太多所謂效果好的模型,其實(shí)不具備實(shí)用價(jià)值,算起來太復(fù)雜了,效果好得又很有限,超大規(guī)模訓(xùn)練或者在線 Serving速度根本跟不上。除非,你們公司有具備相當(dāng)強(qiáng)悍實(shí)力的工程團(tuán)隊(duì),能夠進(jìn)行超大數(shù)據(jù)規(guī)模下的大規(guī)模性能優(yōu)化,那當(dāng)我上面這句話沒說。

          我對排序模型,如果你打算推上線真用起來的話,建議是,沿著這個(gè)序列嘗試:FM-->DeepFM。你看著路徑有點(diǎn)短是嗎?確實(shí)比較短。如果DeepFM做不出效果,別再試著去嘗試更復(fù)雜的模型了,還是多從其它方面考慮考慮優(yōu)化方案為好。有些復(fù)雜些的模型,也許效果確實(shí)好一些,在個(gè)別大公司也許真做上線了,但是很可能效果好不是算法的功勞,是工程能力強(qiáng)等多個(gè)因素共同導(dǎo)致的,人家能做,你未必做的了。至于被廣泛嘗試的Wide &Deep,我個(gè)人對它有偏見,所以直接被我跳過了。當(dāng)然,如果你原始線上版本是LR,是可以直接先嘗試Wide&Deep的,但是即使如此,要我做升級方案,我給的建議會是這個(gè)序列:LR—>FM-->DeepFM—>干點(diǎn)其他的。



          限時(shí)1元秒殺


          兩大實(shí)戰(zhàn)項(xiàng)目:基于FM的電影推薦系統(tǒng) + 基于libfm的電商CTR預(yù)估

          配套課程服務(wù):共學(xué)社群答疑 + 全套課件代碼 + CPU云平臺

          理論和實(shí)踐完美結(jié)合,每個(gè)算法配套項(xiàng)目實(shí)戰(zhàn)代碼完全學(xué)會深度學(xué)習(xí)的本質(zhì)和應(yīng)用。

          瀏覽 32
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青青草免费视 | 日韩成人电影在线 | 免费看一级高潮毛片 | 亚欧成人一区视频 | 黄色污污污网站 |