[推荐系统]召回之DSSM

引言

DSSM,业内也叫做双塔模型,2013年微软发出来是为了解决NLP领域中计算语义相似度任务,即如何让搜索引擎在大规模web文件中基于query给出最相似的docment。因为语义匹配本身是一种排序问题,和推荐场景不谋而合,所以 DSSM 模型被自然的引入到推荐领域中。因为效果不错并且对工业界十分友好,所以被各大厂广泛应用于推荐系统中。

DSSM结构图

[推荐系统]召回之DSSM
如上图所示,其中就是n+1个塔,一个query塔和n个docment塔:
  • 输入中每个doc部分是一个高维度的向量,一个没有归一化的docment(如词袋形式);query部分就是一个onehot形式;
  • 输出是一个低维语义特征空间中的概念向量;

然后:

  • 将每个输入向量都映射成对应的语义概念向量,就图中的128维度;
  • 计算一个文档和一个query各自的语义概念向量之间的cos值,其中n可以选择10,然后包含6个点击的正样本和4个随机选择的负样本;

其中目标函数是:

  • (D)包含(D^+)和(D^-),其中(D^+)为点击过的doc,(D^-)为随机选取的未点击doc,最终loss是最小化下面的式子
    [推荐系统]召回之DSSM
  • 先计算query和每个doc的cos值
    [推荐系统]召回之DSSM
  • 再基于cos计算query和每个doc的softmax值
    [推荐系统]召回之DSSM
  • 然后基于最开始的loss函数计算loss值

在大规模的web搜索中,往往是先训练完整个模型,然后对每个docment都先执行一次得到每个概念向量,提前保存下来;
然后再等query来,过一遍获取其对应的概念向量,然后直接通过诸如faiss等等向量引擎找到最匹配的那个docment概念向量即可

word hashing

但是如上图所示,因为输入其实就是onehot和multihot,但是随着整个网站规模变大,比如谷歌,千万亿的量,那么将其放入dnn,几乎没法训练,所以需要对输入层进行瘦身,因此文中提出 word hashing,举例good这个单词

  • 左右加一个# 符号;
  • 以n-grams进行切分,这里n=3,则分为#go, goo, ood, od#;
  • 将所有单词都这么切,然后来个词袋模型,如good原来是onehot,000001000;现在就成了010100101类似样子了(其中的1只是刚好出现一次而已)
    其实就是类似词根为桶,有点布隆过滤器的意思,这样将onehot就直接降维了,

推荐中召回的使用DSSM

如果将图中最左侧看作一个塔,并称为用户塔;那右侧就可以称为物料塔(或者物料塔1,2,…,n);双塔,多塔架构由此得来;

DSSM双塔模型原理及在推荐系统中的应用中提到的,实际上使用DSSM解决不同的问题,我们通常使用不同的loss函数,双塔模型通过使用不同的label构造不同的模型,比如点击率模型采用用户向量和文章向量内积结果过sigmoid作为预估值,用到的损失函数为logloss,时长模型直接使用用户向量和文章向量的内积作为预估值,损失函数为mse。

[推荐系统]召回之DSSM
用户侧和Item侧分别构建多层NN模型,最后分别输出一个多维embedding,分别作为该用户和Item的低维语义表征,然后通过相似度函数如余弦相似度来计算两者相关性,通过计算与实际label如是否点击、阅读时长等的损失,进行后向传播优化网络参数。

在实际工程中,

  • Item Embeding会通过持续调用模型Item侧网络,将结果保存起来,如放到Faiss中;
  • User Embedding在线上Serving时需要通过调用模型用户侧网络进行计算,获得一个向量,然后将其基于faiss找到最相似的那些item

参考文献:
DSSM
双塔的前世今生(Deep Structured Semantic Models)
DSSM原理解读与工程实践

Original: https://www.cnblogs.com/shouhuxianjian/p/16446228.html
Author: 仙守
Title: [推荐系统]召回之DSSM

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/9416/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总