【论文阅读】Contrastive Clustering Learning for Multi-Behavior Recommendation
论文地址:Contrastive Clustering Learning for Multi-Behavior Recommendation | ACM Transactions on Information Systems
摘要
近年来,多行为推荐模型取得了显著成功。然而,许多模型未充分考虑不同行为之间的共性与差异性,以及目标行为的数据稀疏性问题。本文提出了一种基于对比聚类学习的全新多行为推荐模型(MBRCC)。
具体而言,采用图卷积网络(GCN)分别获取用户和物品的嵌入表示。随后,设计了三种优化用户和物品嵌入的任务,包括行为级嵌入、实例级嵌入和聚类级嵌入。
在行为级嵌入中,设计了一种自适应参数学习策略,以分析辅助行为对目标行为的影响,并通过对用户在各行为上的嵌入进行加权,获得最终的用户嵌入表示。
在实例级嵌入中,利用对比学习对用户和物品实例进行分析,以缓解数据稀疏性问题。
在聚类级嵌入中,设计了一种新的聚类对比学习方法,以捕捉用户和物品群体之间的相似性。
最终,结合这三种任务,以提升用户和物品嵌入的质量。在三个真实世界数据集上的广泛实验表明,MBRCC 显著优于现有的多种推荐模型。
引言
推荐系统在在线广告、社交媒体和电子商务等多个领域发挥着至关重要的作用。它通过智能信息过滤和个性化推荐,帮助用户快速找到符合其兴趣和需求的内容。个性化推荐不仅提升了用户体验,还促进了商业交易的成功。
目前,大多数推荐模型主要关注用户与物品之间的单一行为关系。例如,Zheng 等人[57]提出了一种基于单一行为数据挖掘物品属性信息的推荐方法;Wang 等人[36]在单一行为数据上研究了用户-物品的高阶信息;Li 等人[24]利用元学习方法提升用户和物品的表示效果;Lan 等人[21]基于历史交互数据构建了用户和物品的双分支图来捕获信息。然而,在实际应用中,用户和物品的交互通常涉及多种行为类型。例如,如图 1 所示,在电子商务平台上,用户的行为通常包括浏览、点击和购买等。此外,与用户交互的物品数量不断增长,仅依赖单一行为难以准确推测用户的偏好,因此需要借助辅助行为进行推荐。
为了充分利用辅助行为信息,近年来涌现出越来越多的多行为推荐模型。例如,Gao 等人[9]提出了一种基于神经网络的多任务推荐框架,以级联方式关联各类行为,利用用户在购买前通常浏览相关感兴趣物品的现象来整合不同行为信息;Jin 等人[17]提出了一种多行为推荐模型,通过用户-物品交互的传播层捕捉行为强度,并通过物品-物品交互的传播层捕捉行为语义;Chen 等人[7]提出了一种基于多行为的推荐模型,在可控时间复杂度下高效捕捉不同行为信息,该模型采用基于用户、基于物品和交替优化的三种方法来挖掘不同行为间的复杂关系。此外,Chen 等人[5]考虑到用户和物品交互中的高阶协同信息,提出了一种基于协同过滤的异构图推荐模型,该模型采用关系感知传播层显式获取高阶信号;Wei 等人[39]提出了一种基于多种行为类型图的注意力多行为推荐模型,以捕捉用户-物品交互网络中的隐藏关系,该模型同时考虑了节点级特定行为的重要性和行为级不同行为的语义强度。此外,一些研究还结合了对比学习与多行为推荐。例如,Gu 等人[11]提出了一种基于自监督图卷积网络(GCN)的多行为推荐模型,以缓解监督信号稀疏问题,该模型采用星型对比学习策略来学习不同行为之间的共性;Wu 等人[42]提出了一种基于多视图的多行为对比学习推荐模型,以有效缓解冷启动问题,该模型整合了多行为、多视图和行为区分的对比学习。
尽管上述研究在提升推荐性能方面取得了显著进展,但仍然存在以下局限性:
(1) 一些多行为推荐的对比学习方法主要基于个体行为,缺乏从群体角度综合考虑不同行为,这通常导致用户和物品的嵌入表示无法全面覆盖行为信息;
(2) 由于相似用户的行为通常具有共性,而不同用户的行为往往存在差异,因此用户和物品的共性与差异可提供更丰富的语义信息。然而,部分模型未充分考虑用户或物品之间的共性与差异,可能导致群体偏差或信息过滤不足;
(3) 部分方法忽视了目标行为的数据稀疏性问题。例如,相较于点击、浏览和加入购物车等行为,购买行为的数据较为稀疏,这可能导致推荐偏差或冷启动问题,因为对比学习中难以构造足够数量和多样性的正负样本对。
针对现有多行为推荐模型的这些局限性,本文提出了一种基于对比聚类学习的全新多行为推荐模型(MBRCC)。具体而言,采用 GCN 获取用户和物品在不同行为上的嵌入表示,并围绕这些嵌入设计三类任务,以提升嵌入质量:
(a) 行为级嵌入:采用自适应参数学习策略计算用户在不同行为上的嵌入权重,并通过加权方法融合所有行为的用户嵌入;
(b) 实例级嵌入:基于用户和物品不同行为间的共性,采用对比学习优化用户和物品的嵌入表示,使正样本对之间的共性最大化,负样本对之间的共性最小化;
(c) 聚类级嵌入:多行为数据通常展现出类似的群体模式,因此采用对比聚类学习方法挖掘用户和物品嵌入的潜在信息,以促进实例级用户和物品之间的共性。
在三个真实世界数据集上对 MBRCC 进行了实验评估,结果表明,相较于其他基线模型,本文的方法在所有数据集上至少提升了 7% 的推荐性能。本文的主要贡献如下:
- 提出了一种新型多行为推荐模型(MBRCC),包括行为级嵌入、实例级嵌入和聚类级嵌入,并首次在多行为推荐任务中应用对比聚类学习,以捕捉用户和物品的嵌入信息;
- 在实例级嵌入中考虑了用户和物品之间的共性与差异,同时引入群体聚类级嵌入,最大化用户和物品之间的关联信息利用率,从而有效缓解数据稀疏性问题;
- 在三个真实数据集上验证了 MBRCC 模型的有效性,实验结果表明,MBRCC 在推荐性能上显著优于现有模型。
模型
所提出的模型 (MBRCC) 如图 2 所示,主要包含四个部分。
在嵌入表示部分,异构图 G 根据行为类别划分为 K 个子图。此外,为了获取完整的嵌入信息,设计了三种任务。在行为级别嵌入中,方法侧重于获取用户在每个子图上的嵌入权重。这些权重与相应子图的嵌入进行聚合,以更好地捕获用户行为在不同子图中的重要性。对于物品嵌入,采用简单的拼接操作,因为它们具有静态属性。在实例级别嵌入中,采用对比学习方法,将目标行为(即购买行为)的用户和物品嵌入与其他辅助行为进行比较,利用对比学习策略提取用户和物品之间的实例级共性信息,作为局部特征。在聚类级别嵌入中,针对每种辅助行为获取特征组,并将目标行为加入这些特征组中。然后,使用 softmax 方法在每个特征组中获取不同的特征簇,并在各特征簇之间进行对比学习。最终,这三种任务相结合,以优化用户和物品的嵌入。
4.1 嵌入表示
基于子图 Gk,采用 GCN 获取用户和物品的表示。零层的嵌入表示是矩阵 E(0)中行向量的随机初始化。在模型中,采用多层消息传播,通过收集连接邻居的信息来获取完整的节点信息。为了适应推荐任务,去除了通用 GCN 嵌入聚合中的特征变换矩阵和非线性激活函数,类似于 LightGCN。公式如下:
其中,Nu 和 Ni 分别表示用户 u和物品 i 的邻居数量,l表示当前图卷积层数,(e^k_u)^{(l+1)} 代表 k 类行为的第 l+1 层用户嵌入。在获取每层的嵌入信息后,需要聚合所有层的信息,以确保更好的节点嵌入表示:
其中,αl 代表第 l 层嵌入的权重,与 LightGCN 一致,其中 L为 GCN 的层数。物品嵌入的学习过程与用户嵌入类似。
4.2 行为级别嵌入
多行为数据可以提供更详细的信息,使用户和物品的嵌入表示更加完整。在行为级别嵌入中,设计了一种自适应参数学习方法,根据不同行为数据的分布,捕获每种行为的权重:
其中,αuk代表用户 u 在 k 类行为上的权重,wk 表示 kk 类行为的重要性。为了简化模型,假设 wk 对所有用户均具有相同影响。xuk 代表用户 u 在 k 类行为下的交互物品数量。最终的用户嵌入通过所有行为的加权求和得到:
其中,W 和 b 分别为权重和偏差,σ 代表非线性激活函数。最终的物品嵌入通过拼接所有行为的嵌入获得:
其中,Cat表示拼接操作,MLP 代表多层感知机(Multi-Layer Perceptron)。通过融合操作,得到最终的用户嵌入 eu 和物品嵌入 ei。为了确保相似节点具有更高的相似度,采用 BPR 损失进行优化:
其中,D 为训练数据集,(u,i+)和 (u,i−) 分别代表已观测的交互和未知交互。
4.3 实例级别嵌入
在实例级别嵌入中,采用对比学习方法来优化用户和物品的嵌入,目标是最大化正样本(用户或物品的同一行为嵌入)之间的相似性,同时最小化负样本(不同用户或物品的嵌入)之间的相似性。
对于第 k类辅助行为,计算其嵌入与目标行为嵌入之间的余弦相似度:
具体来说,将同一用户在不同行为上的嵌入视为正样本对,而来自不同用户的嵌入视为负样本对。假设有 N 个用户和 M 个物品,对于用户 u,其目标行为嵌入为 e^p_u,辅助行为嵌入为 e^k_u,则:
- (e^p_u, e^k_u) 设为正样本对
- 其余2N - 2 对设为负样本对
对于物品 i,目标行为嵌入为e^p_i,辅助行为嵌入为e^k_i,则:
- (e^p_i, e^k_i) 设为正样本对
- 其余2M - 2 对设为负样本对
为了优化对比学习中的样本相似度,目标行为 p 和辅助行为 k 需考虑用户损失:
其中,τ是温度参数。
与 Lpu和 Lpi 类似,用户和物品在第 k 个辅助行为下的损失函数定义如下:
目标是识别数据集中所有的正样本对。对于每个用户和物品,计算实例级损失,定义如下:
对于物品嵌入的实例级损失,采用与用户嵌入类似的方法。最终,通过汇总所有用户和物品的对比损失,得到实例级嵌入损失:
4.4 聚类级嵌入
聚类级嵌入遵循“物以类聚”的概念。用户嵌入和物品嵌入被映射到一个维度等于聚类数的空间,使用户和物品嵌入可以被解释为属于特定聚类的概率。然后,采用对比聚类学习方法来捕捉聚类特征。
对于目标行为及每个辅助行为,分别划分为 C 个聚类。其中,e^p_c 表示目标行为的第 c 个聚类,而 e^k_c 表示第 k 个辅助行为的第 c 个聚类。对于用户 u,使用 softmax 方法计算其在目标行为下被分配到第 c 个聚类的概率Y^p_{u,c}。
与实例级嵌入类似,通过选择目标行为和第 k 个辅助行为中相似的聚类得到正样本对 (e^p_c, e^k_c),而其余的 2C-2 个对则被视为负样本对。然后,采用余弦相似度计算这些聚类之间的相似性,定义如下:
其中 c,c′∈{1,2,...,C},k1,k2∈{p,k}。目标行为的损失函数 Lcp用于区分目标行为下的e^p_c 和所有不属于 e^k_c 的聚类,定义如下:
其中 τ0 是聚类级温度系数,控制损失的平滑度。同样,对于第 k 个辅助行为,聚类损失定义如下:
用户嵌入的聚类级损失通过遍历所有聚类得到,定义如下:
熵项 H(Y) 用于防止大多数样本被划分到同一聚类中。
对于物品嵌入的聚类级损失 ,采用与用户嵌入类似的方法。最终,将每组用户嵌入和物品嵌入的损失合并,得到聚类级嵌入损失:
4.5 联合优化
联合优化用于结合三种任务,定义如下:
其中,λ 控制实例级嵌入的权重,μ控制聚类级嵌入的权重,Θ 表示所有可训练参数,γ为正则化超参数。
4.6 算法描述
模型描述在算法 1 中。给定异构图 G、子图 Gk、聚类数 C、温度系数 τ 和 τ0,MBRCC 的目标是为每个用户生成一个 Top-N 推荐列表。算法 1 描述了 MBRCC 的训练过程,主要分为三个任务,每个任务分别包含一个损失函数。
实验
想看一下对比聚类怎么用到推荐算法中。。。
相关文章:
【论文阅读】Contrastive Clustering Learning for Multi-Behavior Recommendation
论文地址:Contrastive Clustering Learning for Multi-Behavior Recommendation | ACM Transactions on Information Systems 摘要 近年来,多行为推荐模型取得了显著成功。然而,许多模型未充分考虑不同行为之间的共性与差异性,以…...
细胞计数专题 | 高效 + 精准!点成LUNA-III™细胞计数仪解锁活细胞检测与浓度分析新高度
1 引言 在生物医学研究中,准确的细胞计数至关重要,它影响着细胞治疗、疾病诊断、组织再生和生物测定等应用领域。传统的手动计数方法既耗时又容易产生偏差。像点成LUNA-III™自动细胞计数仪这样的自动化系统,为提高计数的准确性、可重复性和…...
糊涂人寄信——递推
思路分析:当有n封信,n个信封时。第k封信没有装在第k个信封里(k从1~n),就算所有的信封都装错了。我们可以得知的是,当有1封信,时,装错类别数为0。当有两封信时,装错类别为1。 当有三…...
深入Python C API:掌握常用函数与实战技巧
深入Python C API:掌握常用函数与实战技巧 Python的灵活性和易用性使其成为广泛应用的编程语言,但在某些场景下(如高性能计算、与C/C代码交互),直接使用C语言扩展Python的能力变得尤为重要。Python C API(…...
第16章:基于CNN和Transformer对心脏左心室的实验分析及改进策略
目录 1. 项目需求 2. 网络选择 2.1 UNet模块 2.2 TransUnet 2.2.1 SE模块 2.2.2 CBAM 2.3 关键代码 3 对比试验 3.1 unet 3.2 transformerSE 3.3 transformerCBAM 4. 结果分析 5. 推理 6. 下载 1. 项目需求 本文需要做的工作是基于CNN和Transformer的心脏左心室…...
Word中公式自动标号带章节编号
(1)插入一行三列的表格,设置宽度分别为0.5,13.39和1.5,设置纵向居中,中间列居中对齐,最右侧列靠右对齐,设置段落如下 (2)插入域代码 【Word】利用域代码快速实…...
AI风向标《AI与视频制作全攻略:从入门到精通实战课程》
课程信息 AI风向标《AI与视频制作全攻略:从入门到精通实战课程》,夸克网盘和百度网盘课程。 课程介绍 《AI与视频制作全攻略:从入门到精通实战课程》是一套全面融合AI技术与视频制作的实战课程,旨在帮助创作者从基础软件使用到高级视频剪辑…...
el-table折叠懒加载支持排序
el-table折叠懒加载支持排序 因为el-table懒加载的子节点是通过缓存实现的,如果想在展开的情况下直接刷新对应子节点数据,要操作el-table组件自身数据,否则不会更新 以排序功能为例 maps: new Map() //用于存储子节点懒加载的数据// 加载子…...
Kotlin v2.1.20 发布,标准库又有哪些变化?
大家吼哇!就在三小时前,Kotlin v2.1.20 发布了,更新的内容也已经在官网上更新:What’s new in Kotlin 2.1.20 。 我粗略地看了一下,下面为大家选出一些我比较感兴趣、且你可能也会感兴趣的内容。 注意!这里…...
AI智能问答“胡说八道“-RAG探索之路
AI智能问答"胡说八道"-RAG探索之路 背景信息RAGRAG技术的知识难题分块矛盾知识缺失相互冲突 RAG知识优化实践分块优化缺失优化冲突优化 未来展望 背景信息 你有没有遇到过这样的场景?当你向智能助手提问:“某科技公司为何突然更换高层领导&am…...
【yolo】YOLO训练参数输入之模型输入尺寸
模型输入尺寸是YOLO训练和推理过程中非常重要的参数之一。YOLO要求输入图像的尺寸是固定的,通常为正方形(如416416、640640等)。这个尺寸直接影响模型的性能和速度。以下是对模型输入尺寸的详细介绍: 1. 模型输入尺寸的作用 统一…...
[原创](Modern C++)现代C++的关键性概念: 如何声明一个返回数组指针的函数?
[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、C …...
1204. 【高精度练习】密码
文章目录 题目描述输入输出样例输入样例输出数据范围限制CAC代码 题目描述 人们在做一个破译密码游戏: 有两支密码棒分别是红色和蓝色,把红色密码棒上的数字减去蓝色 密码棒上的数字,就是开启密码锁的密码。 现已知密码棒上的数字位数不超过…...
DigitalFoto公司如何用日事清流程管理工具实现任务优先级与状态可视化?
一、业务介绍 在DigitalFoto,设计和制造先进的摄影器材,如稳定器、灯光设备和支架,是日常工作的核心。公司的业务模式包括为其他品牌设计和制造定制产品,无论是作为OEM还是ODM。这样的多样化业务需求推动了公司在产品开发上必须非…...
解锁C++编程能力:基础语法解析
C入门基础 一、C的第一个程序二、命名空间三、C输入&输出四、缺省参数/默认参数五、函数重载六、引用1.引用的特性2.引用的使用引用做返回值场景 3.const引用只有指针和引用涉及权限放大、缩小的问题,普通变量没有 4.指针和引用的关系 七、inline八、nullptr 一…...
【Leetcode 每日一题】2680. 最大或值
问题背景 给你一个下标从 0 0 0 开始长度为 n n n 的整数数组 n u m s nums nums 和一个整数 k k k。每一次操作中,你可以选择一个数并将它乘 2 2 2。 你最多可以进行 k k k 次操作,请你返回 n u m s [ 0 ] ∣ n u m s [ 1 ] ∣ . . . ∣ n u m …...
YOLO魔改之SAM空间注意力模块
基于SAM注意力的YOLOv7改进算法详解(可用于工业检测方案) 一、应用场景说明 本改进算法适用于以下工业检测场景: 复杂背景下的微小目标检测(电子元件缺陷、PCB板焊点)密集目标重叠检测(传送带上的包裹分拣、人群计数)动态环境目标追踪(无人机巡检、自动驾…...
基于 TRIZ 理论的筏式养殖吊笼清洗装备设计研究
基于 TRIZ 理论的筏式养殖吊笼清洗装备设计研究 一、引言 筏式养殖在水产养殖业中占据重要地位,吊笼作为养殖贝类、藻类等生物的关键器具,其清洁程度直接影响养殖生物的健康与产量。传统的吊笼清洗方式多依赖人工,效率低下、劳动强度大且清洗…...
Day11 动态规划入门
动态规划 就是 : 给定一个问题,我们把它拆成一个个子问题,直到子问题可以直接解决。然后把子问题的答案保存起来,以减少重复计算。再根据子问题答案反推,得出原问题解的一种方法. 记忆化搜索 暴力dfs 记录答案 动态规划入门思…...
配置阿里云yum源
配置阿里云yum源 修改默认的yum仓库,把原有的移动到创建的目录里(踢出国外的yum源) # 切换到/ect/yum.repos.d/目录下 cd /etc/yum.repos.d/ # 新建repo目录 mkdir repo # 把原有的移动到创建的目录里 mv ./*.repo ./repo/配置yum源 # 找到…...
在Linux系统安装Ollama两种方法:自动安装和手动安装,并配置自启动服务
目录 一、命令自动安装 (一)使用命令行安装 (二)配置环境变量 (三)重新加载systemd配置并重启服务 二、手动安装 (一)下载本地文件 (二)解压并安…...
Python Django入门(创建应用程序)
在本章中,你将学习如何使用 Django(http://djangoproject.com/ )来开发一个名为“学习笔记”(Learning Log)的项目,这是一个在线日志系统,让你能够记录所学习的有关特定主题的知识。 我们将为这…...
HCIP-2 RSTP快速生成树
HCIP-2 RSTP快速生成树 STP的不足: 1.STP的端口角色过于简单不丰富,部署时不能很好的应用与较为复杂的网络环境中。 2.STP的迁移状态过于冗长,侦听、学习、阻塞状态下都是不转发业务流量。 3.STP的算法较为繁琐。 TCN TCA TC。 4.STP被动…...
软考-软件设计师-计算机网络
一、七层模型 中继器:信号会随着距离的增加而逐渐衰减,中继器可以接受一端的信息再将其原封不动的发给另一端,起到延长传输距离的作用; 集线器:多端口的中继器,所有端口公用一个冲突域; 网桥&…...
夸克网盘任务脚本——进阶自动版
脚本是用于自动管理和更新夸克云盘(Quark Cloud Drive)上的文件和目录的Python脚本。其主要功能包括自动下载、更新、重命名、删除文件和文件夹,以及处理和发送通知,可以在特定的时间间隔内运行,根据配置文件进行操作。 主要功能 1. Quark 类: __init__:初始化类,设置…...
squirrel语言全面介绍
Squirrel 是一种较新的程序设计语言,由意大利人 Alberto Demichelis 开发,其设计目标是成为一个强大的脚本工具,适用于游戏等对大小、内存带宽和实时性有要求的应用程序。以下是对 Squirrel 语言的全面介绍: 语言特性 动态类型&a…...
北京南文观点:品牌如何抢占AI 认知的 “黄金节点“
在算法主导的信息洪流中,品牌正在经历一场隐蔽的认知权争夺战,当用户向ChatGPT咨询"哪家新能源车企技术最可靠"时,AI调取的知识图谱数据源将直接决定品牌认知排序。南文乐园科技文化(北京)有限公司ÿ…...
使用Python在Word中创建、读取和删除列表 - 详解
目录 工具与设置 Python在Word中创建列表 使用默认样式创建有序(编号)列表 使用默认样式创建无序(项目符号)列表 创建多级列表 使用自定义样式创建列表 Python读取Word中的列表 Python从Word中删除列表 在Word中ÿ…...
分布式中间件:RabbitMQ确认消费机制
分布式中间件:RabbitMQ确认消费机制 在分布式系统中,消息队列是实现异步通信和系统解耦的重要组件。RabbitMQ 作为一款功能强大的消息队列中间件,提供了丰富的特性来保证消息的可靠传输和消费。其中,确认消费机制是确保消息被正确…...
Redis的大Key问题如何解决?
大家好,我是锋哥。今天分享关于【Redis的大Key问题如何解决?】面试题。希望对大家有帮助; Redis的大Key问题如何解决? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis的大Key问题指的是存储在Redis中的某些键(Key…...
日语学习-日语知识点小记-构建基础-JLPT-N4N5阶段(25):解释说明:という
日语学习-日语知识点小记-构建基础-JLPT-N4&N5阶段(25):解释说明:という 1、前言(1)情况说明(2)工程师的信仰2、知识点(1)复习语法(2) 解释说明:という3、单词(1)日语单词(2)日语片假名单词4、相近词辨析5、单词辨析记录6、总结1、前言 (1)情况说明 …...
Windows10配置OpenJDK11
下载 # 华为OpenJDK镜像源 https://mirrors.huaweicloud.com/openjdk/11.0.2/解压 # 解压后至于C:\Dev\Env\Java\jdk-11.0.2目录下 https://mirrors.huaweicloud.com/openjdk/11.0.2/openjdk-11.0.2_windows-x64_bin.zip编译安装 # 以管理员身份运行 CMD命令提示符 并进入JD…...
Python实验:读写文本文件并添加行号
[实验目的] 熟练掌握内置函数open()的用法;熟练运用内置函数len()、max()、和enumerate();熟练运用字符串的strip()、ljust()和其它方法;熟练运用列表推导式。 [实验和内容] 1.编写一个程序demo.py,要求运行该程序后࿰…...
什么是 NDC 坐标?什么是世界坐标?
什么是 NDC 坐标(归一化设备坐标)? 定义 NDC(Normalized Device Coordinates) 是三维图形渲染管线中的中间坐标系统,范围为 [-1, 1](x、y、z 轴均为此范围)。它是设备无关的标准化…...
25年护网二面
《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…...
《鸟哥的Linux私房菜基础篇》---5 vim 程序编辑器
目录 一、vim程序编辑器的简介 二、命令模式快捷键(默认模式) 1、光标移动 2、编辑操作 3、搜索与替换 三、插入模式快捷键 四、底行模式快捷键(按:进入) 五、高级技巧 1、分屏操作 2、多文件编辑 3、可视化…...
Day21:在排序数组中查找数字
某班级考试成绩按非严格递增顺序记录于整数数组 scores,请返回目标成绩 target 的出现次数。 示例 1: 输入: scores [2, 2, 3, 4, 4, 4, 5, 6, 6, 8], target 4 输出: 3 示例 2: 输入: scores [1, 2, 3, 5, 7, 9], target 6 输出: 0 …...
Android音视频多媒体开源库基础大全
从事音视频开发工作,需要了解哪些常见的开源库,从应用到底软系统,整理了九大类,这里一次帮你总结完。 包含了应用层的MediaRecorder、surfaceView,以及常见音视频处理库FFmpeg和OpenCV,还有视频渲染和音频…...
ManiWAV:通过野外的音频-视频数据学习机器人操作
24年6月来自斯坦福大学、哥伦比亚大学和 TRI 的论文“ManiWAV: Learning Robot Manipulation from In-the-Wild Audio-Visual Data”。 音频信号通过接触为机器人交互和物体属性提供丰富的信息。这些信息可以简化接触丰富的机器人操作技能学习,尤其是当视觉信息本身…...
传感器研习社:Swift Navigation与意法半导体(STMicroelectronics)合作 共同推出端到端GNSS汽车自动驾驶解决方案
自动驾驶系统单纯依赖感知传感器进行定位在遇到恶劣天气或缺乏车道标线的道路场景时很容易失效。此外,由于激光雷达(LiDAR)、视觉等传感器的成本高昂以及将众多不同组件整合为统一系统的复杂性,都可能增加产品研发成本或延迟产品上…...
Java 二维数组元素降序排序(非冒泡排序)
说明:每次比较出最大值后,把最大值设置为最小值-1,再次比较该数组; 创建Object b[][] new Object[N][2];来存储String和Int两种类型数据到同一个数组里 package com.MyJava;import java.util.Scanner;public class Test {public…...
梦回杭州...
她对我说,烟雨中的西湖更别有情趣,我也怀着对‘人间天堂’的憧憬踏上了向往之旅。第一次亲密接触没有感觉中那么好,现在想起来是那时的人和心情都没能安静下来,去慢慢品味它的美。 六下杭州,亲历每一片风景,…...
Spring Boot整合Apache BookKeeper教程
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 Spring Boot整合Apache BookKeeper教程 1. 简介 Apache BookKeeper 是一个高性能、持久化的分布式日志存储系统,适用于需要强一致性和高吞吐量的…...
C++项目——内存池
C项目——内存池 前置知识 std::allocator c中所有stl容器都有自己的allocator类用于分配和回收空间,例如vector类中push_back函数的实现方式: template <class T> void Vector<T>::push_back(const T& t) { // are we out of space…...
【设计模式】SOLID 设计原则概述
SOLID 是面向对象设计中的五大原则,不管什么面向对象的语言, 这个准则都很重要,如果你没听说过,赶紧先学一下。它可以提高代码的可维护性、可扩展性和可读性,使代码更加健壮、易于测试和扩展。SOLID 代表以下五个设计原…...
Deepseek-r1:14b+ScraperAPI实现联网本地大模型回答
文章目录 前言一、Deekseek本地部署二、SerpAPI1.什么是SerpAPI?2.如何使用SerpAPI进行Web搜索 三、实现Deepseek-r1:14bScraperAPI实现联网本地大模型回答1. Code 前言 我需要对本地的Deepseek-r1:14b进行提问,我发现它对于实时的问题,或者…...
DHCP工作原理
DHCP报文类型 DHCP Discover 客户端广播发送DHCP discover报文消息, 客户端通过UDP68端口向网络上发送DHCP discover数据包(包含MAC地址和计算机名等信息).源为0.0.0.0, 目的为255.255.255.255 discover等待时间默认为1秒, 1秒内没有得到回应, 客户机会将这一广播包重新发送4次…...
JVM常见面试总结
JVM(Java虚拟机)是Java程序运行的核心,掌握JVM相关知识对于Java开发者至关重要。以下是JVM常见的面试问题总结: 1. JVM内存模型 问题:JVM的内存结构分为哪些部分? 答案: 方法区(Met…...
博客系统自动化测试报告
1.项目背景 基于SSM框架实现的个人博客系统,现有登录注销页面,博客列表页,博客内容页,博客编辑页面。登录即可查看自己曾经发表的博客,通过使用Selenium定位web元素、对获取到的元素进行操作等,对博客系统…...
如何选择合适的 AI 模型?(开源 vs 商业 API,应用场景分析)
1. 引言 在 AI 迅猛发展的今天,各类 AI 模型层出不穷,从开源模型(如 DeepSeek、Llama、Qwen)到商业 API(如 OpenAI 的 ChatGPT、Anthropic 的 Claude、Google Gemini),每种方案都有其优势与适用…...