推薦系統(tǒng)論文閱讀(五十三)-基于多任務(wù)模型的蒸餾召回模型

論文:

論文題目:《Distillation based Multi-task Learning: A Candidate Generation Model for Improving Reading Duration》

論文地址:https://arxiv.org/pdf/2102.07142.pdf

中間因?yàn)楣ぷ髟驍喔藥讉€(gè)月,今天我們來重新閱讀一篇關(guān)于蒸餾的論文吧,剛好筆者最近一直在做蒸餾相關(guān)的任務(wù)。

一 、背景

在qq看點(diǎn)中,用戶可能會(huì)被一些標(biāo)題黨吸引住,這就造成了用戶的點(diǎn)擊率很高,但是瀏覽體驗(yàn)不是很好。通常要解決這種任務(wù),就會(huì)同時(shí)對(duì)ctr任務(wù)和瀏覽時(shí)長(zhǎng)任務(wù)進(jìn)行建模,也就是用多任務(wù)學(xué)習(xí)的框架來建模。

多任務(wù)建模有兩個(gè)挑戰(zhàn):

1)那些沒有發(fā)生點(diǎn)擊行為的樣本,也就是0閱讀時(shí)長(zhǎng)的樣本,這些樣本沒有被電擊過,我們不能簡(jiǎn)單的當(dāng)成負(fù)樣本,有可能是用戶壓根就沒有見過這些樣本。如果簡(jiǎn)單把這些樣本全部當(dāng)成負(fù)樣本,可能就會(huì)導(dǎo)致有偏的預(yù)估。

2)在召回階段,一般很少進(jìn)行多任務(wù)的學(xué)習(xí),尤其是雙塔模型,因?yàn)檎倩仉A段通常是ann的方式生成候選集合,多個(gè)任務(wù)難以使用ann,多任務(wù)模型的如何利用同一份雙塔來建模多個(gè)任務(wù)呢?這也是一個(gè)挑戰(zhàn)。

為了解決以上兩個(gè)問題,qq看點(diǎn)就提出了基于多任務(wù)模型框架的蒸餾模型,并運(yùn)用到召回任務(wù)中,下面我們一起來看看細(xì)節(jié)吧。

二 、模型結(jié)構(gòu)

先來看看模型的整體結(jié)構(gòu):

熟悉蒸餾的人都知道,如果要在粗排或者召回任務(wù)里去使用蒸餾,有幾種方式,第一種是精排模型同召回一起訓(xùn)練,然后用精排的預(yù)估分?jǐn)?shù)作為softlabel來蒸餾召回的logits,第二種是精排模型不跟召回一起訓(xùn)練,而是通過線上直接把打點(diǎn)的分?jǐn)?shù)埋下來后在來蒸餾召回。

兩種方法都可以,如果說想節(jié)約訓(xùn)練時(shí)間,可以直接同時(shí)訓(xùn)練兩個(gè)模型,也可以用兩階段訓(xùn)練的方式。

我們現(xiàn)在回過來看這個(gè)模型結(jié)構(gòu)圖,先來看左邊的網(wǎng)絡(luò),左邊是精排的多任務(wù)模型,采用的結(jié)構(gòu)是MMoE,關(guān)于MMoE,這里不在進(jìn)行細(xì)說,感興趣的可以自己去搜一下之前的文章。

精排模型建模的是ctr任務(wù)和cvr任務(wù),這qq看點(diǎn)中的cvr任務(wù)被定義為瀏覽時(shí)長(zhǎng),也就是說瀏覽時(shí)長(zhǎng)的建模這時(shí)候并不是一個(gè)回歸任務(wù)了,而是分類任務(wù),正樣本選取瀏覽時(shí)間超過30s的樣本,負(fù)樣本選取瀏覽時(shí)長(zhǎng)小于30s的樣本。也就是說我們通過一個(gè)閾值,把用戶的瀏覽時(shí)長(zhǎng)任務(wù)轉(zhuǎn)變成了分類任務(wù),所以就有了模型結(jié)構(gòu)中的Pctr和Pcvr這兩個(gè)分?jǐn)?shù)。

其實(shí)精排模型的思想跟ESMM類似,通過建模ctr和ctcvr任務(wù)來間接的優(yōu)化cvr任務(wù),看點(diǎn)這篇文章也是通過這個(gè)方法來建模的,關(guān)于ESMM和MMoE這里不在進(jìn)行贅述,直接給出下面的公式:

ctr的向量

cvr的向量:

ctr和cvr的分?jǐn)?shù):

ctcvr分?jǐn)?shù)的計(jì)算:

模型的瀏覽時(shí)長(zhǎng)任務(wù)loss:

模型的ctr任務(wù)的loss:

模型的總loss:

好了,現(xiàn)在我們回到整個(gè)模型的框架里,左邊是teacher網(wǎng)絡(luò),右邊呢自然是student網(wǎng)絡(luò),student網(wǎng)絡(luò)是一個(gè)雙塔結(jié)構(gòu),前面我們已經(jīng)說了,在召回模型里,很難來直接建模多個(gè)任務(wù),一般都是ctr跟cvr兩個(gè)雙塔模型。如果,我們能夠?qū)⒕拍P偷腸tcvr分?jǐn)?shù)直接對(duì)召回模型的logits直接進(jìn)行蒸餾,這樣就能讓召回模型學(xué)習(xí)到了點(diǎn)擊和瀏覽時(shí)長(zhǎng)這兩個(gè)任務(wù)來。

有一個(gè)重要的點(diǎn),我們必須要明確,蒸餾必須是在同一個(gè)人任務(wù)里做蒸餾,也就是說我們的teacher的分?jǐn)?shù)如果是ctcvr的話,那么召回的任務(wù)也只能是ctcvr,不能拿ctcvr的分?jǐn)?shù)去蒸餾召回的ctr分?jǐn)?shù)。所以可以看到召回分?jǐn)?shù)也是ctcvr的預(yù)測(cè)分?jǐn)?shù),label是精排的logits,loss計(jì)算為:

ps:我覺得上面的損失好像少個(gè)log?

模型的總loss為:


三、實(shí)驗(yàn)結(jié)果



?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容