文 | 石塔西
源 | 夕小瑤的賣萌屋
盡管BERT為代表的預訓練模型大肆流行,但是身處工業界才會知道它落地有多難,尤其是QPS動輒幾百的在線推薦、搜索系統,哪怕在大廠也很難在線上系統見到它們。
今天就想反其道而行之,談談工業界搜索、推薦、廣告這類核心場景中落地能力最強的算法(之一):因子分解機(FM)。我不敢說它是最簡單的(FM的確很簡單),但是作為一個推薦算法調參工程師,掌握FM一定是性價比最高的。我推崇FM算法的原因,有以下三點:
功能齊全
眾所周知,推薦算法有三個應用領域:召回、粗排、精排。推薦算法千千萬,但是有的算法只能用于召回,有的算法只能用于排序。像FM這樣實現三個領域全覆蓋的多面手,目前為止,孤陋寡聞的我尚不知道有第二個。但是需要強調的是,我們不能只訓練一個FM排序模型 ,然后直接拿這個排序模型用于召回。盡管都是基于FM算法,但是FM召回與排序,有以下不同:
使用的特征不同
FM召回,由于未來要依賴Faiss進行線上檢索,所以不能使用user與doc的交叉特征。只有如此,我們才能獨立計算user embedding與doc embedding
FM排序,則沒有這方面的限制,可以使用user與doc的交叉特征。是的,你沒看錯。因為FM所實現自動二階交叉,僅能代表“共現”。但是user與doc之間還有其他形式的交叉,比如user tag與doc tag之間的重合度,喂入這樣的交叉,對于排序性能提升,仍然有很大幫助。
使用的樣本不同
訓練FM做排序時,必須使用“曝光未點擊”這樣的“真負”樣本。
訓練FM做召回時,起碼不能只使用“曝光未點擊”做負樣本。大部分的負樣本必須通過隨機采樣得到。個中原因見我的文章《負樣本為王:評Facebook的向量化召回算法》。
使用的Loss不同
FM排序時,由于負樣本是真實的,可以采用CTR預估那樣的point-wise loss
FM召回時,由于負樣本是隨機采樣得到的,存在一定的噪聲,最好采用BPR, hinge這樣的pair-wise loss。
性能優異
推薦系統的兩大永恒主題,“記憶”與“擴展”,FM也能實現全覆蓋。
FM存在一階項,實際就是LR,能夠“記憶”高頻、常見模式
FM存在feature embedding。如我在《無中生有:論推薦算法中的Embedding思想》據說,Embedding是提升推薦算法“擴展性”的法寶。FM通過feature embedding,能夠自動挖掘低頻、長尾模式。在這一點上,基于embedding的二階交叉,并不比DNN的高階交叉,遜色多少。
便于上線
現在深度學習是推薦領域的寵兒,LR/FM/GBDT這樣的傳統機器學習算法,不招人待見。
DNN雖然性能優異,但是它有一個致命缺點,就是上線困難。訓練的時候,各位調參俠,把各種酷炫的結構,什么attention, transformer, capsule,能加上的都給它加上,看著離線指標一路上漲,心里和臉上都樂開了花,卻全然無視旁邊的后端工程師恨得咬緊了牙根。模型越復雜,離線和線上指標未必就更好,但是線上的時間開銷肯定會增加,輕則影響算法與后端的同事關系(打工人何苦為難打工人),重則你那離線指標完美的模型壓根沒有上線的機會。雖說,目前已經有TF Serving這樣的線上serving框架,但是它也不是開箱即用的,也需要一系列的性能調優,才能滿足線上的實時性要求。
所以,如果你身處一個小團隊,后端工程人員的技術能力不強,DNN的線上實時預測,就會成為一個難題,這個時候,FM這樣的傳統機器學習算法,就凸顯出其優勢。
FM排序,雖然理論上需要所有特征進行二階交叉,但是通過公式化簡,可以在 O(n)的時間復雜度下完成。n是樣本中非零的特征數目,由于推薦系統中的特征非常稀疏,所以預測速度是非常快的。
召回,由于候選集巨大,對于實時性的要求更高。很多基于DNN的召回算法,由于無法滿足線上實時生成user embedding的需求,只能退而離線生成user embedding ,對于用戶實時興趣的捕捉大打折扣。FM召回,這時就顯現其巨大的優勢。事先把doc embedding計算好,存入Faiss建立索引,user embedding只需要把一系列的feature embedding相加就可以得到,再去faiss中進行top-k近鄰搜索。FM召回,可以實現基于用戶最新的實時興趣,從千萬量級候選doc中完成實時召回。
總結與參考
由于以上優點,我心目中,將FM視為推薦、搜索領域的"瑞士軍刀"。風頭上雖然不及DNN那么搶眼,但是論在推薦系統中發揮的作用,絲毫不比DNN遜色,有時還能更勝一籌。FM有如此眾多的優點,優秀的調參俠+打工人,還等什么,還不趕快學起來。想迅速掌握FM,我推薦如下參考文獻:
掌握FM原理,推薦讀美團的博客《深入FFM原理與實踐》。FFM的部分可以忽略,在我看來,FFM更像是為了Kaggle專門訓練的比賽型選手,損失了FM的很多優點。這就好比,奧運會上的射擊冠軍,未必能夠勝任當狙擊手一樣。
FM用于召回,推薦讀《推薦系統召回四模型之:全能的FM模型》。注意,如我所述,FM雖然萬能,但是FM排序與FM召回,在特征、樣本、Loss都存在不同,不可能訓練一個FM排序就能直接拿來做召回。這一點,《全能FM》一文沒有提到,需要讀者特別注意。
如果想親手實踐,可以嘗試alphaFM。該項目只不過是作者八小時之外的課外作品,卻被很多公司拿來投入線上實際生產環境,足見該項目性能之優異和作者功力之深厚,令人佩服。強烈建議不滿足只當“調參俠”的同學,通讀一遍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
原文標題:談談工業界落地能力最強的機器學習算法
文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
-
算法
+關注
關注
23文章
4630瀏覽量
93360 -
FM
+關注
關注
1文章
183瀏覽量
59299 -
機器學習
+關注
關注
66文章
8441瀏覽量
133087 -
dnn
+關注
關注
0文章
60瀏覽量
9089
原文標題:談談工業界落地能力最強的機器學習算法
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
華為云 Flexus X 實例部署安裝 Jupyter Notebook,學習 AI,機器學習算法
![華為云 Flexus X 實例部署安裝 Jupyter Notebook,<b class='flag-5'>學習</b> AI,<b class='flag-5'>機器</b><b class='flag-5'>學習</b><b class='flag-5'>算法</b>](https://file1.elecfans.com//web3/M00/04/8B/wKgZPGd2J4SABwWpAAGTB6rKYaM050.png)
NPU與機器學習算法的關系
LIBS結合機器學習算法的江西名優春茶采收期鑒別
![LIBS結合<b class='flag-5'>機器</b><b class='flag-5'>學習</b><b class='flag-5'>算法</b>的江西名優春茶采收期鑒別](https://file1.elecfans.com//web1/M00/F3/76/wKgZoWcXeO6AfT_JAAAmxIOzbgI262.png)
評論