Task03 召回模型:YoutubeDNN、DSSM
一、DSSM(双塔模型----召回模型)
-
DSSM-Learning Deep Structured Semantic Models for Web Search using Clickthrough Data
-
DSSM(Deep Structured Semantic Models ,深度语义模型)是2013年微软发表的一篇论文,本用于语义匹配,后被移植到推荐系统等各个场景,成为经典的双塔模型。
-
原理:
-
DSSM双塔结构,两侧分别输入user特征和ad特征,经过DNN变换后分别产出user向量和ad向量。DSSM最大的特点是user侧和ad侧是独立的两个子网络,可以离线产出user embedding和ad embedding,召回时只需要计算二者的相似度。
-
代码实现:
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]) self.embedding = EmbeddingLayer(user_features + item_features) self.user_mlp = MLP(self.user_dims, output_layer=False, **user_params) self.item_mlp = MLP(self.item_dims, output_layer=False, **item_params) self.mode = None def forward(self,