转自:git
本文属于新闻推荐实战-召回阶段-DSSM召回模型。区别于策略召回,基于向量召回也是目前工业界常用的一种召回方法。这里我们将介绍一个比较经典的召回模型DSSM,希望读者可以快速掌握模型原理以及细节,同时可以了解具体的实践过程。
DSSM模型结构及原理
召回阶段不同于精排部分,召回模型会遭遇到巨大的候选item,像淘宝、抖音等场景中召回候选item通常是千万乃至亿级别,对于精排模型显然是无法招架的。这不仅仅是因为召回模型相比精排模型更加简单,其中更重要的是不需要线上对所有候选item进行计算,一般都是会在离线为item计算embedding建索引。这是因为无论对于用户A还是用户B,面对的item embedding都不会有区别,所以可以离线对所有的物料提前通过模型计算得到item embedding,当用户上线时,只需要在线计算用户embedding即可,然后通过ANN(Approximate Nearest Neighbor Search)对构建好的item embedding索引进行检索便可以快速召回相似的topK个item。
原理
DSSM(Deep Structured Semantic Model)是由微软研究院于CIKM在2013年提出的一篇工作,该模型主要用来解决NLP领域语义相似度任务,利用深度神经网络将文本表示为低维度的向量,用来提升搜索场景下文档和query匹配的问题。DSSM模型的原理主要是:通过用户搜索行为中query和doc的日志数据,通过深度学习网络将query和doc映射到共同维度的语义空间中,通过最大化query和doc语义向量之间的余弦相似度,从而训练得到隐含语义模型,即query侧特征的embedding和doc侧特征的embedding,进而可以获取语句的低维语义向量表达sentence embedding,可以预测两句话的语义相似度。
而在推荐系统中,最为关键的是如何做好用户与item的匹配问题,因此对于推荐系统中DSSM模型的应用,则是为user和item分别构建独立的子网络塔式结构,利用user和item的曝光或点击数据进行训练,最终得到user侧的embedding和item侧的embedding。
DSSM 模型结构
上图是DSSM模型的结构,该网络结构比较简单,是一个由几层DNN组成网络,我们将要搜索文本(Query)和要匹配的文本(Document)的 embedding 输入到网络,网络输出为 128 维的向量,然后通过向量之间计算余弦相似度来计算向量之间距离,可以看作每一个 query 和 document 之间相似分数,然后在做 softmax。
对于模型的输入术语向量(term vector)(可以被视为信息检索中的原始词袋特性)的大小与用于索引Web文档集合的词汇表的大小相同。在真实的Web搜索任务中,词汇量通常非常大。因此,当使用term vector作为输入时,神经网络的输入层的大小对于推理和模型训练是无法控制的。为了解决这个问题,我们为DNN的第一层开发了一种叫做单词哈希的方法,具体是Word Hashing的方法(由于这主要是NLP中的内容,与本内容不是很相关,具体的可以查看论文)。
以上主要是DSSM的大致内容,将其用到推荐的召回中会存在着一些区别以及需要注意的地方。
推荐领域中的双塔模型
下面将简单的介绍一下各大厂在双塔部分的实际应用,具体内容如下:
朴素的 DSSM 双塔模型
该模型主要是将上述模型中的两个“塔”改为独立的 user 和 item 两个子网络,大概结构如下:
其结构非常简单,如上图所示,左侧是用户塔,右侧是Item塔。在用户侧结构中,其输入为用户侧特征(用户画像信息、统计属性以及历史行为序列等);在物品侧结构中,其输入为Item相关特征(Item基本信息、属性信息等)。对于这两个塔本身,则是经典的DNN模型,在训练过程中,其输入由特征OneHot到特征Embedding,再经过几层DNN隐层,两个塔分别输出user embedding和item embedding,最后这两个embedding做内积或者Cosine相似度计算,使得user和item在embedding映射到共同维度的语义空间中。
SENet 双塔模型
该模型主要的改进是在user塔和Item塔的特征Embedding层上,各自加入一个SENet模块,借助SENet网络用来动态地学习特征的重要性,根据得到的特征权重与对应特征的embedding相乘,进而达到放大重要特征或抑制无效特征的目的,模型大致结构如下所示:
其模型和朴素DSSM模型的区别在于多加了一个SENet网络,该网络主要是将特征的 embedding 通过 Squeeze 和Excitation 两个阶段得到一个权重向量,在用该向量与特征的embeding对应为相乘,挑选出最要特征之后在进入到朴素的DSSM网络中。 而 SENet 之所以起作用的原因,张俊林老师的解释是 SENet 可以突出那些对高层 User embedding 和 Item embedding 的特征交叉起重要作用的特征,更有利于表达两侧的特征交互,避免单侧无效特征经过DNN双塔非线性融合时带来的噪声,同时又带有非线性的作用。关于SENet网络详细内容可以查看

本文聚焦新闻推荐召回阶段的DSSM召回模型。介绍其原理,即通过深度学习将query和doc映射到语义空间。阐述模型结构,包括朴素、SENet、Youtube双塔模型。还提及召回模型负样本的采样方法,最后基于Deepmatch库展示DSSM模型使用流程及评估结果。




2676

被折叠的 条评论
为什么被折叠?



