DSSM+DeepFM
一、DSSM模型
1.1 DSSM模型架構(gòu)
雙塔模型結(jié)構(gòu)簡(jiǎn)單,一個(gè)user塔,另一個(gè)item塔,兩邊的DNN機(jī)構(gòu)最后一層(全連接層)隱藏單元個(gè)數(shù)相同,保證user embedding和item embedding維度相同,后面相似度計(jì)算(如cos內(nèi)積計(jì)算),損失函數(shù)使用二分類交叉熵?fù)p失函數(shù)。DSSM模型無(wú)法像deepFM一樣使用user和item的交叉特征。
業(yè)界推薦系統(tǒng)常用多路召回(如CF召回、語(yǔ)義向量召回等,其中DSSM也是語(yǔ)義向量召回的其中一種),DSSM離線訓(xùn)練和普通的DNN訓(xùn)練相同。
代碼
class DSSM(torch.nn.Module):
def init(self, user_features, item_features, user_params, item_params, temperature=1.0):
super().init()
self.user_features = user_features
self.item_features = item_features
self.temperature = temperature
self.user_dims = sum([fea.embed_dim for fea in user_features])
self.item_dims = sum([fea.embed_dim for fea in item_features])
二 Youtube DNN
第一部分 召回網(wǎng)絡(luò):此階段主要目的是從百萬(wàn)級(jí)的視頻中檢索出一小部分的視頻用于之后的排序操作,這部分需要處理的數(shù)據(jù)量非常大,速度要求快,所有使用的模型和特征都不能太復(fù)雜。召回網(wǎng)絡(luò)會(huì)根據(jù)用戶的歷史信息(比如用戶的歷史觀看、搜索等)進(jìn)行召回,這一階段召回的視頻滿足用戶泛化的興趣,用戶之間的相似度則通過(guò)粗略的特征來(lái)表示,如用戶觀看視頻的ID,搜索query和用戶畫(huà)像。
第二部分 排序網(wǎng)絡(luò):此階段會(huì)使用更加豐富和精細(xì)的用戶和視頻特征,預(yù)測(cè)用戶對(duì)召回的視頻打分,然后根據(jù)分?jǐn)?shù)進(jìn)行排序,依次展示給用戶。這部分最主要是能夠精準(zhǔn)的將視頻推送給用戶,所以需要更加復(fù)雜的模型和特征來(lái)提升推薦效果。
第三部分 線下評(píng)估:評(píng)估指標(biāo)有precision、recall、ranking loss等,最終的效果還是需要線上做A/B測(cè)試,關(guān)注的指標(biāo)包括:點(diǎn)擊率、觀看時(shí)間等;需要指出的是,線上線下有時(shí)候并不能保持一致的結(jié)果。
代碼
class YoutubeDNN(torch.nn.Module):
def init(self, user_features, item_features, neg_item_feature, user_params, temperature=1.0):
super().init()
self.user_features = user_features
self.item_features = item_features
self.neg_item_feature = neg_item_feature
self.temperature = temperature
self.user_dims = sum([fea.embed_dim for fea in user_features])
self.embedding = EmbeddingLayer(user_features + item_features)
self.user_mlp = MLP(self.user_dims, output_layer=False, **user_params)
self.mode = None
參考資料
Funrec-組隊(duì)學(xué)習(xí)
總結(jié)
以上是生活随笔為你收集整理的DSSM+DeepFM的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 软件工程1 初识软件工程
- 下一篇: #403 编码人声:用编码思维写书的科普