【双塔模型DSSM】的原理与实现

news2025/1/10 1:26:26

文章目录

  • 简介
  • 1 双塔模型的召回结构
    • 1.1 样本准备
    • 1.2 模型特征
    • 1.3 模型loss
    • 1.4 线上部署
  • 2 双塔模型的粗排结构
    • 2.1 样本准备
    • 2.2 模型特征
    • 2.3 模型loss
    • 2.4 线上部署
  • 参考文章

简介

DSSM 模型总的来说可以分成三层结构,分别是输入层、表示层和匹配层。双塔结构如下图所示:
在这里插入图片描述

DSSM的训练方式

  • Pointwise:独立看待每一个正样本、负样本,做简单的二元分类。
    在这里插入图片描述
  • Pairwise:每次取一个正样本,一个负样本。在这里插入图片描述
    (1)第1种loss:Triplet Hinge Loss
    在这里插入图片描述
    (2)第2种loss:Triplet Logistic Loss,这里 σ \sigma σ是控制loss函数形状的超参数。
    在这里插入图片描述
  • Listwise:每次取一个正样本,多个负样本。
    在这里插入图片描述
    这里 s s s表示softmax输出的预测值, y y y表示正负样本的标签。
    在这里插入图片描述

1 双塔模型的召回结构

召回模型一般是特征后融合。
在这里插入图片描述

一个被实践的召回模型的实例:
在这里插入图片描述
如图所示,其中:

  1. x x x为(user,上下文)的特征, y y y为(item)的特征;
  2. u ( x ) u(x) u(x)表示(user,上下文)最终的Embedding向量表示, v ( y ) v(y) v(y)表示(item)最终的Embedding向量表示;
  3. < u ( x ) , v ( y ) > <u(x), v(y)> <u(x),v(y)>表示(user,上下文)和(item)的余弦相似度(或者 点积),如下式。
    R ( u , v ) = c o s i n e ( u , v ) = u T v ∣ ∣ u ∣ ∣    ∣ ∣ v ∣ ∣ R(u,v) = cosine(u,v) = \frac{u^T v}{||u||\; ||v||} R(u,v)=cosine(u,v)=∣∣u∣∣∣∣v∣∣uTv

在推荐系统中,一般左侧为User Tower,右侧为Item Tower,因此称之为双塔模型。

优点

  1. 该结构对工业界非常友好,两个子网络产生的embedding向量可以独自获取以及缓存;
  2. 两个塔可以分别对user和item建模,可拓展性强,使用灵活。

缺点

  1. 该结构进行的是特征后融合,即user和item仅在最后softmax才产生交互

1.1 样本准备

用户链路:曝光-点击-下载-购买。
正样本:曝光&&下载

负样本为什么不能是 曝光&&未下载?
如果只是曝光未下载当做负样本的话,那训练样本分布就和精排无异了,但实际上精排的样本是经过召回粗排等层层筛选过的,而召回面对的是庞大的物料库。所以,如果只是用曝光未下载当做负样本那线上线下的的样本分布就不一致了。

负样本如何选择?
(1)随机采样物料库作为负样本
大部分实验采用随机采样物料库作为负样本。这样能保证召回模型中存在不同的物料。
(2)参考word2vec中的负采样方法
采样概率应该与物料出现频率相关。当高频物料作正样本时,要降采样;当高频物料作负样本时,要适当过采样。这样可以抵消高频物料对正样本集的绑架,同时也保证低频物料在负样本集的出现机会。
(3)在batch内随机采样
考虑工程复杂度,这是工程实现中最常用的方案。
针对每条正样本,在每个batch内采样m个负样本。

注意:这里有一个点需要注意,如果你的物料比较少,且头部效应比较明显,这种情况下在batch随机采样为负样本很有可能采样到正样本当做负样本,所以是不适合该方案的。这种物料足够少的情况下,物料大部分都出现过,甚至没必要进行负采样。

P.S.:在(3)的基础上,还有 a.丢弃重采样; b.伪负样本反转;c. 伪负样本反转&&伪负样本赋权

1.2 模型特征

在这里插入图片描述

1.3 模型loss

一般采样方法是在batch内随机采样,针对每条正样本,在每个batch内采样m个负样本。所以最终选用的是softmax的交叉熵损失函数,即交叉熵(softmax®)
在这里插入图片描述

1.4 线上部署

DSSM的召回分为u2i、u2i2i、i2i等等召回。这里以u2i召回举例说明。

在做DSSM的u2i召回时,考虑到用户量在亿级别,item在18w级,用户量庞大而物料库比较小,所以这里u2i的整体思路是用户向量在线生成,而物料库向量离线生成,线上生成的向量再用faiss与离线item embeding计算点积生成候选集。

(1)用户向量如何在线生成

双塔模型的两个塔结构时完全分离的,所以这里把user和item两个塔的模型分别输出,方便后续使用user模型线上生成用户向量。

(2)物料库向量如何生成

这里我们需要先构造包含所有物料的测试数据集(可以伪造一个用户信息和上下文信息,然后拼接物料库所有item数据来构造),然后predict测试集的时候输出物料塔的最后一层隐向量当做物料embeding。

2 双塔模型的粗排结构

粗排模型一般是特征前融合。
在这里插入图片描述

一个被实践的粗排模型的实例:
在这里插入图片描述

2.1 样本准备

粗排的样本分布一般与精排保持一致。
正样本:曝光&&下载
负样本:曝光&&未下载

2.2 模型特征

在这里插入图片描述

2.3 模型loss

一般采样方法是在batch内随机采样,针对每条正样本,在每个batch内采样m个负样本。所以最终选用的是softmax的交叉熵损失函数,即交叉熵(softmax®)
在这里插入图片描述

2.4 线上部署

在做DSSM粗排粗排时,具体来说:

(1)用户塔模型和物料塔模型按天/时生成,部署线上

双塔模型的两个塔结构是完全分离的,所以这里把user和item两个塔的模型分别输出,部署线上,方便后续生成user向量和item向量。

(2)粗排如何产生候选集

DSSM拿到召回结果后,分别从user塔模型生成user embedding,item塔模型生成item embedding,然后两个embedding做点积,产出 T o p K TopK TopK候选集。

参考文章

推荐系统中不得不说的 DSSM 双塔模型
美团-对偶增强的双塔模型(DAT)
DSSM在召回和粗排的实践总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1040590.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习第十一课--K-Means聚类

一.聚类的概念 K-Means算法是最经典的聚类算法&#xff0c;几乎所有的聚类分析场景&#xff0c;你都可以使用K-Means&#xff0c;而且在营销场景上&#xff0c;它就是"King"&#xff0c;所以不管从事数据分析师甚至是AI工程师&#xff0c;不知道K-Means是”不可原谅…

虚拟机安装CentOS 7

一、CentOS7.4下载 官网下载地址&#xff1a;http://vault.centos.org/ 1、进入CentOS下载官网&#xff0c;找到CentOS7.4版本往下滑找到要下载的版本&#xff08;这里我用的是7.4哈~~&#xff09; 下载完成之后&#xff0c;由于“CentOS-7-x86_64-DVD-1708.torrent”只是一…

Python 找出最大数

"""在输入的三个数中找出最大知识点&#xff1a;1、条件嵌套语句if/else2.字符串分割函数split()3、列表元素索引4、数据类型转换举一反三&#xff1a;1、如何控制只能输入三个数&#xff0c;否则重新输入2、如何避免输入无效字母"""# 定义一个变…

Cron表达式_用于定时调度任务

一、Cron表达式简介 Cron表达式是一个用于设置计划任务的字符串&#xff0c;该字符串以5或6个空格分隔&#xff0c;分为6或7个域&#xff0c;每一个域代表任务在相应时间、日期或时间间隔执行的规则【Cron表达式最初是在类Unix操作中系统中使用的&#xff0c;但现在已经广泛应用…

三菱PLC位置式PID(梯形图源代码)

PID的算法和公式详细介绍,大家可以查看PID专栏,这里不再展开细述。这篇文章主要给出FX3GA系列位置式PID的梯形图源代码,方便大家学习使用。 位置式PID三菱ST代码 三菱FX3U PLC 位置式PID算法(ST语言)_三菱pid梯形图源代码_RXXW_Dor的博客-CSDN博客三菱PLC自带的PID不必多说…

uniapp:如何修改组件默认样式

日历组件默认样式如下图&#xff0c;但是我不想要右上角的红点&#xff0c;并且日期下面的数字要加红色背景&#xff0c;变成圆形&#xff0c;还是先用元素检查找到元素的类名&#xff0c;然后通过/deep/来覆盖样式&#xff0c;需要注意的是&#xff0c;lang要scss或者less&…

硬件基本功--MOS管

一、上下拉电阻Rgs的作用 Rgs&#xff1a;经验值&#xff0c;一般取10K左右。 1. 上电时给MOS管的栅极一个确定的电平&#xff0c;防止上电时GPIO为高阻态时&#xff0c;MOS管的栅极电平不确定&#xff0c;从而受到干扰。 2. 断电时&#xff0c;如果MOS管是导通的状态&#xff…

北京智和信通亮相2023IT运维大会,共话数智浪潮下自动化运维新生态

2023年9月21日&#xff0c;由IT运维网、《网络安全和信息化》杂志社联合主办的“2023&#xff08;第十四届&#xff09;IT运维大会”在北京成功举办。大会以“以数为基 智引未来”为主题&#xff0c;北京智和信通技术有限公司&#xff08;下文简称&#xff1a;北京智和信通&…

火山引擎边缘云:数智化项目管理助力下的业务增长引擎

近日&#xff0c;“QCon全球软件开发大会2023北京站”、“第十二届中国PMO大会”、“2023第二届中国PMO&PM大会”相继召开&#xff0c;火山引擎边缘云项目管理团队受邀参加&#xff0c;并就项目管理相关主题开展分享。 会上&#xff0c;火山引擎边缘云项目管理负责人申建表…

TS编译器选项​——指定编译后文件所在目录

compilerOptions是TS的编译器选项&#xff0c;主要在tsconfig.json文件中用于对ts编译为js文件时进行配置 "compilerOptions" : { 配置项 } 在tsconfig.json中编写如下代码&#xff1a; {// compilerOptions 编译器选项"compilerOptions": {// outDir 用于…

QT程序打包图片无法正常显示

QT程序打包图片无法正常显示 环境&#xff1a; QT4.8.2VS2017opencv3.416 问题&#xff1a; 本机测试正常&#xff0c;图片可正常显示功能也可正常进行&#xff0c;但打包发送给没有环境数据的电脑上进行测试就会出现图片无法显示的问题。 原因&#xff1a; 并没有找到理论支撑…

投资理财知识分享:100个金融知识专业术语

大家好&#xff0c;我是财富智星&#xff0c;今天跟大家分享一下投资理财知识方面100个金融知识专业术语&#xff0c;希望能帮助大家了解更多金融知识。 1. 股票&#xff1a;代表对一家公司所有权的证券。 2. 债券&#xff1a;公司或政府发行的借款证券。 3. 投资组合&#xff…

AWS SAA 学习过程记录

共通 一些信息已经更新了&#xff0c;但参考题的答案还是旧的。 比如&#xff1a; S3的最大读写性能已经提高到 3,500 PUT/COPY/POST/DELETE or 5,500 GET/HEAD requests per second 并且不再要求使用random prefix Storage Amazon S3 为了提高读取的performance: For exam…

MySQL 笔试——多表连接查询

一、&#xff08;左、右和全&#xff09;连接概念 内连接&#xff1a; 假设A和B表进行连接&#xff0c;使用内连接的话&#xff0c;凡是A表和B表能够匹配上的记录查询出来。A和B两张表没有主付之分&#xff0c;两张表是平等的。 关键字&#xff1a;inner join on 语句&#xf…

2023-9-25 JZ6 从头到尾打印链表

题目链接&#xff1a;从头到尾打印链表 import java.util.*; /** * public class ListNode { * int val; * ListNode next null; * * ListNode(int val) { * this.val val; * } * } * */ import java.util.ArrayList; public c…

【MySql】2- 基础篇(下)

文章目录 1. MySQL锁1. 1 全局锁1. 2 表级锁1. 3 行锁1. 3 .1 两阶段锁1. 3 .2 死锁和死锁检测 2. 事务是否是隔离的?2.1 快照在MVCC中如何工作 1. MySQL锁 数据库锁设计的初衷是处理并发问题。作为多用户共享的资源&#xff0c;当出现并发访问的时候&#xff0c;数据库需要合…

Android修行手册 - Activity 在 Java 和 Kotlin 中怎么写构造参数

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

无线通信——Mesh自组网的由来

阴差阳错找到了一个工作&#xff0c;是做无线通信的&#xff0c;因为无线设备采用Mesh&#xff0c;还没怎么接触过&#xff0c;网上搜索下发现Mesh的使用场景不多&#xff0c;大部分都是用在家里路由器上面。所以写了片关于Mesh网的文档。Mesh网可应用在无网络区域的地方&#…

创意如潮,看AIGC如何颠覆影视娱乐制作

“AIGC正颠覆影视娱乐的方方面面&#xff0c;未来三到五年&#xff0c;制作的方式、成本结构、人员结构等等一定会发生大变化。”爱奇艺创始人、CEO龚宇在9月21日的2023爱奇艺i JOY悦享会上这样说道&#xff0c;这番言论不仅引发了业内的广泛热议&#xff0c;也促使我们重新审视…

vue组件 data选项

vue组件 data选项 错的 App.vue <template><div class"app"><baseCount></baseCount><baseCount></baseCount><baseCount></baseCount></div> </template><script> import baseCount from &quo…