- 《Learning Deep Structured Semantic Models for Web Search using Clickthrough Data》
- 论文由微软发表于 CIKM-2013。DSSM被广泛用于工业界的 召回/粗排 阶段。
模型结构
- 模型结构一目了然,非常简单,双塔结构:user侧一个塔,item一个塔,塔用的是MLP。底层各自有各自的embedding。两塔输出特征维度一致,最后做内积或cosine来计算相似度;损失函数用二分类交叉熵即可。
- dssm的缺点也很明显:无法做user和item的交叉/交互特征。(可参考:新浪微博张俊林的尝试SENet,如何在双塔模型中做user和item的交叉/交互)
DSSM - 召回阶段用法
- 现在工业界的推荐系统的召回阶段基本上多路召回,比如CF召回、CB召回、语义向量召回等,DSSM召回也是语义向量召回的一种。
dssm的离线训练(召回阶段)
大佬的名言:“如果精排是特征的艺术,那么召回就是样本的艺术(负样本为王)”。负样本的构造对于召回阶段来说非常非常重要!
- 召回阶段的正样本即用户点击过的item。那负样本的选择应该是面向的全量候选item中取,而不是从已曝光未点击的item中(避免样本选择偏差问题-SSB)。
- dssm的做法是,数据集里只有正样本item(即用户点击过的item);对于某个用户,而负样本的选取则是从数据集 (不包含这个用户点击过的item)中随机选则4个item作为负样本。【其他常见的负样本构造方法,请参阅我的博文:召回或粗排阶段 常见负样本构造方法】
dssm的在线推理(召回阶段)
-
dssm之所以能够在工业界这么流行,就是因为其双塔结构能够做到非常好的解耦,即训练好后user侧塔和item侧塔完全没关系,没有依赖关系。
-
可提前存好item embedding(间隔一定时间更新),user侧请求计算出user embedding后,就可以去item库里做ANN检索出top n个最相似的item。关于ANN检索技术比较有很多,比如:kd树、Annoy、HNSW等,Facebook开源了ANN库FAISS(这个我好像经常听说)。
-
所以,很明显了,dssm并不能做user和item的交叉/交互特征。
DSSM - 粗排阶段用法
和召回差不多用法,区别如下:
-
训练集不一样:因为粗排和精排的目标是一致的,所以负样本用的和精排一样的,都是曝光未点击的。
-
在线推理时候选集不一样:召回的候选集是全局物料池,而粗排时的是多路召回后的候选item集。
大佬的工程经验参考:
- 如果召回的dssm模型和粗排的dssm模型,在特征、样本都一样的情况下,则dssm召回的item大部分都会被粗排排出去,注意这里是大部分,从我们的实践中大概有一半的会被排出去,至于为什么没有全部都被排出去,原因应该是数据中存在multi-view,即使特征、样本、网络结构都一样,只要参数初始化是随机的,网络最终也会学到不同的view。
参考链接:https://blog.csdn.net/u012328159/article/details/123782735