怎样将Embedding融入传统机器学习框架?
文 | 石塔西
源 | 知乎
LR本身是一個經典的CTR模型,廣泛應用于推薦/廣告系統。輸入的特征大多數是離散型/組合型。那么對于Embedding技術,如何在不使用深度學習模型的情況下(假設就是不能用DNN),融入到LR框架中呢?讓我們來看看清華大學的博士石塔西大佬是如何解答的。
問題實戰意義
其實這個問題可以再擴展一下,即,如何在傳統機器學習算法(LR/GBDT)中使用Embedding信息。
這個問題并非空穴來風,而是有一定的實戰價值。 目前DNN熱度不減,基本上成為推薦、搜索系統的標配算法。傳統機器學習算法,如LR、GBDT,紛紛被打入冷宮,得不到關注。至于為什么DNN能夠成功上位,獨占各位打工人的歡心,請參考我的文章《無中生有:論推薦算法中的Embedding思想》[1]。
但是,DNN有一個致命缺點,就是上線困難。 訓練的時候,各位調參俠,把各種酷炫的結構,什么attention, transformer, capsule,能加上的都給它加上,看著離線指標一路上漲,心里和臉上都樂開了花,卻全然無視旁邊的后端工程師恨得咬緊了牙根。模型越復雜,離線和線上指標未必就更好,但是線上的時間開銷肯定會增加,輕則影響算法與后端的同事關系(打工人何苦為難打工人),重則你那離線指標完美的模型壓根沒有上線的機會。雖說,目前已經有TF Serving這樣的線上serving框架,但是它也不是開箱即用的,也需要一系列的性能調優,才能滿足線上的實時性要求。
所以,如果你身處一個小團隊,后端工程人員的技術能力不強,在線DNN就會成為一個難題,這個時候,傳統的LR、GBDT就凸顯出優勢。 如果全部使用ID類特征(實數特征也桶化成ID類特征),那么LR在線上就簡化成“查表取權重,再累加“,連乘法都省了,實時性自然有保證。
但是,如果你想魚與熊掌兼得,既不得不使用簡單的傳統機器學習算法,又想利用Embedding帶來擴展能力上的提升, 你該怎么辦?唉,費了半天口舌,只是解了題而已,目的是為了說明這一問題的實戰意義,引起大家對這一問題的重視。
不推薦直接使用Embedding本身
首先,如果你的主框架是傳統機器學習算法,那么Embedding肯定就不能是End-To-End學習得到的,而需要離線用另外的算法先學習好。比如,你使用DeepWalk先學習用戶的購買序列,離線學習好商品的Embedding。
第二個問題才是傳統機器學習如何利用這些Embedding。當然最簡單的方法就是直接使用,為了使用一個64維的向量,就相當于LR增加了64維特征。但是,我不推薦使用這種方式:
之所以線上使用LR,看中就是使用其處理高維、稀疏的ID類特征的能力,線上操作簡化成“查表、累加權重”的快速便捷。如果你使用了向量這樣的稠密特征,那么LR的優點就不復存在了。更何況有的Embedding,比如圖片的Embedding可能上千維,破壞了稀疏性,線上的存儲與計算都很困難。
LR所使用的Embedding是離線計算得到的,黑盒,可解釋性不強。而我們使用LR,圖的就是其可解釋性強,方便debug。
另外,Embedding還不穩定,因為計算Embedding的離線程序可能也需要升級。一旦升級,之前累積的訓練樣本就全部作廢,因為新老Embedding肯定不處于同一個坐標系下,不能混用。
推薦使用基于Embedding的衍生指標
所以,我不推薦在LR中直接使用Embedding。 在我看來,正確的姿勢,應該是基于離線生成的Embedding,衍生出一系列衡量<user,item>相關度的指標,然后在LR中使用這些衍生指標。 這種作法也并非我的空想,也是有出處、經過實踐檢驗的。Airbnb的《Real-time Personalization using Embeddings for Search Ranking at Airbnb》[2] 中就采用這種方法,將離線計算好的Embedding,喂入他們的GBDT排序模型。
詳細算法,請閱讀Airbnb論文的第4.4節,我這里將Airbnb的做法簡述如下:
1.前提,Airbnb已經將listing(房屋) embedding離線計算好
2.從多種角度來收集用戶的歷史,
比如Hc代表用戶過去2周點擊過的listing集合,
Hs代表曝光給用戶但被忽略的listing集合,
Hw是用戶收藏的listing的集合,
Hb是用戶預訂過的listing的集合,......
3.將以上某個集合中所有listing的embedding取平均,當成user在這個行為(點擊、忽略、收藏、預訂、......)下的embedding
4.再拿user在某個行為下的user embedding,與當前要排序的listing embedding,計算cosine similarity,作為user對當前listing執行某動作(點擊、忽略、收藏、預訂、......)的傾向性。將這種“執行某動作的傾向性得分”作為實數特征,喂入GBDT,訓練排序模型。
5.將這種“執行某動作的傾向性得分”作為實數特征,喂入GBDT,訓練排序模型。
6.除了以上用戶的長期興趣(H*都是以周為單位收集的),Airbnb還計算當前待排序的listing embedding與用戶最后一次點擊的listing embedding的相似性,來刻畫用戶的短期興趣。
Airbnb使用的全部基于listing embedding的衍生指標見論文中的表6?
總結
在傳統機器學習中使用Embedding,這個問題,有一定的實戰意義。特別是你想規避DNN模型復雜的上線流程,而又想獲得Embedding帶來的擴展性的提升的時候。
在傳統機器學習模型中使用Embedding,我不推薦直接使用Embedding,而建議使用基于Embedding計算得到的衍生指標。
后臺回復關鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復關鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
?
[1]https://zhuanlan.zhihu.com/p/320196402
[2]https://zhuanlan.zhihu.com/p/162163054
總結
以上是生活随笔為你收集整理的怎样将Embedding融入传统机器学习框架?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谁才是Transformer家族中的最强
- 下一篇: 学完文本知识,我就直接看懂图片了!