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

GRAPE——RLAIF微调VLA模型:通过偏好对齐提升机器人策略的泛化能力(含24年具身模型汇总)

前言 24年具身前沿模型大汇总

过去的这两年,工作之余,我狂写大模型与具身的文章,加之具身大火,每周都有各种朋友通过CSDN私我及我司「七月在线」寻求帮助/指导(当然,也欢迎各大开发团队与我司合作共同交付):

  • 要么是做科研想复现
  • 要么是工厂想做自动化生产线的智能升级
  • 要么是想通过机械臂/人形解决各种业务场景问题

让我感慨:二零一一年,因为算法,首次有「天下无人不识君」的感觉,过去这两年,因为大模型和具身机器人,再次有了这感觉

具身的论文解读过很多之后,便会发现整个今24年的具身模型/策略大概如下所示——目前全网独一份「(建议按照从下至上的顺序看,且所有点我都做了详尽而细致的解读,点击下表中对应的文字即可阅读,我后续也会不断完善之——毕竟还有很多并未囊括于下表中,如转载请于文章开头标明作者July及本文链接

2024年具身前沿模型/策略大汇总说明补充备注典型代表
第五大块 借鉴大语言模型的发展之路预训练-微调模式中把模型搞大需要架构、数据双双具备RDT、π0
把RLHF引入近具身通过偏好对齐提升机器人策略的泛化能力GRAPE
把CoT引入具身让具身模型学会逐步推理ECoT
让视觉语言模型来打辅助基于VLM模型GPT-4o和关系关键点约束ReKep
VLM解释人类演示视频,并为机器人生成任务计划、代码纽约大学:VLM See, Robot Do
结合「GPT4V的open-world vision能力」和重定向OKAMI
第四大块 Robotics VLM和VLA中的动作预测专门的action head

基于LSTM

Robotics VLM:字节RoboFlamingo
基于diffusion modelRobotics VLM:Octo
VLA:TinyVLA(diffusion-based head)
基于流匹配VLA:π0 (流匹配微调VLM)
基于Diffusion Transformer(DiT)VLA:CogACT(相比Octo的头 更大)
基于下一个token预测技术预测动作token对于离散化token动作表示,即指将机器人的每个动作维度分别离散化为 256 个箱子中的一个VLA:RT-2、OpenVLA(相当于RT-2开源版)
第三大块 模型训练方法预训练的VLA先对VLM基于机器人数据(开源OXE + 自采,或只开源OXE)做二次预训练(模仿人类)变成VLA,再真实环境中微调VLA1 π0:先在高度多样化的开源 + 自采机器人数据上进行预训练——变成了相比不二次预训练情况下更强大的VLA,然后针对所需任务进行微调
2 RT2和OpenVLA:只在开源OXE上做的预训练
不用预训练的VLA其考虑到预训练成本较高TinyVLA
预训练的Robotics VLM针对VLM的二次预训练,通过开源OXE训练VLM变成Robotics VLMOcto:在Open X-Embodiment数据集上进行预训练
不预训练的Robotics VLM没有针对VLM的二次预训练,而是直接机器人数据微调VLM变成Robotics VLM字节RoboFlamingo:使用简单、少量的微调就可以把 VLM 变成 Robotics VLM
直接真实环境中RL开训,摒弃仿真真实环境中得到的RL数据微调VLM + 机器人动作微调:RL训练运行创建的数据集,可以用于二次训练,代替人类提供的例子(效果如何 待验证)UC伯克利的Sergey Levine,于24年年底在DAI 2024上的演讲:RLDG——Reinforcement Learning Distilled Generalist
结合视觉和人类示教与纠正的RL方法,目前暂时还是小众赛道UC伯克利的HIL-SERL
RL仿真 + VR遥操重定向 + sim to real(师生学习/策略蒸馏) + VR遥操
OmniH2O
RL仿真训本体 + RGB遥操部署Retargeting、Sim-to-Real、RGB Real-time遥控H2O:通过重定向清除不可行的动作,然后仿真训练,最后RGB实时遥操作部署(使用训练好的Sim-to-Real模仿策略进行模仿)
仿真中训小脑HST(仿真中训练好之后,RGB遥操部署)
且其真实中训大脑HIT
HumanPlus:RL仿真训本体 + 人类示教(模仿学习/行为克隆)训大脑
静态数据训练 + 人类示教比如通过示范数据做行为克隆,更结合前身ALOHA的静态数据做协同训练Mobile ALOHA
第二大块 动作预测策略iDP3(改进的3D diffusion policy)可落地在人形机器人上斯坦福iDP3
3D diffusion policy将3D视觉表示与扩散策略3D Diffusion Policy: Generalizable Visuomotor Policy Learning via Simple 3D Representations
Diffusion Policy(还可基于点云)diffusion policy基于扩散模型UMI/dexcap
Diffusion Transformer(DiT)基于Diffusion Transformer(DiT)改造

​清华RDT

预测与动作扩散器PAD:通过联合去噪同时预测未来图像和动作Prediction with Action: Visual Policy Learning via Joint Denoising Process

ACT

ACT基于Transformer

Mobile ALOHA

基于下一个token预测技术预测动作token基于类似下个token预测策略
伯克利Digit
第一大块 训练数据来源
人类行为视频数据相当于互联网上大规模的视频数据,比如YouTube上的比如MimicPlay
开源数据需要一定的整合比如Open X-Embodiment等
仿真数据毕竟仿真环境中训练base model,最后真实环境中微调,是常见训练方式1 英伟达的Isaac Sim:整合了物理引擎PhysX、图像渲染引擎RTX、动画/电影描述格式USD
2 Google的MuJoCo
人工收集手持夹爪,收集方便umi/fastumi
动作捕捉,精度较高dexcap
遥操,精度很高主从机械臂遥操数据ALOHA
VR遥操Open-television

有意思的是,其中的RDT、π0都通过聚合各大机器人数据集先做预训练,然后微调,且它两的参数规模也分别达到了1B、3B

大有类似大语言模型的发展路线(其实搞具身的如果顺着大语言模型的发展路线走,至少大方向上,不会有太多差错),比如

  • 17-20年,以BERT、GPT为代表的预训练-微调模式
    且从GPT3起,模型的参数规模越来越大,慢慢的不再需要针对下游特定任务做微调——一个模型搞定所有任务
  • 途中经历过GPT3.5的RLHF微调(而巧的是本文要介绍的GRAPE便是通过RLHF微调VLA模型)
  • 及至到GPT4之后,模型在各方面的能力逼近人类甚至超越人类

你说,是不是有趣?且越往后越会发现

  1. 大模型和机器人的融合会越来越深入、彻底,很多大模型的技术会加速嵌入至机器人中
  2. 所以说,如果懂大模型对搞具身智能是好处多多的(包括本文涉及的RLHF,如果深入搞过大模型的话,则会和我一样 太熟悉不过了——毕竟两年前,我就是从开写ChatGPT及背后的RLHF开卷的,而写本文时,是在24年12.31日凌晨,真是与23年年初开写ChatGPT原理解析,遥相呼应,算是给这两年弄上一个完美的纪念),建议大家好好学,^_^

第一部分 GRAPE:通过偏好对齐实现机器人策略的泛化

1.1 GRAPE的提出背景与相关工作

1.1.1 提出背景

近年来,视觉-语言-动作(VLA)模型的快速发展简化了一般的机器人操作任务,在受控环境变化的一系列任务中展示了令人印象深刻的能力

然而,这些模型面临几个关键挑战,例如在新环境、对象、任务和语义上下文中的泛化能力差[26-Openvla]。导致这一限制的一个重要因素是它们依赖于监督微调(SFT),即VLA通过行为克隆简单模仿成功演练的动作,而未能对任务目标或潜在失败模式形成整体理解[27-Should i run offline reinforcement learning or behavioral cloning?]

  1. 虽然像PPO[42]这样的强化学习(RL)算法在增强其泛化能力方面表现出色[52-Fine-Tuning Large Vision-Language Models as Decision-Making Agents via Reinforcement Learning],但收集足够的在线轨迹和明确定义奖励的高成本使其在训练VLA时不切实际[44-Octo]
  2. 此外,训练VLA仅仅复制专家行为通常会导致行为崩溃[28-Training language models to self-correct via reinforcement learning,即通过强化学习进行自我纠正,详见此文的2.3 Self-Correct之SCoRe:通过多轮强化学习进行自我纠正],即计划的轨迹往往次优[26-Openvla]

    这是因为SFT数据集通常未经策划,由从专家处收集的离线演示组成,这些演示隐含地嵌入了不同的价值观(例如任务完成、安全性和成本效益),而这些并未在数据中明确定义[36-Open x-embodiment,45-Bridgedata v2]
    总之,简单地通过SFT模仿这些行为可能会混淆模型,并导致次优-偏离演示实际目标的恶意轨迹
  3. 一些方法试图通过明确定义一组目标并分层解决它们来应对这一挑战 [24-Rekep,详见此文《ReKep——李飞飞团队提出的让机器人具备空间智能:基于VLM模型GPT-4o和关系关键点约束(含源码解析)》]。然而,这种方法会带来额外的推理开销,并且缺乏可扩展性 [30-HAMSTER: Hierarchical action models for open-world robot manipulation]

为了解决这些问题,24年,来自北卡罗来纳大学教堂山分校和华盛顿大学的研究者提出了GRAPE(Generalizing Robot Policy via Preference Alignment):通过偏好对齐来泛化机器人策略,以减轻使用强化学习目标训练VLA的高成本,同时提供灵活性以实现定制化操控目标的对齐

  • 其对应的论文为《GRAPE: Generalizing Robot Policy via Preference Alignment》
    论文一作为北卡罗来纳大学教堂山分校张子健,指导老师为北卡罗来纳大学教堂山分校助理教授 Huaxiu Yao,共同第一作者为华盛顿大学 Kaiyuan Zheng
    其余作者包括来自北卡教堂山的 Mingyu Ding、来自华盛顿大学的 Joel Jang、Yi Li 和Dieter Fox,以及来自芝加哥大学的 Zhaorun Chen、Chaoqi Wang
  • 如下图图2所示,GRAPE引入了轨迹偏好优化(trajectory-wise preference optimization,简称TPO),通过隐式建模成功和失败试验的奖励,在轨迹层面对VLA策略进行对齐,从而提升对多样化任务的泛化能力

    具体而言
    1) 给定一个复杂的操作任务(顶部),GRAPE首先采用视觉语言模型——比如HAMSTER将任务分解为几个时间阶段,然后识别每个阶段子任务完成所需的空间关键点
    Given a complex manipulation task (top), GRAPE first adopts a vision-language model to decompose thetask into several temporal stages, then identifies spatial keypoints essential for each stage’s subtask completion.

    具体而言
    \rightarrow  首先将包含prompt——比如pick up the grape..和初始状态的图文对输入到视觉语言模型(VLM)
    Hamster [30]中。利用Hamster生成的阶段信息和阶段点,对收集的轨迹进行了分段。这有助于更精确地分析复杂任务序列,详细关注每个阶段
    \rightarrow  且利用
    Grounded-SAM[41]或结合SAM [41]和DinoV2 [38-DinoV2详见此文《https://blog.csdn.net/v_JULY_v/article/details/144622001》]的方法从图像中提取关键点信息——类似rekep
    这些关键点与作者自收集的轨迹数据相结合,使作者能够根据Hamster模型生成的阶段信息优化任务的执行步骤和路径规划
    例如,对于一个简单的抓取和放置任务,可以将其分解为多个明确的阶段:抓住葡萄,将葡萄移动到盘子上,将葡萄放在盘子上

    2) 然后,给定用户指定的对齐目标「包括:碰撞约束:确保机器人避免与障碍物碰撞。路径约束:优化机器人的运动路径的效率和安全性」,GRAPE提示一个强大的视觉语言模型比如GPT4o——为每个阶段获得一系列成本函数(准确的说,生成每个阶段的详细操作信息和成本函数),其中较低的成本意味着更高的对齐合规性
    Then given user-specifiedalignment goals, GRAPE prompts a powerful vision-language model to obtain a series of cost functions for each stage, where lower costimplies higher alignment compliance.
    3) 在迭代偏好优化过程中(底部),作者从基础VLA模型中采样多个离线轨迹(一般轨迹条数定义为\mathcal{N}_{t}=5),并获得具有相关多阶段成本的轨迹。该评分进一步结合了模型对每条轨迹的自我评估和二元任务成功指示器
    During iterative preference optimization (bottom), we sample multiple offline trajectories from thebase VLA model and obtain trajectories with associated multi-stage costs. This score further incorporates the model’s self-evaluation ofeach trajectory and a binary task success indicator.
    4) 再之后,根据采样轨迹的相应得分对其进行排名,以获得偏好列表——每个任务中奖励最高的轨迹为y_{w},奖励最低的轨迹为y_{l}
    Then we rank the sampled trajectories with their corresponding scores to obtain a list ofpreferences.
    5) 最后,执行轨迹偏好优化以获得改进的模型,从中进一步采样在线轨迹并迭代直到收敛
    Then we perform a trajectory-wise preference optimization to obtain a improved model, from which we further sample onlinetrajectories and iterate until convergence
  • 且为了进一步缓解轨迹排序和提供任意对齐目标偏好的难度,GRAPE建议将复杂的操控任务分解为多个独立阶段,并采用大型视觉模型为每个阶段提出关键点,每个关键点都与时空约束相关
    值得注意的是,这些约束是灵活的,可以定制以使模型与不同的操控目标对齐,例如任务完成、机器人交互安全性和成本效益

1.1.2 相关工作:VLA、强化学习与偏好优化

第一方面,先前的机器人学习工作[14,23-Voxposer,24-Rekep,30-HAMSTER,31-Code as policies,34-Robocodex,35-Embodiedgpt]通常采用分层规划策略

例如,Code asPolicies[31]和EmbodiedGPT[35]采用LLMs和VLMs首先生成一系列高层次的行动计划,然后进一步利用低层次的控制器来解决局部轨迹

然而,这些模型存在低层次技能有限的问题,难以推广到日常任务中

好在VLA通过将大型视觉语言模型作为骨干并直接在模型内生成动作,倾向于扩展低层次任务。它们通常通过两种主流方法实现动作规划:

  1. 动作空间的离散化 [6-Rt-1,7-Rt-2,26-Openvla],例如 Open-VLA [26],它保留了自回归语言解码目标,并将动作空间均匀地截断为一小组动作token
    由于这种离散化不可避免地引入误差,一些方法如π0 [4-π0,详见此文《π0——用于通用机器人控制的VLA模型:一套框架控制7种机械臂(基于PaliGemma和流匹配的3B模型)》] 采用更新的结构 [53-Transfusion] 并直接集成扩散头diffusion head进行动作预测,以避免离散化
  2. 扩散模型[2,16-Diffusion policy,18-Diffusion models beat gans on image synthesis,25- Planning with diffusion for flexible behavior synthesis,32-Adaptdiffuser,49-Chaineddiffuser]——如 Diffusion Policy [16]作为动作头,不是每次生成一个逐步的动作,而是通过几个去噪步骤生成一系列未来动作

虽然这些模型在结构上有所不同,但它们始终通过行为克隆对成功的展开进行监督训练(they are consistently supervised-trained on successful rollouts via behavior cloning),这很难推广到未见过的操作任务

然而,我们的GRAPE首先通过试错在轨迹层面对VLA策略进行对齐,有效提高了可推广性和可定制性

第二方面,强化学习RL

  1. [17-2017年6月OpenAI联合DeepMind首次正式提出的:Deep Reinforcement Learning from Human Preferences,即基于人类偏好的深度强化学习,简称RLHF,详见此文《ChatGPT技术原理解析:从RL之PPO算法、RLHF到GPT4、instructGPT》,
  2. 42-PPO「详见此文《强化学习极简入门:通俗理解MDP、DP MC TC和Q学习、策略梯度、PPO》的第4部分」,
  3. 56-Fine-Tuning Language Models from Human Preferences,OpenAI进一步阐述RLHF的文章]

在SOTA基础模型(FMs)的后训练中发挥着关键作用,包括

  • 文本生成模型[1-GPT4,12,15,19-The llama 3 herd of models,39- Training language models to follow instructions with human feedback,即instructGPT,详见上面刚提到过的ChatGPT原理解析]
  • 图像生成模型[13- Mj-bench: Is your multimodal reward model really a good judge for text-toimage generation?,20-DPOK: Reinforcement Learning for Fine-tuning Text-to-Image Diffusion Models]
  • 视频生成[50- Cogvideox: Text-to-video diffusion models with an expert transformer]

这些模型通过偏好数据的嵌入被广泛用于使预训练的FMs与人类价值观对齐

同时,RL在训练机器人任务的策略方面也取得了巨大成功

  • [10-Decision transformer: Reinforcement learning via sequence modeling,
  • 11-Towards human-level bimanual dexterous manipulation with reinforcement learning,
  • 14- Safe reinforcement learning via hierarchical adaptive chanceconstraint safeguards,
  • 42-PPO,47-EscIRL: Evolving self-contrastive IRL for trajectory prediction in autonomous driving,
  • 48- Unidexfpm: Universal dexterous functional pre-grasp manipulation via diffusion policy,55-Dexterous manipulation with
  • deep reinforcement learning: Efficient, general, and lowcost]

尽管直观上通过RL后对齐VLA是有益的,但之前的工作尚未报告这样的成功,主要是因为

  1. 操作目标通常多样且复杂,使得奖励难以进行分析性定义[21];
  2. 虽然这种奖励可以从人类偏好中建模,但在机器人操作任务中标注此类偏好通常耗时复杂,且需要人类专业知识[45]
  3. 奖励的不完美数值微分通常会导致RL算法——如PPO[42] 崩溃[8-Reinforcement learning for control: Performance, stability, and deep approximators]

然而,最近的一些研究[40- Direct preference optimization: Your language model is secretly a reward model,详见《RLHF的替代之DPO原理解析:从RLHF、Claude的RAILF到DPO、Zephyr》,46-Preference optimization with multi-sample comparisons]显示了无需这种显式奖励建模即可直接通过RL对策略进行对齐的成功

受此启发,GRAPE通过对比轨迹来对齐策略,从而避免了奖励建模中的数值问题。此外,作者引入了一种自动偏好合成管道,可以轻松扩展到各种操作任务,并能够适应不同的对齐目标

1.2 通过偏好对齐来推广机器人策略

在推理过程中,VLA 通常以任务指令q 初始化,并且在每个时间步t,它接收环境观察o_{t}(通常是一张图像)并输出一个动作a_{t},如此可以将\pi_{\theta}\left(a_{i} \mid\left(o_{i}, q\right)\right)表示为由\theta 参数化的VLA 的动作策略

为了完成任务,VLA 与环境反复交互并获得长度为T 的轨迹\zeta=\left\{o_{1}, a_{1}, \cdots, o_{T}, a_{T} \mid q\right\}。通常,VLA通过SFT 进行微调以模仿专家行为(定义为方程1):

\mathcal{L}_{\mathrm{SFT}}=-\sum_{(\zeta, q) \in \mathcal{D}} \sum_{t=1}^{T} \log p\left(a_{t} \mid o_{t}, q ; \pi_{\theta}\right)

其中,\mathcal{D}=\left\{\left(\zeta_{1}, q_{1}\right), \ldots,\left(\zeta_{N}, q_{N}\right)\right\}表示包含N个专家轨迹的训练集,具体来说,\mathcal{L}_{\mathrm{SFT}} 迫使VLA 记住从分布\mathbb{P}_{\mathcal{D}}中采样的每个观察相关的动作,导致对新任务环境的泛化能力较差

值得注意的是,虽然遵循Brohan 等人[7-Rt-2] 和O’Neill 等人[36-Open x-embodiment] 的做法,并基于马尔可夫决策过程MDP假设[43-Richard S Sutton. Reinforcement learning: An introduction. A Bradford Book, 2018] 考虑逐步策略

  1. 但作者的方法可以很容易地适应非MDP 情况,该情况将过去的交互历史(通常是视频或一系列图像)作为状态[9-Gr-2,详见此文《字节GR2——在大规模视频数据集上预训练且机器人数据上微调,随后预测动作轨迹和视频(含GR1详解)》]以及扩散策略[16-Diffusion policy]
  2. 其一次生成多个未来步骤[44-Octo]「which takes past interaction histories (usually a video or a series of images) as state [9] and diffusion policy [16] which generates multiple futuresteps all at once [44]

1.2.1 TPO:轨迹偏好优化(直接用的DPO的思想)

先来进一步解释下图中右下角的Trajectory-wise Preference Optimization

为了提高泛化能力,作者遵循

  • Bai等人[3-Training a helpful and harmless assistant with reinforcement learning from human feedback,相当于早在2022年4月份,目前OpenAI最大的竞争对手Ahthropic就发了其LLM论文:Training a Helpful and Harmless Assistant with Reinforcement Learning from Human Feedback,这篇论文和OpenAI的instructGPT论文极其相似 (如果你之前还没看到instructGPT论文,或者尚不了解ChatGPT的三阶段训练方式,强烈建议先看此文:ChatGPT技术原理解析:从RL之PPO算法、RLHF到GPT4、instructGPT),也就比后者晚发布40多天]
  • Schulman等人[42-Proximal policy optimization algorithms,即PPO算法的工作

并通过RL目标进一步微调VLA策略

  1. r_{\phi}表示由\phi参数化的奖励函数,从而有(定义为方程2)
    \max _{\pi_{\theta}} \mathbb{E}_{\zeta \sim \pi_{\theta}}\left[r_{\phi}(\zeta)\right]-\beta D_{\mathrm{KL}}\left[\pi_{\theta}(\zeta) \| \pi_{\mathrm{ref}}(\zeta)\right]

    其中,\beta控制与通过SFT 在方程(1) 中训练的基础参考策略\pi_{\mathrm{ref}} 的偏差,\pi(\zeta, q)是在指令q 下策略\pi 生成整个轨迹\zeta 的可能性
  2. 然后作者遵循Rafailov 等人的方法[40-Direct preference optimization: Your language model is secretly a reward model,即DPO,详见此文《RLHF的替代之DPO原理解析:从RLHF、Claude的RAILF到DPO、Zephyr》],推导出轨迹奖励r(\zeta)的解析重参数化为(定义为方程3)
    r(\zeta, q)=\beta \log \frac{\pi_{\theta}(\zeta \mid q)}{\pi_{\mathrm{ref}}(\zeta \mid q)}+\beta \log Z(\zeta)
  3. 类似于Rafailov 等人[40-即DPO],作者采用Bradley-Terry(BT) [5-Rank analysis of incomplete block designs: I. the method of paired comparisons] 模型,并从一组带有偏好排序的轨迹中对r_{\phi}进行建模

    具体来说,\zeta_{w}\zeta_{l} 分别表示从相同初始状态开始的被选择和被拒绝的轨迹,可以将轨迹奖励建模目标公式化为(定义为方程4)
    P\left(\zeta_{w} \succ \zeta_{l}\right)=\frac{\exp \left(r\left(\zeta_{w}\right), q\right)}{\exp \left(r\left(\zeta_{w}\right), q\right)+\exp \left(r\left(\zeta_{l}\right), q\right)}
  4. 然后,我们遵循Rafailov等人DPO[40]的方法,将公式(3)代入公式(4),得到如下轨迹偏好优化(TPO)损失\mathcal{L}_{\mathrm{TPO}},相当于公式(2)——定义为方程5
    -\mathbb{E}_{\left(\zeta_{w}, \zeta_{l}\right) \sim \mathcal{D}}\left[\log \sigma\left(\beta\left(\log \frac{\pi_{\theta}\left(\zeta_{w}\right)}{\pi_{\mathrm{ref}}\left(\zeta_{w}\right)}-\log \frac{\pi_{\theta}\left(\zeta_{l}\right)}{\pi_{\mathrm{ref}}\left(\zeta_{l}\right)}\right)\right)\right]
  5. 然后可以进一步从MDP中提取,并将轨迹\zeta的可能性分解为单个状态-动作对,即\pi(\zeta, q)=\prod_{i=1}^{T} \pi\left(a_{i} \mid\left(o_{i}, q\right)\right)

    且进一步获得(定义为方程6)
    \log \frac{\pi_{\theta}(\zeta, q)}{\pi_{\mathrm{ref}}(\zeta, q)}=\sum_{t=1}^{T} \log \frac{\pi_{\theta}\left(a_{i} \mid\left(o_{i}, q\right)\right)}{\pi_{\mathrm{ref}}\left(a_{i} \mid\left(o_{i}, q\right)\right)}

    最后,可以将方程(6) 代入方程(5),以获得逐步状态-动作对形式的TPO 损失\mathcal{L}_{\mathrm{TPO}}

最终得到的TPO损失方程6是有益的,因为它:

  1. 通过简单地使用VLA收集的逐步回合,将策略\pi_{\theta}在轨迹级别上全局对齐到人类偏好
  2. 通过在整个轨迹的状态-动作对中反向传播梯度,稳定策略并引导其朝向最终目标
  3. 通过通过RL目标从成功和失败的轨迹中学习,显著提升泛化能力。尽管Finn等人[21-Guided cost learning: Deep inverse optimal control via policy optimization]指出,扩大采样轨迹的规模可以减少奖励建模中的偏差,但这也增加了训练成本
    因此,虽然作者的方法可以轻松扩展,但作者还是建议将讨论限制在仅存在一个选择/拒绝轨迹的二进制情况

1.2.2 引导成本偏好生成:Guided-Cost Preference Generation(GCPG)

然后,再来进一步解释下图右上角,及下图底部的中间部分:目标对齐下的多阶段成本、模型自我奖励、任务是否成功的二元指示器

虽然在给定 TPO 目标方程(5)的情况下,可以通过根据相应偏好排序的轨迹来对策略进行任意目标的对齐,但这会产生很高的成本,因为它需要人类专业知识和冗长的手动注释

因此,为了更好地扩展偏好合成以实现任意对齐目标(例如任务完成、安全性、效率),作者提出引导成本偏好生成 (GCPG),以自动策划集成不同对齐目标的此类偏好we propose Guided-Cost Prefer-ence Generation (GCPG) to automatically curate such pref-erences that integrate different alignment objectives

首先,针对多阶段时间关键点约束(Multi-Stage Temporal Keypoint Constraints)

  • 基于Huang 等人[24-Rekep,详见《ReKep——李飞飞团队提出的让机器人具备空间智能:基于VLM模型GPT-4o和关系关键点约束(含源码解析)》] 的见解,作者通过将轨迹分解为时间阶段,并为每个阶段分配成本以量化性能,来解决复杂操作任务中指定精确轨迹偏好的复杂性
  • 然后,聚合这些特定阶段的成本,以获得对每个轨迹的整体评价

具体来说,采用基于VLM 的阶段分解器\mathcal{M}_{D}(更多详见附录A),将轨迹\zeta 划分为一系列\mathbf{S} 连续阶段,公式化为(定义为方程7)

\left\{\zeta^{1}, \ldots, \zeta^{S}\right\}=\mathcal{M}_{D}(\zeta, q), \quad \zeta^{i}=\left\{\left(o_{t}^{i}, a_{t}^{i}\right)\right\}_{t=1}^{T_{i}}

其中\zeta^{i} 表示轨迹\zeta 的第i^{\text {th }} 阶段

  1. 在获得阶段分解后,作者进一步使用视觉-语言模型「例如DINOv2 [37]-详见此文《从DINO、DINOv2到DINO-X——自监督视觉Transformer的升级改进之路(基于ViT)》的第二部分」来识别在各个阶段作为参考指标的关键点
  2. 然后,作者提示一个强大的LLM [1-GPT4o] 为每个阶段提出多个成本函数(参见附录E.2 中的示例),这些函数与对齐目标相对应,其中较低的成本表示更好的目标符合性
  3. 接着,在阶段S_{i} 的成本C^{S_{i}} 被公式化(定义为方程8)
    C_{S_{i}}=\sum_{j=1}^{N_{S_{i}}} \beta_{j} \max \left(0, C_{j}^{S_{i}}\left(\left\{\kappa_{S_{i}}\right\}-\tau_{j}^{S_{i}}\right), \quad j \in\left\{1, \ldots, N_{S_{i}}\right\}\right.

    其中
    \rightarrow  C_{j}^{S_{i}}\left(\left\{\kappa_{S_{i}}\right\}\right)表示在阶段S_{i} 中使用关键点子集\left\{\kappa_{S_{i}}\right\}计算的第j^{\text {th }} 个成本
    \rightarrow  \tau_{j}^{S_{i}}是一个可调的阈值参数,来调整每个成本的容忍度——只有当成本超过阈值时才会应用
    \rightarrow  \beta_{j}是一个权重参数,用于调整每个成本的重要性
  4. 最后,为了汇总整个轨迹的成本,作者不是线性地对每个阶段求和,而是应用指数衰减来捕捉每个时间阶段的因果依赖关系(例如,如果一个轨迹在前面的阶段产生了高成本,则不期望其随后表现良好)
    定义为外部奖励(是为方程9)
    R_{\mathrm{ext}}(\zeta)=\prod_{i=1}^{\mathbf{S}} e^{-\sum_{j=1}^{N_{S_{i}}} \beta_{j} \max \left(0, C_{j}^{S_{i}}\left(\left\{\kappa S_{i}\right\}-\tau_{j}^{S_{i}}\right)\right.}

    其中,方程9汇总了每个阶段的个体成本和子目标,以应对维度灾难,并有效地遵循定制化的对齐方式

其次,针对引导成本偏好生成

为了进一步提高偏好合成的稳定性和最优性,作者从自我奖励[54- Calibrated self-rewarding vision language models]中获得灵感,并确定更优的轨迹应该由外部评判「如公式(9)所示」和模型本身确认

因此,作者加入了两个额外的奖励并获得了GCPG奖励

  • 首先是方程10——相当于是对方程9 11 12的汇总
    R_{\mathrm{GCPG}}(\zeta)=\lambda_{1} R_{\text {self }}(\zeta)+\lambda_{2} R_{\mathrm{ext}}(\zeta)+\lambda_{3} I_{\text {success }}(\zeta)

    其中R_{\text {self }}(\zeta)是由π 提供的自评得分,其等于生成轨迹\zeta 的对数似然(定义为方程11)R_{\text {self }}(\zeta)=\log (\pi(\zeta, q))=\log \left(\prod_{i=1}^{T} \pi\left(a_{i} \mid\left(o_{i}, q\right)\right)\right)
  • 其次是,I_{\text {success }}(\zeta)——一个二元指示函数,指示轨迹\zeta 是否成功完成任务(定义为方程12)
    I_{\text {success }}(\zeta)=\left\{\begin{array}{ll} 1, & \text { if } \zeta \text { is successful } \\ 0, & \text { otherwise } \end{array}\right.
    其中\lambda 是调整每个奖励重要性的权重参数

直观上,方程(11) 可以看作是方程(12) 所提供的稀疏信号的密集近似,这些信号通过方程(9) 进一步校准,以获得对轨迹的整体评估,该评估既考虑其最优性,又考虑通过方程(9) 中的外部奖励指定的定制目标的对齐程度

1.2.3 迭代偏好优化Iterative Preference Optimization

最后,再解释下图最右下角的迭代优化过程

在生成偏好之后,接着讨论迭代偏好优化策略。受在线策略强化学习[42-PPO]实践的启发,这些实践通常比离线训练产生更优的策略

故作者通过在线收集的轨迹使用TPO迭代微调SFT VLA模型

例如,在第k^{\text {th }} 次迭代中

  1. 首先为各种任务采样大量轨迹并获得\mathcal{D}^{k}
  2. 然后使用公式(10)计算每条轨迹的成本,并根据每个任务对这些轨迹进行排序
    R_{\mathrm{GCPG}}(\zeta)=\lambda_{1} R_{\text {self }}(\zeta)+\lambda_{2} R_{\mathrm{ext}}(\zeta)+\lambda_{3} I_{\text {success }}(\zeta)
  3. 将每个任务的前m 和后m 条轨迹配对,获得m^{2} 个选择-拒绝轨迹对
  4. 然后通过公式(5) 使用TPO 微调相同的采样策略,获得更新后的策略
    -\mathbb{E}_{\left(\zeta_{w}, \zeta_{l}\right) \sim \mathcal{D}}\left[\log \sigma\left(\beta\left(\log \frac{\pi_{\theta}\left(\zeta_{w}\right)}{\pi_{\mathrm{ref}}\left(\zeta_{w}\right)}-\log \frac{\pi_{\theta}\left(\zeta_{l}\right)}{\pi_{\mathrm{ref}}\left(\zeta_{l}\right)}\right)\right)\right]
    重复这一过程K 次,并获得与目标目标对齐的最终模型

对了,作者在算法1 中详细介绍了GRAPE迭代偏好优化过程


至此,可能你也看出来了,其实GRAPE

更像Ahthropic的Claude的训练方式——RAIHF详见此文《RLHF的替代之DPO原理解析:从RLHF、Claude的RAILF到DPO、Zephyr》的1.3 节Claude的两阶段训练方式:先监督微调 后RAIHF

为何这么说呢?因为GRAPE的本质质是类似 给VLA上RLAIF,这个AI即GPT4o在对齐目标的前提下计算各个轨迹的成本,然后根据计算结果自动排序(不像RLHF 得人工对结果做排序),根据排序结果选择优-差对做DPO优化,所以可以不断刺激机器人选择更优的运动策略——从而不断优化机器人的运动轨迹

第二部分 GRAPE的数据设置、及实验设置

2.1 实验数据集

2.1.1 现实世界数据集

对于SFT数据集,在真实世界机器人实验中,作者使用一个由Franka机器人手臂和Robotiq夹持器组成的机器人平台进行数据收集

  • 为了确保数据收集和评估的一致性,所有操作都在相同的实验环境中进行
    在数据收集过程中,收集了220个包含常见物体(如香蕉、玉米、牛奶和盐)的抓取和放置任务的数据集
  • 此外,收集了50个涉及按下不同颜色按钮的任务的数据。由于用于按钮按压任务的物体数量有限,在测试阶段引入了背景噪音和干扰物体,以创造未见过的场景
    且为了进一步增强OpenVLA处理不同动作的能力,还收集了50个推倒任务的数据

这些多样化的任务数据集有助于提高模型在处理不同类型动作时的泛化能力

对于TPO数据集,在真实世界实验中,使用通过OpenVLA在真实世界SFT数据集上微调的模型进行轨迹采样

每个任务进行了五次。在TPO数据集中,实验了15个不同的任务,包括10个抓取和放置任务、3个按钮按压任务和2个推倒任务,共计75个数据条目。经过选择过程,得出一个由30个轨迹组成的偏好数据集

2.1.2 仿真数据集

对于SFT 数据集,对于 Simpler-Env,SFT 数据集包括 100 条轨迹,总计约 2,900 个转换。这些回合是使用 Octo 从Simpler-Env 生成的,遵循 Ye 等人 [51] 中描述的方法

值得注意的是,LIBERO并没有收集新的数据,也没有对OpenVLA模型进行微调。相反,作者直接使用OpenVLA团队提供的OpenVLA-SFT模型,这显著简化了流程

对于TPO数据集,在Simpler-Env的情况下,每个任务的轨迹都是使用OpenVLA-SFT模型采样的,每个任务进行五次试验。这个过程产生了一个包含80条轨迹的TPO数据集

对于LIBERO,使用OpenVLA-SFT模型(每个任务一个模型)在LIBERO中的四个任务中进行数据采样。对于每个任务,每个子任务采样五条轨迹,最终形成一个包含总共20条轨迹的TPO数据集

2.2 实验设置

作者采用OpenVLA [26] 作为基础模型,使用LoRA 微调和AdamW 优化器进行监督和偏好微调。在监督微调阶段,作者使用学习率4 × 10−5,批量大小为16

对于偏好微调应用学习率2 × 10−5,使用相同的批量大小。有关训练过程和数据集的更多详细信息,请参见附录A 和B

在基线模型的选择上,作者将GRAPE与两个在机器人控制任务中以强大性能著称的领先机器人学习模型进行比较

  • 第一个模型是Octo [44-详见此文《从Octo、OpenVLA到TinyVLA、CogACT——视觉语言动作模型VLA的持续升级(RT-2和π0在其他文章介绍)》],一个基于大型transformer的策略模型
  • 第二个模型是OpenVLA [26,详见此文],一个7B视觉-语言-动作模型

这两个模型均使用从相应环境中采样的相同数据集进行了监督微调。作者分别将监督微调后的模型称为Octo-SFT和OpenVLA-SFT

2.1.1 在真实世界机器人环境中的评估

在真实世界实验中,GRAPE在各种任务中显著优于其他模型

  • 值得注意的是,在领域内任务中,GRAPE达到了67.5%的成功率,比OpenVLA-SFT的45%提高了22.5%,且远高于Octo-SFT的20%
  • 此外,在视觉泛化任务中,GRAPE展示了更高的适应性,成功率为56%
  • 在更具挑战性的动作泛化任务中,尽管OpenVLA-SFT表现尚可,但GRAPE仍优于OpenVLA-SFT,显示了其理解各种动作和基于语言执行命令的潜力

综合所有类别的任务,GRAPE的总平均成功率为52.3%,比OpenVLA-SFT的33.3%提高了19%,且远高于Octo-SFT的5.8%。这一表现突出了GRAPE在处理复杂和多变任务环境中的有效性和高适应性

2.1.2 奖励模型的消融研究

在本节中,作者进行消融研究以分析方程10中每个奖励组件的贡献

R_{\mathrm{GCPG}}(\zeta)=\lambda_{1} R_{\text {self }}(\zeta)+\lambda_{2} R_{\mathrm{ext}}(\zeta)+\lambda_{3} I_{\text {success }}(\zeta)

最终性能的评估对象包括:外部目标对齐奖励R_{\mathrm{ext}}(\zeta),自我评估奖励R_{\text {self }}(\zeta),以及成功指示器I_{\text {success }}(\zeta)

此外,还进行了一项单独的消融研究,以强调使用整个奖励得分进行偏好选择的重要性。该方法与随机选择一个成功轨迹作为首选轨迹和一个失败轨迹作为拒绝轨迹的方法进行了比较

Simpler-Env 环境中的结果在下表表1 中报告

结果表明:

  1. 将完整的奖励评分方程(10) 用于偏好排序相比仅基于成功的随机选择显著提高了性能;
  2. 所有奖励组件都有助于提高模型性能。这些发现与预期一致
    具体来说,Rself (ζ) 通过鼓励模型选择具有更高生成概率的轨迹来增强GRAPE 模型的稳健性。同时,Rext (ζ) 引导模型学习特定行为,如安全性和效率。最后,Isuccess (ζ) 起到作为一个关键指标的作用,引导模型优先考虑成功的轨迹

总之,GRAPE通过从成功和失败的尝试中学习来增强泛化能力,并通过定制的时空约束提供与安全性、效率和任务成功等目标对齐的灵活性

实验结果表明,GRAPE在域内和未见任务上显著提高了成功率,同时实现了灵活的对齐。虽然GRAPE在泛化和对齐灵活性方面表现出显著的改进,但它也有一些局限性

  • 首先,对偏好排序的依赖需要足够多样化的轨迹,这可能限制在仅有有限任务设置的场景中的应用
  • 其次,虽然GRAPE支持可定制的对齐,但特定目标的阈值参数的手动调整可能引入主观偏见,并需要领域专业知识。未来的工作可能会探索更高效和自动化的偏好合成和适应方法

// 待更

相关文章:

GRAPE——RLAIF微调VLA模型:通过偏好对齐提升机器人策略的泛化能力(含24年具身模型汇总)

前言 24年具身前沿模型大汇总 过去的这两年,工作之余,我狂写大模型与具身的文章,加之具身大火,每周都有各种朋友通过CSDN私我及我司「七月在线」寻求帮助/指导(当然,也欢迎各大开发团队与我司合作共同交付&#xff09…...

超越YOLO11!DEIM:先进的实时DETR目标检测

DEIM: DETR with Improved Matching for Fast Convergence arXiv: https://arxiv.org/abs/2412.04234 Project webpage:https://www.shihuahuang.cn/DEIM/ GitHub:https://github.com/ShihuaHuang95/DEIM 1 背景:DETR目标检测框架 目标检…...

django vue3实现大文件分段续传(断点续传)

前端环境准备及目录结构: npm create vue 并取名为big-file-upload-fontend 通过 npm i 安装以下内容"dependencies": {"axios": "^1.7.9","element-plus": "^2.9.1","js-sha256": "^0.11.0&quo…...

用户注册模块(芒果头条项目进度4)

1 创建⽤户模块⼦应⽤ 1.1 在项⽬包⽬录下 创建apps的python包。 1.2 在apps包下 创建应⽤userapp $ cd 项⽬包⽬录/apps $ python ../../manage.py startapp userapp 1.3 配置导包路径 默认情况下导包路径指向项⽬根⽬录 # 通过下⾯语句可以打印当前导包路径 print(sys.pa…...

Java Map集合、集合的嵌套

一. 概述 1. Map集合称为双列集合,格式:{key1value1, key2value2,.....},一次需要存一对数据作为一个元素。 2. Map集合的每个元素"keyvalue"称为一个键值对/键值对对象/一个Entry对象,Map集合也被称为"键值对集合"。 3.…...

C#中使用系统默认应用程序打开文件

有时您可能希望程序使用默认应用程序打开文件。 例如,您可能希望显示 PDF 文件、网页或互联网上的 URL。 System.Diagnostics.Process类的Start方法启动系统与文件关联的应用程序。 例如,如果文件扩展名为.txt,则系统会在 NotePad、WordPa…...

论文泛读《LPFHE: Low-Complexity Polynomial CNNs for Secure Inference over FHE》

文章目录 1、摘要2、介绍3、文章结构4、总结 1、摘要 Machine learning as a service (MLaaS) 在客户中越来越受欢迎。为了解决 MLaaS 中的隐私问题,引入了 FHE 来保护客户端的数据。  然而,FHE 不能直接评估 卷积神经网络 (CNNs) 中的非算数激活函数。…...

基于Spring Boot的IT技术交流和分享平台的设计与实现源码

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的IT技术交流和分享平台的设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于S…...

力扣hot100——二分查找

35. 搜索插入位置 class Solution { public:int searchInsert(vector<int>& a, int x) {if (a[0] > x) return 0;int l 0, r a.size() - 1;while (l < r) {int mid (l r 1) / 2;if (a[mid] < x) l mid;else r mid - 1;}if (a[l] x) return l;else …...

1月第一讲:WxPython跨平台开发框架之前后端结合实现附件信息的上传及管理

1、功能描述和界面 前端&#xff08;wxPython GUI&#xff09;&#xff1a; 提供文件选择、显示文件列表的界面。支持上传、删除和下载附件。展示上传状态和附件信息&#xff08;如文件名、大小、上传时间&#xff09;。后端&#xff08;REST API 服务&#xff09;&#xff1a…...

uniapp:跳转第三方地图

1.跳转第三方高德地图 //跳转地图 toMap(item){uni.navigateTo({url: (window.location.href https://uri.amap.com/navigation?to${item.lng},${item.lat},${item.shopName}&modecar&policy1&srchttps://gawl.gazhcs.com/wap/index.html&callnative0)}) },…...

源码理解 UE4中的 FCookStatsManager::FAutoRegisterCallback RegisterCookStats

官方文档&#xff1a;https://dev.epicgames.com/documentation/zh-cn/unreal-engine/API/Runtime/Core/ProfilingDebugging/FCookStatsManager文档中的注释&#xff1a; When a cook a complete that is configured to use stats (ENABLE_COOK_STATS), it will broadcast this…...

QML Text详解

1. 概述 Text 是 QML 中用来显示文本的基本组件。它可以用于创建静态的标签、标题、说明文字等&#xff0c;支持多种文本格式、样式、颜色、对齐方式等配置。Text 组件也支持动态文本内容的显示&#xff0c;可以通过绑定数据源来实时更新文本内容。 Text 组件非常灵活&#x…...

详细讲一下Prettier对我们日常开发的作用,以及详细用法

1.什么是 Prettier&#xff1f; // Prettier 是代码格式化工具&#xff0c;它可以自动调整代码格式 // 比如把这样的代码&#xff1a; function foo ( a, b ){ return ab; }// 自动格式化成这样&#xff1a; function foo(a, b) {return a b; } 2.基础配置详解 {// 控制…...

多模态论文笔记——Coca

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍多模态模型Coca&#xff0c;在DALLE 3中使用其作为captioner基准模型的原因和优势。 文章目录 ALBEF论文模型结构组成训练目标 CoCa​论文模型结构CoCa…...

24年无人机行业资讯 | 12.23-12.29

24年无人机行业资讯 | 12.23-12.29 1、 国家发改委新设低空经济司&#xff0c;助力低空经济规范发展2、商务部支持无人机民用国际贸易&#xff0c;强调出口管制与安全并重3、滨州高新区首架无人机成功下线4、 2025第九届世界无人机大会筹备推进会顺利召开5、2024年世界无人机竞…...

我们公司只有3个人,一个前端,一个后端

在当今这个数字化时代&#xff0c;各行各业都离不开互联网技术的支撑&#xff0c;而在这股技术浪潮中&#xff0c;小而美的创业公司如同雨后春笋般涌现&#xff0c;它们凭借着灵活高效、创新不断的特点&#xff0c;在市场中占有一席之地。 今天&#xff0c;就让我带你走进这样一…...

golang后台框架总结

gin [golang]gin框架接收websocket通信 - 花酒锄作田 - 博客园 golang Gin实现websocket_golang gin websocket-CSDN博客 ws测试: Websocket测试-Websocket在线测试-Websocket模拟请求工具 vmware下载: VMware16安装包详细安装教程_vmware16下载-CSDN博客...

Elasticsearch分片数量是什么意思?

Elasticsearch中的分片&#xff08;Shard&#xff09;数量是一个重要概念&#xff0c;以下为你详细介绍它的含义及相关要点&#xff1a; ### 定义 分片是Elasticsearch将索引数据进行拆分的基本单元。简单来说&#xff0c;Elasticsearch会把一个索引的数据分割成多个较小的部分…...

BerOS 文件系统路径归一化问题及其 Python 实现

题目背景 本文将讨论一道与操作系统路径归一化有关的问题&#xff0c;该问题来自 BerOS 文件系统 的设计。BerOS 是一个新型操作系统&#xff0c;其文件路径系统允许路径中的分隔符 / 重复出现。例如&#xff0c;以下路径被视为等价的&#xff1a; /usr//local//nginx/sbin//…...

【微服务】1、引入;注册中心;OpenFeign

微服务技术学习引入 - 微服务自2016年起搜索指数持续增长&#xff0c;已成为企业开发大型项目的必备技术&#xff0c;中高级java工程师招聘多要求熟悉微服务相关技术。微服务架构介绍 概念&#xff1a;微服务是一种软件架构风格&#xff0c;以专注于单一职责的多个响应项目为基…...

SQL Server 数据库 忘记密码

1、先用windows 身份验证 连接 2、安全性--登录名 3、设置 身份验证 4、重启电脑 5、登录 登陆成功!!! ------------------------------------------------------------------ --1、查询登录账号信息 ------------------------------------------------------------------ -- …...

Tableau数据可视化与仪表盘搭建-安装教程

下载 tableau.com/zh-cn/support/releases 滚动到最下方的下载 在下载的同时 我们点击登录&#xff0c;去注册一个tableau的账号 下面点击我们下载好的tableau安装程序 不要自定义安装&#xff0c;会有路径问题 点击试用14天 点击激活 激活学生 tableau.com/zh-cn/academic…...

UGUI 优化DrawCall操作记录(基于Unity2021.3.18)

UGUI中相同材质相同Shader相同贴图的UI元素可以合并DrawCall。 1.使用图集 Unity性能优化---使用SpriteAtlas创建图集进行批次优化_unity2021.3.33 spriteatlas优化-CSDN博客 2.Canvas的子物体在场景树中的索引位置和不同图集不影响UI合批且UI网格没有重叠&#xff0c;如下图…...

DeepSeek v3为何爆火?如何用其集成Milvus搭建RAG?

最近&#xff0c;DeepSeek v3&#xff08;一个MoE模型&#xff0c;拥有671B参数&#xff0c;其中37B参数被激活&#xff09;模型全球爆火。 作为一款能与Claude 3.5 Sonnet&#xff0c;GPT-4o等模型匹敌的开源模型DeepSeek v3不仅将其算法开源&#xff0c;还放出一份扎实的技术…...

网络编程原理:回显服务器与客户端通信交互功能

文章目录 路由器及网络概念网络通信基础TCP/IP 五层协议封装和分用封装分用 网络编程&#xff08;网络协议&#xff09;UDP类 API使用实现回显通信程序回显服务器(UDP代码)回显客户端(UDP代码) TCP API使用回显服务器(TCP代码)回显客户端(TCP代码) 路由器及网络概念 网络发展是…...

#渗透测试#漏洞挖掘#WAF分类及绕过思路

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…...

西安电子科技大学初/复试笔试、面试、机试成绩占比

西安电子科技大学初/复试笔试、面试、机试成绩占比 01通信工程学院 02电子工程学院 03计算机科学与技术学院 04机电工程学院 06经济与管理学院 07数学与统计学院 08人文学院 09外国语学院 12生命科学与技术学院 13空间科学与技术学院 14先进材料与纳米科技学院 15网络与信息安…...

【Python学习(六)——While、for、循环控制、指数爆炸】

Python学习&#xff08;六&#xff09;——While、for、循环控制、指数爆炸 本文介绍了While、for、循环控制、指数爆炸&#xff0c;仅作为本人学习时记录&#xff0c;感兴趣的初学者可以一起看看&#xff0c;欢迎评论区讨论&#xff0c;一起加油鸭~~~ 心中默念&#xff1a;Py…...

中间件自动化测试框架cmdlinker

背景 作为一个中间件的测试工程师&#xff0c;如何对于中间件提供的命令进行自动化的回归&#xff0c;这一直是一个难题&#xff0c;市面上好像缺乏了对于命令进行自动化回归的合理解决方案。 常见方式有下面两种&#xff1a; 直接写字符串的命令&#xff0c;然后使用各种编程…...

写一个类模板三个模板参数K,V,M,参数是函数(函数参数、lambda传参、函数指针)

cal是类的成员函数。cal的3个入参是func1(K&#xff09;&#xff0c;func2&#xff08;K&#xff0c;V&#xff09;&#xff0c;func3(K&#xff0c;V&#xff0c;M)&#xff0c;请写出cal&#xff0c;并在main函数中调用cal 在您给出的要求中&#xff0c;cal成员函数并不直接…...

STM32-笔记35-DMA(直接存储器访问)

一、什么叫DMA&#xff1f; DMA&#xff08;Direct Memory Access&#xff0c;直接存储器访问&#xff09;提供在外设与内存、存储器和存储器之间的高速数据传输使用。它允许不同速度的硬件装置来沟通&#xff0c;而不需要依赖于CPU&#xff0c;在这个时间中&#xff0c;CPU对于…...

数势科技:解锁数据分析 Agent 的智能密码(14/30)

一、数势科技引领数据分析变革 在当今数字化浪潮中&#xff0c;数据已然成为企业的核心资产&#xff0c;而数据分析则是挖掘这一资产价值的关键钥匙。数势科技&#xff0c;作为数据智能领域的领军者&#xff0c;以其前沿的技术与创新的产品&#xff0c;为企业开启了高效数据分析…...

ES6中定义私有属性详解

在ES6中&#xff0c;定义私有属性的方式相对传统的JavaScript有所不同。ES6并没有提供直接的语法来定义私有属性&#xff0c;但可以通过几种方法间接实现私有属性。 1. 使用Symbol来模拟私有属性 Symbol是一种新的数据类型&#xff0c;可以作为对象的键&#xff0c;并且它的值…...

@Cacheable 注解爆红(不兼容的类型。实际为 java. lang. String‘,需要 ‘boolean‘)

文章目录 1、org.springframework.cache.annotation.Cacheable2、javax.persistence.Cacheable Cacheable(value "findPAUserById", key "#id")public Optional<PAUser> findById(Integer id) {return paUserRepository.findById(id);}我真的要笑死…...

离散数学 期末笔记

命题符号化 使用等值演算法证明 求公式范式 在自然推理体系中构造下列推理的证明 在一阶逻辑中将下列命题符号化 设A、B、C、D是 Z 的子集 证明下列集合恒等式 二元关系 性质 没有空的 没有漏的 没有重复 函数...

物联网控制期末复习

第3章 物联网控制系统的过程通道设计 3.1 模拟量输出通道 3.1.1单模拟量输出通道的构成 计算机控制系统的模拟量输出通道将计算机产生的数字控制信号转换为模拟信号&#xff08;电压或电流&#xff09;作用于执行机构&#xff0c;以实现对被控对象的控制。 多D/A结构&#…...

Hypium纯血鸿蒙系统 HarmonyOS NEXT自动化测试框架

1、什么是Hypium Hypium是华为官方为鸿蒙操作系统开发的一款以python为语言的自动化测试框架。 引用华为官网介绍如下&#xff1a; DevEco Testing Hypium(以下简称Hypium)是HarmonyOS平台的UI自动化测试框架&#xff0c;支持开发者使用python语言为应用编写UI自动化测试脚本…...

李宏毅机器学习课程笔记01 | 1.Introduction of Machine/Deep Learning

笔记是在语雀上面做的&#xff0c;粘贴在CSND上可能存在格式错误 机器学习的本质就是借助机器寻找一个转换函数 根据函数的输出类型&#xff0c;可以将机器学习进行分类 regression 回归任务&#xff1a;函数输出时一个数值classification 分类任务&#xff1a;人类设定好选项…...

探索Docker Compose:轻松管理多容器应用

探索Docker Compose&#xff1a;轻松管理多容器应用 在现代软件开发中&#xff0c;容器化已经成为构建、部署和扩展应用的主流方式。而Docker Compose作为Docker生态系统的重要组成部分&#xff0c;可以简化多容器应用的管理。本文将深入探讨Docker Compose的核心功能及应用场…...

java中static和const和final的区别

static 关键字 static 关键字用于声明类的成员&#xff08;方法或变量&#xff09;为静态成员。静态成员属于类本身&#xff0c;而不是类的实例。换句话说&#xff0c;静态成员可以通过类名直接访问&#xff0c;而不需要实例化对象。 静态变量&#xff1a;属于类的所有对象共…...

[Win32/ATL]_[初级]_[处理WM_PAINT消息注意事项]

场景 在开发Win32/WTL程序时&#xff0c;遇到了使用CFolderDialog(atldlgs.h)打不开目录选择对话框的情况。具体表现是执行了窗口的DoModal&#xff0c;却没有窗口弹出来。 可以确定执行操作是在主线程,并不是工作线程。调试时暂停看堆栈&#xff0c;知道到DoModal方法里的SHB…...

【DevOps】Jenkins项目发布

Jenkins项目发布 文章目录 Jenkins项目发布前言资源列表基础环境一、Jenkins发布静态网站1.1、项目介绍1.2、部署Web1.3、准备gitlab1.4、配置gitlab1.5、创建项目1.6、推送代码 二、Jenkins中创建gitlab凭据2.1、创建凭据2.2、在Jenkins中添加远程主机2.3、获取gitlab项目的UR…...

Lua迭代器如何使用?

在Lua中&#xff0c;迭代器是一种用于遍历集合元素的重要工具。掌握迭代器的使用方法&#xff0c;对于提高Lua编程的效率和代码的可读性具有重要意义。 1.迭代器概述 12.1.1 迭代器介绍 迭代器是一种设计模式&#xff0c;它提供了一种访问集合元素的方法&#xff0c;而不需要…...

cesium小知识:3D tiles 概述、特点、示例

Cesium 的 3D Tiles 是一种高效的、流式传输的三维地理空间数据格式,专为在Web浏览器中快速渲染大规模三维场景而设计。3D Tiles 支持多种几何类型,包括点云、多边形、模型等,并且可以包含丰富的属性信息和层次细节(LOD, Level of Detail)结构,以确保不同设备和网络条件下…...

PTA DS 基础实验3-2.1 一元多项式求导

基础实验3-2.1 一元多项式求导 分数 20 全屏浏览 切换布局 作者 DS课程组 单位 浙江大学 设计函数求一元多项式的导数。 输入格式: 以指数递降方式输入多项式非零项系数和指数&#xff08;绝对值均为不超过1000的整数&#xff09;。数字间以空格分隔。 注意&#xff1a…...

【玩转全栈】----用户管理案例

目录 案例需求&#xff1a; 成果显示&#xff1a; 源码展示&#xff1a; 部分源码解释及注意 1、info_list.html文件 2、info_add.html文件 3、models.py文件 4、views.py文件 经过前面的学习&#xff0c;相信您对Django、MySQL&#xff0c;以及他们之间的连接已经非常熟悉了&a…...

文件上传漏洞利用与绕过姿势总结

文章目录 攻击与绕过方式一、条件竞争二、二次渲染结合文件包含绕过1、gif2、png3、jpg 三、.htaccess解析绕过四、文件后缀名绕过1、文件特殊后缀名大小写绕过2、::$DATA绕过3、双后缀名绕过4、点绕过5、空格绕过 五、文件头绕过六、短标签绕过七、MIME(Content-Type)绕过八、…...

Java十六

2-9-1Request和Response介绍 Request继承体系 ServletRequest————Java提供的请求对象根接口 Http ServletRequest————Java提供的对Http协议封装的请求对象接口 RequestFacade————Tomcat定义的实现类 1.Tomcat需要解析请求数据,封装为request对象,并且创建requ…...

人工智能在事件管理中的应用

随着科技的不断发展,人工智能(AI)正在深入到各行各业,运维领域也不例外。在事件管理中,AI通过其强大的数据分析和自动化能力,帮助团队更高效地处理系统事件,提升业务的稳定性和用户体验。 什么是事件管理? 事件管理是IT运维的重要组成部分,其核心目标是快速响应和处…...