浅谈Agent

目录

什么是大模型 Agent ?

大模型Agent 有哪些部分组成?

规划(Planning)

Planning类型

不依赖反馈的计划

基于反馈的计划

拆解子目标和任务分解方法

COT

TOT

GOT

LLM+P

反思和完善

ReAct(融合推理与执行的能力)

Reflexion(动态记忆和自我反思)

记忆(Memory)

结构划分

格式划分

操作划分

工具(Tools) 

Tools use

1. 函数描述【工具声明】

2. 调用 LLM 获得函数的请求参数【工具(集合)初始化】

3. 调用函数【执行工具】

行动(Action)

Agent的挑战

角色适应性问题

上下文长度限制

提示的鲁棒性

知识边界的控制

效率和成本问题

参考



什么是大模型 Agent ?

大模型 Agent,作为一种人工智能体,是具备环境感知能力自主理解决策制定执行行动能力的智能实体。智能体是一种通用问题解决器。从软件工程的角度看来,智能体是一种基于大语言模型的,具备规划思考能力记忆能力自主调用函数的能力,能自主完成给定任务的计算机程序。

大模型Agent 有哪些部分组成?

在基于 LLM 的智能体中,LLM 的充当着智能体的“大脑”的角色,同时还有 4 个关键部分:如下图所示,Agent 共由4个关键部分组成:规划(Planning)记忆(Memory)工具(Tools)行动(Action),下面详细剖析。

规划(Planning)

智能体会把大型任务分解为子任务,并规划执行任务的流程。智能体会对任务执行的过程进行思考和反思,决定是继续执行任务,或判断任务完结并终止运行。

Planning类型

大致分为两种类型,一种是不依赖反馈的计划,另一种则是基于反馈的计划。

不依赖反馈的计划

特点

  • 不参考执行反馈:在计划制定和执行过程中,不依赖于任务执行后的即时反馈。
  • 预先确定:计划在执行前就已经完全确定,不随执行过程中的变化而调整。

常用策略

  1. 单路径推理
    • 类似于决策树中的单路径探索,每一步都基于当前状态预定规则或策略选择下一步行动,直到达到目标状态。
    • 优点:简单直接,计算量相对较小。
    • 缺点:对不确定性和动态变化的环境适应性差。
  2. 多路径推理
    • 生成多个可能的计划路径,并考虑不同路径之间的转换可能性。
    • 优点:灵活性高,能应对一定的不确定性。
    • 缺点:计算复杂度高,需要更多的计算资源。
  3. 使用外部规划器
    • 利用专门的规划算法(如A*、Dijkstra算法等)或规划系统(如HTN规划器)来搜索最优或可行的计划。
    • 优点:能够找到高质量的解决方案,适用于复杂问题。
    • 缺点:依赖于外部系统和算法的性能,可能需要大量的预处理和计算。
基于反馈的计划

特点

  • 动态调整:根据任务执行过程中的实时反馈来动态调整计划。
  • 适应性强:能够很好地应对不确定性和动态变化的环境。

反馈来源

  1. 任务执行结果的客观反馈:如传感器数据、任务完成状态等。
  2. 人的主观判断:在人类参与的任务中,根据人类的评价和指示来调整计划。
  3. 辅助模型提供的反馈:通过模拟、预测或分析等手段生成的反馈,用于优化计划。

优势

  • 提高系统在不确定性和复杂环境中的适应性和鲁棒性。
  • 能够更好地应对突发情况和意外事件。

挑战

  • 需要实时处理和分析反馈数据,对系统的实时性要求较高。
  • 在高度动态和复杂的环境中,反馈可能不完全准确或存在延迟,增加了规划的难度。

我们希望智能体也拥有类似人类规划能力的思维模式,因此可以通过 LLM 提示工程,为智能体赋予这样的思维模式。

在智能体中,最重要的是让 LLM 具备这以下两个能力:

  1. 子任务分解;
  2. 反思和完善。

拆解子目标和任务分解方法

通过大模型提示工程,比如:ReAct、CoT 推理模式,可赋予智能体类似思维模式,精准拆解复杂任务,分步解决。

COT

原论文:https://arxiv.org/pdf/2201.11903.pdf

关于使用COT:在现在应该是大模型本身就应该具备的能力,只需要在Prompt 中添加了一句 “Let's Step by Step” ,将艰难的任务分解成更小,更简单的步骤。CoT将大型任务转化为多个可管理的任务,并对模型的思维过程进 行了阐释。

Self-consistency with CoT(CoT的自我一致性)

原论文:https://arxiv.org/pdf/2203.11171.pdf

一种CoT在实际应用中的方案是:Self-consistency with CoT(CoT的自我一致性)。简单地要求模型对同一提示进行多次回答,并将多数结果作为最终答案。 它是CoT(Chain of Thought)的后续方法。

TOT

原论文:https://arxiv.org/pdf/2305.10601.pdf

具体结构图如下:虚线左边为基本PromptCoT以及CoT Self Consisitency,虚线右边为ToT

从原始输入开始,在思维链的每一步,采样多个分支。逐渐形成树状结构,对每一个分支进行评估,然后在合适的分支上进行搜索。这就是ToT思维树的基本过程,进一步扩展CoT,在每一步都探索多种推理的可能性。它首先将问题分解为多个思考步骤,并在每个步骤中生成多个思考,从而创造一个树形结构。搜索过程可以是BFS(广度优先搜索)或DFS(深度优先搜索),每个状态由分类器(通过一个prompt)或少数服从多数的投票原则来决定。

任务分解可通过以下几种方式实现:

a. 给LLM一个简单的提示词“Steps for XYZ.\n1.”,“What are the subgoals for achieving XYZ?”;

b. 使用针对具体任务的指令,例如对一个写小说的任务先给出“Write a story outline.”指令;

c. 使用者直接输入;

GOT

原论文:https://arxiv.org/pdf/2308.09687

Graph of Thoughts:同时支持多链、树形以及任意图形结构的Prompt方案,支持各种基于图形 的思考转换,如聚合、回溯、循环等,这在CoT和ToT中是不可表达的。将复杂问题建模为操作图 (Graph of Operations,GoO),以LLM作为引擎自动执行,从而提供解决复杂问题的能力。某种程度上,GoT囊括了单线条的CoT和多分枝的ToT。

无论是CoT还是ToT,本质上是通过Prompt的精心设计,激发出模型原有的Metacognition,只是如何通过某条神经元的线索能更加精准的调动出大脑中最擅长Planning的部分

LLM+P

原论文:https://arxiv.org/pdf/2304.11477

通过借助一个外部的经典Planner来进行一个更加长序列的整体规划。这种方法利用规划域定义语言(Planning Domain Definition Language, PDDL)作为中间接口来描述规划问题。这是第一个将经典规划器的优点纳入 LLM 的框架。LLM+P 接收一个规划问题的自然语言描述,然后用自然语言返回一个解决该问题的正确(或最优)计划。LLM+P的做法是,首先将语言描述转换为用规划域定义语言(Planning Domain Definition Language)编写的文件,然后利用经典规划器快速找到一个解决方案,再将找到的解决方案翻译成自然语言。根本上讲, Planning Step是外包给外部工具的,当然也有一个前提:需要有特定领域的PDDL和合适的 Planner。

作者还定义了一组不同的基准问题,这些问题取自常见的规划场景。通过对这些基准问题的全面实验,作者发现LLM+P能够为大多数问题提供最优的解决方案,而 LLM 甚至不能为大多数问题提供可行的计划。

  1. LLM的强项: 大语言模型(如GPT、BERT等)在处理自然语言理解、生成以及处理非结构化问题上表现突出。它们可以推理、生成文本,并根据已有的上下文生成合理的方案,特别适合处理灵活且复杂的任务。

    但是,LLM在面对长序列规划问题时(需要多步骤的复杂推理和任务执行)存在一定的局限性。由于LLM是概率模型,随着推理步骤的增加,预测错误的累积会导致模型在长序列任务中的性能下降。

  2. Planner的强项: 经典规划器(如A*算法、基于图的规划器等)在处理结构化问题和长序列任务上具有优势。它们可以精确地规划和推理,确保在给定条件下找到最优的执行步骤,但它们往往需要明确的规则和约束来进行规划,对非结构化问题的处理能力较弱。

  3. LLM+P 的协作

    • LLM作为任务的高层次决策器,用于理解自然语言描述的复杂任务,识别任务的核心要素,并生成一个初步的任务框架或序列。这一过程涉及到从任务描述中推断出目标、子目标和可能的策略。
    • Planner则接管具体的规划细节部分,借助经典规划算法,完成复杂任务的长序列规划。在这个阶段,Planner会优化由LLM生成的高层次策略,确保每一步的合理性,并对长序列任务进行整体优化。

经典的Planner算法种类繁多,每种算法都有其特定的应用场景和优势:

  • A*、DijkstraBellman-Ford等算法适用于图搜索和路径规划问题。
  • RRTPRM在处理复杂、高维空间中的机器人运动规划方面表现出色。
  • HSPSTRIPSSAT规划器以及PDDL等用于处理更加复杂、基于任务执行的自动规划问题。

反思和完善

上述规划模块不涉及任何反馈,这使得实现解决复杂任务的长期规划变得具有挑战性。为了解决这一挑战,可以利用一种机制,使模型能够根据过去的行动和观察反复思考和细化执行计划。目标是纠正并改进过去的错误,这有助于提高最终结果的质量。同时反思任务是否已经完成,并终止任务。这在复杂的现实世界环境和任务中尤其重要,其中试错是完成任务的关键。这种反思或批评机制的两种流行方法包括 ReAct 和 Reflexion

ReAct(融合推理与执行的能力)

个人理解一下:CoT、ToT 都是作用在大模型本身的内在推理(Reason)过程上,而 ReAct 则是统筹整个系统,从推理过程,结合外部工具共同实现最终的目标(Reason + Action),通过结合推理(Reasoning)和行动(Acting)来增强推理和决策的效果。

  • 推理(Reasoning): LLM 基于「已有的知识」或「行动(Acting)后获取的知识」,推导出结论的过程。
  • 行动(Acting): LLM 根据实际情况,使用工具获取知识,或完成子任务得到阶段性的信息。

原论文:https://arxiv.org/pdf/2210.03629

以ReAct论文中那张图来看,可以更清晰的理解ReAct与CoT、ToT的区别:

对于ReAct这个框架可以理解为是一种结合了推理和行动的新型人工智能框架,主要用于增强AI系统在复杂环境中的决策能力和执行效率。ReAct框架的核心思想是通过实时检索相关信息和执行基于这些信息的行动,来辅助AI系统进行更准确的推理和决策。

为什么结合推理和行动,就会有效增强 LLM 完成任务的能力?

  • 仅推理(Reasoning Only):LLM 仅仅基于已有的知识进行推理,生成答案回答这个问题。很显然,如果 LLM 本身不具备这些知识,可能会出现幻觉,胡乱回答一通。
  • 仅行动(Acting Only): 大模型不加以推理,仅使用工具(比如搜索引擎)搜索这个问题,得出来的将会是海量的资料,不能直接回到这个问题。
  • 推理+行动(Reasoning and Acting) LLM 首先会基于已有的知识,并审视拥有的工具。当发现已有的知识不足以回答这个问题,则会调用工具,比如:搜索工具、生成报告等,然后得到新的信息,基于新的信息重复进行推理和行动,直到完成这个任务。其推理和行动的步骤会是如下这样:

在ReAct框架中,AI系统不仅依赖于其预训练的知识,还会在遇到新情况时,主动检索外部信息(如数据库、网络资源等),并将这些信息整合到其决策过程中。这一过程可以看作是AI系统在“思考”(Reasoning)和“行动”(Acting)之间的循环,其中:

  1. 思考(Reasoning):AI系统基于当前状态和目标,进行推理和规划,确定下一步需要采取的行动或需要检索的信息。
  2. 行动(Acting):根据推理结果,AI系统执行相应的行动,如检索信息、执行任务等。
  3. 反馈:AI系统根据行动的结果,更新其状态和知识,然后再次进入思考阶段,形成一个闭环。

ReAct框架的优势在于,它使AI系统能够适应不断变化的环境,处理之前未见过的情况,而不仅仅是依赖于预训练数据。通过实时检索和整合新信息,AI系统可以做出更准确、更灵活的决策,提高其在复杂任务中的表现。

Reflexion(动态记忆和自我反思)

Reflexion是一个框架,旨在通过赋予智能体动态记忆和自我反思能力来提升其推理技巧。该方法采用标准的强化学习(RL)设置,其中奖励模型提供简单的二元奖励,行动空间遵循ReAct中的设置,即通过语言增强特定任务的行动空间,以实现复杂的推理步骤。每执行一次行动后,智能体会计算一个启发式评估,并根据自我反思的结果,可选择性地重置环境,以开始新的尝试。启发式函数用于确定轨迹何时效率低下或包含幻觉应当停止。效率低下的规划指的是长时间未成功完成的轨迹。幻觉定义为遭遇一系列连续相同的行动,这些行动导致在环境中观察到相同的结果。详细可以参考【Reflextion论文总结】-CSDN博客

原论文:https://arxiv.org/pdf/2303.11366

记忆(Memory)

Memory在Agent系统中扮演重要角色,它存储和组织从环境中获取的信息,以指导未来行动

结构划分

结构上,内存模块通常包含短期记忆长期记忆两个部分。短期记忆暂存最近的感知,长期记忆存储重要信息供随时检索。

  • 短期记忆:指在执行任务的过程中的上下文,会在子任务的执行过程产生和暂存,在任务完结后被清空;例如,记住一个电话号码直到拨打完毕。
  • 长期记忆:指长时间保留的信息(为Agent提供保留和召回长期信息的能力),一般是指外部知识库,通常用向量数据库来存储和检索。【长期记忆可以进一步分为显性记忆和隐性记忆。显性记忆,可以有意识地回忆和表达的信息,显性记忆又可以分为
    情景记忆(个人经历的具体事件)和语义记忆(一般知识和概念)。隐性记忆,这种记忆通常是无意识的,涉及技能和习惯,如骑自行车或打字。】

短期记忆和长期记忆的对比

特性短期记忆长期记忆
生命周期对话或任务期间,短期有效跨对话和任务,长期有效
存储位置内存、缓存、内存数据库、对话管理器上下文存储关系型数据库、NoSQL、向量存储、知识图谱、对象存储
访问速度快速访问(通常在内存中)稍慢(通常持久化存储在数据库)
数据类型当前上下文、临时信息用户偏好、历史记录、关系信息等
典型应用场景多轮对话中的上下文追踪跨会话的个性化服务、个性偏好、长期用户信息
示例技术Redis、内存数据库、对话管理上下文MySQL、MongoDB、FAISS、Neo4j、ES

格式划分

格式上,内存信息可以用自然语言表达,也可以编码为向量嵌入提高检索效率,还可以利用数据库存储,或组织为结构化列表表示内存语义。

  • 自然语言:内存信息有时可以用自然语言表达,这种方式对于人类易于理解和解释,但在机器处理时可能效率较低。
  • 向量嵌入:为了提高检索效率,内存信息常被编码为向量嵌入(Vector Embeddings)。向量嵌入能够将信息映射到高维空间中的点,通过计算点之间的距离来评估信息的相似度,从而实现高效的检索和匹配。
  • 数据库和结构化列表:对于需要精确管理和高效查询的信息,可以使用数据库或结构化列表来组织内存。这种方式不仅便于信息的存储和检索,还能够清晰地表达内存信息的语义关系。

操作划分

操作上,主要通过记忆读取、写入和反射三种机制与环境交互。读取提取相关信息指导行动,写入存储重要信息,反射总结见解提升抽象水平。

  • 记忆读取(Read):Agent通过读取内存中的信息来提取相关知识,以指导其行动。以确保Agent能够获取到最相关和最有用的信息。
  • 记忆写入(Write):当Agent从环境中获取到新信息或学习到新知识时,它需要将这些信息写入到内存中。写入操作可以是对短期记忆的更新,也可以是将重要信息存储到长期记忆中,以便将来使用。
  • 记忆反射(Reflection):记忆反射是Agent对内存信息进行总结和抽象的过程。通过反思过去的经验和知识,Agent可以提炼出更高层次的见解和规律,从而提升其决策能力和适应性。这种过程类似于人类的反思和学习过程,是Agent实现智能的关键环节之一。

工具(Tools) 

LLM 是数字世界中的程序,想要与现实世界互动、获取未知的知识,或是计算某个复杂的公式等,都离不开不工具。所以我们需要为智能体配备各种工具以及赋予它使用工具的能力。

为智能体配备工具 API,比如:计算器、搜索工具、日历、数据库查询工具、调用外部API获取额外信息、 也可以是函数(function)、软件开发工具包(sdk)、ChatPDF 解析文档插件、Midjourey 文生图多模态等。有了这些工具 API,智能体就可以是物理世界交互,解决实际的问题。

在智能体中,工具就是函数(Function),工具使用就是调用函数(Call Function)。在 LLM 中实现函数调用,使用到 LLM 的Function Calling能力。

Tools use

Function Calling 是一种实现大型语言模型连接外部工具的机制。通过 API 调用 LLM 时,调用方可以描述函数,包括函数的功能描述、请求参数说明、响应参数说明,让 LLM 根据用户的输入,合适地选择调用哪个函数,同时理解用户的自然语言,并转换为调用函数的请求参数(通过 JSON 格式返回)。调用方使用 LLM 返回的函数名称和参数,调用函数并得到响应。最后,如果需求,把函数的响应传给 LLM,让 LLM 组织成自然语言回复用户。

function calling 具体工作流程如下图所示:

不同 LLM 的 API 接口协议会有所不同,一文带你了解大模型——智能体(Agent)中详细展示了如何以OpenAI 的 API 协议为例,实现 Function Calling。下面简单的概述一下使用Function Calling需要的步骤:

1. 函数描述【工具声明】

假设你的函数(可以自行编码实现,也可以通过调用外部 API 实现)已经被实现,我们需要向 LLM 描述这个函数,函数描述的必备要素:

  • 函数名
  • 函数的功能描述
  • 函数的请求参数说明
  • 函数的响应参数说明(可选)
2. 调用 LLM 获得函数的请求参数【工具(集合)初始化】

Function Calling 是通过请求 LLM 的 chat API 实现的,在支持 Function Calling 模型的 chat API 参数中,会有一个 functions 参数 (或 tools,不同 LLM 的参数会有所不同) ,通过传入这个参数,大模型则会知道拥有哪些参数可供使用。并且会根据用户的输入,推理出应该调用哪些函数,并将自然语言转成函数的请求参数,返回给请求方。

3. 调用函数【执行工具】

调用方获得 LLM 返回的函数调用信息(函数名称和调用参数)后,自行调用函数,并得到函数执行的响应。如果有需要,还可以把函数执行的响应追加到 chat API 的对话中传给 LLM,让 LLM 组织成自然语言回复用户。

除了使用Function calling,还有MRKL、Toolformer、HuggingGPT等方法,详细可以参考——“AI”科普丨一文带你了解基于大模型的Agent。

行动(Action)

职责是依规划与记忆,使用工具执行具体行动。包括与外部互动或工具调用,实现输入至输出的转化。比如:智能客服回复、查询天气预报、预约会议等。

将抽象的决策转化为具体的行动,它就像是一个桥梁,连接了Agent的内部世界与外部环境。在执行任务时,需要考虑行动的目标、生成方式、应用范围以及可能产生的影响。

理想的行动应当是有目的,例如完成特定任务、与其他代理进行交流或者探索环境。行动的产生可以依赖于查询过去的记忆经验,或者遵循预设的计划。而行动的范围,不仅可以通过利用如API和知识库等外部工具来扩展,还需要发挥大型语言模型(LLM)的内在能力,例如规划、对话及理解常识等。架构就像PC的硬件,但仅依赖架构设计是不够的,我们还需要赋予Agent完成不同任务的能力,这些被视为“软件”资源。

在https://browse.arxiv.org/pdf/2308.11432论文中提出了几种方法,包括模型微调、提示工程和机械工程。其中提示工程应该是最为常见的一种形式了,我们常听说的提示词工程师就是在这个语境下的角色。

  1. 模型微调。使用特定任务数据对模型进行微调,提升相关能力。数据可以来自人类注释、LLM生成或实际应用中收集。这可以使Agent行为更符合人类价值观。
  2. 提示工程。通过自然语言描述向LLM灌输所需的能力,然后将描述作为提示指导Agent操作。这可以让Agent快速获得指定的软件能力。
  3. 机械工程。主要涵盖:
  • 众包法:整合多个Agent的见解,形成更新的集体响应。
  • 试错法:Agent先执行操作,根据效果调整行动,逐步优化。
  • 经验积累法:Agent通过不断探索积累经验,逐步提升软件能力。
  • 自我驱动法:Agent自主设置目标并在环境中不断探索,最终获得软件能力。

Agent的挑战

构建基于大型语言模型(LLM)的智能体是一个新兴领域,面临着众多挑战和限制。以下是几个主要的挑战及可能的解决方案:

角色适应性问题

智能体需要在特定领域内有效工作,对难以表征或迁移的角色,可以通过针对性地微调LLM来提高性能。这包括代表非常见角色或心理特征的能力提升。

上下文长度限制

有限的上下文长度限制了LLM的能力,尽管向量存储和检索提供了访问更大知识库的可能性。系统设计需要创新,以在有限的通信带宽内有效运作。

提示的鲁棒性

智能体的提示设计需要足够鲁棒,以防微小的变化导致可靠性问题。可能的解决方案包括自动优化调整提示或使用LLM自动生成提示。

知识边界的控制

控制LLM的内部知识,避免引入偏见或使用用户不知道的知识,是一个挑战。这要求智能体在处理信息时更加透明和可控。

效率和成本问题

LLM处理大量请求时的效率和成本是重要考量因素。优化 推理速度 和 成本效率 是提升多智能体系统性能的关键。

总的来说,基于LLM的智能体构建是一个复杂且多面的挑战,需要在多个方面进行创新和优化。持续的研究和技术发展对于克服这些挑战至关重要。

参考

https://www.51cto.com/article/766462.html

https://zhuanlan.zhihu.com/p/656683532

“AI”科普丨一文带你了解基于大模型的Agent

https://zhuanlan.zhihu.com/p/697706325

一文彻底理解大模型 Agent 智能体原理和案例_大模型agent-CSDN博客

Al Agent:大模型时代重要落地方向 - 大模型知识库|大模型训练|开箱即用的企业大模型应用平台|智能体开发|53AI

Agent : 一文读懂LLM Agent架构,详解Profile,Memory,Planning,Action模块作用-CSDN博客

“AI”科普丨一文带你了解基于大模型的Agent

LLM+P:赋予大语言模型最佳机器人规划能力-CSDN博客

Agent : 一文读懂LLM Agent架构,详解Profile,Memory,Planning,Action模块作用-CSDN博客

https://zhuanlan.zhihu.com/p/642360366

【Reflextion论文总结】-CSDN博客


 

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

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

相关文章

文本转SQL(Text-to-SQL),场景介绍与 Spring AI 实现

在众多的 AI 大模型的应用场景中,Text-to-SQL,也就是文本转 SQL,是其中实用性很高的一个。Text-to-SQL 充分利用了大模型的优势,把用户提供的自然语言描述转换成 SQL 语句,还可以执行生成的 SQL 语句,再把查…

DICOM标准:深入详解DICOM医学影像中的传输语法

引言 DICOM(数字成像和通信医学)标准在医学影像数据交换中扮演着至关重要的角色。其中,*传输语法(Transfer Syntax)是DICOM标准中定义数据编码和传输方式的核心部分。理解传输语法对于确保不同设备和系统之间的互操作性…

如何提高谷歌收录速度?

相信很多做外贸推广的朋友都遇到过这种情况:网站上线了,但新页面迟迟不被谷歌收录。即使你的内容很优秀,设计也很精美,如果谷歌爬虫抓不到页面,一切努力就白费了。这时候,GSI谷歌快速收录服务就成了“救命稻…

Spring面向切面编程

目录 1.AOP概述及Spring AOP实现原理 AOP概述 AOP的应用场景 AOP的作用 Spring AOP概述 Spring AOP的实现原理 Spring AOP中Advice的分类 2. 通过xml配置实现AOP 实现步骤: 新增模块: 导入相关依赖: 新增实体类User 新增业务类UserS…

Notepad++ 更改字体大小和颜色

前言 在长时间编程或文本编辑过程中,合适的字体大小和颜色可以显著提高工作效率和减少眼睛疲劳。Notepad 提供了丰富的自定义选项,让你可以根据个人喜好调整编辑器的外观。 步骤详解 1. 更改字体大小 打开 Notepad 启动 Notepad 编辑器。 进入设置菜…

香港航空 阿里滑块 acw_sc__v3 分析

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 有相关问题请第一时间头像私信联系我删…

Unet++改进3:添加NAMAttention注意力机制

本文内容:添加NAMAttention注意力机制 目录 论文简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 论文简介 识别不太显著的特征是模型压缩的关键。然而,它在革命性的注意机制中尚未得到研究。在这项工作中,我们提出了一种新的基于归一化的注意力模块(NAM),它抑制了较不显著…

WPF+MVVM案例实战(二十二)- 制作一个侧边弹窗栏(CD类)

文章目录 1、案例效果1、侧边栏分类2、CD类侧边弹窗实现1、样式代码实现2、功能代码实现3 运行效果4、源代码获取1、案例效果 1、侧边栏分类 A类 :左侧弹出侧边栏B类 :右侧弹出侧边栏C类 :顶部弹出侧边栏D类 :底部弹出侧边栏2、CD类侧边弹窗实现 1、样式代码实现 在原有的…

汽车广告常见特效处理有哪些?

​汽车广告作为展示汽车性能和外观的重要媒介,常常需要借助特效来增强视觉效果,吸引观众的注意力。以下是一篇关于汽车广告中常见特效处理的文章。 在竞争激烈的汽车市场中,广告不仅是推广产品的工具,更是艺术和科技的结合。特效技…

【CUDA】线程配置

一、 线程层次结构 1.1 认识 GPU 可并行执行工作 Thread:所有线程执行相同的核函数,并行执行 Thread Block:执行在一个Streaming Multiprocessor (SM),同一个Block中的线程可以协作 线程的集合称为块,块的数量很多…

爬虫-------字体反爬

目录 一、了解什么是字体加密 二. 定位字体位置 三. python处理字体 1. 工具库 2. 字体读取 3. 处理字体 案例1:起点 案例2:字符偏移: 5请求数据 - 发现偏移量 5.4 多套字体替换 套用模板 版本1 版本2 四.项目实战 1. 采集目…

transformer模型写诗词

项目源码获取方式见文章末尾! 600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…

【计算机网络】章节 知识点总结

一、计算机网络概述 1. 计算机网络向用户提供的两个最重要的功能:连通性、共享 2. 因特网发展的三个阶段: 第一阶段:从单个网络 ARPANET 向互联网发展的过程。1983 年 TCP/IP 协议成为 ARPANET 上的标准协议。第二阶段:建成三级…

【微服务】不同微服务之间用户信息的获取和传递方案

如何才能在每个微服务中都拿到用户信息?如何在微服务之间传递用户信息? 文章目录 概述利用微服务网关做登录校验网关转微服务获取用户信息openFeign传递微服务之间的用户信息 概述 要在每个微服务中获取用户信息,可以采用以下几种方法&#…

【p2p、分布式,区块链笔记 Torrent】WebTorrent 的lt_donthave插件

扩展实现 https://github.com/webtorrent/lt_donthave/blob/master/index.js /*! lt_donthave. MIT License. WebTorrent LLC <https://webtorrent.io/opensource> */// 导入所需模块 import arrayRemove from unordered-array-remove // 用于从数组中删除元素的函数 i…

兰空图床配置域名访问

图床已经创建完毕并且可以访问了&#xff0c;但是使用IP地址多少还是差点意思&#xff0c;而且不方便记忆&#xff0c;而NAT模式又没法直接像普通服务器一样DNS解析完就可以访问。 尝试了很多办法&#xff0c;nginx配置了半天也没配好&#xff0c;索性直接重定向&#xff0c;反…

Sophos | 网络安全

在 SophosLabs 和 SophosAI 的威胁情报、人工智能和机器学习的支持下&#xff0c;Sophos 提供广泛的高级产品和服务组合&#xff0c;以保护用户、网络和端点免受勒索软件、恶意软件、漏洞利用、网络钓鱼和各种其他网络攻击。Sophos 提供单一的集成式基于云的管理控制台 Sophos …

STM32外设之SPI的介绍

### STM32外设之SPI的介绍 SPI&#xff08;Serial Peripheral Interface&#xff09;是一种高速的&#xff0c;全双工&#xff0c;同步的通信总线&#xff0c;主要用于EEPROM、FLASH、实时时钟、AD转换器等外设的通信。SPI通信只需要四根线&#xff0c;节约了芯片的管脚&#x…

基于 Transformer 的语言模型

基于 Transformer 的语言模型 Transformer 是一类基于注意力机制&#xff08;Attention&#xff09;的模块化构建的神经网络结构。给定一个序列&#xff0c;Transformer 将一定数量的历史状态和当前状态同时输入&#xff0c;然后进行加权相加。对历史状态和当前状态进行“通盘…

图数据库| 2 、大数据的演进和数据库的进阶——从数据到大数据、快数据,再到深数据

时至今日&#xff0c;大数据已无处不在&#xff0c;所有行业都在经受大数据的洗礼。但同时我们也发现&#xff0c;不同于传统关系型数据库的表模型&#xff0c;现实世界是非常丰富、高维且相互关联的。此外&#xff0c;我们一旦理解了大数据的演进历程以及对数据库进阶的强需求…