【机器学习】怎样将Embedding融入传统机器学习框架?
文 | 石塔西
源 | 知乎
LR本身是一個(gè)經(jīng)典的CTR模型,廣泛應(yīng)用于推薦/廣告系統(tǒng)。輸入的特征大多數(shù)是離散型/組合型。那么對(duì)于Embedding技術(shù),如何在不使用深度學(xué)習(xí)模型的情況下(假設(shè)就是不能用DNN),融入到LR框架中呢?讓我們來(lái)看看清華大學(xué)的博士石塔西大佬是如何解答的。
問(wèn)題實(shí)戰(zhàn)意義
其實(shí)這個(gè)問(wèn)題可以再擴(kuò)展一下,即,如何在傳統(tǒng)機(jī)器學(xué)習(xí)算法(LR/GBDT)中使用Embedding信息。
這個(gè)問(wèn)題并非空穴來(lái)風(fēng),而是有一定的實(shí)戰(zhàn)價(jià)值。 目前DNN熱度不減,基本上成為推薦、搜索系統(tǒng)的標(biāo)配算法。傳統(tǒng)機(jī)器學(xué)習(xí)算法,如LR、GBDT,紛紛被打入冷宮,得不到關(guān)注。至于為什么DNN能夠成功上位,獨(dú)占各位打工人的歡心,請(qǐng)參考我的文章《無(wú)中生有:論推薦算法中的Embedding思想》[1]。
但是,DNN有一個(gè)致命缺點(diǎn),就是上線困難。 訓(xùn)練的時(shí)候,各位調(diào)參俠,把各種酷炫的結(jié)構(gòu),什么attention, transformer, capsule,能加上的都給它加上,看著離線指標(biāo)一路上漲,心里和臉上都樂(lè)開(kāi)了花,卻全然無(wú)視旁邊的后端工程師恨得咬緊了牙根。模型越復(fù)雜,離線和線上指標(biāo)未必就更好,但是線上的時(shí)間開(kāi)銷肯定會(huì)增加,輕則影響算法與后端的同事關(guān)系(打工人何苦為難打工人),重則你那離線指標(biāo)完美的模型壓根沒(méi)有上線的機(jī)會(huì)。雖說(shuō),目前已經(jīng)有TF Serving這樣的線上serving框架,但是它也不是開(kāi)箱即用的,也需要一系列的性能調(diào)優(yōu),才能滿足線上的實(shí)時(shí)性要求。
所以,如果你身處一個(gè)小團(tuán)隊(duì),后端工程人員的技術(shù)能力不強(qiáng),在線DNN就會(huì)成為一個(gè)難題,這個(gè)時(shí)候,傳統(tǒng)的LR、GBDT就凸顯出優(yōu)勢(shì)。 如果全部使用ID類特征(實(shí)數(shù)特征也桶化成ID類特征),那么LR在線上就簡(jiǎn)化成“查表取權(quán)重,再累加“,連乘法都省了,實(shí)時(shí)性自然有保證。
但是,如果你想魚與熊掌兼得,既不得不使用簡(jiǎn)單的傳統(tǒng)機(jī)器學(xué)習(xí)算法,又想利用Embedding帶來(lái)擴(kuò)展能力上的提升, 你該怎么辦?唉,費(fèi)了半天口舌,只是解了題而已,目的是為了說(shuō)明這一問(wèn)題的實(shí)戰(zhàn)意義,引起大家對(duì)這一問(wèn)題的重視。
不推薦直接使用Embedding本身
首先,如果你的主框架是傳統(tǒng)機(jī)器學(xué)習(xí)算法,那么Embedding肯定就不能是End-To-End學(xué)習(xí)得到的,而需要離線用另外的算法先學(xué)習(xí)好。比如,你使用DeepWalk先學(xué)習(xí)用戶的購(gòu)買序列,離線學(xué)習(xí)好商品的Embedding。
第二個(gè)問(wèn)題才是傳統(tǒng)機(jī)器學(xué)習(xí)如何利用這些Embedding。當(dāng)然最簡(jiǎn)單的方法就是直接使用,為了使用一個(gè)64維的向量,就相當(dāng)于LR增加了64維特征。但是,我不推薦使用這種方式:
之所以線上使用LR,看中就是使用其處理高維、稀疏的ID類特征的能力,線上操作簡(jiǎn)化成“查表、累加權(quán)重”的快速便捷。如果你使用了向量這樣的稠密特征,那么LR的優(yōu)點(diǎn)就不復(fù)存在了。更何況有的Embedding,比如圖片的Embedding可能上千維,破壞了稀疏性,線上的存儲(chǔ)與計(jì)算都很困難。
LR所使用的Embedding是離線計(jì)算得到的,黑盒,可解釋性不強(qiáng)。而我們使用LR,圖的就是其可解釋性強(qiáng),方便debug。
另外,Embedding還不穩(wěn)定,因?yàn)橛?jì)算Embedding的離線程序可能也需要升級(jí)。一旦升級(jí),之前累積的訓(xùn)練樣本就全部作廢,因?yàn)樾吕螮mbedding肯定不處于同一個(gè)坐標(biāo)系下,不能混用。
推薦使用基于Embedding的衍生指標(biāo)
所以,我不推薦在LR中直接使用Embedding。 在我看來(lái),正確的姿勢(shì),應(yīng)該是基于離線生成的Embedding,衍生出一系列衡量<user,item>相關(guān)度的指標(biāo),然后在LR中使用這些衍生指標(biāo)。 這種作法也并非我的空想,也是有出處、經(jīng)過(guò)實(shí)踐檢驗(yàn)的。Airbnb的《Real-time Personalization using Embeddings for Search Ranking at Airbnb》[2] 中就采用這種方法,將離線計(jì)算好的Embedding,喂入他們的GBDT排序模型。
詳細(xì)算法,請(qǐng)閱讀Airbnb論文的第4.4節(jié),我這里將Airbnb的做法簡(jiǎn)述如下:
1.前提,Airbnb已經(jīng)將listing(房屋) embedding離線計(jì)算好
2.從多種角度來(lái)收集用戶的歷史,
比如Hc代表用戶過(guò)去2周點(diǎn)擊過(guò)的listing集合,
Hs代表曝光給用戶但被忽略的listing集合,
Hw是用戶收藏的listing的集合,
Hb是用戶預(yù)訂過(guò)的listing的集合,......
3.將以上某個(gè)集合中所有l(wèi)isting的embedding取平均,當(dāng)成user在這個(gè)行為(點(diǎn)擊、忽略、收藏、預(yù)訂、......)下的embedding
4.再拿user在某個(gè)行為下的user embedding,與當(dāng)前要排序的listing embedding,計(jì)算cosine similarity,作為user對(duì)當(dāng)前l(fā)isting執(zhí)行某動(dòng)作(點(diǎn)擊、忽略、收藏、預(yù)訂、......)的傾向性。將這種“執(zhí)行某動(dòng)作的傾向性得分”作為實(shí)數(shù)特征,喂入GBDT,訓(xùn)練排序模型。
5.將這種“執(zhí)行某動(dòng)作的傾向性得分”作為實(shí)數(shù)特征,喂入GBDT,訓(xùn)練排序模型。
6.除了以上用戶的長(zhǎng)期興趣(H*都是以周為單位收集的),Airbnb還計(jì)算當(dāng)前待排序的listing embedding與用戶最后一次點(diǎn)擊的listing embedding的相似性,來(lái)刻畫用戶的短期興趣。
Airbnb使用的全部基于listing embedding的衍生指標(biāo)見(jiàn)論文中的表6?
總結(jié)
在傳統(tǒng)機(jī)器學(xué)習(xí)中使用Embedding,這個(gè)問(wèn)題,有一定的實(shí)戰(zhàn)意義。特別是你想規(guī)避DNN模型復(fù)雜的上線流程,而又想獲得Embedding帶來(lái)的擴(kuò)展性的提升的時(shí)候。
在傳統(tǒng)機(jī)器學(xué)習(xí)模型中使用Embedding,我不推薦直接使用Embedding,而建議使用基于Embedding計(jì)算得到的衍生指標(biāo)。
[1]https://zhuanlan.zhihu.com/p/320196402
[2]https://zhuanlan.zhihu.com/p/162163054
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機(jī)器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯 獲取本站知識(shí)星球優(yōu)惠券,復(fù)制鏈接直接打開(kāi): https://t.zsxq.com/qFiUFMV 本站qq群704220115。加入微信群請(qǐng)掃碼:總結(jié)
以上是生活随笔為你收集整理的【机器学习】怎样将Embedding融入传统机器学习框架?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 浏览器的安全设置在哪里?要如何设置
- 下一篇: Win11怎么从Dev渠道换Beta渠道