当前位置: 首页 > news >正文

一种数据高效具身操作的原子技能库构建方法

25年1月来自京东、中科大、深圳大学、海尔集团、地平线机器人和睿尔曼智能科技的论文“An Atomic Skill Library Construction Method for Data-Efficient Embodied Manipulation”。

具身操控是具身人工智能领域的一项基本能力。尽管目前的具身操控模型在特定场景下表现出一定的泛化能力,但由于现实场景的复杂性和多样性,它们在新的环境和任务中表现不佳。传统的端到端数据收集和训练方式,对数据需求巨大,将端到端任务分解为原子技能有助于减少数据需求,提高任务成功率。然而,现有方法受限于预定义的技能集,无法动态更新。针对该问题,引入一种三-轮数据-驱动方法来构建原子技能库。用视觉-语言-规划(VLP)将任务划分为子任务。然后,通过抽象子任务形成原子技能定义。最后,通过数据收集和视觉-语言-动作(VLA)微调构建原子技能库。随着原子技能库通过三轮更新策略动态扩展,其可覆盖的任务范围自然增长。通过这种方式,该方法将重点从端到端任务转移到原子技能,在保持高性能的同时显著降低数据成本,并能够高效地适应新任务。

具身智能,主要指“具身人工智能”,在生成式人工智能时代取得重大进展。通过将文本、图像和语音等多模态数据映射到统一的语义连续向量空间,实现域无关的跨模态集成。该空间将语义离散符号空间与特征连续向量空间紧密联系在一起,为具身智能发展为通用形式提供新的机会。端到端的具身操控,尤其是视觉-语言-动作(VLA)模型,由于具身数据的可用性[O’Neill, 2023] [Khazatsky, 2024]和多模态技术的进步,取得重大进展,表现出越来越强的通用性和泛化能力,大大增强服务机器人的实际应用潜力。

VLA 模型的最新进展表明,它具有实现端到端具体化操作任务的巨大潜力。这些模型通常采用端到端训练范式,集成视觉、语言和动作数据来理解和执行任务指令。这种多模态集成使机器人能够在动态和非结构化环境中处理复杂的任务。

OpenVLA [Kim et al., 2024] 通过针对新目标场景定制的参数高效微调和量化实现有效的机器人控制。同时,扩散模型 [Ho et al., 2020] [Song et al., 2020] [Rombach et al., 2022] 凭借其出色的表现力和高质量的采样能力,已成为众多应用的主干网络。在机器人技术中,扩散模型已成为策略表示的首选。例如,扩散策略 [Chi et al., 2023] 率先使用条件去噪扩散过程来模拟机器人行为,有效地表示视觉运动策略。Octo [Team et al., 2024] 是一种大规模通用策略,支持通过语言命令或目标图像进行各种任务指导。RDT- 1B [Liu et al., 2024] 利用扩散 Transformer (DiT) [Peebles & Xie, 2023] 作为其可扩展的主干,在双臂机器人平台上提供卓越的性能。最近,研究人员 [Black et al., 2024] 提出一种流匹配动作分块架构 [Zhao et al., 2023] 来模拟复杂的连续动作分布。尽管 VLA 模型在机器人控制方面取得重大进展,但当前的具身操控方法仍然面临严峻挑战,尤其是需要大量数据才能有效地学习和概括复杂任务。

目前的具身操控模型,虽然在特定场景下表现出一定的泛化能力,但在适应新环境和任务方面面临挑战 [Black,2024][Li,2024]。值得注意的是,目前的具身操控模型具有端到端导向的特点,数据收集和模型训练都是基于特定的端到端任务进行的。在科学研究中,可以人为定义一定数量的端到端任务作为标准,以促进算法性能的提升 [Team,2024][Liu,2024]。然而,现实世界场景的多样性和复杂性使得端到端方法并不适用于一般具身操控的实际应用。一方面,现实世界的任务无法枚举,而端到端方法无法将学习的任务能力扩展到新任务中。另一方面,随着任务复杂度的增加(例如程序变得更加复杂),任务的数据需求也必须增加才能保持令人满意的性能。这些问题使得每一项任务都需要大量相应的新数据 [Kim, 2024] [Liu, 2024],从而导致“数据爆炸”的风险,这严重阻碍具身操控模型的实际应用。

VLP 是指将视觉信息和语言指令结合到具体操作中的任务规划。面对现实世界的任务时,直接的端到端执行具有挑战性,并且通常会导致性能不佳。这一缺陷使得有效的任务分解和规划迫在眉睫。UOF [Yang et al., 2021] 结合复杂任务中中间步骤的规划和控制,使机器人能够在多步骤任务中学习不同的结果。ECoT [Za- walski et al., 2024] 引入思维链 (CoT) 方法,在该方法中,他们训练 VLA 对规划、子任务、运动和视觉基础特征(如目标边框和末端执行器位置)进行多步推理,然后再预测机器人动作。 RoboMatrix[Mao et al., 2024] 直接使用专有的 VLM 进行任务分解,并使用现有的目标检测模型根据对目标存在的判断来检查执行状态。虽然以前的 VLP 方法表现出一定的有效性,但它们仅限于目标和场景描述等基本视觉信息,而缺乏空间智能,而空间智能对于现实世界的具体操作至关重要。

鉴于这些与端到端方法相关的挑战,一个自然的解决方案是将端到端任务的执行分解为原子技能的顺序执行 [Diab, 2020] [Mao, 2024]。这些原子技能更细粒度和更通用,允许在不同场景和任务之间重用。此外,将端到端任务 [Team, 2024] [Kim, 2024] 映射到原子技能,有助于减少数据需求并提高任务执行成功率。尽管之前对原子技能的研究已经证明其有效性,但它受到手动预定义特定技能的限制。预定义的技能集非常有限,无法动态更新和扩展,因此对于现实世界中的一般具身操作仍然非常低效。实际上,基于当今强大的单模态和多模态理解和推理技术,自动任务分解、规划和技能定义是可行的。

SkillMaN [Diab, 2020] 框架包括一个具有经验知识的模块,该模块演示如何使用工作流和机器人轨迹执行一组技能。对于复杂任务,一些研究人员 [Kroemer, 2021] 专注于任务的层次分解和机器人技能的可重用性。最近的方法结合任务规划,使用智体自动将复杂任务分解为原子任务,而不是依赖于手动分解。例如,研究人员 [Zhao, 2022] 使用基元、技能分解和综合的概念来分析机器人拆弹任务所涉及的操作技能,并提出一种基于知识的方法来学习这些操作技能。 RoboMatrix[Mao,2024]引入元技能的概念,但局限于人工预定义的技能集,不能有效应对数据爆炸,也无法支持VLP和VLA模块的更新。

鉴于原子技能的潜力和现有技术的局限性,本文工作重点是开发一种实用的原子技能库构建方法,以实现现实场景中数据高效的具身操作。

目标是开发一种数据驱动的方法来生成技能库,通过三个集成的子模块实现持续的自我更新。所提方法的框架如图所示。具体而言,对于用户提供的任务指令,VLP模块将指令分解为相应的子任务。接下来,高级语义抽象模块将这些子任务抽象为一组通用的原子技能定义。最后,收集数据并微调VLA模型以获取原子技能,最终构建一个综合技能库。

请添加图片描述

当面对新任务时,该框架调用VLP进行任务规划,并从技能库中检索相应的原子技能。如果库涵盖所有必需的技能,则将执行该任务,而无需任何额外的数据收集和微调。如果缺少特定技能,则高级语义抽象模块将唤醒以更新原子技能集,并且只需要缺少技能的轨迹数据。例如,如果提出一项新任务“给客人一杯水”,而当前的原子技能库包括技能“举起瓶子”和“将瓶子对准并倾斜到杯子”,则只需要一项新技能“递杯子”。通过这种方式,该方法可以在很少甚至不需要额外数据的情况下执行新任务,从而有效地提高数据效率和通用性。

VLP 智体轮

为了统一实现训练过程中的任务分解和推理过程中的任务规划,构建一个集成视觉感知、语言理解和空间智能的 VLP 智体。

如图所示,给定基于文本的任务指令和基于图像的当前观察,引入现成的 VLM Prismatic 模型 [Karamcheti et al., 2024] 来生成与观察图像相对应的场景描述。考虑到 3D 世界的空间复杂性,设计一种空间关系-觉察策略。

请添加图片描述

首先使用 Dino-X [Ren et al., 2024],一种目标检测模型,来检测观察中与任务相关的目标,并以边框的形式输出每个目标的位置。为了更精确地定位目标,使用 SAM-2 [Ravi et al., 2024] 来获取每个目标的精细分割掩码。然后,执行基于规则的算法来判断目标之间的空间关系。将视觉感知与空间智能相结合,将它们与任务指令一起放入GPT-4中,并提示它将任务分解为子任务并管理它们的执行顺序。专门设计的提示,要求GPT-4按顺序执行以下步骤:根据详细的任务描述生成完整的执行规划,并指定下一步需要执行哪个子任务。

这样,在构建原子技能库的过程中,VLP 智体可以有效地将端到端任务分解为多个子任务。在实际推理过程中,VLP 智体提供关键的低频控制信号来规划和指导高频原子技能执行。

VLA 轮

对于所提出的数据驱动技能库生成方法,任何 SOTA VLA 方法都可用于原子技能构建。最初,VLA 模型作为提示输入,帮助高级语义抽象模块将复杂的子任务映射到结构化的原子技能定义集。随后,VLA 模型通过数据收集和少样本学习(FSL)促进技能库的构建,实现高效且可扩展的技能获取。

原子技能的粒度由 VLA 模型的性能决定,特别是在其可塑性和适应性方面。VLA 模型的可塑性,反映其从预训练状态有效过渡到微调模型的能力,从而适应新的机器人平台。另一方面,微调 VLA 模型的适应性,表明其处理不同目标、场景和空间配置的能力。更高水平的可塑性和适应性,导致原子技能定义的粒度更粗一些。

例如,在 RDT-1B 模型中,在 40 个 A800 80GB GPU 上对其发布的预训练模型进行微调,以构建原子技能库。微调数据包括 6,000 条开源轨迹和 2,000 条专有轨迹,由使用 Mobile ALOHA 系统设计 [Fu, 2024] 并由松灵机器人(agilex.ai)制造的机器人收集。经过微调的 VLA 模型可以快速构建原子技能。在不同的传感器、物体和场景中验证了它的性能。

然而,该模型对目标物体位置的泛化能力有限,训练步骤的数量对其行为有显著影响。为了解决这些问题,进行两项实验:首先,为一项任务收集一个包含不同目标位置的小型数据集,并进行少样本训练和测试。具体来说,从桌子上的九个不同位置点收集轨迹数据。结果表明,目标位置的泛化能力显著提高,在这九个点定义的整个区域内都成功实现抓取。其次,用 8 个 L40s GPU 进行少样本训练步骤测试,将训练步骤设置为 1,000、2,000 和 4,000。结果表明,1,000 个训练步骤在训练效果和持续时间之间实现最佳平衡。

这些实验强调,预训练模型的可塑性以及微调模型对各种目标、场景和空间位置的适应性对于技能库构建至关重要。这些因素作为高级语义抽象模块的输入,有助于将子任务映射到一组原子技能定义。从原子技能定义到构建技能库,在 VLA 模型上采用少样本微调方法,为每个定义的原子技能利用少量收集的轨迹数据。这种方法可以快速实现原子技能,大大加快技能库的开发过程。

原子技能轮

对于一组任务 (A、B、…、N),VLP 模块将这些任务分解为相应的子任务 (#1、#2、#3、#4、#5、…、#a、#a+1)。接下来,使用高级语义抽象模块将这些子任务按一定粒度抽象为一组通用的原子技能定义,粒度由不同 VLA 模型的性能决定。可以使用 GPT-4 等 LLM 来实现。原子技能定义包括 *1、*2、*3、*4、*5、…、*b、*b+1。通过数据收集和对 VLA 模型进行微调,最终可以得到一个原子技能库 *1’、*2’、*3’、*4’、*5’、…、*b’、*b+1’。

当面对新任务 TASK N+1 时,可能会出现两种情况。在第一种情况下,新任务所需的原子技能已经被现有的原子技能库覆盖,该方法可以直接执行任务而无需进行任何进一步的调整。在第二种情况下,库中缺少特定的原子技能,再次使用高级语义抽象模块。它将新任务(N+1)的子任务、所需的技能粒度和当前的原子技能定义集作为输入,生成一组更新的原子技能定义。此后,只需要对缺失的原子技能进行额外的数据收集和微调,这使得这种方法比传统的端到端方法高效得多。而且,随着原子技能库的动态扩展,其能处理的任务范围也相应增加。

实验设置如下。

基线。该方法可以集成到不同的端到端 VLA 模型中。用 RDT-1B 和 Octo 模型作为基线,并在 ALOHA 双臂机器人上进行实验。根据研究和测试,其他广泛使用的 VLA(如 OpenVLA)很难适应双臂移动 ALOHA 硬件设置。因此,将这些模型排除在实验之外。

任务。选择四个具有挑战性的任务来从不同维度评估方法的性能,包括模型在实际任务中可能遇到的复杂场景,例如目标的各种位置和复杂的操作。前三个任务专门用于验证方法的数据效率和性能,而第四个任务用于评估其对新任务的适应性。详细的任务定义和可视化如图所示。

请添加图片描述

数据。收集轨迹数据样本以微调主干 VLA 模型。每项任务的演示数量如下:
• 倒水:3 种不同的瓶子位置和 3 种不同的杯子位置,每种设置 3 个演示,端到端微调有 27 个演示,基于技能的 VLA 微调有 9 个和 9 个演示。
• 拾取和放置香蕉:4 种不同的香蕉位置和 2 种不同的盘子位置,每种设置 3 个演示,端到端 VLA 微调有 24 个演示,基于技能的 VLA 微调有 9 个和 6 个演示。
• 拾取和放置笔:3 种不同的瓶子位置和 3 种不同的杯子位置,每种不同设置 3 个演示,端到端 VLA 微调有 27 个演示,基于技能的 VLA 微调有 9 个和 9 个演示。
• 按顺序移动块:10 个按红-绿-蓝顺序的演示用于端到端 VLA 微调,10 个分别移动红、绿、蓝块的演示用于基于技能的 VLA 微调。

相关文章:

一种数据高效具身操作的原子技能库构建方法

25年1月来自京东、中科大、深圳大学、海尔集团、地平线机器人和睿尔曼智能科技的论文“An Atomic Skill Library Construction Method for Data-Efficient Embodied Manipulation”。 具身操控是具身人工智能领域的一项基本能力。尽管目前的具身操控模型在特定场景下表现出一定…...

云创智城YunCharge 新能源二轮、四轮充电解决方案(云快充、万马爱充、中电联、OCPP1.6J等多个私有单车、汽车充电协议)之新能源充电行业系统说明书

云创智城YunCharge 新能源充电行业系统说明书 ⚡官方文档 ⚡官网地址 1. 引言 随着全球环境保护和能源危机的加剧,新能源汽车行业得到了快速发展,充电基础设施建设也随之蓬勃发展。新能源充电行业系统旨在提供高效、便捷的充电服务,满足电…...

JVM垃圾回收器深度底层原理分析与知识体系构建

一、垃圾回收的基本步骤 标记(Marking) 从GC Roots(如虚拟机栈、方法区静态变量、本地方法栈等)出发,遍历对象引用链,标记所有可达对象为存活对象,未被标记的则视为垃圾。此阶段需暂停用户线程&…...

30.[前端开发-JavaScript基础]Day07-数组Array-高阶函数-日期Date-DOM

JavaScript的DOM操作 (一) 1 什么是DOM? 认识DOM和BOM 深入理解DOM 2 认识DOM Tree DOM Tree的理解 3 DOM的整体结构 DOM的学习顺序 DOM的继承关系图 document对象 4 节点、元素导航 节点(Node)之间的导航&…...

IP、网关、子网掩码、DNS 之间的关系详解

IP、网关、子网掩码、DNS 之间的关系详解 在计算机网络中,IP、网关、子网掩码和 DNS 是几个关键概念,它们协同工作,共同保障网络通信的顺畅。本文将详细探讨它们之间的关系。 一、IP 地址 IP 地址是网络中设备的唯一标识,如同现…...

【Day50 LeetCode】图论问题 Ⅷ

一、图论问题 Ⅷ 1、dijkstra算法 堆优化 采用堆来优化&#xff0c;适合节点多的稀疏图。代码如下&#xff1a; # include<iostream> # include<vector> # include<list> # include<queue> # include<climits>using namespace std;class myco…...

结构体介绍及内存大小分配问题

结构体 一.结构体的介绍1.1结构体的声明1.2匿名结构体1.3结构的自引用1.4使用 typedef 简化结构体类型名 二.结构体内存对齐2.1内存对齐规则2.2结构体内存对齐原因2.3修改默认对齐数 在 C 语言中&#xff0c;结构体&#xff08;struct&#xff09;是一种用户自定义的数据类型&a…...

halcon 条形码、二维码识别、opencv识别

一、条形码 函数介绍 create_bar_code_model * 1.创建条码读取器的模板 * 参数一&#xff1a;通用参数的名称&#xff0c;针对条形码模型进行调整。默认值为空 * 参数二&#xff1a;针对条形码模型进行调整 * 参数三&#xff1a;条形码模型的句柄。 create_bar_code_model (…...

Vue框架的使用 搭建打包 Vue的安全问题(Xss,源码泄露)

前言 什么是Vue&#xff1f; Vue是轻量级的js框架 可以帮助我们一键构造网站&#xff0c;打包app程序等 Vue的基本使用 1、构造框架并启用 新建一个 目录 使用终端切换到当前的目录 创建vue项目 第一个弹出使用语法我们选择是 剩下的全选择否 发现创建好了 接着进行…...

Java+SpringBoot+Vue+数据可视化的音乐推荐与可视化平台(程序+论文+讲解+安装+调试+售后)

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 系统介绍 在互联网技术以日新月异之势迅猛发展的浪潮下&#xff0c;5G 通信技术的普及、云计算能力…...

day2 - SpringBoot框架开发技术

主要内容 1. SpringBoot简介 2. 构建springboot工程 3. springboot接口返回json 4. springboot热部署 5. springboot资源属性配置 6. springboot整合模板引擎 7. springboot异常处理 8. springboot整合MyBatis 9. springboot整合redis 10. springboot整合定时任务 11. springbo…...

Flash-03

1-问题&#xff1a;Flash软件画两个图形&#xff0c;若有部分重合则变为一个整体 解决方法1&#xff1a;两个图形分属于不同的图层 解决方法2&#xff1a;将每个图形都转化为【元件】 问题2&#xff1a;元件是什么&#xff1f; 在 Adobe Flash&#xff08;现在称为 Adobe Anim…...

新建菜单项的创建之CmpGetValueListFromCache函数分析

第一部分&#xff1a; PCELL_DATA CmpGetValueListFromCache( IN PHHIVE Hive, IN PCACHED_CHILD_LIST ChildList, OUT BOOLEAN *IndexCached, OUT PHCELL_INDEX ValueListToRelease ) 0: kd> dv KeyControlBlock 0xe1…...

【Word2Vec】Skip-gram 的直观理解(深入浅出)

01 什么是skip-gram 一句话来说就是&#xff0c;给定中心词&#xff0c;然后预测其周围的词&#xff1a; 02 模型结构 对于skip-gram来说&#xff0c;输入是一个[1 x V]维的ont-hot向量&#xff0c;其中V为词表大小&#xff0c;值为1的那一项就表示我们的中心词。经过一个[V x…...

在MacOS上打造本地部署的大模型知识库(一)

一、在MacOS上安装Ollama docker run -d -p 3000:8080 --add-hosthost.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main 最后停掉Docker的ollama&#xff0c;就能在webui中加载llama模…...

(21)从strerror到strtok:解码C语言字符函数的“生存指南2”

❤个人主页&#xff1a;折枝寄北的博客 ❤专栏位置&#xff1a;简单入手C语言专栏 目录 前言1. 错误信息报告1.1 strerror 2. 字符操作2.1 字符分类函数2.2 字符转换函数 3. 内存操作函数3.1 memcpy3.2 memmove3.2memset3.3 memcmp 感谢您的阅读 前言 当你写下strcpy(dest, s…...

DeepSeek推出DeepEP:首个开源EP通信库,让MoE模型训练与推理起飞!

今天&#xff0c;DeepSeek 在继 FlashMLA 之后&#xff0c;推出了第二个 OpenSourceWeek 开源项目——DeepEP。 作为首个专为MoE&#xff08;Mixture-of-Experts&#xff09;训练与推理设计的开源 EP 通信库&#xff0c;DeepEP 在EP&#xff08;Expert Parallelism&#xff09…...

1.2 Kaggle大白话:Eedi竞赛Transformer框架解决方案02-GPT_4o生成训练集缺失数据

目录 0. 本栏目竞赛汇总表1. 本文主旨2. AI工程架构3. 数据预处理模块3.1 配置数据路径和处理参数3.2 配置API参数3.3 配置输出路径 4. AI并行处理模块4.1 定义LLM客户端类4.2 定义数据处理函数4.3 定义JSON保存函数4.4 定义数据分片函数4.5 定义分片处理函数4.5 定义文件名排序…...

数据结构-顺序表专题

大家好&#xff01;这里是摆子&#xff0c;今天给大家带来的是C语言数据结构开端-顺序表专题&#xff0c;主要介绍了数据结构和动态顺序表的实现&#xff0c;快来看看吧&#xff01;记得一键三连哦&#xff01; 1.数据结构的概念 1.1什么是数据结构&#xff1f; 数据结构是计…...

docker和containerd从TLS harbor拉取镜像

私有镜像仓库配置了自签名证书&#xff0c;https访问&#xff0c;好处是不需要处理免费证书和付费证书带来的证书文件变更&#xff0c;证书文件变更后需要重启服务&#xff0c;自签名证书需要将一套客户端证书存放在/etc/docker/cert.d目录下&#xff0c;或者/etc/containerd/c…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...