論文:
論文題目:《A Dual Augmented Two-tower Model for Online Large-scale Recommendation》
論文地址:https://dlp-kdd.github.io/assets/pdf/DLP-KDD_2021_paper_4.pdf
可以看到這篇論文是發(fā)表在dlp-kdd上的一篇關(guān)于雙塔召回的論文,這篇論文其實(shí)比較偏工業(yè)界的風(fēng)格,主要的創(chuàng)新點(diǎn)其實(shí)就兩個地方罗珍,我們一起來看看吧堕绩。
一 擒悬、背景
許多現(xiàn)代推薦系統(tǒng)都有非常大的物品庫窍帝,處理大規(guī)模檢索的一個常見工業(yè)方法是使用雙塔模型從內(nèi)容特征中學(xué)習(xí)query和item的表示榕茧。然而垃沦,該模型缺乏兩塔之間的信息交互,此外用押,類別數(shù)據(jù)的不平衡也影響了模型的性能肢簿。在美團(tuán)的首頁推薦場景下,負(fù)責(zé)給所有的業(yè)務(wù)進(jìn)行導(dǎo)流和推薦任務(wù)蜻拨。在首頁推薦場景下池充,物品類別是嚴(yán)重不平衡的。舉個例子來說缎讼,外賣這個類別的商品數(shù)量就比較多收夸,也就是說,如果不加區(qū)分的對所有的物品進(jìn)行訓(xùn)練血崭,那么就會導(dǎo)致整個模型的效果受主要類別主導(dǎo)卧惜,模型的訓(xùn)練就跟少量的類別關(guān)系沒那么大了,這些少樣類別幾乎不會對模型的訓(xùn)練造成影響夹纫。
另外咽瓷,做雙塔的各位都知道,一個比較難受的問題就是query塔跟item塔沒有進(jìn)行交互舰讹,唯一一次交互式在計(jì)算相似度(cos/內(nèi)積)的時候茅姜。為了解決這個問題,張俊林老師在知乎上也說過月匣,可以用senet結(jié)構(gòu)來緩解钻洒,senet的主要效果是信息提純奋姿,讓最有效的信息保留,不重要的信息忽略航唆,這樣在最后計(jì)算cos的時候的交互才是最好的,避免了亂七八糟的信息進(jìn)行交互了院刁。
該論文提出了雙重增強(qiáng)雙塔模型來解決以上兩個問題糯钙。論文設(shè)計(jì)了Adaptive-Mimic Mechanism,來為每一個query和item學(xué)習(xí)一個增強(qiáng)向量退腥,增強(qiáng)向量代表了來自另一個塔的有用信息任岸;此外,論文還在訓(xùn)練階段引入了Category Alignment Loss來緩解類別不平衡的問題狡刘。
二享潜、模型結(jié)構(gòu)
2.1 Embedding層
這個就不在進(jìn)行過多的介紹了,query跟item的特征都經(jīng)過embedding結(jié)構(gòu)生成稠密的特征嗅蔬。
2.2?Dual Augmented layer
對于query和item剑按,都假設(shè)帶有一個對應(yīng)的增強(qiáng)向量au和av,并與Embedding層得到的Embedding進(jìn)行concat澜术,作為兩個塔的輸入艺蝴。如對于uid=253,city=SH鸟废,gender=male的用戶猜敢,以及iid=149,price=10盒延,class=cate的item缩擂,對應(yīng)的模型輸入為:
做過雙塔的都知道,在模型經(jīng)過多層dnn后添寺,需要在最后進(jìn)行l(wèi)2正則胯盯,為什么要做正則呢,很多文章都解釋過了计露,這里就簡單提幾點(diǎn):
1.為了模型訓(xùn)練更穩(wěn)定
2.為了檢索一致性陨闹,歸一化后在點(diǎn)積=cos相似度 等價于hnsw中的歐式距離
所以接下來的操作就是:
我們可以從圖中看到,增強(qiáng)向量跟著dnn進(jìn)入了雙塔結(jié)構(gòu)薄坏,但是這個增強(qiáng)向量還有另外的作用趋厉。
這里直接用簡單的話來講解,我們可以看到au可以看作是query側(cè)的增強(qiáng)向量胶坠,除了跟著模型一起訓(xùn)練以外君账,還扮演著對于所有item塔中所有正樣本的輸出向量表示∩蛏疲可以這么理解乡数,我們前面不是說了嗎椭蹄,我們沒辦法在雙塔中進(jìn)行特征交叉,因?yàn)榈貌坏奖舜说男畔⒈硎揪桓埃敲次覀優(yōu)槭裁床蛔约簶?gòu)造出一個偽的item表示呢绳矩,其實(shí)au就是候選item的一種假設(shè),是我們用來進(jìn)行特征交互的假設(shè)向量玖翅。
你可能覺得翼馆,太好了,如果我們直接假設(shè)一個彼此向量就好了金度,這個想法太天衣無縫了应媚?錯了,我們必須要對這個增強(qiáng)向量進(jìn)行限制才行猜极,既然他是我們對另一側(cè)的假設(shè)向量中姜,這個vec就不能太飄,所以我們需要用一個loss進(jìn)行限制:
以loss_u為例跟伏,如果y=0丢胚,則沒有損失,若y=1受扳,則增強(qiáng)向量必須要跟另一個塔的輸出向量越接近嗜桌,則損失越小。也就是說辞色,增強(qiáng)向量是對該query或item所有可能匹配的正樣本信息的綜合表示骨宠。而在訓(xùn)練增強(qiáng)向量的過程中,需要使用stop gradient策略來凍結(jié)pu和pv相满。
2.3 Category Alignment
前面提到了兩個問題层亿,一個是特征交叉,另一個是類別不平衡問題立美。在美團(tuán)這種場景下匿又,類別是嚴(yán)重不平衡的,我們不能讓模型被主要類別帶偏了建蹄。同時也要讓較少的類別參與到模型的訓(xùn)練中碌更。論文提出了Category Alignment Loss,可以將數(shù)量較多的類別中學(xué)習(xí)到的信息遷移到數(shù)量較小的類別中洞慎。CAL計(jì)算主類別和其他類別的協(xié)方差矩陣二階矩痛单,降低類別間的差距:
關(guān)于cal,可以自己去看看相應(yīng)的論文
2.4 模型訓(xùn)練和損失函數(shù)
這部分就很簡單了劲腿,雙塔召回嘛旭绒,無非就是采樣+loss設(shè)計(jì)的問題: