文 | 石塔西
源 | 夕小瑤的賣萌屋
盡管BERT為代表的預(yù)訓(xùn)練模型大肆流行,但是身處工業(yè)界才會知道它落地有多難,尤其是QPS動輒幾百的在線推薦、搜索系統(tǒng),哪怕在大廠也很難在線上系統(tǒng)見到它們。
今天就想反其道而行之,談?wù)劰I(yè)界搜索、推薦、廣告這類核心場景中落地能力最強(qiáng)的算法(之一):因子分解機(jī)(FM)。我不敢說它是最簡單的(FM的確很簡單),但是作為一個推薦算法調(diào)參工程師,掌握FM一定是性價比最高的。我推崇FM算法的原因,有以下三點(diǎn):
功能齊全
眾所周知,推薦算法有三個應(yīng)用領(lǐng)域:召回、粗排、精排。推薦算法千千萬,但是有的算法只能用于召回,有的算法只能用于排序。像FM這樣實(shí)現(xiàn)三個領(lǐng)域全覆蓋的多面手,目前為止,孤陋寡聞的我尚不知道有第二個。但是需要強(qiáng)調(diào)的是,我們不能只訓(xùn)練一個FM排序模型 ,然后直接拿這個排序模型用于召回。盡管都是基于FM算法,但是FM召回與排序,有以下不同:
使用的特征不同
FM召回,由于未來要依賴Faiss進(jìn)行線上檢索,所以不能使用user與doc的交叉特征。只有如此,我們才能獨(dú)立計算user embedding與doc embedding
FM排序,則沒有這方面的限制,可以使用user與doc的交叉特征。是的,你沒看錯。因?yàn)镕M所實(shí)現(xiàn)自動二階交叉,僅能代表“共現(xiàn)”。但是user與doc之間還有其他形式的交叉,比如user tag與doc tag之間的重合度,喂入這樣的交叉,對于排序性能提升,仍然有很大幫助。
使用的樣本不同
訓(xùn)練FM做排序時,必須使用“曝光未點(diǎn)擊”這樣的“真負(fù)”樣本。
訓(xùn)練FM做召回時,起碼不能只使用“曝光未點(diǎn)擊”做負(fù)樣本。大部分的負(fù)樣本必須通過隨機(jī)采樣得到。個中原因見我的文章《負(fù)樣本為王:評Facebook的向量化召回算法》。
使用的Loss不同
FM排序時,由于負(fù)樣本是真實(shí)的,可以采用CTR預(yù)估那樣的point-wise loss
FM召回時,由于負(fù)樣本是隨機(jī)采樣得到的,存在一定的噪聲,最好采用BPR, hinge這樣的pair-wise loss。
性能優(yōu)異
推薦系統(tǒng)的兩大永恒主題,“記憶”與“擴(kuò)展”,F(xiàn)M也能實(shí)現(xiàn)全覆蓋。
FM存在一階項,實(shí)際就是LR,能夠“記憶”高頻、常見模式
FM存在feature embedding。如我在《無中生有:論推薦算法中的Embedding思想》據(jù)說,Embedding是提升推薦算法“擴(kuò)展性”的法寶。FM通過feature embedding,能夠自動挖掘低頻、長尾模式。在這一點(diǎn)上,基于embedding的二階交叉,并不比DNN的高階交叉,遜色多少。
便于上線
現(xiàn)在深度學(xué)習(xí)是推薦領(lǐng)域的寵兒,LR/FM/GBDT這樣的傳統(tǒng)機(jī)器學(xué)習(xí)算法,不招人待見。
DNN雖然性能優(yōu)異,但是它有一個致命缺點(diǎn),就是上線困難。訓(xùn)練的時候,各位調(diào)參俠,把各種酷炫的結(jié)構(gòu),什么attention, transformer, capsule,能加上的都給它加上,看著離線指標(biāo)一路上漲,心里和臉上都樂開了花,卻全然無視旁邊的后端工程師恨得咬緊了牙根。模型越復(fù)雜,離線和線上指標(biāo)未必就更好,但是線上的時間開銷肯定會增加,輕則影響算法與后端的同事關(guān)系(打工人何苦為難打工人),重則你那離線指標(biāo)完美的模型壓根沒有上線的機(jī)會。雖說,目前已經(jīng)有TF Serving這樣的線上serving框架,但是它也不是開箱即用的,也需要一系列的性能調(diào)優(yōu),才能滿足線上的實(shí)時性要求。
所以,如果你身處一個小團(tuán)隊,后端工程人員的技術(shù)能力不強(qiáng),DNN的線上實(shí)時預(yù)測,就會成為一個難題,這個時候,F(xiàn)M這樣的傳統(tǒng)機(jī)器學(xué)習(xí)算法,就凸顯出其優(yōu)勢。
FM排序,雖然理論上需要所有特征進(jìn)行二階交叉,但是通過公式化簡,可以在 O(n)的時間復(fù)雜度下完成。n是樣本中非零的特征數(shù)目,由于推薦系統(tǒng)中的特征非常稀疏,所以預(yù)測速度是非常快的。
召回,由于候選集巨大,對于實(shí)時性的要求更高。很多基于DNN的召回算法,由于無法滿足線上實(shí)時生成user embedding的需求,只能退而離線生成user embedding ,對于用戶實(shí)時興趣的捕捉大打折扣。FM召回,這時就顯現(xiàn)其巨大的優(yōu)勢。事先把doc embedding計算好,存入Faiss建立索引,user embedding只需要把一系列的feature embedding相加就可以得到,再去faiss中進(jìn)行top-k近鄰搜索。FM召回,可以實(shí)現(xiàn)基于用戶最新的實(shí)時興趣,從千萬量級候選doc中完成實(shí)時召回。
總結(jié)與參考
由于以上優(yōu)點(diǎn),我心目中,將FM視為推薦、搜索領(lǐng)域的"瑞士軍刀"。風(fēng)頭上雖然不及DNN那么搶眼,但是論在推薦系統(tǒng)中發(fā)揮的作用,絲毫不比DNN遜色,有時還能更勝一籌。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)練一個FM排序就能直接拿來做召回。這一點(diǎn),《全能FM》一文沒有提到,需要讀者特別注意。
如果想親手實(shí)踐,可以嘗試alphaFM。該項目只不過是作者八小時之外的課外作品,卻被很多公司拿來投入線上實(shí)際生產(chǎn)環(huán)境,足見該項目性能之優(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)載請注明出處。
-
算法
+關(guān)注
關(guān)注
23文章
4615瀏覽量
93025 -
FM
+關(guān)注
關(guān)注
1文章
182瀏覽量
59206 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8423瀏覽量
132751 -
dnn
+關(guān)注
關(guān)注
0文章
60瀏覽量
9058
原文標(biāo)題:談?wù)劰I(yè)界落地能力最強(qiáng)的機(jī)器學(xué)習(xí)算法
文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論