0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

機(jī)器學(xué)習(xí)算法那家強(qiáng) 因子分解機(jī)(FM算法)工業(yè)落地能力最強(qiáng)

深度學(xué)習(xí)自然語言處理 ? 來源:深度學(xué)習(xí)自然語言處理 ? 作者:深度學(xué)習(xí)自然語言 ? 2020-12-31 00:01 ? 次閱讀

文 | 石塔西

源 | 夕小瑤的賣萌屋

盡管BERT為代表的預(yù)訓(xùn)練模型大肆流行,但是身處工業(yè)界才會知道它落地有多難,尤其是QPS動(dòng)輒幾百的在線推薦、搜索系統(tǒng),哪怕在大廠也很難在線上系統(tǒng)見到它們。

今天就想反其道而行之,談?wù)劰I(yè)界搜索、推薦、廣告這類核心場景中落地能力最強(qiáng)的算法(之一):因子分解機(jī)(FM)。我不敢說它是最簡單的(FM的確很簡單),但是作為一個(gè)推薦算法調(diào)參工程師,掌握FM一定是性價(jià)比最高的。我推崇FM算法的原因,有以下三點(diǎn):

功能齊全

眾所周知,推薦算法有三個(gè)應(yīng)用領(lǐng)域:召回、粗排、精排。推薦算法千千萬,但是有的算法只能用于召回,有的算法只能用于排序。像FM這樣實(shí)現(xiàn)三個(gè)領(lǐng)域全覆蓋的多面手,目前為止,孤陋寡聞的我尚不知道有第二個(gè)。但是需要強(qiáng)調(diào)的是,我們不能只訓(xùn)練一個(gè)FM排序模型 ,然后直接拿這個(gè)排序模型用于召回。盡管都是基于FM算法,但是FM召回與排序,有以下不同:

使用的特征不同

FM召回,由于未來要依賴Faiss進(jìn)行線上檢索,所以不能使用user與doc的交叉特征。只有如此,我們才能獨(dú)立計(jì)算user embedding與doc embedding

FM排序,則沒有這方面的限制,可以使用user與doc的交叉特征。是的,你沒看錯(cuò)。因?yàn)镕M所實(shí)現(xiàn)自動(dòng)二階交叉,僅能代表“共現(xiàn)”。但是user與doc之間還有其他形式的交叉,比如user tag與doc tag之間的重合度,喂入這樣的交叉,對于排序性能提升,仍然有很大幫助。

使用的樣本不同

訓(xùn)練FM做排序時(shí),必須使用“曝光未點(diǎn)擊”這樣的“真負(fù)”樣本。

訓(xùn)練FM做召回時(shí),起碼不能只使用“曝光未點(diǎn)擊”做負(fù)樣本。大部分的負(fù)樣本必須通過隨機(jī)采樣得到。個(gè)中原因見我的文章《負(fù)樣本為王:評Facebook的向量化召回算法》。

使用的Loss不同

FM排序時(shí),由于負(fù)樣本是真實(shí)的,可以采用CTR預(yù)估那樣的point-wise loss

FM召回時(shí),由于負(fù)樣本是隨機(jī)采樣得到的,存在一定的噪聲,最好采用BPR, hinge這樣的pair-wise loss。

性能優(yōu)異

推薦系統(tǒng)的兩大永恒主題,“記憶”與“擴(kuò)展”,F(xiàn)M也能實(shí)現(xiàn)全覆蓋。

FM存在一階項(xiàng),實(shí)際就是LR,能夠“記憶”高頻、常見模式

FM存在feature embedding。如我在《無中生有:論推薦算法中的Embedding思想》據(jù)說,Embedding是提升推薦算法“擴(kuò)展性”的法寶。FM通過feature embedding,能夠自動(dòng)挖掘低頻、長尾模式。在這一點(diǎn)上,基于embedding的二階交叉,并不比DNN的高階交叉,遜色多少。

便于上線

現(xiàn)在深度學(xué)習(xí)是推薦領(lǐng)域的寵兒,LR/FM/GBDT這樣的傳統(tǒng)機(jī)器學(xué)習(xí)算法,不招人待見。

DNN雖然性能優(yōu)異,但是它有一個(gè)致命缺點(diǎn),就是上線困難。訓(xùn)練的時(shí)候,各位調(diào)參俠,把各種酷炫的結(jié)構(gòu),什么attention, transformer, capsule,能加上的都給它加上,看著離線指標(biāo)一路上漲,心里和臉上都樂開了花,卻全然無視旁邊的后端工程師恨得咬緊了牙根。模型越復(fù)雜,離線和線上指標(biāo)未必就更好,但是線上的時(shí)間開銷肯定會增加,輕則影響算法與后端的同事關(guān)系(打工人何苦為難打工人),重則你那離線指標(biāo)完美的模型壓根沒有上線的機(jī)會。雖說,目前已經(jīng)有TF Serving這樣的線上serving框架,但是它也不是開箱即用的,也需要一系列的性能調(diào)優(yōu),才能滿足線上的實(shí)時(shí)性要求。

所以,如果你身處一個(gè)小團(tuán)隊(duì),后端工程人員的技術(shù)能力不強(qiáng),DNN的線上實(shí)時(shí)預(yù)測,就會成為一個(gè)難題,這個(gè)時(shí)候,F(xiàn)M這樣的傳統(tǒng)機(jī)器學(xué)習(xí)算法,就凸顯出其優(yōu)勢。

FM排序,雖然理論上需要所有特征進(jìn)行二階交叉,但是通過公式化簡,可以在 O(n)的時(shí)間復(fù)雜度下完成。n是樣本中非零的特征數(shù)目,由于推薦系統(tǒng)中的特征非常稀疏,所以預(yù)測速度是非??斓?。

召回,由于候選集巨大,對于實(shí)時(shí)性的要求更高。很多基于DNN的召回算法,由于無法滿足線上實(shí)時(shí)生成user embedding的需求,只能退而離線生成user embedding ,對于用戶實(shí)時(shí)興趣的捕捉大打折扣。FM召回,這時(shí)就顯現(xiàn)其巨大的優(yōu)勢。事先把doc embedding計(jì)算好,存入Faiss建立索引,user embedding只需要把一系列的feature embedding相加就可以得到,再去faiss中進(jìn)行top-k近鄰搜索。FM召回,可以實(shí)現(xiàn)基于用戶最新的實(shí)時(shí)興趣,從千萬量級候選doc中完成實(shí)時(shí)召回。

總結(jié)與參考

由于以上優(yōu)點(diǎn),我心目中,將FM視為推薦、搜索領(lǐng)域的"瑞士軍刀"。風(fēng)頭上雖然不及DNN那么搶眼,但是論在推薦系統(tǒng)中發(fā)揮的作用,絲毫不比DNN遜色,有時(shí)還能更勝一籌。FM有如此眾多的優(yōu)點(diǎn),優(yōu)秀的調(diào)參俠+打工人,還等什么,還不趕快學(xué)起來。想迅速掌握FM,我推薦如下參考文獻(xiàn):

掌握FM原理,推薦讀美團(tuán)的博客《深入FFM原理與實(shí)踐》。FFM的部分可以忽略,在我看來,F(xiàn)FM更像是為了Kaggle專門訓(xùn)練的比賽型選手,損失了FM的很多優(yōu)點(diǎn)。這就好比,奧運(yùn)會上的射擊冠軍,未必能夠勝任當(dāng)狙擊手一樣。

FM用于召回,推薦讀《推薦系統(tǒng)召回四模型之:全能的FM模型》。注意,如我所述,F(xiàn)M雖然萬能,但是FM排序與FM召回,在特征、樣本、Loss都存在不同,不可能訓(xùn)練一個(gè)FM排序就能直接拿來做召回。這一點(diǎn),《全能FM》一文沒有提到,需要讀者特別注意。

如果想親手實(shí)踐,可以嘗試alphaFM。該項(xiàng)目只不過是作者八小時(shí)之外的課外作品,卻被很多公司拿來投入線上實(shí)際生產(chǎn)環(huán)境,足見該項(xiàng)目性能之優(yōu)異和作者功力之深厚,令人佩服。強(qiáng)烈建議不滿足只當(dāng)“調(diào)參俠”的同學(xué),通讀一遍alphaFM的源代碼,一定收獲滿滿。

[1] https://zhuanlan.zhihu.com/p/165064102

[2] https://zhuanlan.zhihu.com/p/320196402

[3] https://link.zhihu.com/?target=https%3A//tech.meituan.com/2016/03/03/deep-understanding-of-ffm-principles-and-practices.html

[4] https://zhuanlan.zhihu.com/p/58160982

[5] https://link.zhihu.com/?target=https%3A//github.com/CastellanZhang/alphaFM

原文標(biāo)題:談?wù)劰I(yè)界落地能力最強(qiáng)的機(jī)器學(xué)習(xí)算法

文章出處:【微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4552

    瀏覽量

    92028
  • FM
    FM
    +關(guān)注

    關(guān)注

    1

    文章

    179

    瀏覽量

    59002
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8306

    瀏覽量

    131848
  • dnn
    dnn
    +關(guān)注

    關(guān)注

    0

    文章

    58

    瀏覽量

    9009

原文標(biāo)題:談?wù)劰I(yè)界落地能力最強(qiáng)的機(jī)器學(xué)習(xí)算法

文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    深度學(xué)習(xí)算法在嵌入式平臺上的部署

    隨著人工智能技術(shù)的飛速發(fā)展,深度學(xué)習(xí)算法在各個(gè)領(lǐng)域的應(yīng)用日益廣泛。然而,將深度學(xué)習(xí)算法部署到資源受限的嵌入式平臺上,仍然是一個(gè)具有挑戰(zhàn)性的任務(wù)。本文將從嵌入式平臺的特點(diǎn)、深度
    的頭像 發(fā)表于 07-15 10:03 ?734次閱讀

    深度學(xué)習(xí)工業(yè)機(jī)器視覺檢測中的應(yīng)用

    識別等任務(wù)。傳統(tǒng)的機(jī)器視覺檢測方法通常依賴于手工設(shè)計(jì)的特征和固定的算法,難以應(yīng)對復(fù)雜多變的工業(yè)環(huán)境。而深度學(xué)習(xí)的引入,為工業(yè)
    的頭像 發(fā)表于 07-08 10:40 ?588次閱讀

    深度學(xué)習(xí)的基本原理與核心算法

    隨著大數(shù)據(jù)時(shí)代的到來,傳統(tǒng)機(jī)器學(xué)習(xí)方法在處理復(fù)雜模式上的局限性日益凸顯。深度學(xué)習(xí)(Deep Learning)作為一種新興的人工智能技術(shù),以其強(qiáng)大的非線性表達(dá)能力和自
    的頭像 發(fā)表于 07-04 11:44 ?1089次閱讀

    神經(jīng)網(wǎng)絡(luò)反向傳播算法的優(yōu)缺點(diǎn)有哪些

    神經(jīng)網(wǎng)絡(luò)反向傳播算法(Backpropagation Algorithm)是一種廣泛應(yīng)用于深度學(xué)習(xí)機(jī)器學(xué)習(xí)領(lǐng)域的優(yōu)化算法,用于訓(xùn)練多層前饋
    的頭像 發(fā)表于 07-03 11:24 ?328次閱讀

    神經(jīng)網(wǎng)絡(luò)算法的優(yōu)缺點(diǎn)有哪些

    的優(yōu)點(diǎn) 自學(xué)習(xí)能力:神經(jīng)網(wǎng)絡(luò)算法具有強(qiáng)大的自學(xué)習(xí)能力,能夠從大量數(shù)據(jù)中自動(dòng)提取特征,無需人工干預(yù)。這使得神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-03 09:47 ?517次閱讀

    機(jī)器學(xué)習(xí)算法原理詳解

    機(jī)器學(xué)習(xí)作為人工智能的一個(gè)重要分支,其目標(biāo)是通過讓計(jì)算機(jī)自動(dòng)從數(shù)據(jù)中學(xué)習(xí)并改進(jìn)其性能,而無需進(jìn)行明確的編程。本文將深入解讀幾種常見的機(jī)器學(xué)習(xí)
    的頭像 發(fā)表于 07-02 11:25 ?397次閱讀

    機(jī)器學(xué)習(xí)的經(jīng)典算法與應(yīng)用

    關(guān)于數(shù)據(jù)機(jī)器學(xué)習(xí)就是喂入算法和數(shù)據(jù),讓算法從數(shù)據(jù)中尋找一種相應(yīng)的關(guān)系。Iris鳶尾花數(shù)據(jù)集是一個(gè)經(jīng)典數(shù)據(jù)集,在統(tǒng)計(jì)學(xué)習(xí)
    的頭像 發(fā)表于 06-27 08:27 ?1432次閱讀
    <b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>的經(jīng)典<b class='flag-5'>算法</b>與應(yīng)用

    AI算法的本質(zhì)是模擬人類智能,讓機(jī)器實(shí)現(xiàn)智能化

    視覺等領(lǐng)域。 ? AI 算法的核心是實(shí)現(xiàn)智能化的決策和行為 ? AI算法的本質(zhì)在于模擬人類智能的能力,讓計(jì)算機(jī)能夠?qū)ΜF(xiàn)實(shí)世界進(jìn)行模擬和模仿,從而達(dá)到智能化的目的。具體來說,AI算法可以
    的頭像 發(fā)表于 02-07 00:07 ?5114次閱讀

    目前主流的深度學(xué)習(xí)算法模型和應(yīng)用案例

    深度學(xué)習(xí)在科學(xué)計(jì)算中獲得了廣泛的普及,其算法被廣泛用于解決復(fù)雜問題的行業(yè)。所有深度學(xué)習(xí)算法都使用不同類型的神經(jīng)網(wǎng)絡(luò)來執(zhí)行特定任務(wù)。
    的頭像 發(fā)表于 01-03 10:28 ?1242次閱讀
    目前主流的深度<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>算法</b>模型和應(yīng)用案例

    LabVIEW的六軸工業(yè)機(jī)器人運(yùn)動(dòng)控制系統(tǒng)

    。LabVIEW的可視化編程環(huán)境和強(qiáng)大的數(shù)據(jù)處理能力,使得復(fù)雜的運(yùn)動(dòng)學(xué)算法和軌跡規(guī)劃得以順利實(shí)現(xiàn),顯著提高了工業(yè)機(jī)器人的控制精度和效率。 ? 這是LabVIEW的一個(gè)功能介紹,更多的使
    發(fā)表于 12-21 20:03

    深度學(xué)習(xí)算法和傳統(tǒng)機(jī)器視覺助力工業(yè)外觀檢測

    在很多人眼里,深度學(xué)習(xí)是一個(gè)非常神奇的技術(shù),是人工智能的未來,是機(jī)器學(xué)習(xí)的圣杯。今天深視創(chuàng)新帶您一起揭開他神秘的面紗,了解什么才是深度學(xué)習(xí)。
    的頭像 發(fā)表于 11-09 10:58 ?564次閱讀
    深度<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>算法</b>和傳統(tǒng)<b class='flag-5'>機(jī)器</b>視覺助力<b class='flag-5'>工業(yè)</b>外觀檢測

    全面總結(jié)機(jī)器學(xué)習(xí)中的優(yōu)化算法

    幾乎所有的機(jī)器學(xué)習(xí)算法最后都?xì)w結(jié)為求一個(gè)目標(biāo)函數(shù)的極值,即最優(yōu)化問題,例如對于有監(jiān)督學(xué)習(xí),我們要找到一個(gè)最佳的映射函數(shù)f (x),使得對訓(xùn)練樣本的損失函數(shù)最小化(最小化經(jīng)驗(yàn)風(fēng)險(xiǎn)或結(jié)構(gòu)風(fēng)
    發(fā)表于 11-02 10:18 ?364次閱讀
    全面總結(jié)<b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>中的優(yōu)化<b class='flag-5'>算法</b>

    機(jī)器學(xué)習(xí)的基本流程和十大算法

    為了進(jìn)行機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘任務(wù),數(shù)據(jù)科學(xué)家們提出了各種模型,在眾多的數(shù)據(jù)挖掘模型中,國際權(quán)威的學(xué)術(shù)組織 ICDM(the IEEE International Conference on Data Mining)評選出了十大經(jīng)典的算法
    發(fā)表于 10-31 11:30 ?897次閱讀
    <b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>的基本流程和十大<b class='flag-5'>算法</b>

    智能駕駛感知算法梳理 高階自動(dòng)駕駛落地關(guān)鍵分析

      感知算法升級是L2級向L 3級智能駕駛系統(tǒng)跨越的關(guān)鍵。與傳統(tǒng)2D+CNN算法相比,BEV+ Transformer算法優(yōu)勢體現(xiàn)在: 1)感知輸出信息精準(zhǔn)度更高; 2)魯棒性高; 3)泛化
    發(fā)表于 10-19 09:53 ?309次閱讀
    智能駕駛感知<b class='flag-5'>算法</b>梳理 高階自動(dòng)駕駛<b class='flag-5'>落地</b>關(guān)鍵分析

    C語言經(jīng)典算法大全

    C語言經(jīng)典算法,詳細(xì)解析算法過程及算法思想,給讀者具有啟發(fā)意義,教程包含C語言大部分常用算法,僅供學(xué)習(xí),禁止商業(yè)傳播
    發(fā)表于 10-07 08:16