SIGIR 2025端到端生成式推荐ETEGRec

文章目录

  • 1. 背景
  • 2. 方法
    • 2.1 框架图
    • 2.2 问题定义
    • 2.3 Item Tokenizer
    • 2.4 Generative Recommender
    • 2.5 ⭐️Sequence-Item Alignment
    • 2.6 ⭐️Preference-Semantic Alignment
    • 2.7 交替优化
  • 3. 总结

现阶段 GRM 大多是两阶段的模型,第一阶段进行内容理解-行为语义对齐,对item进行内容表征,并基于RQ-VAE或类似架构构建离散token;第二阶段通常是基于Transformer的生成式模型,是模型具备用户行为理解能力与item生成能力。本文发表于SIGIR 2025,是针对这两阶段进行融合,提出一个端到端的可学习生成式推荐框架。

论文名称:《Generative Recommender with End-to-End Learnable Item Tokenization》

论文地址:https://arxiv.org/pdf/2409.05546

1. 背景

本文是针对生成式推荐的,区别于传统的判别式推荐(先算一堆物品和用户历史行为的相似度,再挑选最相似的)。生成式推荐将推荐看做序列生成任务,逐步生成要推荐的物品标识符。这个过程涉及两个关键阶段:

  1. 物品标记化(Item Tokenization):为每个物品生成一串**有语义的 **token(不是id)。不能使用原始 ID 作为唯一编号,因为推荐领域的物品太多,并且动态增长,不像 NLP 领域中的词汇数量固定。
  2. 自回归生成(Autoregressive Generative):逐步生成用户可能喜欢的下一个物品 token 。

对于第一阶段目前的研究主要有:无参数方法(parameter-free):比如用共现矩阵、文本特征、聚类等。深度学习方法:比如用向量量化(VQ)方法来学习每个物品的语义 token(RQ-VAE)。

对于第二阶段目前大多采用 T5 这种 encoder-decoder 架构,它在文本生成类任务表现好,所以被用来推荐中的序列建模。也有decoder-only 架构。

但目前的两阶段范式中,两个阶段是分开训练的,也就是说现训练一个物品标记器 --> 然后固定不动 --> 再去训练生成推荐器。

存在问题

  • 第一阶段学出来的 token 并不一定适合用来推荐。
  • 第二阶段无法进一步优化这些 token 表示,丧失深入理解的机会。(这里应该不能强行训练 codebook 吧?)

本文尝试让物品标记器(第一阶段)与生成器(第二阶段),协同工作,一起训练,一起优化,实现”无缝集成“。【通过引入两个对齐机制】

2. 方法

2.1 框架图

在这里插入图片描述

ETEGRec 框架由两个主要组件组成:物品标记器和生成式推荐器。物品标记器采用 RQ-VAE,将每个物品编码为一组离散的 token 序列,用于输入推荐器。生成式推荐器基于 Transformer,根据用户的历史交互 token 序列自回归地生成目标物品的 token,用于预测下一个推荐项。为实现两个模块的协同优化,框架引入了两个对齐机制:序列-物品对齐(c)通过最小化推荐器生成的行为序列分布与目标物品 token 分布之间的 KL 散度,确保结构上的一致性;偏好-语义对齐(d)则通过对比学习方式,将用户偏好表示与目标物品的语义向量进行对齐,实现语义层级上的匹配。整个系统通过联合优化 token 重构损失、生成损失以及两个对齐损失,实现端到端的高效推荐。

2.2 问题定义

P ( Y ∣ X ) = ∏ l = 1 L P ( c l t + 1 ∣ X , c 1 t + 1 , … , c l − 1 t + 1 ) P(Y|X) = \prod_{l=1}^{L} P(c_l^{t+1} \mid X, c_1^{t+1}, \ldots, c_{l-1}^{t+1}) P(YX)=l=1LP(clt+1X,c1t+1,,cl1t+1)

解释:该公式表示将推荐任务建模为一个序列到序列的生成问题,即在给定用户历史交互序列的 token 表示 X X X 的基础上,模型自回归地逐个生成下一个物品 i t + 1 i_{t+1} it+1 的 token 序列 Y = [ c 1 t + 1 , … , c L t + 1 ] Y = [c_1^{t+1}, \ldots, c_L^{t+1}] Y=[c1t+1,,cLt+1],每个 token 的生成都依赖于历史输入和当前已生成的 token,codebook为 L L L 层。

2.3 Item Tokenizer

这部分就是经典的 RQ-VAE(Residual Quantization Variational AutoEncoder) 的方法实现物品标记器(item tokenizer),旨在将每个物品的语义表示编码为一组离散 token,以供生成式推荐器使用。该方法能够将连续的语义向量压缩为多级离散 token 序列,从而实现结构紧凑、语义可控的物品表示。

具体而言,给定某个物品 i i i 的原始语义表示 z ∈ R d s z \in \mathbb{R}^{d_s} zRds,item tokenizer 首先通过一个多层感知机(MLP)编码器将其映射到潜在空间中,得到潜在表示:
r = Encoder T ( z ) r = \text{Encoder}_\mathcal{T}(z) r=EncoderT(z)
接着,使用 残差量化(Residual Quantization) r r r 转化为一个由 L L L 个 token 组成的序列 [ c 1 , … , c L ] [c_1, \dots, c_L] [c1,,cL],即:
[ c 1 , … , c L ] = T ( z ) [c_1, \dots, c_L] = \mathcal{T}(z) [c1,,cL]=T(z)
残差量化的核心思想是:在每一层 l l l,我们从一个码本 C l C_l Cl 中选择最接近当前残差向量 v l v_l vl 的向量作为 token 对应的码本向量 e c l l e_{c_l}^l ecll。其中,初始残差为 v 1 = r v_1 = r v1=r,每一层的 token 通过如下方式选取:
c l = arg ⁡ max ⁡ k P ( k ∣ v l ) , P ( k ∣ v l ) = exp ⁡ ( − ∥ v l − e k l ∥ 2 ) ∑ j = 1 K exp ⁡ ( − ∥ v l − e j l ∥ 2 ) c_l = \arg\max_k P(k \mid v_l), \quad P(k \mid v_l) = \frac{\exp(-\|v_l - e_k^l\|^2)}{\sum_{j=1}^K \exp(-\|v_l - e_j^l\|^2)} cl=argkmaxP(kvl),P(kvl)=j=1Kexp(vlejl2)exp(vlekl2)
并更新残差向量为:
v l + 1 = v l − e c l l v_{l+1} = v_l - e_{c_l}^l vl+1=vlecll
通过 L 次迭代后,我们得到完整的 token 序列 [ c 1 , … , c L ] [c_1, \dots, c_L] [c1,,cL],以及对应的量化表示:
r ~ = ∑ l = 1 L e c l l \tilde{r} = \sum_{l=1}^L e_{c_l}^l r~=l=1Lecll
为了使该 token 表达能够忠实反映原始语义,作者设计了两个联合优化的损失项构成的整体量化损失:
L S Q = L R E C O N + L R Q \mathcal{L}_{SQ} = \mathcal{L}_{RECON} + \mathcal{L}_{RQ} LSQ=LRECON+LRQ
其中,重构损失 L R E C O N \mathcal{L}_{RECON} LRECON 保证解码器从量化表示 r ~ \tilde{r} r~ 恢复出的语义向量 z ~ \tilde{z} z~ 接近原始向量 z z z
L R E C O N = ∥ z − z ~ ∥ 2 , z ~ = Decoder T ( r ~ ) \mathcal{L}_{RECON} = \| z - \tilde{z} \|^2, \quad \quad \tilde{z} = \text{Decoder}_\mathcal{T}(\tilde{r}) LRECON=zz~2,z~=DecoderT(r~)

而量化损失 L R Q \mathcal{L}_{RQ} LRQ 则同时优化编码器输出和码本,使它们彼此靠近:
L R Q = ∑ l = 1 L ∥ sg ( v l ) − e c l l ∥ 2 + β ∥ v l − sg ( e c l l ) ∥ 2 \mathcal{L}_{RQ} = \sum_{l=1}^L \| \text{sg}(v_l) - e_{c_l}^l \|^2 + \beta \| v_l - \text{sg}(e_{c_l}^l) \|^2 LRQ=l=1Lsg(vl)ecll2+βvlsg(ecll)2
其中 sg [ ⋅ ] \text{sg}[\cdot] sg[] 是 stop-gradient 操作,避免反向传播干扰, β \beta β 为调节两项平衡的系数。

综上所述,该基于 RQ-VAE 的 item tokenizer 能够以端到端方式学习将物品语义向量映射为离散 token 序列,既保证表达能力,又具备良好的生成结构,对后续生成式推荐建模具有重要意义。

2.4 Generative Recommender

在 ETEGRec 中,生成式推荐器(generative recommender)负责根据用户的历史交互行为序列预测下一个用户可能感兴趣的物品,其核心采用类 T5 的 Transformer 编码器-解码器结构。整个任务被建模为一个 token-level 的 sequence-to-sequence 生成问题。具体来说,首先将用户历史交互序列 S = [ i 1 , . . . , i t ] S = [i_1, ..., i_t] S=[i1,...,it] 中的每个物品通过 item tokenizer 映射为固定长度为 L L L 的 token 序列,从而得到输入 token 序列 X = [ c 1 1 , c 2 1 , . . . , c L t ] X = [c_1^1, c_2^1, ..., c_L^t] X=[c11,c21,...,cLt]。同样,目标物品 i t + 1 i_{t+1} it+1 被映射为目标 token 序列 Y = [ c 1 t + 1 , . . . , c L t + 1 ] Y = [c_1^{t+1}, ..., c_L^{t+1}] Y=[c1t+1,...,cLt+1]

在建模过程中,首先将输入 token 嵌入为向量表示 E X E^X EX 并送入编码器,得到历史行为的编码结果:
H E = Encoder R ( E X ) H^E = \text{Encoder}_\mathcal{R}(E^X) HE=EncoderR(EX)

其中 H E ∈ R ∣ X ∣ × d h H^E \in \mathbb{R}^{|X| \times d_h} HERX×dh 是编码后的隐藏表示, d h d_h dh 是隐藏维度。在解码阶段,为了生成目标 token 序列,解码器以 H E H^E HE 和一个以特殊起始符 “[BOS]” 开头的目标序列作为输入:
Y ~ = [ [BOS] , c 1 t + 1 , . . . , c L − 1 t + 1 ] \tilde{Y} = [\text{[BOS]}, c_1^{t+1}, ..., c_{L-1}^{t+1}] Y~=[[BOS],c1t+1,...,cL1t+1]
并生成输出表示:
H D = Decoder R ( H E , Y ~ ) H^D = \text{Decoder}_\mathcal{R}(H^E, \tilde{Y}) HD=DecoderR(HE,Y~)

其中 H D ∈ R ( L + 1 ) × d h H^D \in \mathbb{R}^{(L+1) \times d_h} HDR(L+1)×dh 是解码器每一步的隐藏状态,表示对目标 token 的逐步生成。

训练目标是最大化生成的目标 token 序列的对数似然概率,也即最小化如下的推荐损失:
L R E C = − ∑ j = 1 L log ⁡ P ( Y j ∣ X , Y < j ) \mathcal{L}_{REC} = -\sum_{j=1}^{L} \log P(Y_j \mid X, Y_{<j}) LREC=j=1LlogP(YjX,Y<j)
其中 Y j Y_j Yj 表示目标 token 序列的第 j j j 个 token, Y < j Y_{<j} Y<j 表示之前已生成的 tokens,整个生成过程是自回归(autoregressive)的,每一步的预测依赖于之前所有的生成结果。

通过这种 token-level 生成建模方式,ETEGRec 能够直接生成未来推荐物品的 token 表达,实现了从用户行为到物品 token 的高效预测,且自然支持开放词表与泛化能力。

2.5 ⭐️Sequence-Item Alignment

在这里插入图片描述

如图红色的框,上面的就是用户的历史行为所表达出来的偏好,左下方的就是用户即将交互的目标物品的真实表示,这个对齐模块的核心就是:这两者在 tokenizer 看来表达应该是一致的。也就是说,虽然 z E z^E zE z z z 来自不同的路径(一个是行为序列推理出来的,一个是目标物品embedding),但是他们在结构上具有一致的token概率分布,因为他们实际上指向的是同一个推荐目标。

SIA整体流程

  1. H E H^E HE 是用户历史行为序列(即 token 序列 X X X)经过推荐器的 Transformer 编码器后得到的隐藏状态;
  2. 这个 H E H^E HE 表示整个序列的信息;
  3. 通过 mean pooling + MLP 得到一个紧凑的向量 z E z^E zE,可以看作是“用户的偏好表示”。

z E = MLP ( mean_pool ( H E ) ) z^E = \text{MLP}(\text{mean\_pool}(H^E)) zE=MLP(mean_pool(HE))

  1. z z z 是目标物品本身的语义表示(embedding);

  2. 两者都输入相同的 item tokenizer(基于 RQ-VAE)

  3. 在每一层 l l l,两者都会被映射为同一个 codebook 的概率分布(即 soft assignment):

P z l 与 P z E l P_z^l \quad \text{与} \quad P_{z^E}^l PzlPzEl

  1. 然后对每一层的两个分布做对称的 KL 散度计算,构成序列-物品对齐的损失函数:

L S I A = − ∑ l = 1 L ( D K L ( P z l ∥ P z E l ) + D K L ( P z E l ∥ P z l ) ) \mathcal{L}_{SIA} = -\sum_{l=1}^L \left( D_{KL}(P_z^l \| P_{z^E}^l) + D_{KL}(P_{z^E}^l \| P_z^l) \right) LSIA=l=1L(DKL(PzlPzEl)+DKL(PzElPzl))

2.6 ⭐️Preference-Semantic Alignment

在这里插入图片描述

如图红色的框,上面推荐器Decoder输出的 H D H^D HD表示用户历史行为序列经过模型生成的表示,经过pooling获得其第一列向量 h D h^D hD(图中是 h E h^E hE 但是论文文字写的 h D h^D hD) ,就表示当前用户的行为偏好摘要表示,它体现了用户会喜欢什么。下面的红色框就是目标物品经过 item tokenizer之后得到的离散 token 然后将离散 token 送入 tokenizer 的 Decoder 重构出原始语义向量 z ~ \tilde{z} z~ z ~ \tilde{z} z~ 代表目标物品的重建语义表示,并天然包含了 tokenizer 学习到的结构信息。核心在于: h D h^D hD 是用户想要的, z ~ \tilde{z} z~ 是物品的真实语义。如果推荐器真的理解用户,那它生成的 h D h^D hD 应该“指向”目标物品的语义表示。

PSA整体流程:

  1. H D H^D HD 是用户历史行为序列经过推荐器的 Transformer 解码器后得到的隐藏状态;
  2. H D H^D HD 的第一列 hidden state,并通过 pooling 操作(如 mean 或取第一位)获得用户偏好的最终表示 h D h^D hD
  3. 此时 h D h^D hD 代表用户的“语义偏好向量”,用于表示“用户想要什么”;
  4. 同时,目标物品的表示 z z z 先通过 item tokenizer 进行残差量化,得到 token 序列 [ c 1 , . . . , c L ] [c_1, ..., c_L] [c1,...,cL]
  5. 然后这个 token 序列会被送入 tokenizer 的解码器中进行重构,得到重建语义表示 z ~ \tilde{z} z~

z ~ = Decoder T ( ∑ l = 1 L e c l l ) \tilde{z} = \text{Decoder}_\mathcal{T}\left( \sum_{l=1}^L e_{c_l}^l \right) z~=DecoderT(l=1Lecll)

其中 e c l l e_{c_l}^l ecll 是第 l l l 层 codebook 中选出的 token 向量;

  1. h D h^D hD z ~ \tilde{z} z~ 分别代表“用户偏好语义”与“物品语义”,应当在语义空间中靠近;

  2. 使用 InfoNCE 对比学习 进行对齐,在一个训练 batch 中最大化 h D h^D hD 与对应 z ~ \tilde{z} z~ 的相似度,同时区分其他负样本,最终损失为:

L P S A = − ( log ⁡ exp ⁡ ( s ( z ~ , h D ) / τ ) ∑ h ^ ∈ B exp ⁡ ( s ( z ~ , h ^ ) / τ ) + log ⁡ exp ⁡ ( s ( h D , z ~ ) / τ ) ∑ z ^ ∈ B exp ⁡ ( s ( h D , z ^ ) / τ ) ) \mathcal{L}_{PSA} = -\left( \log \frac{\exp(s(\tilde{z}, h^D)/\tau)}{\sum_{\hat{h} \in \mathcal{B}} \exp(s(\tilde{z}, \hat{h})/\tau)} + \log \frac{\exp(s(h^D, \tilde{z})/\tau)}{\sum_{\hat{z} \in \mathcal{B}} \exp(s(h^D, \hat{z})/\tau)} \right) LPSA=(logh^Bexp(s(z~,h^)/τ)exp(s(z~,hD)/τ)+logz^Bexp(s(hD,z^)/τ)exp(s(hD,z~)/τ))

其中 s ( ⋅ , ⋅ ) s(\cdot, \cdot) s(,) 是余弦相似度函数, τ \tau τ 是温度系数, B \mathcal{B} B 是当前 batch 样本集合。

2.7 交替优化

ETEGRec由两个独立模块组成 Item Tokenizer 与 Generative Recommender,这两个模块通过两个对齐损失 L S I A L_{SIA} LSIA L P S A L_{PSA} LPSA连接,但如果一开始就联合训练两个部分,容易出现:参数震荡、不收敛、tokenizer质量低影响推荐,或 recommender 太强导致 tokenizer 学不到东西。作者采用交替优化的方式避免问题。

训练被分为多个周期(cycle),每个周期包含若干个 epoch。

  • 每个周期的第一个 epoch:只优化 Item Tokenizer,冻结推荐器,让 tokenizer 更新得更适合当前 recommender。采用:
    L I T = L S Q + μ L S I A + λ L P S A \mathcal{L}_{IT} = \mathcal{L}_{SQ} + \mu \mathcal{L}_{SIA} + \lambda \mathcal{L}_{PSA} LIT=LSQ+μLSIA+λLPSA

    • L S Q \mathcal{L}_{SQ} LSQ:tokenizer 本身的重构损失(token 生成 + embedding 重建);
    • L S I A \mathcal{L}_{SIA} LSIA:结构对齐(序列→物品分布);
    • L P S A \mathcal{L}_{PSA} LPSA:语义对齐(偏好→语义);
    • μ , λ \mu, \lambda μ,λ:超参数,用来平衡三项损失的权重。
  • 周期的剩余 epoch:只优化 Generative Recommender,冻结 tokenizer。保证在稳定 token 编码下训练 recommender,不被扰动,采用:
    L G R = L R E C + μ L S I A + λ L P S A (18) \mathcal{L}_{GR} = \mathcal{L}_{REC} + \mu \mathcal{L}_{SIA} + \lambda \mathcal{L}_{PSA} \tag{18} LGR=LREC+μLSIA+λLPSA(18)

    • L R E C \mathcal{L}_{REC} LREC:推荐器生成 token 的序列建模损失(负 log-likelihood);
    • 同样包含两项对齐损失;
    • 但此时冻结 tokenizer,只训练 recommender。

3. 总结

最近也在看生成式推荐,这篇文章主要就是提出了两个对齐模块以及一个交替优化的训练方式,去解决传统的解耦问题,但是这样也就限制了生成式推荐模块必须是encoder-decoder架构,不能是decoder-only了吧。有一定的借鉴之处,整体看起来比较简单,就是 h D h^D hD 部分不是那么理解。

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

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

相关文章

STM32CubeMX安装及使用分享

说是教程&#xff0c;属实是不敢当&#xff0c;只是把自己觉得较为正式的方式分享给各位&#xff0c;如有问题请提出大家一起讨论。 文章目录 软件下载软件安装软件使用开发板工程单片机工程单片机工程创建单片机工程配置界面单片机工程具体配置引脚功能配置系统时钟配置工程配…

MySQL报错解决过程

我在调试datagrip的时候&#xff0c;显示拒绝连接&#xff0c;开始的时候&#xff0c;我以为只是服务没有开启&#xff0c;结果到后来在网上搜索各种解决办法无果后&#xff0c;就选择卸载&#xff0c;卸载之后安装新的MySQL 以下就是我的解决过程。 如果只是在使用外置软件&…

动态规划-62.不同路径-力扣(LeetCode)

一、题目解析 机器人只能向下或向左&#xff0c;要从Start位置到Finish位置。 二、算法原理 1.状态表示 我们要求到Finish位置一共有多少种方法&#xff0c;记Finish为[i,j]&#xff0c;此时dp[i,j]表示&#xff1a;到[i,j]位置时&#xff0c;一共有多少种方法&#xff0c;满…

Qt开发:项目视图(Item Views)的介绍和使用

文章目录 一、清单视图&#xff08;List View&#xff09;1.1 基本概念1.2 使用示例&#xff08;文字列表&#xff09;1.3 图标文字&#xff08;图标模式&#xff09;1.4 常用设置1.5 完整示例 二、树视图&#xff08;Tree View&#xff09;2.1 基本概念2.2 常用类简介2.3 快速…

GoWeb开发(基础)

Go&#xff08;Golang&#xff09;是一种高效、简洁的编程语言&#xff0c;特别适合Web开发。以下是详细的Go Web开发指南&#xff0c;涵盖从基础到进阶的内容。 --- 一、Go Web开发基础 1. 标准库 net/http Go 内置 net/http 包&#xff0c;支持快速构建 Web 服务。 - 基本示…

GSENSE2020BSI sCMOS科学级相机主要参数及应用场景

GSENSE2020BSI sCMOS科学级相机是一款面向宽光谱成像需求的高性能科学成像设备&#xff0c;结合了背照式&#xff08;Back-Side Illuminated, BSI&#xff09;CMOS技术与先进信号处理算法&#xff0c;适用于天文观测、生物医学成像、工业检测等领域。以下是其核心特点及技术细节…

【日撸 Java 三百行】Day 9(While语句)

目录 Day 9&#xff1a;While 语句的基本使用方法 一、基础知识及案例分析 二、代码及测试 拓展&#xff1a;流程控制语句专题补充 小结 Day 9&#xff1a;While 语句的基本使用方法 Task&#xff1a; while 语句本质上比 for 更基础, 因此可以替代后者. 但 for 在很多时候…

React 第三十七节 Router 中 useOutlet Hook的使用介绍以及注意事项

React Router 中的 useOutlet 是 v6 版本新增的 Hook&#xff0c;用于在父路由组件中访问当前嵌套的子路由元素。它提供了比 <Outlet> 组件更灵活的控制方式&#xff0c;适合需要根据子路由状态进行动态处理的场景。 一、useOutlet的基本用法 import { useOutlet } fro…

TDengine 在智慧油田领域的应用

简介 智慧油田&#xff0c;亦称为数字油田或智能油田&#xff0c;是一种采用尖端信息技术与先进装备的现代油田开发模式。该模式通过实时更新油气田层析图及动态生产数据&#xff0c;显著提高了油气田的开发效率与经济价值。 信息技术在此领域发挥着至关重要的作用&#xff0…

关于AI 大数据模型的基础知识 杂记

一、LM Studio LM Studio下载地址&#xff1a;LM Studio - Discover, download, and run local LLMshttps://lmstudio.ai/LM Studio是使用electron架构&#xff0c;引用的llama.cpp库。 下载后的模型存储于 /User/Admin/.lmstudio/models中。 二、llama.cpp库下载地址 llam…

2025数维杯数学建模竞赛B题完整参考论文(共38页)(含模型、代码、数据)

2025数维杯数学建模竞赛B题完整参考论文 目录 摘要 一、问题重述 二、问题分析 三、模型假设 四、定义与符号说明 五、 模型建立与求解 5.1问题1 5.1.1问题1思路分析 5.1.2问题1模型建立 5.1.3问题1求解结果 5.2问题2 5.2.1问题2思路分析 5.2.2问题2…

利用GPT实现油猴脚本—网页滚动(优化版)

在浏览网页的时候&#xff0c;发现有的网页没有直达最前这样的功能&#xff0c;所有心血来潮利用ChatGPT写了一个油猴脚本以实现此功能&#xff0c;在网站上出现一个可以自由拖动的滑块。 声明&#xff1a;引用或二创需注明出处。 如图&#xff1a; 点击即可直达当前网页最前、…

MySQL基础关键_013_常用 DBA 命令

目 录 一、MySQL 用户信息存储位置 二、新建用户 1.创建本地用户 2.创建外网用户 三、用户授权 1.说明 2.实例 四、撤销授权 五、修改用户密码 六、修改用户名、主机名/IP地址 七、删除用户 八、数据备份 1.导出数据 2.导入数据 &#xff08;1&#xff09;方式…

计算机视觉与深度学习 | 图像匹配算法综述

图像匹配算法综述 图像匹配 图像匹配算法综述一、算法分类二、经典算法原理与公式1. **SIFT (Scale-Invariant Feature Transform)**2. **ORB (Oriented FAST and Rotated BRIEF)**3. **模板匹配(归一化互相关,NCC)**4. **SuperPoint(深度学习)**三、代码示例1. **SIFT 特…

切比雪夫不等式详解

切比雪夫不等式详解 一、引言 切比雪夫不等式&#xff08;Chebyshev’s Inequality&#xff09;是概率论和统计学中最重要的基本定理之一&#xff0c;由俄国数学家切比雪夫&#xff08;P. L. Chebyshev&#xff0c;1821-1894&#xff09;提出。它为我们提供了一个强大工具&am…

霸王茶姬微信小程序自动化签到系统完整实现解析

霸王茶姬微信小程序自动化签到系统完整实现解析 技术栈&#xff1a;Node.js 微信小程序API MD5动态签名 一、脚本全景架构 功能模块图 #mermaid-svg-0vx5W2xo0IZWn6mH {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…

气动带刮刀硬密封固定式对夹球阀:专为高粘度、强腐蚀性介质设计的工业解决方案-耀圣

气动带刮刀硬密封固定式对夹球阀&#xff1a;专为高粘度、强腐蚀性介质设计的工业解决方案 在石油化工、锂电材料、污水处理等高难度工况中&#xff0c;带颗粒的高粘度介质、料浆及强腐蚀性流体对阀门的性能提出了严苛要求。 气动带刮刀硬密封固定式对夹球阀凭借其独特的结构…

Filecoin存储管理:如何停止Lotus向特定存储路径写入新扇区数据

Filecoin存储管理&#xff1a;如何停止Lotus向特定存储路径写入新扇区数据 引言背景问题场景解决方案步骤1&#xff1a;修改sectorstore.json文件步骤2&#xff1a;重新加载存储配置步骤3&#xff1a;验证更改 技术原理替代方案最佳实践结论 引言 在Filecoin挖矿过程中&#x…

互联网大厂Java求职面试:高并发系统设计与架构实战

互联网大厂Java求职面试&#xff1a; 高并发系统设计与架构实战 第一轮提问&#xff1a;基础概念与核心原理 技术总监&#xff08;严肃&#xff09;&#xff1a;郑薪苦&#xff0c;你对JVM的内存模型了解多少&#xff1f;能说说堆、栈、方法区的区别吗&#xff1f; 郑薪苦&a…

AD原理图复制较多元器件时报错:“InvalidParameter Exception Occurred In Copy”

一、问题描述 AD原理图复制较多元器件时报错&#xff1a;AD原理图复制较多元器件时报错&#xff1a;“InvalidParameter Exception Occurred In Copy”。如下图 二、问题分析 破解BUG。 三、解决方案 1、打开参数配置 2、打开原理图优先项中的通用配置&#xff0c;取消勾选G…