基于Embedding召回和DSSM双塔模型

文章目录

    • 基于Embedding召回介绍
    • 基于Embedding召回算法分类
      • I2I召回
      • U2I召回
    • DSSM模型
      • DSSM双塔模型层次

基于Embedding召回介绍

  • 基于embedding的召回是从内容文本信息和用户查询的角度出发,利用预训练的词向量模型或深度学习模型,将文本信息转换成向量进行表示,通过计算两个向量之间的距离或者相似度来推荐内容。这种方式主要考虑商品文本信息的语义信息,使推荐的内容更加精准。
  • Embedding召回主要的优缺点
    • 优点:
      扩展性强:基于 Embedding 的召回算法可以学习大规模物品或用户的向量表示,因此对于超大规模推荐系统也可以进行有效召回。
      表达能力强:基于 Embedding 的召回算法可以学习到物品或用户更为细致的特征表示,因此能够更好地捕捉物品或用户之间的相似性。
      可解释性强:基于 Embedding 的召回算法可以自然地将物品或用户表示为低维向量,这使得我们可以通过可视化等手段来更好地理解和解释推荐结果。
    • 缺点:
      数据量大,训练周期长,只能表示用户与物品向量表示关系,无法进行高维度特征表示(时间序列等),调参过程比较繁琐。

基于Embedding召回算法分类

  • 基于 Embedding 的召回算法可分为两类有I2I 的召回和U2I的召回。

I2I召回

  • I2I也就是Item-to-Item,实际上就是要将每一个 Item 用向量来表示。在Item-to-Item 召回中,系统会根据用户已经交互过的物品,找到这些物品的相似度,然后根据相似度来召回其他类似的物品作为推荐结果。这个向量的表示,我们就可以理解为Embedding。
  • Item-to-Item召回通常分为两个步骤:第一步,计算物品之间的相似度;第二步:用户请求推荐时,系统根据该用户的历史交互行为,找到该用户已交互过的物品并选取与之最相似的一些物品作为推荐结果。
  • 常见的I2I召回算法有Word2Vec、Item2Vec、FastText、BERT等。

U2I召回

  • U2I也就是User-to-Item,它基于用户的历史行为以及用户的一些个人信息,对系统中的候选物品进行筛选,挑选出一部分最有可能被用户喜欢的物品,送入推荐模型进行排序和推荐。
  • 常见的U2I策略有:
    • 基于用户历史行为召回
    • 基于用户画像召回
    • 基于社交网络召回
  • 常见的U2I召回算法有DSSM双塔模型、YouTubeDNN等。

DSSM模型

  • DSSM模型又叫双塔模型(全称 Deep Structured Semantic Model),User塔适合在线计算User-Embedding;Item塔适合离线计算Item-Embedding,通过向量检索就可以进行快速地召回。线上预测的时候,只需要在内存中计算相似度运算即可(Cosine-similarity等)。
  • DSSM双塔模型图
    在这里插入图片描述
  • User塔表示用户历史行为的信息(如用户的浏览记录、购买记录等)。它的输入是一个用户的历史行为序列,其目标是把这个序列映射为一个固定的用户向量表示,该向量表示用户的兴趣特征。
  • Item塔表示所有的物品的信息(如物品的标题、描述、标签等)。它的输入是一个物品的特征序列或向量,其目标是把这个序列或向量映射为一个固定的物品向量表示,该向量表示物品的特征。
  • 借助于用户历史行为和物品的特征向量表示,DSSM可以计算用户特征向量和物品特征向量之间的相似度,预测哪些物品最符合用户的兴趣并产生最高的预测分数。这些物品可以按照预测分数的高低排序,推送给用户进行推荐。所以DSSM双塔模型的作用就是协同基于用户历史行为和物品特征对用户兴趣进行建模,并通过此模型产生个性化推荐结果。

DSSM双塔模型层次

  • 根据上面的架构图来看,DSSM双塔模型主要分为三层
    • 输入层:User侧特征和Item侧特征是输入层。输入层主要的作用是把文本映射到低维向量空间,转化成向量提供给深度学习网络。
    • 表示层:DNN就是表示层,DSSM模型表示层使用的是BOW(Bag Of Words)词袋模型,没有考虑词序的信息。不考虑词序其实存在明显的问题,因为一句话可能词相同,但是语义则相差十万八千里。
    • 匹配层:匹配层就是针对于前面的Query和Doc进行相似度计算,这个过程实际上非常简单,就是把Query 和Doc统一转换成了两个128维的语义向量,通过Cosine计算这两个向量的余弦相似度。
  • 表示层的结构图
    在这里插入图片描述
  • 术语解释:
    • Term Vector:目标文本的embedding向量
    • Word Hashing:因为目标向量维数比较大,而对BOW向量进行降维。
    • Multi-layer non-linear projection:深度学习网络多隐层,通过降维最终生成128维。
    • Semantic Feature:Query&Doc最终生成的embedding向量。
    • Relevance measured by cosine similarity:Query&Doc所计算的余弦相似度。
    • Posterior probability computed by softmax:通过Softmax函数计算Query和正样本Doc语义相似性进行后验概率。
  • 所用公式:
    • DNN:
      在这里插入图片描述

    • 激活函数:
      在这里插入图片描述

    • 相似度计算公式:
      在这里插入图片描述

    • softmax后验概率公式:
      在这里插入图片描述

    • 损失函数:
      在这里插入图片描述
      Tips:这些截图信息都是我在论文里找的,详细请参考链接

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进程线程间的通信:2024/2/22

作业1&#xff1a;代码实现线程互斥机制 代码&#xff1a; #include <myhead.h>//临界资源 int num10;//创建一个互斥锁 pthread_mutex_t mutex;//任务一 void *task1(void *arg) {//获取锁资源pthread_mutex_lock(&mutex);num123;sleep(3);printf("task1:num…

【打工日常】使用docker部署StackEdit编辑器-Markdown之利器

一、StackEdit介绍 StackEdit一款强大的在线Markdown编辑器&#xff0c;不仅具备卓越的写作功能&#xff0c;还支持实时预览、多设备同步等特性。 很多时候基于安全和信息保密的关系&#xff0c;建议放在自己的服务器或者本地linux去运行&#xff0c;这样会比较省心。 二、本次…

电商数据采集+跨境电商|API电商数据采集接口洞悉数字新零售发展

随着全球经济一体化和电子商务的快速发展&#xff0c;网络购物的需求日益增加。不断涌现的电商企业使得行业的竞争情况愈演愈烈。在这种情况下&#xff0c;企业不仅要加大经营力度&#xff0c;还要在自己的基础设施和技术上持续投入&#xff0c;才能更好的适应市场和消费习惯。…

船运物流管理系统|基于springboot船运物流管理系统设计与实现(源码+数据库+文档)

船运物流管理系统目录 目录 基于springboot船运物流管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员登录 2、货运单管理 3、公告管理 4、公告类型管理 5、新闻管理 6、新闻类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 …

2024.2.22

P1162 #include<map> #include<vector> #include<iostream> #include<math.h> #include<algorithm> #include<string> using namespace std; const int N 1020; int n; int g[N][N];//标记数组 int a[N][N];//储存数组 int dx[] { -1…

《VitePress 简易速速上手小册》第9章 VitePress 的扩展与插件(2024 最新版)

文章目录 9.1 插件生态系统概述9.1.1 基础知识点解析9.1.2 重点案例&#xff1a;SEO 优化插件9.1.3 拓展案例 1&#xff1a;社交分享插件9.1.4 拓展案例 2&#xff1a;内容搜索插件 9.2 常用插件介绍与应用9.2.1 基础知识点解析9.2.2 重点案例&#xff1a;使用 SEO 插件9.2.3 拓…

day6 2/22

1> 将互斥机制的代码实现重新敲一遍 #include<myhead.h> int num520; pthread_mutex_t mutex;//创建互斥锁 void*task1(void*arg) {pthread_mutex_lock(&mutex);sleep(3);num;printf("%d\n",num);pthread_mutex_unlock(&mutex);pthread_exit(NULL)…

300分钟吃透分布式缓存-10讲:MC是怎么定位key的?

我们在进行 Mc 架构剖析时&#xff0c;除了学习 Mc 的系统架构、网络模型、状态机外&#xff0c;还对 Mc 的 slab 分配、Hashtable、LRU 有了简单的了解。本节课&#xff0c;将进一步深入学习这些知识点。 接下来&#xff0c;进入 Memcached 进阶的学习。会讲解 Mc 是如何进行…

《游戏引擎架构》 -- 学习4

资源及文件系统 文件系统 游戏引擎的文件系统API通常提供以下功能&#xff1a; 搜需路径&#xff1a;是含一串路径的字符串&#xff0c;各路径之间以特殊字符&#xff08;如冒号或分号&#xff09;分隔&#xff0c;找文件时就会从这些路径进行搜寻。例如在命令行下执行程序&a…

IBM集团战略规划方法论培训及案例应用

139页PPT | IBM集团战略规划方法论培训及案例应用 原创 顾问文库 咨询圈文库 2024-02-19 00:02 广东 关注下方名片学习更多企业架构和数字化内容 咨询圈文库 分享战略组织人力资源管理和数字化规划干货&#xff0c;共同成长。 24篇原创内容 公众号 战略规划是一种思考、分…

Retrofit2原理分析

Retrofit官网 GitHub上的Retrofit 使用Retrofit进行网络请求的主要步骤 创建一个接口 用于描述HTTP请求。接口里的方法使用注解来标记请求方式、API路径、请求参数等信息。使用Retrofit.Builder().build();配置和创建一个Retrofit实例&#xff1b;调用retrofit.create()方法获…

堆结构的实现和应用

堆结构的实现和应用 1. 堆结构的代码实现2. 向上调整算法和向下调整算法时间复杂度3. 堆排序3.1 方法一3.2 方法二3.3 建堆时间复杂度 4. TOP-K问题 1. 堆结构的代码实现 首先&#xff0c;我们先定义一个堆的结构&#xff0c;这里和顺序表的结构一样 typedef int HPDataType;…