Cache-Augmented Inbatch Importance Resampling for Training Recommender Retriever

news/2024/5/3 8:02:54/文章来源:https://www.cnblogs.com/MTandHJ/p/16715722.html

目录
  • 符号说明
  • 启发
  • 本文方法
    • BIR (inbatch importance resampling)
  • XIR (Cache-Augmented Resampling)

Chen J., Lian D., Li Y., Wang B., Zheng K. and Chen E. Cache-augmented inbatch importance resampling for training recommender retriever. In Advances in Neural Information Processing Systems (NIPS), 2022.

作者通过 batch 内的一个重采样来逼近真是的一个分布, 加上在历史'重要'样本中进行重采样来强调那些 hard 的负样本.

符号说明

  • \(\mathcal{I}, |\mathcal{I}| = N\), item 的集合;
  • \(\{\bm{q}_i \in \mathbb{R}^{d_u}\}_{i=1}^M\), queries;
  • \(\{\bm{e}_i \in \mathbb{R}^{d_i}\}_{i=1}^N\), items;
  • \(\phi_{Q}: \mathbb{R}^{d_u} \rightarrow \mathbb{R}^{d_k}\), 将 query 映射为 k 维特征;
  • \(\phi_{I}: \mathbb{R}^{d_i} \rightarrow \mathbb{R}^{d_k}\), 将 item 映射为 k 维特征;
  • \(s(u, i) = \langle \phi_Q(\bm{q}_u), \phi_I(\bm{e}_i) \rangle\), score;

启发

  1. 有了 \(s(u, i), i \in \mathcal{I}\), 我们可以估计用户 \(u\) 在一堆 \(\mathcal{I}\) 中选择 item \(i\) 的概率:

    \[P(i|u) = \frac{\exp(s(u, i))}{\sum_{j \in \mathcal{I}} \exp(s(u, j))}; \]

  2. 并通过如下损失进行训练:

    \[\tag{1} \mathcal{L}_{\text{softmax}} (\mathcal{D}, \Theta) = -\frac{1}{|\mathcal{D}|} \sum_{(u, i) \in \mathcal{D}} \log P(i|u); \]

  3. 但是处于计算复杂度的限制, 我们通常会选择如下的一个方案:

    \[\tag{2} \mathcal{L}_{\text{sampled\_softmax}} (\mathcal{D}, \Theta) = -\frac{1}{|\mathcal{D}|} \sum_{(u, i) \in \mathcal{D}} \log \frac{\exp(s'(u, i))}{\sum_{j \in \mathcal{S_u}} \exp(s'(u, j))} \]

    其中 \(\mathcal{S}\) 是一个采样的子集, \(s'(u, i) := s(u,i) - \log p(i|u)\) 是经过校正后的 score, 至于为什么校正, 请看 here.

本文方法

所以本文就是讨论如何使得 (2) 逼近 (1) 甚至做的更好.

BIR (inbatch importance resampling)

算法如下:

  1. 获得一个当前的 batch \(B\), 计算如下的权重

    \[w(i|u) = \frac{\exp(s(u, i) - \log pop(i))}{\sum_{j \in B} \exp(s(u, j) - \log pop(j))}; \]

  2. \(\{w(i|u): i \in B\}\) 中重新采样得到集合 \(\mathcal{R}_u\), 然后通过如下损失进行训练:

    \[\tag{3} \mathcal{L}_{\text{BIR}} (B, \Theta) = -\frac{1}{|B|} \sum_{(u, i) \in B} \log \frac{\exp(s(u, i))}{\sum_{j \in \mathcal{R_u}} \exp(s(u, j))}. \]

作者说当 \(|B| \rightarrow +\infty\) 的时候, (3) 等价于 (1) 的一个 mini-batch, 即

\[P(i \in \mathcal{R}_u) \approx P(i|u), \]

我感觉这个证明应该是错的. 举个反例, 假设 \(B = \mathcal{D}\), 此时

\[P(i \in \mathcal{R}_u) = 1 - [1 - w(i|u)]^{|\mathcal{D}|}. \]

有可能是我误会作者的证明或者采样方式了 (感觉作者写这篇文章比较赶, 里面有很多符号的错误), 如果有谁知道麻烦告诉我一声.

XIR (Cache-Augmented Resampling)

  • 作者认为, 如果一个样本被频繁采样, 那么它应该是很重要的才对, 所以这里作者保留了这样一部分样本: \(\mathcal{C}\);

  • 每次优化的时候, 分别从 \(\mathcal{C}\)\(\mathcal{R}_u\) 中采样并优化, 如下所示:

    \[\tag{4} \mathcal{L}_{\chi\text{IR}} (\mathcal{D}, \Theta) = -\lambda \sum_{(u, i) \in B} \log \frac{\exp(s(u, i))}{\sum_{j \in \mathcal{\mathcal{K}_u}} \exp(s(u, j))} -(1 - \lambda)\sum_{(u, i) \in B} \log \frac{\exp(s(u, i))}{\sum_{j \in \mathcal{R_u}} \exp(s(u, j))}. \]

注: (3) (4) 中作者都是不带 \(-\log\) 的, 应该是笔误吧.

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

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

相关文章

一条sql了解MYSQL的架构设计

1 前言 对于一个服务端开发来说 MYSQL 可能是他使用最熟悉的数据库工具,然而,大部分的Java工程师对MySQL的了解和掌握程度,大致就停留在这么一个阶段:它可以建库、建表、建索引,然后就是对里面的数据进行增删改查,语句…

MacOS/OSX docker修改已运行容器参数的方法

比如我们刚刚docker run了一个容器,然后里面已经配置了一些信息,装了一些东西,然后我发现我忘记了挂载一个文件夹,怎么修改他们呢? 第一个方法: export容器为镜像再import这个镜像 第二个方法: 把现有的容器提交成镜像,然后重新运行. 以上两种方法都相当于你把一台电…

配置服务器入栈

配置服务器入栈 上回传送门 书接上回 登录我们的服务器管理页面 点击入站列表->点击号 配置如下 注意: 协议是vless 域名是cloudflare上我们设置的二级域名 公钥文件路径就是我们SHH工具上root 文件夹下cret 文件夹下面的证书 公钥名就是我们的证书路径 密钥…

Spring Cloud Alibaba现在还值不值学 ?

6年前面试最常问的并且可以顺利拿到高薪的技能是 Dubbo ,2年前面试,只要你简历上有 Spring Cloud 项目的相关经验,肯定会打动面试官,现在呢?恐怕简历上有Dubbo和简单的Spring Cloud技术和经验是无法让面试官高看你的。…

Eureka注册中心以及Ribbon负载均衡

Eureka注册中心 远程调用的问题 1、服务消费者改如何获取服务提供者的地址消息? 2、如果服务提供者有多个,消费者如何进行选择? 3、 消费者如何得知服务提供者的健康状态? Eureka的作用 服务每隔30s给Eureka发送心跳,…

一个技术创业者的自白:三条关于 “选择” 的建议

本文作者 Wyze CTO 刘天强。内容源自「声网开发者创业讲堂第一期」的演讲分享。创业方向:兴趣 VS 趋势 大家在创业的时候首先要选择的是 “做什么”?如何平衡个人特长、兴趣以及风口是创业者面临的难题。我在第一次创业的时候,做了一家主打图像识别 API 的公司 Orbeus,这家…

水电站生态流量下泄监测解决方案

水电站生态流量下泄监测解决方案   一些水电站因下泄生态流量不足造成部分河段减水、脱水甚至干涸的情况,使得群众的生产、生活以及河流的正常生态功能受到了一定程度的影响。计讯物联水电站生态流量下泄监测解决方案精准测量、实时监测、视频监控、预警提醒、及时…

JWT实现用户token令牌管理

以前的登录: 用户登录成功返回user对象 将user对象存储在session中 在拦截器中取出session中的user对象,判断是否已经登录,决定是否放行 token: 用户登录成功后,根据指定的用户信息生成一个token令牌 token令牌是…

Matlab论文插图绘制模板第49期—散点矩阵图(Plotmatrix)

在之前的文章中,分享了很多Matlab散点图的绘制模板: 这一次,再来分享一种特殊的散点图:散点矩阵图。 先来看一下成品效果: 本文主要展示带直方图的散点矩阵图的绘制方法,不带直方图的散点矩阵图的绘制方法…

【智能优化算法-水循环算法】基于蒸发的水循环算法求解用带约束的优化问题附matlab代码

1 内容介绍 2 部分代码 clear all; clc; close all; format long g objective_function=@fun; constraints=@Constraints; for k=1:1 % Number of independent runds %=====================================================================&#

半车(前后、左右)、整车悬架模型仿真分析

目录 前言 1.前后(Pitch)半车主动悬架模型 1.1 simulink前后半车悬架建模 1.1.2 搭积木法建模 1.1.3 S-Function建模(被动悬架为例) 1.2 仿真结果 2.左右(Roll)半车悬架模型(不含转向) 2.1 Simulink模型 2.2 仿真结果 3.整车悬架模型(不含转向) 3.1 整车7自由度主动悬架数…

二十七、Java 枚举(enum)

Java 枚举(enum) Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。 Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割…

为什么 Aave、 Curve 等协议都在创建自己的稳定币

$GHO 和 $crvUSD 的推出近在咫尺,那么特定于协议的稳定币是下一个大叙事吗? 在所有的加密货币类型中,稳定币仍然拥有最大的产品市场契合度。 这是因为它们允许投资者在 DeFi 中使用美元敞口来进行交易、支付、存储价值或获得收益。 如今&a…

Actipro WPF Studio语法编辑器和停靠控件

Actipro WPF Studio语法编辑器和停靠控件 对接 向选项卡式 MDI 选项卡添加了“全部浮动”菜单项,它将容器中的所有停靠窗口浮动在一起。 改进了目标坞站主机命中测试逻辑。 改进了与 WebView2 控件相关的焦点跟踪。 增加了默认的 TabbedMdiHost.MaxTabExtent 宽度&a…

centos 6升级内核小版本、更新yum源和升级gcc版本

文章目录前言一、升级内核小版本1.1 设置开机自启动网卡1.2 下载待升级内核小版本的rpm文件1.3 修改内核版本启动顺序二、更换yum源三、升级g版本参考链接前言 将centos 6.8 2.6.32-642.el6.x86_64内核小版本升级到 2.6.32-642.3.1.el6.x86_64 2.6.32-642.el6.x86_64 -> 2…

思维导图:定时器设计

思维导图:定时器设计 Linux 服务器经典定时器设计,根据网上的各种资料简单整理了个思维导图 单个思维导图估计也就个人看看,如果各位有兴趣可以从以下几个问题入手 为啥要有专门的定时器模块定时器有啥用怎么定时关于定时器的设计与几种方…

代码阅读题-结构体大小

题目如下,小米23秋招-9.20-笔试首先这是一道C++的题,注意到的第一点是这个二维数组的初始化方式,他是给了一种一维数组的赋值方式,虽然没见过,但是想当然应该是逐层填充 经测试确实似乎这样的,而且给的初始值过多会报错,给少了打印默认值0int nums[3][5] = { 1,2,3,4,5,…

深入淺出 Spring Boot 多重設定檔管裡 (Spring Profiles)

在任何一套開發框架中, 多環境管裡 通常是重要的核心功能之一,當然在 Spring 框架中也不例外,這裡我們稱為 Spring Profiles 設定檔。這個功能說起來簡單,但實作起來卻很容易會不小心亂掉,這篇文章我打算來好好的梳理一…

AUTOSAR基础篇之StbM

AUTOSAR基础篇之StbM前言 首先,请问大家几个小小问题,你清楚: 基于AUTOSAR的应用层如何获取准确的时间戳吗?时间同步的具体过程包含哪些细节呢?如何正确的获取到全局时间戳呢? 今天,我们来一…

(Java数据结构)链表题

文章目录环形链表判断链表中是否有环找到链表开始入环的第一个节点链表分割环形链表 判断链表中是否有环 leetcode 141. 环形链表类似追及相遇问题,定义快慢指针,如果没有环,快指针会走到null;如果有环,快慢指针肯定…