【强化学习论文】小样本策略泛化的提示决策转换器

news/2024/4/27 7:32:37/文章来源:https://blog.csdn.net/qq_43058281/article/details/128008904
  • 文献题目:Prompting Decision Transformer for Few-Shot Policy Generalization

摘要

  • 人类可以利用先前的经验并从少量演示中学习新任务。与旨在通过更好的算法设计实现快速适应的离线元强化学习相比,我们研究了架构归纳偏差对少样本学习能力的影响。我们提出了一种基于提示的决策转换器 (Prompt-DT),它利用 Transformer 架构的顺序建模能力和提示框架来实现离线 RL 中的小样本自适应。我们设计了轨迹提示,其中包含小样本演示的片段,并对特定于任务的信息进行编码以指导策略生成。我们在五个 MuJoCo 控制基准测试中的实验表明,Prompt-DT 是一个强大的少样本学习器,无需对未见目标任务进行任何额外微调。 Prompt-DT 的性能大大优于其变体和强大的元离线 RL 基线,其轨迹提示仅包含几个时间步长。 Prompt-DT 对提示长度的变化也很稳健,并且可以推广到分布外 (OOD) 环境。项目页面:
    https://mxu34.github.io/PromptDT/。

引言

  • 离线强化学习(离线RL) (Levine et al.,2020)旨在从一组不访问环境的行为策略收集的轨迹中学习最优策略。这种数据驱动的方法在许多情况下是必不可少的,在这些情况下,在线交互可能是昂贵的(如机器人或教育代理)和危险的(如自动驾驶或医疗保健)。最近的一些研究表明,这种方法在支持数据驱动的游戏环境政策学习(Chen等人,2021年)、机器人操作行为(Ebert等人,2018年;Kalashnikov等人,2018年)和机器人导航技能(Kahn等人,2021年)。
  • 然而,我们发现离线RL的内在困难之一是无法推广到看不见的任务。虽然代理可能能够从训练任务中获得良好的状态覆盖,但由于分布的转移,它仍然很难在测试任务中找到一个好的策略。因此,Mitchell等人(2021)最近的工作考虑了旨在解决离线RL中的泛化问题的离线元RL设置。提出了使用优势加权回归(Peng et al., 2019)作为子例程RL算法的Meta-Actor批评家优势加权(Meta-Actor Critic with Advantage weighted, MACAW)算法,并以元学习目标优化agent的适应能力(Finn et al., 2017a)。
  • 虽然元学习方法通过算法学习的视角解决了这个问题,但我们的目的是在这项工作中调查架构归纳偏差的力量。众所周知,Transformer (Vaswani et al., 2017)模型在对大规模数据集进行预训练时,能够进行少镜头或零镜头学习。此外,自然语言处理(NLP)最近的工作(Liu et al., 2021;Brown et al., 2020)认为,==基于提示的框架是适应新任务的有效范式,如翻译和问题回答。在基于提示的框架中,提示包含关于任务的有价值的信息,并作为输入的前缀预先挂起。因此,它将少镜头或零镜头的泛化问题转化为条件序列生成,这是这些大型Transformer模型的优势所在。==最近,Chen等人(2021)表明,除了自然语言之外,Transformer体系结构还可以对轨迹数据具有强大的序列建模能力,在离线RL上实现了最先进的结果。在这项工作中,我们的目标是解决这样一个问题:我们能否利用NLP中的基于提示的框架,并将其适应于离线RL的环境,以实现对不可见任务的少镜头泛化?
  • ==值得注意的是,将基于提示的方法应用于RL问题并非易事。==在自然语言处理(NLP)中,语言模型(lm)在大量的原始文本(包括互联网上几乎所有的信息)上进行预先训练。此外,大多数NLP任务可以重写为标准的空白填充格式作为提示。这些提示作为查询从预先训练的lm中提取正确的信息。在RL中,由于不同任务之间的内在差异,预训练的模型是否有足够的知识来解决不可预见的任务是值得怀疑的。我们建议使用几发子弹的演示作为提示,我们称之为轨迹提示。我们没有进行无监督的语言模型预训练,而是集中于有监督地训练一个代理,该代理可以模仿这些演示来生成新策略,而无需进行微调。在我们基于提示的离线RL框架中,代理首先使用从同一领域/环境中的不同任务收集的离线轨迹进行训练。对于每个任务,代理学习预测目标轨迹,同时对从同一任务中采样的轨迹提示进行条件反射。在评估期间,给代理一个新任务和一些新轨迹(总步长小于或等于15)来构建提示。无需进行额外的调整,代理应该利用这些轨迹中显示的任务信息,并为新任务生成策略。该框架功能强大且具有吸引力,原因有很多:它允许代理利用从不同任务收集的离线轨迹,代理可以执行少镜头学习,在不更新代理的情况下适应新场景。
  • 我们将这种方法称为基于提示的决策转换器(prompt - dt),它利用Transformer体系结构的顺序建模能力和提示框架来实现离线RL中的少镜头适应。我们的贡献如下。
  • 1.我们提出了Prompt-DT,这是一个基于transformer的模型,通过由少量轨迹构建的短轨迹提示来学习适应看不见的任务。
  • 2.我们在五个MuJoCo控制基准测试中的实验表明,Prompt-DT是一个强大的少弹学习器,无需对目标任务进行任何额外的微调,大大超过了强元离线RL基准。
  • 3.我们的分析表明了基于提示的框架的必要性,以及提示长度的鲁棒性和提示质量的敏感性。
  • 4.提示dt可以推广到非分布任务,而之前的方法都失败了。

相关工作

  • 离线强化学习。离线RL (Levine et al., 2020)使用预收集的数据集学习策略,其中包含在行为策略下采样的轨迹。正如Levine等人(2020年)所指出的那样,离线RL问题已被证明比在线RL更具挑战性,因为学习代理需要仅使用离线数据来估计保单的价值。与在线RL类似,我们可以采用基于模型或无模型的方法。当使用基于模型的方法时,我们可以用离线数据估计奖励和过渡函数。然而,我们需要修改RL算法,以避免利用估计模型中的误差(Yu et al, 2020b;基坦比等人,2021年;Yu等人,2021年)。或者,在选择无模型方法时,我们可以将q学习算法或pol policy梯度算法应用于离线设置,但需要显式纠正离线数据中的行为策略与我们想要优化的策略之间的分布不匹配(Kumar等人,2020;伊斯兰等人,2019)。
  • Meta-Reinforcement学习。元强化学习(Meta-reinforcement learning,简称rl)旨在将智能体的知识从一个任务推广到另一个任务。一种流行的元rl算法是Finn等人(2017a)提出的模型不可知论元学习(MAML)。MAML的目标是找到一个策略参数,以便在给定任务分布中的新任务时,只需进行几次更新就可以在新任务中获得良好的性能。MAML在优化过程中包含一个内循环和一个外循环。内部循环优化策略参数,以在一个步骤或几个步骤中适应给定的任务。这可以通过遵循任何策略梯度算法来实现。外部循环包括元学习目标,它在对任务分布中所有可能的任务进行适应后优化策略的性能。MAML在基准测试领域已经显示出成功和有效的适应。然而,这种优化算法需要从内环反向传播到外环,计算量大。提出了更多的后续方法来减轻计算负担(Nichol等人,2018;Rajeswaran等人,2019)。
  • 作为序列建模的策略学习。RL算法需要处理长期信用分配的挑战,这通常是通过时间差异(TD)学习完成的(Sutton & Barto, 2018)。然而,为NLP设计的模型,如Transformer (Vaswani et al., 2017),可以固有地处理长期信用分配问题。最近,Decision Transformer (Chen等人,2021年)提出将RL问题建模为序列预测问题,在Transformer模型中使用状态、行动、奖励作为令牌。并发工作采用类似的方法,使用Transformer预测环境的动态(Janner等人,2021年)。与经典的RL算法相比,这些基于变压器的方法在基准测试领域取得了类似或更好的性能。最近,Furuta等人(2021)论证了决策转换器模型正在进行事后信息匹配。
  • Few-Shot学习。少镜头学习(FSL)旨在快速推广到只包含少量样本和监督信息的新任务(Wang et al., 2020)。FSL可以通过开发可以复制人类行为的代理来推进机器人技术。例子包括一次性模仿(Wu & Demiris, 2010)、多武装匪徒(Duan等,2017)、视觉导航(Finn等,2017a)和连续控制(Yoon等,2018)。FSL的应用包括图像分类(Vinyals等人,2016)、对象跟踪(Bertinetto等人,2016)、视觉问题回答解析(Dong等人,2018)、语言建模(Vinyals等人,2016)和神经结构搜索(Brock等人,2017)。FSL可以减少数据密集型应用程序的数据收集工作。另一个经典的FSL场景是,由于安全或伦理问题,带有监管信息的考试组很难获得(Altae-Tran等人,2017年)。
  • Prompt-based学习。对于自然语言处理来说,基于提示的学习是建立在直接模拟文本概率的语言模型的基础上的。与训练模型接受输入xxx并预测输出yyyP(y∣x)P(y|x)P(yx)的传统监督学习不同,基于提示的方法使用模板将原始输入xxx修改为文本字符串提示x′x'x,其中有一些未填充的空白,然后使用语言模型将答案yyy概率地填充为空白(Liu等人,2021年)。通过这种方式,通过选择适当的提示,我们可以操纵模型来预测所需的输出,有时甚至不需要任何额外的任务特定训练(Brown et al., 2020;Radford等人,2019;高等人,2020)。潜在的假设是,经过预训练的语言模型已经从预训练语料库中学习了足够的知识,我们只需要找到正确的方法来提取这些知识。然而,在RL设置中,我们没有足够大的和通用的训练前语料库来覆盖不同的环境和任务。因此,在这项工作中,我们建议以一种不同的方式使用提示。RL代理被要求模仿提供的轨迹提示,而不是我们提供提示来从预先训练的模型中提取知识,这样它就可以再现生成这些轨迹的策略。

预赛

在线和离线元强化学习

  • 强化学习 (RL) 问题是一个顺序决策问题,其中学习代理与环境交互并优化其控制策略以获得最优值。 动态环境中的每个顺序决策任务通常建模为马尔可夫决策过程 (MDP)(Sutton & Barto,2018),由元组 M=(S,A,P,R,µ)M = (S, A, P, R, µ)M=(S,A,P,R,µ) 表示。 SSSAAA 是状态空间和动作空间。 P:S×A×S→RP : S × A × S → RP:S×A×SR 是转移模型,其中 P(s,a,s′)P(s, a, s')P(s,a,s) 是在状态 sss 采取行动 aaa 到达状态 s′s's 的概率。 R:S→RR : S → RR:SR 是奖励函数。 µµµ 是初始状态分布。 在每一步,RL 智能体通过基于当前状态 sss 采取行动 aaa 与环境交互,观察奖励 rrr 和从环境中产生的下一个状态 s′s's。 顺序决策任务的目标是找到一个策略 π:S×A→Rπ : S × A → Rπ:S×AR 来优化预期的累积奖励
    在这里插入图片描述
  • 通常,RL 是在线执行的,其中代理迭代地采取行动并从环境中接收反馈。 然而,这可能并不总是可行的,因为 RL 算法由于样本效率普遍较低而可能需要大量训练数据。 这使得在线环境中的培训非常耗时。 在一些现实世界的安全关键环境中,在训练阶段在线部署代理可能会导致灾难性的失败。 我们考虑离线 RL 设置(Levine 等人,2020),其目的是从使用(可能未知的)行为策略预先收集的数据中学习策略。 在此设置中,代理可以访问包含一组轨迹的数据集 DDD。 轨迹 {s0,a0,r0,s1,a1,r1,...,sT,aT,rT}\{s_0, a_0, r_0, s_1, a_1, r_1, . . . , s_T , a_T , r_T \}{s0,a0,r0,s1,a1,r1,...,sT,aT,rT} 使用环境中的行为策略进行采样。 agent 需要在不与环境本身交互的情况下,仅使用数据集 DDD 找到最优策略。
  • 最初提出在线和离线 RL 设置是为了在一项任务中找到最优策略。 如果设计的学习代理能够在学习了一些任务后用少量新收集的数据适应类似任务,则可以进一步提高 RL 的效率,这主要是在元 RL 下开发的(Finn 等人,2017a) . 最近,meta-RL 已扩展到离线设置,旨在通过预先收集的数据快速适应新任务。 在 Mitchell 等人 (2021) 提出的离线元强化学习设置中,代理被赋予一组任务 TTT,其中任务 Ti∈TT_i ∈ TTiT 定义为 (Mi,πi)(M_i, π_i)(Mi,πi),包含 MDP MiM_iMi 和行为策略 πiπ_iπi . 对于每个任务 TiT_iTi,代理都提供了一个数据集 DiD_iDi,其中包含使用 πiπ_iπi 采样的轨迹。 该代理使用表示为 TtrainT^{train}Ttrain 的训练任务子集进行训练,并期望在与 TtrainT^{train}Ttrain 不相交的一组测试任务 TtestT^{test}Ttest 中找到最优策略。

决策Transformer

  • 已在 NLP(De vlin 等人,2018 年)和计算机视觉(Carion 等人,2020 年)中广泛研究的 Transformer 表现出优于基于 RNN 的架构。 它最近被用于解决 RL 问题,因为它在对长序列数据建模时具有效率和可扩展性。 离线强化学习的决策转换器 (Chen et al., 2021) 将学习策略视为顺序建模问题。 它建议使用在不同时间步长 ttt 收集的状态 sts_tst、动作 ata_tat 和 reward-to-go r^t\hat r_tr^t 元组对轨迹进行建模。 reward-to go 是从当前时间步到 episode 结束的累积奖励。 这种新颖的表示不包括单步奖励 rtr_trt,而是有助于指导行动选择以优化回报。 在时间步 ttt,Decision Transformer 将自回归轨迹序列 τττ 作为输入,其中包含最近的 KKK 步历史记录。
    在这里插入图片描述
  • 当使用离线收集的数据进行训练时,
    在这里插入图片描述
    。 在测试过程中,r^t = G? −Pti=0 ri
    其中 G*是一集的目标总回报。 每个轨迹 τττ 对应于标准 Transformer 模型中的 3K3K3K 个令牌。 为了对序列时间步信息进行编码,Decision Transformer 将相同的时间步嵌入连接到 sts_tstata_tatr^t\hat r_tr^t 的嵌入。 对应于状态标记的每个头都被训练为通过在连续动作空间时最小化均方损失来预测动作。

基于提示的决策转换器

  • 本节介绍基于提示的决策转换器 (Prompt-DT),这是一种用于小样本策略泛化的新型转换器架构,如图 1 所示。

在这里插入图片描述

  • 图 1. 用于小样本策略泛化的 Prompt-DT。 左边显示了每个任务 Ti∈Ttrain∪TtestT_i ∈ T^{train} ∪ T^{test}TiTtrainTtest的少量样本演示数据集 PiP_iPi。 轨迹提示定义为从存储在 PiP_iPi 中的各种事件中采样的长度为 KKK 的轨迹序列。 在预训练和小样本评估中,Prompt-DT 将轨迹提示增强和最近的 KKK 步历史作为输入,并自回归输出与输入序列中每个状态对应的动作。

4.1 问题表述

  • 在使用离线数据对一组任务进行训练后,我们将离线少样本 RL 问题形式化为针对新任务的少样本策略泛化问题。 训练集 TtrainT^{train}Ttrain 中的每个任务 TiT_iTi 都与数据集 DiD_iDi 相关联,其中包含使用未知行为策略 πiπ_iπi 预先收集的轨迹。 与使用特定于任务的离线数据或在线交互更新模型权重的离线元 RL 相比,我们希望在没有微调或梯度更新的情况下实现泛化,从而保持高效率并避免由于参数移动而导致的灾难性遗忘。
  • 为了在 RL 的上下文中实现少样本学习,我们假设存在一个数据集 PiP_iPi,其中包含每个任务 Ti∈Ttrain∪TtestT_i ∈ T^{train} ∪ T ^{test}TiTtrainTtest 的少样本演示。 对于训练任务 Ti∈TtrainT_i ∈ T^{train}TiTtrain,我们让 PiP_iPi 是离线数据集 DiD_iDi 的一个子集。 测试任务 Ti∈TT_i ∈ TTiT 测试的 PiP_iPi 可以通过人类实验者或行为策略获得。 在这项工作中,我们希望设计一种架构,可以直接提取存储在演示数据集 PiP_iPi 中的独特任务特定信息,并利用这些信息来指导策略生成。

4.2 及时表示

  • 包含任务特定说明的文本提示使大型 Transformer 模型能够在不更改 NLP 任务中的模型参数的情况下生成答案。 在 RL 的背景下,最近引入了可以作为提示的文本描述来解决 Atari 视频游戏和多模式家庭任务(Shridhar 等人,2020)。 此类文本描述通常需要预定义的语言模板,并且可能需要大量人力来进行注释。
  • 相反,我们将 RL 的轨迹提示定义为由几个轨迹段组成的序列。 每个轨迹段包含多个状态 s∗s*s、动作 a∗a*a 和 reward-to go r^∗\hat r*r^ 元组 (s∗,a∗,r^∗)(s*, a*, \hat r*)(s,a,r^),遵循 Decision Transformer 中的轨迹表示。 每个带有上标的元素都与轨迹提示相关联。 由于每个顺序决策任务 TiT_iTi 都可以建模为 MDP MiM_iMi,因此轨迹提示可以存储部分到完整的信息,以通过隐式捕获转换模型和奖励函数来指定任务。 通过直接从少镜头演示数据集 PiP_iPi 中采样轨迹段,与文本提示相比,轨迹提示相对容易获得。 形式上,我们将任务 TiT_iTi 的轨迹提示 τiτ_iτi 定义为
    在这里插入图片描述
  • K∗K*K 是提示中存储的环境步骤数。 请注意,我们选择的 K∗K*K 比任务的范围短得多。 因此,轨迹提示仅包含帮助识别任务所需的信息,但没有足够的信息供智能体模仿。

4.3 提示 DT 体系结构

  • 我们的 Prompt-DT 架构建立在 Decision Transformer (Chen et al., 2021) 的基础上,并通过提示增强序列建模问题的视角解决了离线小样本 RL 问题。 建议的轨迹提示允许对 Decision Transformer 进行最小的架构更改以进行泛化。 对于每个任务 TiT_iTi,Prompt-DT 将 τττ 输入作为输入,其中包含从 PiP_iPi 获得的 K∗K*K步轨迹提示和从 DiD_iDi 采样的最近 KKK 步历史记录。 形式上 τinput=(τ∗i,τi)τ^{input} = (τ*_i, τ_i)τinput=(τi,τi)。 由于每个时间步的数据对是一个三元组 (s,a,r^)(s, a, \hat r)(s,a,r^),因此输入序列对应于 Transformer 中的 3(K∗+K)3(K* + K)3(K+K) 个标记。 Prompt-DT 自回归地输出与输入序列中的状态标记相对应的头部 K∗+KK* + KK+K 动作。
  • 在实现中,我们利用随机轨迹提示 τ∗iτ*_iτi 来提高训练稳定性并避免算法 2 中的过度拟合。任务 TiT_iTi 的随机轨迹提示 τ∗iτ*_iτi 由长度为 HHHK∗=JHK* = JHK=JHJJJ 个轨迹段组成。
    在这里插入图片描述
  • 遵循 Decision Transformer 的结构,我们利用具有线性层的 GPT 模型来获取标记嵌入,并将相同的位置嵌入添加到对应于相同时间步长的标记中。
    在这里插入图片描述

4.4 算法

  • 我们在算法 1 和算法 3 中总结了 Prompt-DT 的训练和测试算法。
    在这里插入图片描述
    在这里插入图片描述
  • 在训练期间,Prompt-DT 最大限度地减少预测动作与提示和最近历史数据中的动作之间的误差。 通过学习存储在轨迹提示中的目标动作,Prompt-DT 被激励提取存储在轨迹提示中的特定于任务的信息,并将其与最近的历史记录相结合以预测未来的动作。 在连续设置中,Prompt-DT 通过梯度下降最小化均方损失。 在每个训练步骤中,我们对包含每个训练任务的提示历史对的批次 BBB 进行采样。 我们的批次 BBB 不是使用从一个训练任务中采样的数据批次迭代地进行梯度更新,而是通过聚合 TtrainT^{train}Ttrain 中所有任务的梯度估计来帮助稳定训练。
  • 在测试时,我们假设离线预训练的 Prompt DT 可以针对 TtestT^{test}Ttest 中的每个评估任务与模拟器进行交互。 这种在线评估假设类似于训练有素的 RL 代理的实际部署。 我们基于演示集 PiP_iPi 采样随机轨迹提示,用于类似于训练过程的任务 Ti∈TtestT_i ∈ T^{test}TiTtest。 Prompt DT 然后生成将提示和最近的上下文作为输入的操作。 在每一集的开始,我们用全零初始化最近的历史 τττ 用于 Prompt-DT 预测,并用流式收集的数据更新它。

实验

  • 我们进行实验来测试所提出的 Prompt-DT 的小样本泛化能力,并将度量作为情节累积奖励。 我们的目标是根据经验回答以下问题:1)Prompt-DT 能否实现少镜头策略泛化? 2)提示的数量和质量如何影响小样本泛化能力? 3)Prompt-DT 是否泛化到分布外的任务?

## 5.1 环境和数据集

  • 我们评估了如下描述的五个元强化学习控制任务(Finn 等人,2017a;Rothfuss 等人,2018;Mitchell 等人,2021;Yu 等人,2020a;Todorov 等人,2012) .
  • Cheetah-dir。 Cheetah-dir 中有两个任务,目标方向分别为向前和向后。 猎豹智能体沿着目标方向获得高速奖励。 训练集和测试集是相等的,都包含两个任务。
  • Cheetah-vel。 Cheetah-vel 中有 40 个目标速度不同的任务。 目标速度从区间 [0,3] 中统一采样。 代理因目标速度的 l2 错误而受到惩罚。 我们拿出 5 个任务来构建测试集,并用剩下的 35 个任务进行训练。
  • Ant-dir。 Ant-dir 中有 50 个不同目标方向的任务在二维空间中统一采样。 8 关节蚂蚁沿目标方向获得高速奖励。 我们抽取 5 个任务进行测试,其余的用于训练。
  • Dial。 在 Dial 中,任务是控制一个 6-DOF Jaco
    机器人到达位于数字键盘中的目标号码。 一共有10个数字,对应10个任务。 我们训练 6 个任务并测试 4 个任务。 Dial 比 Meta-World reach-v2 更复杂,因为它直接控制 6 个关节。
  • Meta-World reach-v2。 在 Meta-World reach-v2 中,任务是控制 Sawyer 机器人的末端执行器到达 3D 空间中的目标位置。 代理直接控制末端执行器的 XYZ 位置。 每个任务都有不同的目标位置。 我们训练 15 个任务并测试 5 个任务。
  • Cheetah-dir、Cheetah-vel 和 Ant-dir 中的实验严格遵循 Mitchell et al(2021) 中的数据集和设置。 所有三个任务中的代理都受到大控制信号的惩罚。 Cheetah-dir 和 Ant-dir 的数据集包含用于使用 Soft Actor Critic 训练 RL 代理的完整回放缓冲区(Haarnoja 等人,2018)。 Cheetah vel 的数据集包含使用 TD3 (Fujimoto et al., 2018) 训练的回放缓冲区,以提高训练稳定性。 在 Meta-World reach-v2 (Yu et al., 2020a) 和 Dial (Shiarlis et al., 2018) 中,我们使用两种环境中提供的脚本专家策略收集专家轨迹。

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

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

相关文章

不懂单链表? 这篇文章就帮你搞明白

坚持看完,结尾有思维导图总结 链表对指针的操作要求不低链表的概念链表的特性链表的功能(最重要)定义和初始化头插头删细节说明尾插尾删寻找链表元素与打印链表在 某位置后插入删除在某位置的插入删除销毁链表链表的概念 什么是链表 官方概念:链表是一种…

显卡---显卡驱动---CUDA---Cudnn

1. 背景 最近在follow百度的CAE这篇论文时,源码需要的环境为: python 3.7 cuda: 11.0 cudnn: 8.0.4 gcc 8.2 该版本要求与我目前使用的服务器上的CUDA版本不相符合。因此搜索了一篇国外小哥的文章,讲述了如何在一台服务器上安装多个CUDA和Cud…

Node之Express学习笔记

一.Express 1.1什么是Express Express的作用和Node.js内置的http模块类似 专门用来创建Web服务器的 本质:npm上的第三方包,提供快速创建Web服务器的便捷方法 1.2Express能做什么 Web网站服务器:专门提供Web网页资源的服务器 API接口服务器&…

FPGA----ZCU106基于axi-hp通道的pl与ps数据交互(全网唯一最详)

1、大家好,今天给大家带来的内容是,基于AXI4协议的采用AXI-HP通道完成PL侧数据发送至PS侧(PS侧数据发送至PL侧并没有实现,但是保留了PL读取PS测数据的接口) 2、如果大家用到SoC这种高级功能,那大家应该对于…

Linux进阶-进程间通信(ipc)

进程间通信:数据传输、资源共享、事件通知、进程控制。 Linux系统下的ipc 早期unix系统 ipc:管道(数据传输)、信号(事件通知)、fifo(数据传输)。 system-v ipc(贝尔实…

Kubernetes之Pod初始化容器

Kubernetes之Pod初始化容器 概述 ​ 初始化是很多编程语言普遍关注的问题,甚至有些编程语言直接支持模式构造来生成初始化程序,这些用于进行初始化的程序结构称为初始化器或初始化列表。初始化代码要首先运行,且只能运行一次,它们…

CAPM资产定价模型

本文是Quantitative Methods and Analysis: Pairs Trading此书的读书笔记。 CAPM(Capital Asset Pricing Model)资产定价模型 这个模型在金融界的影响就是beta这个词的使用。CAPM模型用两个部分的回报之和来解释一个资产的回报。其中一个部分是指市场(称为market)…

时间序列:时间序列模型---自回归过程(AutoRegressive Process)

本文是Quantitative Methods and Analysis: Pairs Trading此书的读书笔记。 这次我们构造一个由无限的白噪声实现(white noise realization) 组成的时间序列,即。这个由无限数目的项组成的值却是一个有限的值,比如时刻的值为, 而…

Magic Leap 2设计和开发幕后花絮

Magic Leap今年发布新款AR头显Magic Leap 2,相比于上一代Magic Leap 1,新品更专注于B端场景,自公布以来,Magic Leap不仅对公司策略、理念更加透明,也不断公开ML2产品设计背后的思考。相比于ML1,ML2的设计有…

粒子群算法查找函数最小值

实现 函数 F01、F06 的优化测试 以下内容是现有算法的运行结果、调参分析、及代码实现,用于给其他人提供参考,懒得改了hh 1. 运行结果 参数 w 0.5 (可更改) c1 2.0 (可更改) c2 2.0 (可更改&…

Echart 柱状图,X轴斜着展示

option { color: [‘#3398DB’], tooltip: { trigger: ‘axis’, axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: ‘shadow’ // 默认为直线,可选为:‘line’ | ‘shadow’ } }, grid: { left: ‘3%’, right: ‘4%’, bottom: ‘3%’…

iPhone升级iOS 16后出现提示“面容ID不可用”怎么办?

最近,很多用户在苹果社区反馈,iPhone升级iOS 16后Face ID不能用了,尝试重置Face ID时,系统会弹窗提示“面容ID不可用,稍后尝试设置面容ID。” 如果你的iPhone在没有摔落手机或是手机进水的情况下出现这个弹窗&#xff…

【uniapp小程序】路由跳转navigator传参封装

文章目录🍍前言🍋正文1、看官网1.1 navigator API 介绍1.2、路由跳转参数传递1.3、五种常见的跳转方式1.3.1 uni.navigateTo(OBJECT)1.3.2 uni.redirectTo(OBJECT)1.3.3 uni.reLaunch(OBJECT)1.3.4 uni.switchTab(OBJECT)1.3.5 uni.navigateBack(OBJECT)…

图的初识·基本概念

文章目录基本概念图有两种基本形式无向图的表示有向图的表示基本概念 图结构也是数据结构的一部分。而且还有一点小难。图是由多个结点链接而成的,但是一个结点可以同时连接多个其他结点,多个节点也可以同时指向一个节点。【多对多的关系】 图结构是任意…

如何从报表控件FastReport .NET中连接到 PostgreSQL 数据库?

FastReport.NET官方版下载 Fastreport是目前世界上主流的图表控件,具有超高性价比,以更具成本优势的价格,便能提供功能齐全的报表解决方案,连续三年蝉联全球文档创建组件和库的“ Top 50 Publishers”奖。 慧都科技是Fast Repor…

mysql索引类别和失效场景

首先,我们为什么要使用索引,索引有什么作用呢? 索引可以用来快速查询数据表中有某一特定值的记录,大大加快数据的查询速度;在列上创建了索引之后,查找数据时可以直接根据该列上的索引找到对应记录行的位置…

YOLO X 改进详解

YOLO X 主要改进: Anchor-Free: FCOSDecoupled detection headAdvanced label assigning strategy Network structure improvement Decoupled detection head 对比于YOLO V5, YOLO X 在detection head上有了改进。YOLO V5中,检测头是通过卷积同时预…

视频编解码 - RTP 与 RTCP

目录 RTP 实时传输协议 RTCP协议 将H264 RTP打包 RTP 实时传输协议 音视频数据传输,先将原始数据经过编码压缩后,将码流打包成一个个RTP包,再将码流传输到接收端。 打包的作用 接收端要正确地使用这些音视频编码数据,不仅仅需…

JaVers:自动化数据审计

在开发应用程序时,我们经常需要存储有关数据如何随时间变化的信息。此信息可用于更轻松地调试应用程序并满足设计要求。在本文中,我们将讨论 JaVers 工具,该工具允许您通过记录数据库实体状态的更改来自动执行此过程。 Javers如何工作&#x…

vue Router

Vue项目各文件含义 1.src文件夹 是我们真正敲代码的文件夹, 2.assets放静态资源 3.components放组件 4.App.vue主组件 5.main.js项目的入口文件 Vue Router 在router/index.js路由文件中配置路由,设置路由跳转规则 import Vue from vue import Vu…