0.写在前面的话

DSSM(Deep Structured Semantic Models)又称双塔模型,因其结构简单,在推荐系统中应用广泛;下面仅以召回、粗排两个阶段的应用举例,
具体描述下DSSM在工业界实践的一些所见所闻,力求自身和大家都能有所收获。

1.网络结构

paper:Learning Deep Structured Semantic Models for Web Search using Clickthrough Data
example:DSSM召回模型

原始的DSSM是在搜索CTR预估任务,大概分为:1)embedding层 2)MLP层 3)cosine相似度logit 4)softmax层;其中Q代表搜索词(用户),D1,2,...,n为检索文档(物料) 。

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


1.1 tanh激活函数与ReLU激活函数
注意DSSM是用的tanh激活函数

2.召回应用

自然能想到,将用户最近点击,消费,转化等的数据采集后作为正样本;采样些全局最热但未点击(Youtube负采样套路)作为负样本构造样本训练DSSM模型进行推荐召回。
DSSM在预测的时候就可以借助Faiss进行异步物料向量更新,加载模型后可以根据实时用户行为进行ANN检索(求Topk相似向量)。
下图为视频 | 深度学习在美图个性化推荐的应用实践 中DSSM召回线下训练,线上serving的整体架构图。


当然DSSM只是一种架构,上面模型结构只是其中一个示例;实际user feature,item feature可以有多种多样建模方式,负样本采样、以及sigmoid还是softmax loss等等都是可以探索的地方。

3.粗排

如果说DSSM召回是用户物料表征的精耕细作,那DSSM粗排就是学习精排序的算力优化。

下面是全民K歌推荐分享 中粗排的引入:大概总结就是将多路召回结果在进入精排前引入粗排阶段,在性能约束的情况下学习精排的排序结果,初筛出精排能处理的结果集。 

下面是全民K歌推荐分享 的两个演进:

承上启下,上面DSSM的两个优化点都借助于模型蒸馏,其一softmax中加入temperature(即参数T),可以起到平滑/尖锐softmax输出的作用;

T越大,结果越平滑,得到的概率分布更“平滑”;相应的T越小,得到的概率分布更“尖锐”,这就是T的作用。更详细的计算可以参考:SoftMax温度系数temperature parameter

其二引入Teacher-Student架构进行蒸馏,下面是增加了优势特征(Privileged Features)蒸馏的架构图:

教师网络训练的同时,异步更新学生网络,减少训练时长;线上serving时,仅部署student网络进行前向推断。这样就可以同时训练复杂模型,和提供轻量的线上预估模型。

粗排中的优势特征:

有一些交叉特征是对粗排效果影响明显的,比如用户(u_i)在过去24个小时内在待预估商品类目(cate_j)下的点击次数。但是复杂的交叉特征会增加线上的推理延时,所以不能作为常规特征来训练。于是交叉特征就成为了粗排阶段的优势特征。

关于Point2中的公式说明:

X表示普通特征,X*表示优势特征,y表示标签,L表示损失函数;下标s表示student,d表示distillation,t表示teacher。

4.写在后面的话

上面的介绍仅是从dssm角度总结了召回,排序的一些工作;实际dssm导出的用户向量,物料向量还可衍生出很多著名的召回(读者可以想想上一篇ucf变种); 同时整个排序架构特征更新、样本拼接,模型更新等都由于篇幅有限没有详细说明,那下一篇文章想和大家一起总结回顾下近年来排序模型及架构的主要演进。

DSSM在召回和粗排的应用举例的更多相关文章

  1. L2R 一:基础知识介绍

    一.背景 l2r可以说是搜索推荐里面很常用的知识了,一直处于一知半解的地步,今天开个博客准备把这些零散的东西系统性整理好,一版就粗糙点了. 二.粗概 前段时间的项目主要和搜索引擎相关,记录下搜索引擎的 ...

  2. 广告召回 Query-Ad Matching

    小结: 1.最为基础的召回链路就是要保证召回层的相关性,但是相关性高的广告并不一定具有很高的商业价值,所以开始尝试将一些商业化业务指标作为召回的依据 百度凤巢新一代广告召回系统--"莫比乌斯 ...

  3. 牛亚男:基于多Domain多任务学习框架和Transformer,搭建快精排模型

    导读: 本文主要介绍了快手的精排模型实践,包括快手的推荐系统,以及结合快手业务展开的各种模型实战和探索,全文围绕以下几大方面展开: 快手推荐系统 CTR模型--PPNet 多domain多任务学习框架 ...

  4. 计算广告(4)----搜索广告召回(也叫match、触发)

    一.搜索广告形态 1.特征工程 特征主要有用户画像(user profile).用户行为(user behavior).广告(ad)和上下文(context)四部分组成,如下所示: 2.平台算法主要分 ...

  5. 是时候给你的产品配一个AI问答助手了!

    本文由云+社区发表 | 导语 问答系统是信息检索的一种高级形式,能够更加准确地理解用户用自然语言提出的问题,并通过检索语料库.知识图谱或问答知识库返回简洁.准确的匹配答案.相较于搜索引擎,问答系统能更 ...

  6. 搜索相关性算法在 DiDi Food 中的搜索

    导读:今天给大家分享的主题是搜索匹配问题在 DiDi Food 中的一些探索与应用.本文首先介绍了搜索相关性的一些背景,之后介绍了业界常见的三种匹配模型,以及在DiDi Food业务中的模型效果对比. ...

  7. 搜索系统核心技术概述【1.5w字长文】

    前排提示:本文为综述性文章,梳理搜索相关技术,如寻求前沿应用可简读或略过 搜索引擎介绍 搜索引擎(Search Engine),狭义来讲是基于软件技术开发的互联网数据查询系统,用户通过搜索引擎查询所需 ...

  8. 【阿里云产品公测】阿里云OpenSearch初次使用评测

    作者:阿里云用户 bailimei 从一开始我就对opensearch非常陌生,这是我第一次接触它,本以为对我来说上手难度会比较大,看完帮助信息后我决定试用看看,经试用后我发现阿里云opensearc ...

  9. 鹅厂优文 | 怎样用AI运维

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由 织云平台团队 团队发布在腾讯云+社区 诞生背景 最近这些年,运维行业提出了不少概念,各种各样的"XX运维"可以说 ...

随机推荐

  1. 代码审计 - BugkuCTF

    extract变量覆盖: 相关函数: extract()函数:从数组中将变量导入到当前的符号表.把数组键名作为变量名,数组的键值作为变量值.但是当变量中有同名的元素时会默认覆盖掉之前的变量值. tri ...

  2. CTFshow-萌新赛杂项_劝退警告

    下载附件 https://www.lanzous.com/i9wocah 下载后得到一个劝退警告.zip 解压得到一张gif图片 使用binwalk分析发现包含zip 于是拿到了一个压缩包 打开后发现 ...

  3. 物理STANDBY库创建还原点(打开为read write后再变回主库)

    开启STANDBY库为READ WRITE 1.取消主库传送归档 SQL> alter system set log_archive_dest_state_2=defer; 2.取消备库应用日志 ...

  4. apijson简单使用

    apijson简单使用 介绍 APIJSON 是一种专为 API 而生的 JSON 网络传输协议 以及 基于这套协议实现的 ORM 库.为简单的增删改查.复杂的查询.简单的事务操作 提供了完全自动化的 ...

  5. 入门OJ:售货员的难题

    题目描述 某乡有n个村庄(1<n<15),有一个售货员,他要到各个村庄去售货,各村庄之间的路程s(0<s<1000)是已知的,且A村到B村与B村到A村的路大多不同.为了提高效率 ...

  6. Mac中安装Git

    Mac 安装git 打开Mac终端输入git命令 如果出现以下代码说明已经安装 usage: git [--version] [--help] [-C <path>] [-c <na ...

  7. Flask之路由系统

    路由系统 路由的两种写法 1.第一种方法: def index(): return render_template('index.html') app.add_url_rule('/index', ' ...

  8. 夯实基础系列四:Linux 知识总结

    前言 前三节内容传送门: 夯实基础系列一:Java 基础总结 夯实基础系列二:网络知识总结 夯实基础系列三:数据库知识总结 现在很多公司项目部署都使用的是 Linux 服务器,互联网公司更是如此.对于 ...

  9. (17)-Python3之--文件操作

    1.文件的操作流程 第一,建立文件对象. 第二,调用文件方法进行操作. 第三,不要忘了关闭文件.(文件不关闭的情况下,内容会放在缓存,虽然Python会在最后自动把内容读到磁盘,但为了以防万一,要养成 ...

  10. Jmeter接口自动化测试系列之函数使用及扩展

    介绍一下Jmeter自带函数的使用和 函数扩展,来满足测试工作中的各种需求! Jmeter自带函数 点击函数帮助助手图标,弹出函数助手框,可以选择各种各样的函数 举例: _Random 获取随机数,可 ...