[搜广推]王树森推荐系统——Deep Retrieval 召回

Deep Retrieval 简介

Deep Retrieval 是一种推荐系统框架,它将物品表示为路径(path),并在线上查找与用户最匹配的路径。
这种方法与传统的双塔模型不同,后者通常将用户和物品表示为向量,并在线上进行最近邻查找。Deep Retrieval 与阿里的 TDM(Tree-based Deep Model)有相似之处。

基本概念

  • 候选项目:在DR模型中,候选项目指推荐系统中可供推荐的所有项目,例如商品、视频或文章等。

  • 离散潜在空间:DR将所有候选项目编码进一个离散的维度空间。离散潜在空间的结构是由多个层组成的,每一层包含多个节点。

  • 节点:节点是DR模型中离散潜在空间中的基本单元,它们构成了模型的多层结构。每个节点可以看作是一个位置标识,而不是直接代表一个项目。

  • 路径:路径是由多个节点组成的序列,它穿过模型的多层结构,每一层选择一个节点,从而形成一个从第一层到最后一层的完整序列。每条路径可以看作是一组项目的聚类,这些项目在路径上被赋予相似的特征或属性。

    • DR模型由D层组成,每一层都有K个节点。因此,每条路径可以表示为一个D维的向量,其中每个维度的值范围从1到K
    • 例如,如果D=3且K=10,那么一条可能的路径可以是[2, 4, 1],其中2是第一层的节点索引,4是第二层的节点索引,1是第三层的节点索引。
  • 项目到路径的映射:每个候选项目不是直接映射到一个节点,而是映射到一条或多条路径上。这意味着一个项目可以通过多条路径来表示,每条路径捕捉项目的不同方面或特征。

两个索引

  • Item to Paths:每个物品对应多条路径,例如每条路径由三个节点表示, path = [a, b, c]。
  • Path to Items:每条路径对应多个物品,这样可以快速检索与特定路径相关的所有物品。

Item to Paths(物品到路径)

训练神经网络时用到这个索引
在这里插入图片描述

  • 多对多映射:在DR模型中,每个项目(Item)可以被映射到多个路径(Paths)。路径可以有重合的节点。

  • 这种设计允许模型捕捉项目的多方面属性,因为一个项目可能与多个不同的类别或特征相关联。

  • 概率分布:DR的预估模型学习一个概率分布,用于给定用户输入时预测项目所属的路径。这个概率分布是模型参数的一部分,与其他神经网络参数一起被学习,以最大化用户-项目交互数据的目标函数。

Path to Items(路径到物品)

召回时用到这个索引

  • 检索过程:在检索阶段,DR模型使用束搜索(beam search)算法来找到最可能包含用户感兴趣项目的路径。一旦找到这些路径,模型就可以检索与这些路径相关联的项目。

  • 物品的检索和重排:虽然DR模型可以有效地检索与特定路径相关的项目,但同一个路径可能包含多个物品。因此,需要一个额外的重排模型(如softmax模型)来对这些项目进行排序,以确定最终推荐给用户的项目。

预估模型

预估模型是基于用户特征和项目路径通过逐层预估用户对每个节点的兴趣,并将这些概率相乘来预估用户对整个路径的兴趣。

  • 预估模型的核心任务是学习一个概率分布,这个分布能够根据给定的用户输入(特征)预测用户对不同路径的兴趣。
  • 概率分布定义了从用户特征到路径的映射,是模型参数的一部分,与其他神经网络参数一同被优化。

步骤

  1. 给定用户特征 X,预估用户对节点 a 的兴趣 p ( a ∣ X ) p(a|X) p(aX)。通过MLP和softmax层来实现的,MLP基于用户特征输出一个概率分布,softmax层根据分布输出选择节点 a 的概率。
  2. 在选择了节点 a 之后,预估用户对下一个节点 b 的兴趣 p ( b ∣ a , X ) p(b|a,X) p(ba,X)。MLP接收用户特征 X 和节点 a 的嵌入作为输入,softmax输出选择节点 b 的概率。
  3. 在选择了节点 a 和 b 之后,预估用户对最终节点 c 的兴趣 p ( c ∣ a , b , X ) p(c|a,b,X) p(ca,b,X)。MLP输入用户特征 X 和之前选择的节点 a 和 b 的嵌入,softmax输出选择节点 c 的概率。
    4.将上述每个节点的概率相乘得到预估的用户对整个路径 [a, b, c] 的兴趣:
    p ( [ a , b , c ] ∣ X ) = p ( a ∣ X ) × p ( b ∣ a , X ) × p ( c ∣ a , b , X ) p([a, b, c]|X) = p(a|X) × p(b|a, X) × p(c|a, b, X) p([a,b,c]X)=p(aX)×p(ba,X)×p(ca,b,X)
    在这里插入图片描述

Beam Search算法

Beam Search算法是一种启发式的图搜索算法,常用于解决优化问题,主要是寻找最优序列或者路径的问题

基本思想

在每个搜索步骤中,不是扩展所有可能的候选解,而是只扩展最有前景的有限数量的候选解

步骤

  1. 从初始状态开始,通常设置一个包含所有可能的后续状态的候选集,但只保留分数最高的前 k 个状态进入下一轮,其中 k 是超参数beam宽度(beam size)。
  2. 在每一步中,算法根据当前beam中的每个状态生成所有可能的下一个状态。对于每个状态,计算其评分或概率
  3. 根据beam宽度 k,从所有候选状态中选择评分最高的 k 个状态,这些状态构成了下一轮的beam。
  4. 重复扩展和修剪步骤,直到满足终止条件。
  5. 输出beam中评分最高的路径作为最终结果。

例如:如果一层有K个节点,设beam size为 k,则第一层取四个,然后每层计算kK个评分(k个上一层取的K个这一层的),然后从所有候选状态中选择评分最高的 k 个状态,这些状态构成了下一轮的beam。
在这里插入图片描述

离线训练

先进行离线训练,再进行线上召回
同时学习神经网络参数和物品表征

deep Retrieval训练时只用正样本 (user,item): click(user, item) = 1

学习神经网络参数

神经网络参数决定了模型如何根据用户特征 X 预估对不同路径的兴趣,主要学习多层感知机(MLP)的权重和偏置等。

这个神经网络的作用是判断用户对路径是否感兴趣。如果用户点击过物品,且物品对应路径path,则更新神经网络参数使p(pathlx)变大
在这里插入图片描述

学习物品表征

在这里插入图片描述

在这里插入图片描述

步骤

用贪心算法更新路径

  • 假设已经把物品表征为 J 条路径 П = p a t h 1 , … , p a t h J П={path1,…,path_J} П=path1,,pathJ
  • 每次固定 { p a t h i } \{path_i\} {pathi}_{i \neq l},并从未被选中的路径中,选出一条作为新的 p a t h l path_l pathl
    p a t h l ← a r g m i n p a t h l l o s s ( i t e m , П ) + α ⋅ r e g ( p a t h l ) path_l← argmin_{path_l}loss(item, П)+ \alpha · reg(path_l) pathlargminpathlloss(item,П)+αreg(pathl)
  • 选中的路径有较高的分数 s c o r e ( i t e m , p a t h l ) score(item,path_l) score(item,pathl),而且路径上的物品数量不会太多。

在这里插入图片描述

线上召回

召回:用户 − > 路径 − > 物品 召回:用户->路径->物品 召回:用户>路径>物品

  1. 线上召回先使用用户特征和神经网络来预估用户对路径的兴趣,然后使用Beam Search来找到最感兴趣的一批路径
  2. 之后通过path to item索引召回这些路径上的物品
  3. 对召回的物品进行初步排序,最终返回分数最高的物品作为推荐。

步骤

输入:用户特征 X

  1. 使用神经网络(如MLP)来预估用户对特定路径 path=[a,b,c] 的兴趣,详见上面预估模型那一节。
    • 神经网络输出一个分数 p(path|X),表示用户对路径的整体兴趣程度。这个分数是基于用户特征 X 和路径 [a,b,c] 计算得出的。
  2. 使用Beam Search算法来寻找分数 p(path|X) 最高的 s 条路径。
    • Beam Search返回 s 条分数最高的路径,这些路径被认为是用户最可能感兴趣的。
  3. 对于每条选中的路径,模型利用path to item索引来召回该路径上的 n 个物品。这个索引将路径映射到它们包含的物品列表。
    • 若有 s 条路径,每条路径召回 n 个物品,则总共召回 s×n 个物品。
  4. 对召回的 s×n 个物品进行初步排序,然后从排序后的物品列表中返回分数最高的若干物品作为推荐结果
    输出:推荐物品的列表

完整流程

离线训练流程

离线训练要解决两个问题:

  • 怎么让物品更好的表征成路径,用用户优化物品-路径的关系
  • 怎么让用户对物品的兴趣转化成用户对路径的兴趣,用物品优化用户-路径的关系

方法:以用户为中介,把路径和物品关联起来。

  1. 数据准备
  • 收集用户与物品之间的正样本交互数据,即用户对物品的点击行为,表示为 click(user, item) = 1。
  1. 模型初始化
  • 初始化神经网络参数,主要包括多层感知机(MLP)的权重和偏置。
  • 初始化物品到路径的表征,即每个物品被表示为 J 条路径 П = {path1, …, path_J}。
  1. 学习神经网络参数
  • 神经网络作用:预估给定用户特征 X 时,用户对不同路径的兴趣。
  • 参数更新:如果用户点击过某个物品,且该物品表征为路径 path,则更新神经网络参数,使得兴趣分数 p(path|X) 增大。
  1. 学习物品表征
  • 物品和路径之间的相关性 = 用户对路径的兴趣 * 用户是否点击
  • 贪心算法更新路径
    • 先计算物品和路径之间的相关性,让每个物品被表示为 J 条路径 П = {path1, …, path_J}
    • 每次固定除 p a t h l path_l pathl 之外的所有路径 p a t h i path_i pathi,并从未被选中的路径中选出一条作为新的 $path_l¥。
    • 选择 path_l 的标准是最小化损失函数 loss(item, П) 加上正则化项 reg(path_l):
      p a t h l ← arg ⁡ min ⁡ p a t h l l o s s ( i t e m , П ) + α ⋅ r e g ( p a t h l ) path_l \leftarrow \arg\min_{path_l} loss(item, П) + \alpha \cdot reg(path_l) pathlargpathlminloss(item,П)+αreg(pathl)
    • 选择的路径应具有较高的分数 s c o r e ( i t e m , p a t h l ) score(item, path_l) score(item,pathl),并且路径上的物品数量不会太多。

注意: 3,4两步交替进行

线上召回流程

  1. 路径兴趣预估
  • 输入用户特征 X,使用训练好的神经网络(如MLP)预估用户对特定路径 path=[a,b,c] 的兴趣。
  • 神经网络输出一个分数 p(path|X),表示用户对路径的整体兴趣程度。
  1. 使用Beam Search寻找感兴趣路径
  • 使用Beam Search算法找到分数 p(path|X) 最高的 s 条路径。
  • Beam Search返回 s 条分数最高的路径,这些路径被认为是用户最可能感兴趣的。
  1. 召回路径上的物品
  • 对于每条选中的路径,利用 path to item 索引召回该路径上的 n 个物品。
  • 若有 s 条路径,每条路径召回 n 个物品,则总共召回 s×n 个物品。
  1. 初步排序和返回推荐结果
  • 对召回的 s×n 个物品进行初步排序。
  • 从排序后的物品列表中返回分数最高的若干物品作为推荐结果。

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

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

相关文章

RabbitMQ 的7种工作模式

RabbitMQ 共提供了7种⼯作模式,进⾏消息传递,. 官⽅⽂档:RabbitMQ Tutorials | RabbitMQ 1.Simple(简单模式) P:⽣产者,也就是要发送消息的程序 C:消费者,消息的接收者 Queue:消息队列,图中⻩⾊背景部分.类似⼀个邮箱,可以缓存消息;⽣产者向其中投递消息,消费者从其中取出消息…

PCIe_Host驱动分析_设备枚举

往期内容 本文章相关专栏往期内容,PCI/PCIe子系统专栏: 嵌入式系统的内存访问和总线通信机制解析、PCI/PCIe引入 深入解析非桥PCI设备的访问和配置方法 PCI桥设备的访问方法、软件角度讲解PCIe设备的硬件结构 深入解析PCIe设备事务层与配置过程 PCIe的三…

深入浅出:多功能 Copilot 智能助手如何借助 LLM 实现精准意图识别

阅读原文 1. Copilot中的意图识别 如果要搭建一个 Copilot 智能助手,比如支持 知识问答、数据分析、智能托管、AIGC 等众多场景或能力,那么最核心的就是基于LLM进行意图识别分发能力,意图识别的准确率直接决定了 Copilot 智能助手的能力上限…

Jo-im开发:用于WebRTC的ICE中继服务器Coturn搭建

前言 本人计划开发一套具备文本、语音、视频通话功能的IM demo,同时具备多人在线会议功能,按习惯大概会开源版定义名称为Duihao jo-im,本案主要用于实现语音视频通话的基础组件支撑。因为我们选择基于WebRTC实现IM中语音、视频通话&#xff…

【CVE-2024-53375】TP-Link Archer系列路由器认证操作系统命令注入(内附远离和代码利用)

CVE-2024-53375 TP-Link Archer系列路由器认证操作系统命令注入 受影响的设备 使用 HomeShield 功能的 TP-Link 设备容易受到此漏洞的影响。这包括 TP-Link Archer 系列的多款路由器。 经过测试 Archer AXE75(EU)_V1_1.2.2 Build 20240827(发布日期 2024 年 11 月 4 日)…

程控电阻箱应用中需要注意哪些安全事项?

程控电阻箱是一种用于精确控制电路中电流和电压的电子元件,广泛应用于电子实验、测试设备以及精密测量仪器中。在应用程控电阻箱时,为确保安全和设备的正常运行,需要注意以下几个安全事项: 1. 正确连接:确保电阻箱与电…

Promise链式调用

Promise链式调用 上一篇我们实现了通过promise的方式实现获取国家基本信息,本次我们来使用promise链式调用来实现邻国的展现 首先,我们从第一个国家中获取到邻国的国家代码名称 const neighbour data[0].borders[0];然后我们通过fetch来获取邻国信息&a…

Elasticsearch相关知识@1

目录标题 Lucene1. **什么是 Lucene?**2. **Lucene 在 Elasticsearch 中的作用**3. **Lucene 的核心功能**(1) **倒排索引**(2) **分词**(3) **查询解析**(4) **相关性评分** 4. **为什么 Elasticsearch 使用 Lucene?**5. **Lucene 和 Elasticsearch 的区别**6. **总结** 分片…

UE5 渲染管线 学习笔记

兰伯特 SSS为散射的意思 带Bias的可以根据距离自动切换mip的卷积值 而带Level的值mipmaps的定值 #define A8_SAMPLE_MASK .a 这样应该就很好理解了 这个只采样a通道 带Level的参考上面的 朝左上和右下进行模糊 带Bias参考上面

canvas绘制仪表盘刻度盘

canvas画布可以实现在网页上绘制图形的方法,比如图表、图片处理、动画、游戏等。今天我们在vue模板下用canvas实现仪表盘的绘制。 对canvas不熟悉的同学可以先了解下canvas的API文档:canvas API中文网 - Canvas API中文文档首页地图 一、创建模板&#…

Spring Boot 中实现自定义注解记录接口日志功能

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的全栈工程师 欢迎分享 / 收藏 / 赞 / 在看…

【超详细实操内容】django的身份验证系统之限制用户访问的三种方式

目录 1、使用request.user.is_authenticated属性 2、装饰器login_required 3、LoginRequiredMixin类 通常情况下,网站都会对用户限制访问,例如,未登录的用户不可访问用户中心页面。Django框架中使用request.user.isauthenticated属性、装饰器loginrequired和LoginRequire…

scss配置全局变量报错[sass] Can‘t find stylesheet to import.

路径没有错误,使用别名即可 后又提示Deprecation Warning: Sass import rules are deprecated and will be removed in Dart Sass 3.0.0. 将import改为use 使用时在$前添加全局变量所在文件,即variable.

基于Qlearning强化学习的机器人路线规划matlab仿真

目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印): 训练过程 测试结果 仿真操作步骤可参考程序配套的操作视频。 2.算法涉及理论…

9 RCC使用HSE、HSI配置时钟

一、时钟树 RCC:reset clock control,复位和时钟控制器。HSE是外部的高速时钟信号,可以由有源晶振或者无源晶振提供。如果使用HSE或者HSE经过PLL倍频之后的时钟作为系统时钟SYSCLK,当HSE故障时候,不仅HSE会被关闭,PLL…

认识数据结构之——排序

一、 插入排序: 直接插入排序(以排升序为例): 排序思想: 单趟:记录某个位置的值,一个一个和前面的值比较,碰到更大的就往后覆盖,碰到更小的或者相等的就结束,最后将记录的值插入到…

uniapp 微信小程序 功能入口

单行单独展示 效果图 html <view class"shopchoose flex jsb ac" click"routerTo(要跳转的页面)"><view class"flex ac"><image src"/static/dyd.png" mode"aspectFit" class"shopchooseimg"&g…

苍穹外卖-day05redis 缓存的学习

苍穹外卖-day05 课程内容 Redis入门Redis数据类型Redis常用命令在Java中操作Redis店铺营业状态设置 学习目标 了解Redis的作用和安装过程 掌握Redis常用的数据类型 掌握Redis常用命令的使用 能够使用Spring Data Redis相关API操作Redis 能够开发店铺营业状态功能代码 功能实…

Linux之系统管理

一、相关命令 筛选 grep&#xff0c;可以用来进行筛选&#xff0c;例如对目录筛选课写成 # 过滤出带serv的 ls /usr/sbin | grep serv2. 对服务的操作 2.1 centos6版本 service 服务名 start|stop|restart|status # start&#xff1a;开启 # stop&#xff1a;停止 # restart…

什么?Flutter 可能会被 SwiftUI/ArkUI 化?全新的 Flutter Roadmap

在刚刚过去的 FlutterInProduction 活动里&#xff0c;Flutter 官方除了介绍「历史进程」和「用户案例」之外&#xff0c;也着重提及了未来相关的 roadmap &#xff0c;其中就有 3.27 里的 Swift Package Manager 、 Widget 实时预览 和 Dart 与 native 平台原生语言直接互操作…