ICLR2025 | SLMRec: 重新思考大语言模型在推荐系统中的价值

news2025/3/16 5:37:03

note

问题背景:序列推荐(SR)任务旨在预测用户可能的下一个交互项目。近年来,大型语言模型(LLMs)在SR系统中表现出色,但它们巨大的规模使得在实际平台中应用变得低效和不切实际。

研究动机:论文探讨了在SR领域中LLMs的必要性,以及是否存在模型规模和性能之间的不一致性。研究发现LLMs的许多中间层是冗余的。

方法提出:基于上述发现,论文提出了一种名为SLMRec的方法,该方法采用简单的知识蒸馏技术来增强小型语言模型(SLMs)在SR任务上的性能。

实验设计:论文在大规模行业数据集上进行了广泛的实验,以评估减少参数数量对性能的影响,并发现SLMRec模型即使在使用只有13%的参数量的情况下,也能与大型模型相媲美。

实验结果:SLMRec在保持较小模型大小的同时,实现了与大型模型相当的性能,并在训练和推理时间上分别达到了6.6倍和8.0倍的速度提升。

技术贡献:SLMRec模型的设计正交于其他后训练效率技术(如量化和剪枝),可以与这些技术结合使用,进一步提高效率。

未来工作:论文提出了未来的研究方向,包括将增量学习整合到LLM-based推荐系统中,以及探索多模态信息融合等,以提高模型的适应性和效率。

结论:通过采用知识蒸馏方法,可以有效地提高小型语言模型在序列推荐任务中的性能,同时显著降低模型规模和提高效率,为构建高效推荐系统提供了新的方向。

文章目录

  • note
  • 一、研究背景
    • Q: 这篇论文试图解决什么问题?
    • Q: 有哪些相关研究?
  • 二、SLMRec模型
    • G-LLMRec和E-LLMRec
    • 蒸馏过程
    • 优化目标
    • 解决方法
  • 三、相关实验
    • 1. 基线选择
    • 2. 实验设计
    • 实验结论
  • 四、未来方向
  • Reference

一、研究背景

在这里插入图片描述

论文:https://openreview.net/forum?id=G4wARwjF8M
代码:https://github.com/WujiangXu/SLMRec

Q: 这篇论文试图解决什么问题?

A: 这篇论文探讨了在序列推荐(Sequential Recommendation, SR)任务中,大型语言模型(Large Language Models, LLMs)的必要性和效率问题。具体来说,论文试图解决以下几个问题:

  • 大型语言模型的规模需求:尽管LLMs在SR任务中表现出色,但目前缺乏关于在SR场景中实际需要多大语言模型的证据。论文试图了解LLMs的规模与其在SR任务上的性能之间的关系。
  • 大型模型的效率问题:由于LLMs的庞大规模,它们在需要处理大量日志的日常实际平台中应用是低效且不切实际的。论文探讨了如何提高基于LLM的SR模型的实用性和效率。
  • 模型参数的冗余性:论文通过实验发现,LLMs的许多中间层是冗余的。基于这一发现,论文提出了一种方法,通过简化知识蒸馏(Knowledge Distillation, KD)技术,增强小型语言模型(Small Language Models, SLMs)在SR任务上的性能。
  • 模型效率与性能的平衡:论文提出了一种新的模型SLMRec,旨在使用更少的参数(仅LLM-based推荐模型的13%)实现与大型模型相当的性能,同时显著提高训练和推理速度。

总的来说,这篇论文的目标是重新评估在序列推荐任务中对大型语言模型的需求,并探索提高小型语言模型性能的有效方法,以实现更高效和实用的推荐系统。

Q: 有哪些相关研究?

A: 根据论文内容,相关研究主要涉及以下几个领域:

  • 序列推荐(Sequential Recommendation, SR):传统的SR方法主要关注于开发各种时序编码器以捕获用户的短期和长期兴趣。随着大型语言模型(LLMs)的成功,研究人员开始利用开源的LLMs构建推荐系统。
  • 知识蒸馏(Knowledge Distillation, KD):知识蒸馏是一种强大的技术,通过训练一个较小的“学生”模型来模仿一个大型的“教师”模型的预测分布,从而将教师的知识转化为更紧凑、压缩的表示形式。
  • 深度语言模型的知识:近期社区对语言模型中的语言属性和知识如何编码感兴趣。一些研究强调知识集中在中间层或最后几层,而其他研究尝试进行知识编辑,并得出信息可能在各层之间非局部存储的结论。
  • 模型剪枝(Model Pruning):模型剪枝是通过移除不重要的参数来减小一个训练有素的大型模型的大小的基本方法。近期的工作集中在将剪枝方法应用于Transformer架构。
  • 参数高效微调(Parameter-Efficient Fine-Tuning, PEFT):PEFT是一种新技术,旨在在保持最小的计算和内存成本的同时,将大型语言模型(LLMs)调整到特定任务上。

论文中提到的一些具体相关工作包括但不限于:

  • BERT4Rec:使用双向自注意力网络来建模用户行为序列。
  • SASRec:基于自注意力的顺序模型,通过注意力机制识别用户行为历史中的相关项目。
  • Open-P5:一个开源平台,用于促进基于LLM的生成式推荐系统的研究。
  • E4SRec:将大型语言模型(LLMs)整合到序列推荐系统中,显著提高了处理项目ID和个性化的能力。

这些研究为本文提出的SLMRec模型提供了理论和技术背景,同时也表明了序列推荐领域的研究进展和挑战。

二、SLMRec模型

G-LLMRec和E-LLMRec

在这里插入图片描述
前者是传统序列推荐模型,后者利用LLM作为特征提取器,后者分为两类:

  • 生成式方法(G-LLMRec):将物品映射为文本token,将推荐任务转化为基于历史序列的下一个token生成任务(如P5、LLaRA)。其核心思想是通过LLM的生成能力直接预测用户可能交互的物品,类似于自然语言生成中的自回归机制。
  • 嵌入式方法(E-LLMRec):沿用传统推荐框架,利用LLM提取序列的最后一层隐藏表征作为用户偏好表示(如E4SRec),并通过外部适配器计算用户-物品偏好得分。此类方法将LLM视为特征提取器,更贴近BERT等预训练模型的思路,保留了对用户隐式偏好的建模能力。

实验结论:LLMRec方法相较TSR基准模型(如SASRec)可带来近20%的性能提升,但其参数量激增(高达7B+)导致训练与推理成本剧增,严重制约实际部署。提出的SLMRec在性能逼近7B级LLMRec模型的同时,训练/推理速度提升达6.6倍/8.0倍

蒸馏过程

在这里插入图片描述
图1:分层知识蒸馏框架示意图。教师模型(左边)与学生模型(右边)同为E-LLMRec架构,通过对齐隐藏表征实现知识迁移。图中展示了分块策略(每 m / n m / n m/n 层为一组),多监督信号(红色箭头)与损失函数。

为压缩模型规模,本文采用离线知识蒸馏(Offline Knowledge Distillation)策略,其优化目标为:

min ⁡ Θ s [ L c e ( Θ s ) + λ D k d ( Θ t , Θ s ) ] \min _{\Theta_s}\left[\mathcal{L}_{c e}\left(\Theta_s\right)+\lambda \mathcal{D}_{k d}\left(\Theta_t, \Theta_s\right)\right] Θsmin[Lce(Θs)+λDkd(Θt,Θs)]

  • 教师模型 f t ( Θ t ) f_t\left(\Theta_t\right) ft(Θt) :完整LLM架构的E-LLMRec模型,预训练后参数固定。
  • 学生模型 f s ( Θ s ) f_s\left(\Theta_s\right) fs(Θs) :轻量化架构(如剪裁层数或隐层维度),需学习逼近教师模型的表征能力。
  • 蒸馏损失 D k d \mathcal{D}_{k d} Dkd :采用KL散度 衡量教师与学生输出的概率分布差异:

D k d = ∑ u , i p ^ i ( t ) log ⁡ p ^ i ( t ) p ^ i ( s ) \mathcal{D}_{k d}=\sum_{u, i} \hat{p}_i^{(t)} \log \frac{\hat{p}_i^{(t)}}{\hat{p}_i^{(s)}} Dkd=u,ip^i(t)logp^i(s)p^i(t)

优化目标

1.分层分块策略

  • 教师模型:包含 M M M 层解码器,每 m m m 层划分为一个块,共 B = ⌊ M m ⌋ B=\left\lfloor\frac{M}{m}\right\rfloor B=mM 块。
  • 学生模型:包含 N N N 层解码器 ( N < M ) (N<M) (N<M) ,每 n n n 层划分为一个块,块数 B B B 与教师模型一致。
  • 隐藏表征对齐:

教师第 k m k m km 层与学生第 k n k n kn 层的输出表征需对齐:

H t = { h t m , … , h t M } , H s = { h s n , … , h s N } \mathbf{H}_t=\left\{\mathbf{h}_t^m, \ldots, \mathbf{h}_t^M\right\}, \quad \mathbf{H}_s=\left\{\mathbf{h}_s^n, \ldots, \mathbf{h}_s^N\right\} Ht={htm,,htM},Hs={hsn,,hsN}

2.多粒度蒸馏损失
(1)特征方向对齐(余弦相似度)
通过余弦相似度约束教师与学生表征的方向一致性:

D c o s = 1 B ∑ k = 1 B h t ( k m ) ⋅ h s ( k n ) ∥ h t ( k m ) ∥ 2 ⋅ ∥ h s ( k n ) ∥ 2 \mathcal{D}_{\mathrm{cos}}=\frac{1}{B} \sum_{k=1}^B \frac{\mathbf{h}_t^{(k m)} \cdot \mathbf{h}_s^{(k n)}}{\left\|\mathbf{h}_t^{(k m)}\right\|_2 \cdot\left\|\mathbf{h}_s^{(k n)}\right\|_2} Dcos=B1k=1B ht(km) 2 hs(kn) 2ht(km)hs(kn)

(2)特征范数对齐(L2距离)
最小化教师与学生表征的L2范数差异:

D n o r m = 1 B ∑ k = 1 B ∥ h t ( k m ) − h s ( k n ) ∥ 2 2 \mathcal{D}_{\mathrm{norm}}=\frac{1}{B} \sum_{k=1}^B\left\|\mathbf{h}_t^{(k m)}-\mathbf{h}_s^{(k n)}\right\|_2^2 Dnorm=B1k=1B ht(km)hs(kn) 22

(3)多重监督信号
在每块输出层添加适配器 ( W a ) \left(W_a\right) (Wa) ,引入中间监督损失:

L m s = 1 B − 1 ∑ k = 1 B − 1 L c e ( y , p ^ t ( k m ) ) \mathcal{L}_{\mathrm{ms}}=\frac{1}{B-1} \sum_{k=1}^{B-1} \mathcal{L}_{c e}\left(y, \hat{p}_t^{(k m)}\right) Lms=B11k=1B1Lce(y,p^t(km))

3.联合优化目标

总损失函数整合交叉嫡损失与多粒度蒸馏损失:

min ⁡ Θ s , W a [ L c e + λ 1 D c o s + λ 2 D n o r m + λ 3 L m s ] \min _{\Theta_s, W_a}\left[\mathcal{L}_{c e}+\lambda_1 \mathcal{D}_{\mathrm{cos}}+\lambda_2 \mathcal{D}_{\mathrm{norm}}+\lambda_3 \mathcal{L}_{\mathrm{ms}}\right] Θs,Wamin[Lce+λ1Dcos+λ2Dnorm+λ3Lms]

其中 λ 1 , λ 2 , λ 3 \lambda_1, \lambda_2, \lambda_3 λ1,λ2,λ3 为超参数,控制各损失项的权重。

解决方法

A: 论文通过以下几个关键步骤解决大型语言模型在序列推荐任务中的效率和必要性问题:

  • 实验探索:首先,论文通过在大规模行业数据集上进行广泛的实验,探索了减少模型参数对性能的影响,并发现LLMs的许多中间层是冗余的。
  • 知识蒸馏(Knowledge Distillation, KD):基于实验发现,论文提出了一种简单的知识蒸馏方法来训练小型语言模型(SLMRec)。这种方法通过将教师模型(大型语言模型)的知识传递给学生模型(小型语言模型),使得学生模型能够学习到与教师模型相似的表示能力。
  • 特征对齐:论文采用了基于余弦相似度的损失项(Dcos)和特征范数正则化(Dnorm)来对齐教师模型和学生模型之间的特征方向,确保学生模型能够学习到与教师模型相似的特征表示。
  • 多监督信号:为了引导学生模型学习到与推荐任务相关的知识,论文引入了额外的监督信号(Lms),通过学习额外的适配器(adapters)来减少维度,并优化预测结果。
  • 模型结构简化:SLMRec模型采用了与教师模型相似的E-LLMRec模型架构,但通过知识蒸馏方法,减少了模型大小,同时保持了竞争力的性能。
  • 效率提升:实验结果表明,SLMRec模型在使用仅有大型语言模型13%的参数量的情况下,实现了与大型模型相当的性能,并且在训练和推理时间上分别达到了6.6倍和8.0倍的速度提升。
  • 兼容性:SLMRec模型的设计是与大型语言模型中的其他量化和剪枝技术正交的,这意味着它可以与这些技术结合使用,进一步提高效率。

三、相关实验

Q: 论文做了哪些实验?

A: 论文中进行了一系列实验来评估提出的方法SLMRec,并回答了几个研究问题(RQs)。以下是论文中提到的主要实验内容:

  • 性能比较(RQ1):比较SLMRec模型与基于大型语言模型(LLM)的推荐模型在大规模行业数据集上的性能。使用了Amazon18数据集的不同类别,并将SLMRec与其他基线模型进行了比较,包括传统的序列推荐方法(如GRU4Rec、BERT4Rec和SASRec)和基于LLM的方法(如Open-P5LLaMa和E4SRec*)。
  • 效率和运行时间比较(RQ2):评估SLMRec模型与G-LLMRec和E-LLMRec模型在效率和运行时间方面的比较。实验包括训练时间、推理时间、训练参数数量和推理参数数量的测量。
  • 知识正则化器的效果(RQ3):通过消融研究来评估提出的三种知识正则化器(Dcos、Dnorm和Lms)对SLMRec性能的影响。
  • 在线知识蒸馏的可行性(RQ4):研究了在下游推荐任务中同时训练教师模型和SLMRec的可能性,即在线知识蒸馏。
  • 块数b的影响:研究了在SLMRec中块数b对模型性能的影响。
  • 模型研究:进一步研究了在线知识蒸馏技术和块数b对模型性能的影响。

实验结果表明,SLMRec在保持较小模型大小的同时,实现了与大型语言模型相当的性能,并且在训练和推理时间上都有显著的提升。此外,通过引入不同的知识正则化器,SLMRec能够更好地学习到与推荐任务相关的知识,进一步提升了模型的性能。

1. 基线选择

  • 传统基线:选用SASRec作为传统序列推荐(TSR)的基准模型,因其在序列建模中表现出色。
  • LLM基线:采用嵌入式方法E4SRec作为基于LLM的基线模型,通过预训练权重与适配器实现推荐任务。

2. 实验设计

1.传统序列推荐(TSR)部分:

  • 使用SASRec预训练的嵌入层(Embedding Layer)获取商品序列的表示。
  • 输出用户表示 h u h_u hu 和商品表示 h i h_i hi

2.基于LLM的推荐(E-LLMRec)部分:

  • 将商品嵌入与提示嵌入(Prompt Embedding )拼接后输入LLM。
  • 利用LLM作为特征提取器(类似BERT),输出最后一层的隐藏表征作为用户偏好表示。
  • 与生成式方法(G-LLMRec)不同,保留TSR的预测框架(用户-商品内积计算得分)。

层数裁剪策略对比如下,使用更少层(8 层)的模型实现了几乎等同于(24 层)模型的性能:
在这里插入图片描述

数据集:基于Amazon 18数据集进行大规模实验验证,确保工业场景代表性。
负采样:对每个用户采样999个负样本+1个正样本,避免评估偏置。
参数优化:采用LoRA技术降低计算开销,仅更新部分低秩适配矩阵参数。

实验结论

  • 模型性能随层数增加而提升
    • 即使仅使用2层的E4SRec,其性能仍显著优于SASRec(NDCG@10提升约12%)。
    • 主要原因包括:
      • 更大隐层维度:LLM隐层维度为4096(VS. SASRec的128),增强了表征能力。
      • 预训练权重初始化:LLM的预训练参数提供了更优的语义先验。
      • 参数高效微调(PEFT):LoRA技术有效平衡了参数更新与计算效率。
  • 中间层存在显著冗余
    • 在 l=8 至 l=24 区间内,性能提升趋缓(NDCG@10差异<2%)
    • 核心结论:8层模型(E4SRec)即可逼近24层模型(E4SRec)的效果,表明大部分中间层对推荐任务贡献有限。

四、未来方向

增量学习(Incremental Learning):当前的SLMRec模型需要重新训练以适应新的场景或数据集。研究如何将增量学习整合到基于LLM的推荐系统中,以提高模型对新情况的适应性和减少对全量数据训练的依赖。

少样本学习(Few-shot Learning):探索LLMs在少样本学习方面的潜力,以便在面对新数据集或平台的新流量日志时,模型能够更快地适应,而不需要从头开始训练。

多模态信息融合:考虑将用户的语言学信息和视觉信息等多模态数据集成到LLMRec模型中,这可能会进一步提高模型对新场景的适应性。

模型压缩和加速:虽然SLMRec已经在模型大小和效率上取得了进步,但仍有进一步压缩和加速模型的空间,特别是在移动设备或资源受限的环境中。

知识蒸馏的改进:研究更高级的知识蒸馏技术,以更有效地将知识从大型模型传递到小型模型。

模型解释性:提高模型的可解释性,帮助理解模型是如何做出推荐决策的,这对于提高用户信任和满意度至关重要。

跨领域推荐:研究模型在跨领域推荐任务中的性能,以及如何通过迁移学习等技术来提高跨领域的泛化能力。

实时推荐:探索模型在实时推荐场景中的应用,以及如何优化模型以满足实时推荐的需求。

用户隐私保护:研究如何在保护用户隐私的同时进行有效的推荐,例如通过差分隐私或联邦学习等技术。

模型鲁棒性:提高模型对于噪声数据、对抗性攻击等的鲁棒性,确保推荐系统在面对恶意行为时的稳定性。

这些探索点可以帮助推动序列推荐领域的进一步发展,提高推荐系统的性能、效率和用户体验。

Reference

[1] https://github.com/WujiangXu/SLMRec

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

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

相关文章

71.HarmonyOS NEXT PicturePreviewImage组件深度剖析:从架构设计到核心代码实现

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; HarmonyOS NEXT PicturePreviewImage组件深度剖析&#xff1a;从架构设计到核心代码实现 (一) 文章目录 HarmonyOS NEXT PicturePreviewImage组件深…

简单实现京东登录页面

Entry Component struct Index {State message: string ;build() { Column(){//顶部区域Row(){Image($r(app.media.jd_cancel)).width(20).height(20)Text(帮助)}.width(100%).justifyContent(FlexAlign.SpaceBetween)//logo图标Image($r(app.media.jd_logo)).width(250).heig…

9.贪心算法

简单贪心 1.P10452 货仓选址 - 洛谷 #include<iostream> #include<algorithm> using namespace std;typedef long long LL; const int N 1e510; LL a[N]; LL n;int main() {cin>>n;for(int i 1;i < n;i)cin>>a[i];sort(a1,a1n);//排序 LL sum 0…

大模型训练全流程深度解析

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。https://www.captainbed.cn/north 文章目录 1. 大模型训练概览1.1 训练流程总览1.2 关键技术指标 2. 数据准备2.1 数据收集与清洗2.2 数据…

每日一题---单词搜索(深搜)

单词搜索 给出一个二维字符数组和一个单词&#xff0c;判断单词是否在数组中出现&#xff0c; 单词由相邻单元格的字母连接而成&#xff0c;相邻单元指的是上下左右相邻。同一单元格的字母不能多次使用。 数据范围&#xff1a; 0 < 行长度 < 100 0 < 列长度 <…

插入排序c++

插入排序的时间复杂度为O&#xff08;N^2&#xff09;&#xff0c;和冒泡排序的时间复杂度相同&#xff0c;但是在某些情况下插入排序会更优。 插入排序的原理是&#xff1a;第1次在0~0范围内排序&#xff0c;第2次在0~1范围内排序&#xff0c;第3次在0~2范围内排序……相当于…

Swagger 从 .NET 9 中删除:有哪些替代方案

微软已经放弃了对 .NET 9 中 Swagger UI 包 Swashbuckle 的支持。他们声称该项目“不再由社区所有者积极维护”并且“问题尚未得到解决”。 这意味着当您使用 .NET 9 模板创建 Web API 时&#xff0c;您将不再拥有 UI 来测试您的 API 端点。 我们将调查是否可以在 .NET 9 中使用…

嵌入式八股ARM篇

前言 ARM篇主要介绍一下寄存器和中断机制,至于汇编这一块…还请大家感兴趣自行学习 1.寄存器 R0 - R3 R4 - R11 寄存器 R0 - R3一般用作函数传参 R4 - R11用来保存程序运算的中间结果或函数的局部变量 在函数调用过程中 注意在发生异常的时候 cortex-M0架构会自动将R0-R3压入…

使用DeepSeek和墨刀AI,写PRD文档、画原型图的思路、过程及方法

使用DeepSeek和墨刀AI&#xff0c;写PRD文档、画原型图的思路、过程及方法 现在PRD文档要如何写更高效、更清晰、更完整&#xff1f; 还是按以前的思路写PRD&#xff0c;就还是以前的样子。 现在AI这么强大&#xff0c;产品经理如何使用DeepSeek写PRD文档&#xff0c;产品经…

【VUE2】第五期——VueCli创建项目、Vuex多组件共享数据、json-server——模拟服务端api

黑马程序员视频地址&#xff1a;091-vuex的基本认知_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1HV4y1a7n4?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p91 目录 1 VueCli 自定义创建项目 2 Eslint代码规范 2.1 规…

rpmlib(SetVersions) is needed by can-uilts-v2019.00.0-alt1.aarch64

在我在Linux中安装离线CAN工具时&#xff0c;出现了一个问题&#xff0c; rootwanghuo:~# rpm -ivh can-uilts-v2019.00.0-alt1.aarch64.rpm error: Failed dependencies:rpmlib(SetVersions) is needed by can-uilts-v2019.00.0-alt1.aarch64 意思是尝试安装 can-uilts-v20…

CNN 稠密任务经典结构

FCN UNet FPN FCNUNETFPNpadding无&#xff08;逐渐变小&#xff09; 有&#xff08;左右对称&#xff09;上采样 双线性双线性 最近邻跳跃链接 相加 Cropcat 1x1卷积相加 三个网络差不多&#xff0c;UNet名字最直观&#xff0c;后续流传…

算法刷题整理合集(二)

本篇博客旨在记录自已的算法刷题练习成长&#xff0c;里面注有详细的代码注释以及和个人的思路想法&#xff0c;希望可以给同道之人些许帮助。本人也是算法小白&#xff0c;水平有限&#xff0c;如果文章中有什么错误或遗漏之处&#xff0c;望各位可以在评论区指正出来&#xf…

STM32配套程序接线图

1 工程模板 2 LED闪烁 3LED流水灯 4蜂鸣器 5按键控制LED 6光敏传感器控制蜂鸣器 7OLED显示屏 8对射式红外传感器计次 9旋转编码器计次 10 定时器定时中断 11定时器外部时钟 12PWM驱动LED呼吸灯 13 PWM驱动舵机 14 PWM驱动直流电机 15输入捕获模式测频率 16PWMI模式测频率占空…

Houdini学习笔记

1. Houdini中一次只能显示一个物体 如果要都显示 需要 merge 节点 粉色的是 以参考显示 2.对任意一个节点按F1 可以弹出houdini官方文档 3. 恢复视角 Space H,居中 Space G 居中选中物体

仿Ant Design Vue风格自定义浏览器滚动条样式

仿Ant Design Vue风格自定义浏览器滚动条样式 问题原因 浏览器默认的滚动条样式很丑&#xff0c;无法满足需求&#xff0c;需要自定义滚动条样式&#xff0c;参考ant-design-vue的样式 css修改滚动相关属性可查阅官方文档 选择器介绍 ::webkit-scrollbar&#xff1a;滚动条…

单元测试、系统测试、集成测试、回归测试的步骤、优点、缺点、注意点梳理说明

单元测试、系统测试、集成测试、回归测试的梳理说明 单元测试 步骤&#xff1a; 编写测试用例&#xff0c;覆盖代码的各个分支和边界条件。使用测试框架&#xff08;如JUnit、NUnit&#xff09;执行测试。检查测试结果&#xff0c;确保代码按预期运行。修复发现的缺陷并重新测…

网络安全反渗透 网络安全攻防渗透

网络渗透防范主要从两个方面来进行防范&#xff0c;一方面是从思想意识上进行防范&#xff0c;另一方面就是从技术方面来进行防范。 1.从思想意识上防范渗透 网络攻击与网络安全防御是正反两个方面&#xff0c;纵观容易出现网络安全事故或者事件的公司和个人&#xff0c;在这些…

《GitHub网路访问不稳定:解决办法》:此文为AI自动生成

《GitHub网路访问不稳定&#xff1a;解决办法》&#xff1a;此文为AI自动生成 GitHub 网路访问不稳定初现 在当今数字化时代&#xff0c;软件开发行业蓬勃发展&#xff0c;GitHub 作为全球最大的代码托管平台&#xff0c;已然成为无数开发者不可或缺的 “宝库”。它不仅汇聚了…

G-Star 公益行 | 温暖相约 3.30 上海「开源×AI 赋能公益」Meetup

你是否曾想过&#xff0c;在这个数字化浪潮席卷的时代&#xff0c;公益组织如何突破技术瓶颈&#xff1f;当 AI 成为热门话题&#xff0c;它能为公益事业带来怎样的温度&#xff1f;开源的力量&#xff0c;如何让每一份善意都拥有无限可能&#xff1f; G-Star 公益行&#xff…