【论文精读】A Survey on Large Language Model based Autonomous Agents
A Survey on Large Language Model based Autonomous Agents
- 前言
- Abstract
- 1 Introduction
- 2 LLM-based Autonomous Agent Construction
- 2.1 Agent Architecture Design
- 2.1.1 Profiling Module
- 2.1.2 Memory Module
- Memory Structures
- Memory Formats
- Memory Operations
- 2.1.3 Planning Module
- 2.1.4 Action Module
- Action Goal
- Action Production
- Action Space
- Action Impact
- 2.2 Agent Capability Acquisition
- Capability Acquisition with Fine-tuning
- Capability Acquisition without Fine-tuning
- 3 LLM-based Autonomous Agent Application
- 3.1 Social Science
- 3.2 Natural Science
- 3.3 Engineering
- 4 LLM-based Autonomous Agent Evaluation
- 4.1 Subjective Evalution
- 4.2 Objective Evaluation
- 5 Related Surveys
- 6 Challenges
- 6.1 Role-playing Capability
- 6.2 Generalized Human Alignment
- 6.3 Prompt Robustness
- 6.4 Hallucination
- 6.5 Knowledge Boundary
- 6.6 Efficiency
- 7 Conclusion
- 阅读总结
前言
一篇来自人大高瓴的综述,详细介绍了基于LLM的智能体的发展和应用,以及对未来的预测。作为AI当前最火的领域,智能体上手容易,操作简单,本质上就是框架+prompt,但是其效果惊艳,能够完成很多LLM无法完成的简单任务,其在未来一定大有可为。
Paper | https://arxiv.org/pdf/2308.11432.pdf |
---|---|
Code | https://github.com/Paitesanshi/LLM-Agent-Survey |
From | arXiv 7 Sep 2023 |
Abstract
自主智能体一直都是学术界和工业界的重点研究焦点。先前的研究关注于具有有限知识的智能体在隔绝环境下的训练,这与人类学习方式大相径庭,因此很难像人类一样做决策。最近,LLMs通过获取的丰富web知识,在完成人类等级只能上展现出非凡的潜力。本文对该领域研究进行了全面的调查,作者首先讨论了基于LLMs的自主智能体的构建,提出一个大一统的框架,接着作者阐述了基于LLMs的自主智能体在社科、自然科学和工程领域的各种应用,最后作者深入研究了基于LLMs的自主智能体常用的评估策略。基于这些研究,作者也提出了这个领域的一些挑战和未来方向。
1 Introduction
自主智能体一直都被认为是解决AGI的有前途的方法,它有望通过自我指导的规划和行动来完成任务。但是之前的工作,智能体都在隔绝的环境中,基于简单启发式策略函数来学习,这与人类学习方式大相径庭,因此它们无法复刻人类的决策。
近年来,LLMs基于海量数据和模型参数获得了类人类智能,取得显著的成效。因此越来越多研究将LLMs作为中央控制器,来指导自主智能体获取人类决策的能力。其关键是为LLMs配备记忆和规划等关键能力,让它们像人类一样完成任务。
本文对基于LLMs的自主智能体提做了一个全面的综述,具体来说,作者将综述分为三个部分:构建,应用和评估。构建主要关注如何设计更好的智能体框架,以及激发和增强智能体完成不同任务的能力。应用主要关注智能体在社会科学、自然科学和工程上的应用。评估部分作者深入研究了评估基于 LLM 的自主代理的策略,重点关注主观和客观策略。
总的来说,本文对基于LLM的自主智能体领域进行了系统的回顾,建立了全面的分类法。主要关注:智能体创建,应用和评估。基于之前的研究,作者确定了领域的挑战,讨论了未来发展方向。
2 LLM-based Autonomous Agent Construction
我们期待基于LLM的自主智能体能够利用LLM的类人类能力来解决各种问题,为了实现这个目标,有两个重要的方面:
- 什么样的架构可以更好使用LLMs。
- 如何让智能体获取解决具体任务的能力。
作者首先整合了一个全面的统一框架,接着根据是否对LLM进行微调,总结智能体获取能力的策略。下面是详细的介绍。
2.1 Agent Architecture Design
LLMs在QA任务上展现巨大的潜力,但是自主智能体和QA又远远不同,因为它们需要根据指定的角色,像人一样自主感知环境并从环境中学习。为了建立LLM和智能体的桥梁,关键在于设计合理的智能体架构帮助LLM最大化其能力。本文提出的大一统框架如上图所示,由画像模块、记忆模块、规划模块和动作模块组成。画像模块用于识别智能体的角色,记忆模块和规划模块让智能体在动态环境中可以根据历史的行为计划未来的动作。动作模块将智能体的决策付诸于行动。画像模块影响记忆和规划模块,三者共同影响动作模块。
2.1.1 Profiling Module
自主智能体通过承担特定的角色来执行任务,而这一角色很大程度取决于具体的应用场景。那么如何为智能体创建特定的画像呢,现有的方法通常采用如下三种策略:
- 手动构建方法。手动为智能体赋予角色信息的方法灵活,但是劳动密集型。
- LLM生成方法。智能体的画像通过LLM进行生成得到,可以选择一些智能体的画像作为小样本。LLM生成方法可以大大节省时间,但是无法精准调控。
- 数据集对齐方法。智能体的画像从真实世界的数据集中获取,可以准确捕获真实人群的属性,从而让智能体的行为更能反映现实世界。
作者认为,将上述三种方法结合起来可能有额外的好处,比如数据对齐可以让画像更真实,再加上手动构建可以丰富画像的信息。画像模块作为智能体设计的基础,对智能体的记忆、规划和动作过程都有很大的影响。
2.1.2 Memory Module
记忆模块存储从环境中获取的信息,并利用已有的记忆帮助未来的动作。记忆模块帮助智能体积累经验,自我提升,从而以有效、合理、一致的方式行事。本小节关注于记忆模块的结构、格式和操作。
Memory Structures
基于LLM的自主智能体通常结合人类记忆的原理和机制。具体来说,人类有长期记忆和短期记忆,在智能体中,也有类似的机制,长期记忆类似于外部向量存储,智能体可以根据需求快速检索查询,短期记忆类似于受Transformer架构约束的上下文窗口的输入信息。下面将介绍两种智能体中常见的架构:
- 统一记忆。仅仅模拟人类的短期记忆,通常通过上下文学习的方式将记忆信息直接写入prompt中。统一记忆的方法简单直接,同时又能增强智能体感知上下文行为和观察的能力。
- 混合记忆。模拟了人类的长短期记忆方式,短期记忆包含在智能体的上下文中,长期记忆存储智能体过去的行为和想法,可以根据当前的事件进行检索。长期记忆常常用过向量数据库实现。长期记忆提供稳定的知识,短期记忆则允许灵活的规划。在实践中,整合长短期记忆可以增强智能体的长期推理额积累经验的能力,这在复杂环境中完成任务至关重要。
只有长期记忆的方法很少出现在文献中,因为智能体在与环境交互的过程中总是需要短期记忆捕获动作之间的连续性。
Memory Formats
从格式上来看,记忆又可以分为自然语言记忆和embedding记忆等,下面进行列举:
- 自然语言:这种形式的记忆存储了智能体的行为和观察等,它的好处有灵活易懂,丰富语义可以指导智能体。
- embedding:记忆信息编码为embedding向量,这种方式可以提升记忆检索和阅读效率。
- 数据库:记忆信息存储在数据库中,智能体可以全面、高效操纵记忆。
- 结构化列表:这种形式的记忆信息被组织成列表,可以高效简洁表达语义。
上面只是有代表性的记忆形式,还有很多其它的形式。不同的记忆形式有自己优势的场景。
Memory Operations
记忆模块通过与环境交互去获取、积累和使用,这一般涉及三个操作:记忆存储,记忆读取和记忆反思。
- 记忆读取:从记忆中提取有用信息增强智能体行动。关键在于如何提取有用信息,一般最近的、相关的、重要的信息会被提取。
- 记忆存储:存储通过环境交互获得的信息。这要求信息是有价值的,能够为未来检索丰富的记忆奠定基础。该部分的关键在于如何存储与现有记忆相似的信息(去重),以及内存到达存储上限,如何删除信息(溢出)。
- 记忆反思:让智能体根据经验信息进行总结,得到更广泛和抽象的见解,这个过程的目标是为智能体提供独立总结和推断更抽象、复杂和高级信息的能力。
传统LLM和Agent的一个显著区别是后者必须在动态环境中学习和完成任务的能力,这个区别的体现主要在记忆模块和规划模块。
2.1.3 Planning Module
当面对复杂 的任务时,人类会倾向将复杂任务分解为多个简单的子任务并单独解决。规划模块即赋予智能体这种能力。具体来说,作者根据是否接受反馈将现有研究分类如下:
- 没有反馈的规划。智能体执行任务不会接收到反馈。
- 单一路径推理。一个任务会分解成多个中间步骤,以级联方式连接。
- 多路径推理。生成计划的推理步骤被组织成树状结构。它和单一路径推理的区别见上图。
- 外部规划。LLM对特定领域生成计划仍然具有挑战性。为应对这种挑战,研究人员求助于外部工具,它可以识别出最优的计划。
- 有反馈的规划。现实场景中,有反馈的计划才是更合理的。因为任务可能会在执行过程中发生改变(如出错),这就需要反馈来修改计划。
- 环境反馈。从客观世界或者虚拟环境中获取。
- 人类反馈。直接与人类交互,可以让智能体符合人类的偏好,缓解幻觉问题,从而实现更明智的规划和推理。
- 模型反馈。模型内部也可以设计反馈机制,比如自我优化模块,通过与LLMs不断交互来提高输出的质量直到达到要求。
总的来说,没有反馈的规划只能适用于某些简单的任务,而有反馈的规划需要更为细致的设计,但是能够解决更多复杂的任务。
2.1.4 Action Module
动作模块用于将智能体的决策转换为具体的结果,直接与环境交互。它受到画像,记忆和规划模块的影响。本节从动作目标,动作产生,动作空间,动作影响四个方面对动作模块进行介绍。
Action Goal
智能体可以执行具有任何目标的动作。这样的目标有:
- 完成任务。
- 沟通。
- 环境探索。
Action Production
与传统的LLM不同,智能体会通过不同的策略和来源来采取动作。有两种常见的动作产生策略:
- 通过记忆采取动作。智能体根据存储的记忆信息采取相关动作。
- 通过计划采取动作。智能体严格遵循计划采取动作。
Action Space
动作空间是指智能体可以执行的一组可能的动作。这些动作主要分为两类,外部工具和LLMs内部知识。
- 外部工具。有些领域的任务需要专家知识,此外LLMs容易出现幻觉问题,因此调用外部工具执行动作可以增强智能体的能力。这些外部工具包括:
- APIs。利用外部的API来补充和扩展动作空间。
- 数据库和知识库。连接到外部数据库或知识库可以帮助智能体获取特定领域的信息以生成更合理的动作。
- 外部模型。利用外部模型来扩大动作空间的范围。
- 内部知识。除了利用外部的知识,智能体可以依靠智能体内部的知识来指导它们采取动作。这些内在的知识基于LLM一些关键的能力:
- 规划能力。LLM可以自己对任务进行分解。
- 对话能力。LLM通常可以产生高质量的对话来采取行动。
- 常识理解能力。LLM可以很好理解人类的常识并做出类似人类的决策。
Action Impact
动作执行后会产生很多的结果。这些结果可以分为如下类别:
- 环境变化。
- 改变内部状态。
- 触发新的动作。
2.2 Agent Capability Acquisition
上面的框架相当于智能体的硬件,但是仅仅依靠硬件资源不足以实现有效的任务性能,因为智能体可能缺乏必要的特定任务的能力、技能和经验,这些可以视作软件资源。为了让智能体配备这些资源,主要根据是否微调分为两种策略。
Capability Acquisition with Fine-tuning
增强智能体完成任务能力的直接方法是在任务相关的数据集上进行微调。这些方法如下:
- 在人工标注的数据集上微调。需要人工标注,成本高昂,但质量高。
- 在LLM生成的数据集上微调。质量略差,但成本低,标注数量多。
- 在真实世界数据集上微调。从真实世界中获取数据(比如互联网数据爬虫)。噪声多,但真实。
Capability Acquisition without Fine-tuning
在智能体时代,模型的能力可以通过模型微调,prompt工程和机制工程获取。机制工程是一个宽泛的概念,涉及开发专门模块、引入新的工作规则以及其它增强智能体能力的策略。上图是模型在获取能力上策略的转变过程。
- Prompt工程:以自然语言的形式与LLM进行互动,从而增强其能力。常见的有上下文学习,此外还有CoT。
- 机制工程:这是一种独特的增强智能体能力的策略,常见方法如下:
- Trial-and-error。智能体首先执行一个动作,然后预定义的批判者会对动作进行评估,如果不满意,智能体会根据评估结果生成响应。
- Crowd-sourcing。利用群体智慧来增强智能体的能力。
- Experience Accumulation。将成功完成任务的动作保存下来,从而累积经验。
- Self-driven Evolution。智能体通过自主设定目标,根据环境探索和接受奖励函数反馈来逐步提高能力。通过这种方式,智能体可以根据自己的喜好获取知识并发展能力。
微调的方式虽然能够通过调整参数来提高智能体的能力,但是只能应用在开源的LLM,无需微调的方式通常基于精细的Prompt工程和机制工程来增强智能体。它们不受开源闭源的限制,但是受到上下文窗口的限制。
上面这些小节就是基于LLM的智能体构建细节,主要在于架构和能力获取两个方面。相关的工作见下表。
3 LLM-based Autonomous Agent Application
基于LLM的智能体在很多领域展现出显著的潜力。本节基于前面的研究将应用场景分类为三种:社会科学,自然科学和工程。
3.1 Social Science
社会科学致力于研究社会以及社会人与人之间的关系。基于LLM的智能体可以利用其出色的人类理解能力、思考和任务解决能力来促进这个领域的发展。下面是几个典型的领域:
- 心理学。智能体可以通过模拟实验来提供心理健康的支持。实验表明更好的模型往往能提供更真实的结果,可以帮助用户应对焦虑、抑郁等问题,但是都有可能会产生有害信息。
- 政治学与经济学。基于LLM的智能体也可以用于学习政治学与经济学, 通过解析言论的结构或者赋予他们特定的特征(天赋,偏好,个性),以模拟人类的行为。
- 模拟社交。基于LLM的智能体可以模拟在线社区,模拟虚拟城镇中人类的生活,或者模拟课堂场景等。
- 法律体系。基于LLM的智能体可以为法律决策过程提供更明智的判断,有的工作采用多语言模拟多个法官,通过收集不同意见,以投票机制整合。为了减少LLM的幻觉问题,ChatLaw支持数据库和关键字检索来缓解。
- 研究助手。基于LLM的智能体可以协助科研人员完成各种任务, 如文章摘要,提取关键字等,或者充当写作助理。
3.2 Natural Science
在自然科学中,基于LLM的智能体也有很多的应用:
- 文档与数据管理。自然科学领域通常涉及大量文献的收集、组织和整合,需要耗费大量的时间和人力,而智能体利用自己强大的理解能力和文本处理能力,可以回答问题和制定实验计划。
- 实验助手。智能体拥有独立进行实验的能力。现有的工作包括利用智能体设计实验计划,提供实验的建议等。
- 自然科学教育。由于基于LLM的智能体可以和人类流畅交流,因此通常被用来开发基于智能体的教育工具。比如帮助学生理解学习数学、提高学生编程水平等。对于幻觉问题,可以采用丰富的prompt或者检索解决。
3.3 Engineering
基于LLM的智能体在工程研究和应用上也展现了强大的潜能:
- 土木工程。智能体可以帮助设计和优化复杂的结构。
- 计算机科学与软件工程。智能体提供了自动化编码、测试、调试和文档生成的潜力。比如设计端到端的框架进行通信和协作,或者抽象出不同角色监督代码生成过程来提高输出代码的质量。
- 工业自动化。工业自动化领域,可以利用智能体实现生成过程中的智能规划和控制。
- 机器人与人工智能。在该领域,重点是增强智能体在具体环境中进行规划、推理和协作的能力。
为了推动基于LLM的智能体的应用,研究人员还引入了开源库,帮助其他开发人员根据自己的需求快速实现和评估智能体。例如开源框架LangChain,可以自动编码、测试、调试和文档生成。基于语言模型和数据源集成,LangChain通过自然语言通信和多角色智能体协作来实现高效的软件开发。此外还有自动化智能体AutoGPT、通过对话完成任务的WorkGPT,利用大语言模型的能力,再加上爬虫获取的外部知识来总结和汇总摘要。
当然,基于智能体的LLM虽然支持上面的一系列应用,但也会带来一定的风险与挑战。一方面,大模型本身会易出现幻觉问题,导致提供错误的答案,因此用户必须采取适当的措施。另一方面,基于LLM的智能体可能会被恶意使用,比如发展化学武器。需要采取适当的安全措施。
4 LLM-based Autonomous Agent Evaluation
有两种常见的评估策略,即第三节图中的客观评估和主观评估。
4.1 Subjective Evalution
主观评估主要基于人类的判断,通常适用于没有评估数据集或者难以量化的场景。下面是两种常用的主观评估策略:
- 人类标注。让人类评测者直接对不同智能体的输出结果进行评估或排名。
- 图灵测试。在该方法中,人类评测者需要区分智能体和真实人类的产生结果。如果在给定任务上无法区分,则表明智能体可以在该任务上达到类似人类的表现。
基于LLM的智能体通常设计用于服务人类,因此主观评估方法非常重要,但是这种方法仍需面对高昂成本、低效和人口偏差。为了解决这个问题,很多研究者采用LLM作为主观评估的代理,随着LLM模型能力的提升, 这样的评估策略会越来越可信可用。
4.2 Objective Evaluation
客观评估是采用定量指标来评估基于LLM的智能体的能力。客观评估旨在为智能体提供具体的、可测量的见解。它包括三个重要方面:评估指标、协议和基准。
常见的评估指标如下:
- 任务成功指标。
- 人类相似度度量。
- 效率指标。
如何利用这些评估指标也很重要,通常有如下的评估协议:
- 真实世界模拟。智能体在游戏或者交互式模拟器等沉浸环境进行评估。
- 社会评估。利用指标来估计基于模拟社会中智能体交互的社会智能。
- 多任务评估。采用不同领域的任务来评估智能体。
- 软件测试。让智能体执行软件测试任务来评估智能体。
给定指标和协议,剩下的关键就是采用合适的基准执行评估。过去常用ALFWorld、IGLU和Mincraft等模拟环境作为评估的benchmark,现有的benchmark有AgentBench,它提供了一个全面的框架,用于评估跨环境智能体。SocKET评估LLM社交能力,AgentSims评估基于LLM的智能体在交互环境的有效性。WebShop用于评估基于LLM的智能体的产品搜索和检索能力。此外还有多个benchmark,详见原文。
客观评估采用不同的指标对基于LLM的智能体的能力进行评估,虽然无法完美衡量,但是也是对主编评估的重要补充。
5 Related Surveys
随着大语言模型的蓬勃发展,出现了大量的总数,提供各个方面的见解,比如有介绍LLM的背景和发展,LLM在下游任务上的应用与挑战,LLM的幻觉问题,LLM的对齐方法,LLM推理能力的探索等等,但是一直没有基于LLM的Agent的相关综述。本文整理了超过百篇基于LLM的智能体的相关著作,涵盖其构建、应用和评估。
6 Challenges
虽然基于LLM的智能体取得了很多显著的成功,但是也有很多局限性和挑战。
6.1 Role-playing Capability
角色扮演在智能体对话中至关重要,但是LLM会很难扮演不熟悉的角色(即在预训练过程中很少见的)。此外智能体很难模拟人类的认知心理,导致对话场景缺乏自我意识。潜在的解决方法是微调,但是也很难保证微调后其它角色扮演仍表现良好。此外还有设计量身定制的框架,但是这样的设计空间太大,很难找到最佳。
6.2 Generalized Human Alignment
传统的LLM通过微调来达到符合人类的价值观,但是现有的LLM都是与广义的人类价值观对齐,需要有针对不同场景的人类价值观对齐,比如消极的人类价值观,通过研究这个可以帮助阻止现实中存在的类似问题。可以尝试的方向是设计有趣的Prompt。
6.3 Prompt Robustness
为了确保智能体的合理行为,设计者通常设计不同的模块到LLM中(包含大量的Prompt)来促进一致的操作和有效的沟通。但是Prompt的方式缺乏稳健性,可能会影响别的模块,可行的解决方案有:反复试错,或者GPT自行生成。
6.4 Hallucination
幻觉对LLM提出了根本的挑战,为了解决这个问题,一种可能的方法是讲人类校正反馈纳入到人类与智能体交互的循环中。
6.5 Knowledge Boundary
基于LLM的智能体的一个重要的应用是模拟人类行为。但是LLM通常有强大的知识储备,因此在做判断的时候通常会用到广泛的知识,与真实人类做决策行为不同。如何约束它使用这些知识也是未来的方向。
6.6 Efficiency
LLM推理速度较慢,如果采用密钥部署多个智能体会显著增加时间成本。
7 Conclusion
本文系统总结了基于LLM的智能体现有的研究,从构建、应用和评估三个方面进行介绍和总结。最后作者还提出这个领域的几点挑战,预期该领域的未来方向。
阅读总结
一篇总结非常到位的基于LLM智能体的综述,总结了从22年底到23年9月近百篇智能体的工作,当然后序还是有很多衍生的工作产生,毕竟这个领域实在是太火了。在我看来,真正的智能体就是文章中所提到的四合一,即画像、规划、记忆和动作。画像限定了智能体的角色,也就限定了智能体的活动空间和范围,规划是针对特定任务所设计的步骤,记忆是便于复用以前的经验,而动作是执行计划,是真正与环境的交互,人在执行任务的时候也是同样的过程,首先人本身有自己的角色,是老师、学生还是设计师等等,有了角色,面对当前任务才会采取特定角色的规划策略,执行任务时也会根据自身的技能与环境交互,在交互过程中复用以前的知识。这样的智能体才真正像人类一样行动,才是真正意义上的智能体。
那么对于火热的智能体领域,文章中也提到了未来的发展与挑战,当前很多大公司已经在制定智能体的框架,那么小的研究团队能做的也就是找到特定的应用场景做应用,比如机器人,这就相当于给机器人加上大脑。或者从智能体本身存在的问题出发,设计出通用的方法,比如怎样减少幻觉,如何合理规划,如何更好复用记忆,如何减少通信次数提高效率。面对这一新兴的领域,有许许多多的工作值得我们去做。
相关文章:
【论文精读】A Survey on Large Language Model based Autonomous Agents
A Survey on Large Language Model based Autonomous Agents 前言Abstract1 Introduction2 LLM-based Autonomous Agent Construction2.1 Agent Architecture Design2.1.1 Profiling Module2.1.2 Memory ModuleMemory StructuresMemory FormatsMemory Operations 2.1.3 Plannin…...
23款奔驰GLC260L升级原厂540全景影像 高清环绕的视野
嗨 今天给大家介绍一台奔驰GLC260L升级原厂360全景影像 新款GLC升级原厂360全景影像 也只需要安装前面 左右三个摄像头 后面的那个还是正常用的,不过不一样的是 升级完成之后会有多了个功能 那就是新款透明底盘,星骏汇小许Xjh15863 左右两边只需要更换后…...
SQL 在已有表中修改列名的方法
文章目录 1. MySQL2. SQL Server3. Oracle / PostgreSQL Question: 假设有一张表 StudentInfo,表中有一个列名是 Student_Name ,想要把这个列名改成 StudentName 应该如何操作? 建表语句如下: --建表 if object_id(S…...
QT----Visual stdio翻金币案例,附源码
历经一个月,各种事情磕磕绊绊,终于结束了,自己还是太菜了 案例的文档写的教程已经很详细,这边主要是记录一些问题 github代码 gitee代码 1、图片无法加载 一开始加载首页图片和标题出不来,结果是paintEvent重写的字打…...
总结:浏览器解析html与执行JS之生命周期详解
总结:浏览器解析html与执行JS之生命周期详解 一浏览器解析html的生命周期:1.请求HTML文档:2接收响应:3构建DOM树:4加载外部资源:5DOMContentLoaded事件:6样式计算与布局:7绘制与渲染…...
aspose通过开始和结束位置关键词截取word另存为新文件
关键词匹配实体类: Data EqualsAndHashCode(callSuper false) public class TextConfig implements Serializable {private static final long serialVersionUID 1L;/*** 开始关键词,多个逗号分隔*/private String textStart ;/*** 结束关键词&#x…...
深入解析美颜SDK:绿幕抠图功能的算法原理
当下,美颜SDK绿幕抠图功能成为许多应用中不可或缺的一环。本文将深入解析美颜SDK中绿幕抠图功能的算法原理,揭示其背后的技术奥秘。 一、什么是美颜SDK绿幕抠图? 美颜SDK的绿幕抠图功能是一种通过计算机视觉技术,将视频或图像中…...
从有向带权图判断最短路径里各目标顶点顺序
对如下有向带权图,若采用迪杰斯特拉(Dijkstra)算法求从源点a到其他各顶点的最短路径,则得到的第一路径的目标顶点是b,第二条最短路径的目标顶点是c,后续得到的其余各最短路径的目标顶点依次是() A.d,e,f B.e,d,f C.f,d,e D.f,…...
鼠标驱动框架:模拟键盘按键
/* 参考: drivers\hid\usbhid\usbmouse.c */ #include <linux/kernel.h> #include <linux/slab.h> #include <linux/module.h> #include <linux/init.h> #include <linux/usb.h> #include <linux/input.h> #include <linux/hid.h>st…...
ES6之Promise的链式调用
✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…...
HTML----JavaScript操作对象BOM对象
文章目录 目录 文章目录 本章要求 一.BOM模型概述 二.BOM核心:window对象 常用属性 常用方法: confirm() 案例 open ()close()案例 setTimeout( ) 案例 setInterval( ) 案例 document对象 练习 本章要求 了解BOM模型掌握BOM模型实际应用 一.BOM模型…...
隆道数智大会回顾|第13期《如何构建绿色产业供应链新生态》(完)
本期演讲嘉宾: 史文月 采购与供应链专家 邢庆峰 品类管理和质量管理专家 刘婷婷 中兴通讯供应链规划总监 张燕华 正大生物CIO 吴树贵 隆道公司总裁 本期演讲主题: 如何构建绿色产业供应链新生态 本期内容要点: 1.供应链管理的核心问…...
粒子群优化pso结合bp神经网络优化对csv文件预测matlab(3)
1.csv数据为密西西比数据集,获取数据集可以管我要,数据集内容形式如下图: 2.代码 这里参考的是b站的一位博主。 数据集导入教程在我的另一篇文章bp写过,需要的话可以去看一下 psobp.m close all clc%读取数据 inputX; outputY;…...
软性演员-评论家算法 SAC
软性演员-评论家算法 SAC 软性演员-评论家算法 SAC优势原理软性选择模型结构目标函数重参数化熵正则化代码实现 软性演员-评论家算法 SAC 优势原理 DDPG 的问题在于,训练不稳定、收敛差、依赖超参数、不适应复杂环境。 软性演员-评论家算法 SAC,更稳定…...
Nginx多域名部署多站点
目录 1.修改配置文件nginx.conf 2. 修改hosts文件 1.修改配置文件nginx.conf 在配置文件的 server_name 处修改成自己需要的域名,然后保存退出 j 查看语法是否错误,然后重启nginx nginx -t # 查看语法是否正确 systemctl restart nginx # 重启nginx …...
Java的常规面试题
Java的面试题主要涉及Java基础知识、并发编程、集合原理、JVM原理、I/O与网络编程、设计模式、互联网常用框架等多个领域[6]。一些常见的面试问题包括: 1. 面向对象的特征:继承、封装和多态性。 2. 访问修饰符public、private、protected以及默认时的区别…...
大数据技术发展史
文章目录 Google论文HadoopHive大数据生态 Google论文 今天我们常说的大数据技术,其实起源于Google在2004年前后发表的三篇论文,也就是我们经常听到的“三驾马车”,分别是分布式文件系统GFS、大数据分布式计算框架MapReduce和NoSQL数据库系统…...
linux常见基础指令
入门常见基础指令 ls、stat、 pwd 、cd、tree、 whoami、 touch、 mkdir、 rm 、 man、 cp、mv、cat、tac、echo、>、 >>、 < 、more、 less、 head、 tail、date、 cal、 find、 which、alias、whereis、grep、zip与unzip、 tar、bc、uname、xargs... 热键Tab、…...
“人家赚那么多”系列01:如何练习?练什么?
01 如何练习?练习什么? 今年计划重点围绕「在不骗自己的前提下,如何才能把事儿彻底做好,并做得有声有色?」为主题来写点儿东西,聊聊我是怎么做的,如何通过一些有效的方法来不断优化自己的。 想把…...
【Android】使用android studio查看内置数据库信息
要使用Android Studio查看内置数据库信息,可以按照以下步骤进行操作: 打开Android Studio并打开你的项目。 在左侧的Project窗口中,找到并展开你的app模块。 找到并展开"app" > "src" > "main"文件夹。…...
PHP开发日志 ━━ 基于PHP和JS的AES相互加密解密方法详解(CryptoJS) 适合CryptoJS4.0和PHP8.0
最近客户在做安全等保,需要后台登录密码采用加密方式,原来用个base64变形一下就算了,现在不行,一定要加密加key加盐~~ 前端使用Cypto-JS加密,传输给后端使用PHP解密,当然,前端虽然有key有盐&…...
2021-01-03 excel实现列递增,行保持不变
需求:excel文档数据操作的时候发现自动递增只能实现列不变行号递增 我这里里需要的是列递增行不变 解决方式:通过一些函数的组合使用 INDIRECT("驻场明细!"&CHAR(ROW()62)&ROW(驻场明细!A$28)) INDIRECT()函数的使用: INDI…...
[Python]两个杯子取水问题
利用两个杯子巧取三升水: 今天的这个趣味数学小游戏是利用两个没有刻度的水杯,巧妙地取出三升水来。 题目的条件是:一个总容量为6升的杯子和一个总容量为5升的杯子,同时面前有无限容量的水供你使用。不借助其它任何的容器…...
C++汇编语言学习计划
前几天买了某游戏的外挂,感觉外挂在我计算机上进行了不少操作,我想一探究竟,可是只有exe,没办法,翻译成汇编我也看不懂,索性来简单学习下。访问Chatgpt4,给了如下学习计划。 要从零开始学习C生成…...
微信服务号升级订阅号条件
服务号和订阅号有什么区别?服务号转为订阅号有哪些作用?首先我们要看一下服务号和订阅号的主要区别。1、服务号推送的消息没有折叠,消息出现在聊天列表中,会像收到消息一样有提醒。而订阅号推送的消息是折叠的,“订阅号…...
SpringBoot整合mybatis多数据源
废话不多说先上结果 对应数据库 首先导入所需的mybatis、mysql和lombok依赖 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependen…...
垃圾收集器与内存分配策略
内存分配和回收原则 对象优先在Eden区分配 大对象直接进入老年代 长期存活的对象进入老年代 什么是内存泄漏 不再使用的对象在系统中未被回收,内存泄漏的积累可能会导致内存溢出 自动垃圾回收与手动垃圾回收 自动垃圾回收:由虚拟机来自动回收对象…...
Python计算三角形的面积
Python 计算三角形的面积 以下实例为通过用户输入三角形三边长度,并计算三角形的面积: # 三角形第一边长 a 3 # 三角形第二边长 b 4 c float( input("输入三角形第三边长: ") ) # 计算半周长 s (a b c) / 2 # 计算…...
198.【2023年华为OD机试真题(C卷)】万能字符单词拼写(JavaPythonC++JS实现)
🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-万能字符单词拼写二.解题思路三.题解代码Pytho…...
Tomcat服务为什么起不来?
转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 服务跑在Tomcat下面,有时候会遇到Tomcat起不来的情况。目前为止常遇到的情况有如下几种: 1. Tomcat服务…...
杭州微网站开发公司电话/免费查权重工具
环境描述:搭建了一个4台机器的hadoop集群环境,分别创建了用户hadoop1。 1)首先解决了的问问题是实现master与其余三个slave的ssh无密码通信问题。 2)安装hadoop的环境遇见下列问题: 首先:在master上用sc…...
安徽响应式网站建设哪家有/能够免费换友链的平台
https://www.cnblogs.com/onepixel/articles/7674659.html...
网站开发 自动生成缩略图/泰安百度推广代理商
JVM怎么判断对象是否存活 引用计数算法 引用计数算法比较简单,对每个对象保存一个整型的引用计算器属性。用于记录对象背应用的情况。对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1;当引用失效时,引用…...
h5网站设计/做网站推广的公司
四、学习逆变(DC-AC)电路和LLC的基本工作原理。 全桥逆变电路包括单相全桥逆变电路和三相全桥逆变电路,逆变的主要功能是把直流电逆变成某一频率或可变频率的交流电供给负载。 单相半桥逆变电路基本工作原理 第一阶段,VT1基极脉…...
漯河小学网站建设/湖南靠谱的关键词优化
目录 概述测试环境 安装过程配置启动客户端介绍多级DC的ldif文件的配置 [一]、概述 什么叫LDAP呢,概念的东西这里就不多讲了,网上搜索下有很多,本文的重点是介绍如何在windows平台上安装和配置openLDAP软件。 openLDAP官方网站࿱…...
做电影网站 需要进那些群/怎么建立网站的步骤
数据库是大难题。 MySQLRedis (中文手册 命令参考)Mongodb (中文手册)nosql文档转载于:https://www.cnblogs.com/can-H/articles/7604421.html...