语言模型作为零样本规划者:提取可执行知识以供具身代理使用
【摘要】
本文研究了预训练的语言模型(LLMs)能否被用来执行在交互式环境中的任务。作者发现,尽管LLMs在生成高阶任务的行动计划时可能无法做到完全精确定义,但通过适当提示,大型预训练语言模型可以分解高阶任务到中阶计划。然而,这些计划往往不能直接映射到可执行的动作。作者提出了一种程序,将现有演示和语义翻译结合,以生成可执行的动作。在VirtualHome环境中,这种方法相比LLM基线显著提高了可执行性。尽管在执行性上有所提升,但正确性有所下降,这表明提取可执行知识的潜力。
具体任务案例:
- 任务:刷牙
- 详细步骤:去浴室 -> 走到洗脸盆 -> 找到牙刷 -> 拿起牙刷 -> 在嘴边刷牙两分钟 -> 吐出口腔清洁剂 -> 将牙刷放入水槽 -> 开水龙头 -> 用水冲洗牙刷一分钟 -> 关水龙头 -> 回到衣柜
- 任务:扔掉废纸
- 详细步骤:走到家庭办公室 -> 走到桌子 -> 找到桌子 -> 转向桌子 -> 找到椅子 -> 坐在椅子上 -> 找到支票 -> 抓起支票 -> 挤压支票 -> 站起来 -> 走到垃圾桶 -> 将支票放在垃圾桶 -> 打开水龙头 -> 用水冲洗支票一分钟 -> 关闭水龙头 -> 回到椅子上
- 任务:取一杯牛奶
- 详细步骤:走到厨房 -> 打开冰箱 -> 拿起牛奶 -> 关上冰箱 -> …
总结:
- 作者发现大型预训练语言模型可以在不经过进一步训练的情况下生成合理的目标驱动行动计划,但这些计划在交互环境中往往不可执行。
- 提出了一种将生成的行动计划翻译成可执行动作的方法,显著提高了行动计划的可执行性,但同时也降低了正确性。
- 通过这种方法,研究者展示了将语言模型中的知识应用于交互环境的潜力。
这些发现表明,通过适当的提示和翻译,预训练的语言模型可以生成在交互环境中可执行的行动计划,但同时也需要权衡正确性和执行性之间的关系。
【数据来源】
论文《语言模型作为零样本规划者:从自然语言提取可执行知识以实现具身代理》的数据来源总结
论文信息
- 作者:Wenlong Huang, Pieter Abbeel, Deepak Pathak, Igor Mordatch
- 机构:加州大学伯克利分校,谷歌
- 摘要:本文探索了是否可以将大型语言模型(LLMs)学到的世界知识用于交互环境中的行动。研究发现,如果预训练的大型语言模型足够大且提示适当,它们可以在没有进一步训练的情况下将高层任务分解为中层计划。然而,模型生成的计划往往是不可执行的,作者提出了一种方法,通过现有演示文稿和语义翻译将计划转化为可执行的动作。评价结果显示,该方法在环境中的可执行性显著提高。
数据来源和实验环境
-
实验环境:VirtualHome
- VirtualHome可以模拟各种现实的人类活动,并支持通过具身动作(以动词-对象语法形式定义)执行这些活动。
- 该环境用于评估生成的行动计划的可执行性和正确性。
-
数据集:
- ActivityPrograms数据集:包含2821个由亚马逊众包工人标注的任务,每个任务包含详细步骤和执行步骤的程序。
- 评估任务:使用这些任务进行评估,包括生成动作计划的正确性和可执行性。
实验数据
-
实验方法:
- 从预训练的语言模型查询动作计划。
- 通过语义翻译将不可执行的动作转化为可执行的动作。
- 自回归轨迹校正。
- 动态示例选择以提高知识提取。
-
实验结果:
- 大型语言模型(如GPT-3)可以生成高度现实的动作计划,但这些计划在交互环境中往往是不可执行的。
- 通过语义翻译,可显著提高计划的可执行性,但会牺牲正确性。
- 人工评估结果显示,生成的计划在正确性和可执行性之间存在权衡。
实验任务示例
-
任务1:刷牙
- GPT-2 1.5B
Task: Brush teeth Step 1: Walk to bathroom Step 2: Walk to sink Step 3: Find toothbrush Step 4: Pick up toothbrush Step 5: Put toothbrush in mouth ...
- Codex 12B
Task: Brush teeth Step 1: Walk to bathroom Step 2: Open door Step 3: Walk to sink ...
- GPT-2 1.5B
-
任务2:扔掉纸张
- GPT-3 175B
Task: Throw away paper Step 1: Walk to home office Step 2: Walk to desk Step 3: Find desk Step 4: Turn to desk ...
- GPT-3 175B
-
任务3:拿玻璃牛奶
- GPT-3 175B
Task: Get Glass of Milk Step 1: Walk to Kitchen Step 2: Open Fridge Step 3: Grab Milk Step 4: Close Fridge
- GPT-3 175B
总结
-
主要贡献:
- 大型语言模型可以在没有额外训练的情况下生成合理的高层任务动作计划,但这些计划在交互环境中往往不可执行。
- 提出了一种方法通过语义翻译将不可执行的动作转化为可执行的动作,显著提高了计划的可执行性。
- 人工评估显示,在可执行性和正确性之间存在权衡。
-
未来工作:
- 考虑进一步改进生成可执行计划的方法,如更精细的语义翻译和动态示例选择。
- 探索将这些知识应用于更复杂的任务和环境。
以上是对论文《语言模型作为零样本规划者:从自然语言提取可执行知识以实现具身代理》的数据来源和实验方法的总结。
【模型架构】
论文《Language Models as Zero-Shot Planners: Extracting Actionable Knowledge for Embodied Agents》主要研究了如何利用大型语言模型(LLMs)生成执行任务的步骤计划,使得这些计划能够用于交互式的、具身的环境。通过虚幻家居(VirtualHome)环境进行评估,发现大型语言模型能够生成合理且实用的计划,但这些计划在某些方面(如可执行性)仍需要改进。以下是论文的主要内容总结:
1. 背景和研究问题
1.1 背景:
- 大型语言模型(如GPT-3和Codex)在近几年取得了显著的进步,能够处理复杂的自然语言任务。
- 这些模型被训练于大规模语料库,被认为包含了大量的世界知识,但这些知识主要以语言的形式存在。
- 作者研究问题:如何利用这些模型中的世界知识来生成执行具体任务的步骤计划,特别是在交互式的、具身的环境中。
2. 方法
2.1 查询语言模型生成步骤计划:
- 使用大型语言模型生成步骤计划的基本方法。
- 通过示例任务描述和步骤计划来查询模型,生成可能的步骤计划。
2.2 语义翻译解析可执行动作:
- 由于直接生成的计划可能无法精确映射到可执行的动作,提出使用语义翻译将计划转换为具体的可执行动作。
2.3 自回归轨迹修正:
- 在生成整个计划后进行逐步修正,自动调整生成的步骤以确保其可执行性。
2.4 动态示例选择以提高知识提取:
- 在提取知识时,通过动态选择最相似的任务示例来改进知识提取过程。
3. 实验设计
3.1 评估框架:
- 环境:使用VirtualHome环境进行评估。
- 评估指标:可执行性和正确性。
4. 实验结果
4.1 大型语言模型是否包含可执行的知识?
- 大型语言模型在生成可执行的步骤计划方面表现出色,但这些计划在某些任务上可能不可执行。
4.2 可执行性如何?
- 大型语言模型生成的计划在可执行性方面表现较好,但正确性可能较低。
4.3 能否通过提出的程序使计划可执行?
- 通过语义翻译和自回归修正,可以显著提高计划的可执行性,但正确性可能降低。
5. 分析与讨论
5.1 设计决策的消融分析:
- 通过消融实验分析不同技术对生成计划质量的影响。
5.2 计划是否符合环境:
- 评估生成的计划是否符合环境中的实际操作。
5.3 不同翻译模型的影响:
- 探讨不同翻译模型对生成计划质量的影响。
5.4 大型语言模型能否通过逐步指令生成可执行程序:
- 通过逐步指令指导模型生成可执行程序。
6. 相关工作
- 概述了已有研究中利用语言模型生成执行计划的方法。
7. 结论、局限性和未来工作
- 进一步研究方向及未来工作展望。
8. 附录
- 详细描述了实验参数搜索、人工评估细节、评估的所有任务、自然语言模板以及随机生成的计划样本。
9. 总结
- 提出了基于大型语言模型生成执行任务步骤计划的方法,通过语义翻译和自回归修正显著提高了生成计划的可执行性,但正确性可能有所下降。
【创新点】
该论文的主要创新点可以总结如下:
-
零样本规划能力:提出了一种通过预训练语言模型(LLMs)来执行复杂任务的零样本规划方法。具体来说,论文展示了如何将高层次任务(如“做早餐”)分解成一系列可执行的动作步骤(如“打开冰箱”),而无需额外的训练。这一方法揭示了LLMs从文本中提取实际可执行知识的可能性。
-
改善生成计划的执行性:论文提出了一套工具,通过翻译和调整语言模型生成的不可执行步骤,显著提高了生成计划的执行性。具体包括:
- 语义翻译:将模型生成的不可执行动作步骤映射到可执行的动作。
- 自回归轨迹矫正:通过逐步修正生成的计划来确保每一步都是可执行的。
- 动态示例选择:通过提供与查询任务类似的任务示例来促进知识提取。
-
评估方法:通过机械 Turk 人工评估来衡量生成计划的执行性和正确性之间的权衡。这种方法不仅展示了人工评估的必要性,也为后续研究提供了基准。
-
实验结果:实验结果表明,尽管生成的计划在某些情况下不如人类编写得完美,但它们的执行性得到了显著提高。这表明通过适当的方法可以将LLMs的知识高效地应用到执行任务中。
-
环境中的实际应用:论文通过虚拟家庭环境(VirtualHome)的实验,展示了如何将LLMs的知识应用到实际的交互式环境中,从而提高了任务执行的成功率。
-
改进空间:虽然方法取得了显著进展,但仍存在一些改进空间,如正确性略有下降,以及处理某些特定任务时执行性不足等问题。这为未来的改进和研究提供了方向。
这些创新点为使用预训练语言模型执行复杂任务提供了新的技术路径,并展示了其实现可行性和潜在应用价值。
【应用场景】
该论文探讨了如何利用预训练的语言模型(LLMs)来解决交互环境中的任务规划问题。具体来说,研究者试图从LLMs中提取可用于执行复杂人类活动的指令性知识。以下是对论文主要技术应用场景的中文描述:
应用场景描述
1. 预训练语言模型作为零-shot规划器
- 任务背景:研究者利用预训练的语言模型(如GPT-2, GPT-3, Codex等)来生成能够执行复杂任务的指令性计划。这些模型在没有任何进一步训练的情况下,能够将高层次的任务(如“做早餐”)分解成一系列可执行的动作步骤(如“打开冰箱”)。
- 环境:研究使用了VirtualHome环境来模拟家庭环境中的各种活动。该环境支持通过文本指令来执行操作,这些操作是由一系列动词和对象组成的。
- 具体任务示例:
- 任务1:刷牙
- 预训练GPT-2 1.5B:
- 步骤1: 走向浴室
- 步骤2: 走向水槽
- 步骤3: 找到牙刷
- 步骤4: 拿起牙刷
- 步骤5: 将牙刷放入嘴里刷牙两分钟
- 步骤6: 吐出牙膏并将牙刷放入水槽
- 预训练Codex 12B:
- 步骤1: 走向浴室
- 步骤2: 打开水门
- 步骤3: 走向水槽
- 步骤4: 将锅放在水槽上
- 步骤5: 将牙刷放在牙刷上
- 步骤6: 走向牙膏
- 步骤7: 将牙膏放在牙刷上
- 步骤8: 走向牙齿
- 步骤9: 将牙齿放在牙刷上
- 预训练GPT-2 1.5B:
- 任务2:扔掉纸张
- 预训练GPT-3 175B:
- 步骤1: 走向家庭办公室
- 步骤2: 走向书桌
- 步骤3: 找到书桌
- 步骤4: 转向书桌
- 步骤5: 找到椅子
- 步骤6: 坐在椅子上
- 步骤7: 找到支票
- 步骤8: 拿起支票
- 步骤9: 挤压支票
- 步骤10: 站起来
- 步骤11: 走向垃圾桶
- 步骤12: 将支票放在垃圾桶上
- 预训练GPT-3 175B:
- 任务1:刷牙
2. 提高指令生成的可执行性
- 研究者提出了一系列技术来提高生成指令的可执行性,这些技术包括:
- 步骤1:基于现有示范和语义翻译生成可执行步骤:这种方法通过将预训练模型的输出与环境中的可执行动作进行语义对齐,来生成更精确的指令。
- 步骤2:动态示例选择:这种方法通过利用预训练模型中的现有知识,来提高指令生成的准确性。具体做法是选择与查询任务最相似的示例来生成指令。
- 具体示例:这些技术显著提高了指令生成的可执行性,但同时也影响了指令的正确性。例如,通过这些技术,生成的指令从18%的可执行性提高到了79%。
3. 任务举例
- 任务1:完成亚马逊土耳其调查
- 步骤1:走向家庭办公室
- 步骤2:打开电脑
- 步骤3:找到电脑
- 步骤4:启动电脑
- 步骤5:找到键盘
- 步骤6:在键盘上打字
- 任务2:获取一杯牛奶
- 步骤1:走向厨房
- 步骤2:打开冰箱
- 步骤3:拿起牛奶
- 步骤4:关闭冰箱
总结
该研究展示了预训练的语言模型能够在没有任何进一步训练的情况下,生成可用于执行复杂任务的指令性计划。通过一系列技术改进,该研究显著提高了生成指令的可执行性,但同时也引入了一些正确性方面的妥协。这些技术对于将语言模型应用于交互式环境中的任务规划和执行具有重要意义。
【未来展望】
技术未来展望:语言模型作为零样本规划者:从自然语言提取可执行知识为具身代理
作者
Wenlong Huang
UC Berkeley
Pieter Abbeel
UC Berkeley
Deepak Pathak*
Carnegie Mellon University
Igor Mordatch*
Google
摘要
大型语言模型(LLMs)学习到的世界知识能否用于交互环境中的操作?本文研究了将高级任务(例如,“做早餐”)分解为具体步骤(例如,“打开冰箱”)的可能性。尽管先前的工作集中在学习通过明确的步骤来执行操作,但令人惊讶的是,如果预训练的语义足够大且适当提示,它们可以有效地将高级任务分解为中间计划,而无需进一步训练。然而,LLMs生成的计划通常不能精确映射到可执行动作。我们提出了一种方法,通过现有演示和语义翻译计划来条件化这些计划,使它们映射到可执行动作。在近期VirtualHome环境中的评估表明,这种方法在可执行性方面显著优于LLM基线。进行的人类评估揭示了可执行性和正确性之间的权衡,但显示了从语言模型中提取可执行知识的前景。
技术展望与未来工作
-
任务:刷牙
-
步骤1:去浴室
- GPT-2 1.5B
- 任务:刷牙
- 步骤1:走向浴室
- Codex 12B
- 任务:刷牙
- 步骤1:走向浴室
- GPT-3 13B
- 任务:刷牙
- 步骤1:走向浴室
- GPT-3 175B
- 任务:刷牙
- 步骤1:走向浴室
- 翻译Codex 12B
- 任务:丢掉废纸
- 步骤1:走向家庭办公室
- GPT-2 1.5B
-
人类
- 任务:刷牙
- 步骤1:走向浴室
- 步骤2:打开门
- 步骤3:走向水槽
- 步骤4:将锅放在水槽上
- 步骤5:将牙刷放在牙刷上
- 步骤6:找到牙膏
- 步骤7:将牙膏放在牙刷上
- 步骤8:将牙刷放在嘴里
- 步骤9:刷牙两分钟
- 步骤10:吐出牙膏,将牙刷放回水槽中
- 步骤11:打开水槽的水
- 步骤12:用牙刷冲洗一分钟
- 步骤13:关闭水槽的水
- 步骤14:将牙刷放回橱柜
-
-
结果
- LSTM监督基线
- 任务:读书
- 步骤1:走向家庭办公室
- 步骤2:走向灯
- 步骤3:找到灯
- 步骤4:打开灯
- 步骤5:找到小说
- 步骤6:拿起小说
- 步骤7:找到椅子
- 步骤8:坐在椅子上
- 步骤9:读小说
- 步骤10:睡觉
- 步骤11:醒来
- LSTM监督基线
-
分析与讨论
- 我们展示了通过语义翻译和自动轨迹校正,可以在保持一定正确性的前提下显著提高可执行性。
- 更多样本可在附录A.5中找到。
-
相关工作
- 语言模型的快速发展帮助我们了解了这些模型如何从大规模未结构化文本中学习世界知识,并将其应用于各种下游任务。
- 本研究旨在通过预训练语言模型提取序列动作计划以完成开放式人类活动,同时满足各种交互环境的要求。
-
结论
- 通过这项研究,我们发现预训练语言模型已经包含了大量的可执行知识,但这些知识需要通过适当的提示和语义翻译来提取和应用。
- 未来工作可以进一步探索如何利用这些模型提取和应用于具身环境中的知识。
这项研究通过利用预训练语言模型生成合理的行动计划,并通过语义翻译和自动轨迹校正来提升计划的可执行性,展示了语言模型在具身环境中的应用前景。未来可以进一步探索如何利用这些模型从大规模文本中提取更复杂、更具体的任务知识,并应用于更广泛的具身场景中。
【附录】
以下是关于《Language Models as Zero-Shot Planners: Extracting Actionable Knowledge for Embodied Agents》的伪代码实现,重点是提取和执行高阶任务(如“刷牙”)的步骤。
伪代码实现
# 定义环境和任务
class Environment:def __init__(self):self.objects = {} # 存储环境中的物体self.actions = {} # 存储可执行的动作def add_object(self, name, object):self.objects[name] = objectdef add_action(self, name, action):self.actions[name] = action# 初始化环境
env = Environment()# 定义一个任务
def task(name, steps):return {"name": name, "steps": steps}# 预训练语言模型
class PretrainedLanguageModel:def generate_plan(self, task_description):# 假设生成一个计划return "Generated Plan"# 零样本规划器
class ZeroShotPlanner:def __init__(self, language_model: PretrainedLanguageModel):self.language_model = language_modeldef generate_action_plan(self, task):# 生成计划plan = self.language_model.generate_plan(task)return plan# 生成可执行动作
class ActionTranslator:def translate(self, plan, environment):# 将生成的计划转换为可执行的动作translated_plan = []for step in plan:# 找到对应的可执行动作action = environment.actions.get(step, None)if action:translated_plan.append(action)return translated_plan# 环境感知
class EnvironmentAwareness:def __init__(self, environment):self.environment = environmentdef get_state(self):# 获取当前环境的状态return self.environment.state# 主程序
def main():# 初始化环境env = Environment()# 添加环境中的物体和动作env.add_object("fridge", "Fridge")env.add_object("sink", "Sink")env.add_object("toothbrush", "Toothbrush")env.add_object("toothpaste", "Toothpaste")env.add_action("open", "Open fridge")env.add_action("close", "Close fridge")env.add_action("grab", "Grab toothbrush")env.add_action("put", "Put toothbrush in sink")env.add_action("brush", "Brush teeth")env.add_action("rinse", "Rinse mouth")# 初始化语言模型和零样本规划器language_model = PretrainedLanguageModel()planner = ZeroShotPlanner(language_model)# 定义任务task_description = "brush teeth"task = task(task_description, [])# 生成计划plan = planner.generate_action_plan(task)# 初始化环境感知environment_awareness = EnvironmentAwareness(env)# 翻译计划为可执行的动作translator = ActionTranslator()executable_plan = translator.translate(plan, environment_awareness)# 执行动作for action in executable_plan:action.execute()if __name__ == "__main__":main()
详细说明
- 环境和任务定义:
Environment
类用于定义和管理环境中的物体和动作。task
函数用于定义一个任务,包含任务名称和步骤。
- 预训练语言模型:
PretrainedLanguageModel
类用于生成任务的计划。
- 零样本规划器:
ZeroShotPlanner
类用于调用语言模型生成任务计划。
- 生成可执行动作:
ActionTranslator
类用于将生成的计划转换为可执行的动作。
- 环境感知:
EnvironmentAwareness
类用于获取环境的当前状态。
- 主程序:
- 初始化环境并添加物体和动作。
- 使用语言模型生成任务计划。
- 使用翻译器将计划转换为可执行的动作。
- 执行动作。
以上伪代码展示了如何使用预训练的语言模型生成任务计划,并将其转换为可执行的动作,从而实现零样本规划。
【OpenSpace】
开放性讨论:语言模型作为零样本规划者
背景介绍
在本论文中,Wenlong Huang、Pieter Abbeel 和其他作者研究了如何利用大型语言模型(LLMs)来为具身智能体(embodied agents)生成可执行的操作计划。他们发现,尽管大型语言模型可以很好地理解高阶任务,但它们生成的计划往往与实际可执行的步骤不匹配,可能包含语义模糊或未包含必要步骤的问题。为了解决这个问题,作者提出了一种方法来改进生成的操作计划的可执行性,同时保持其语义正确性。
讨论问题
-
大型语言模型是否能够生成可执行的操作计划?
- 大型语言模型是否能够在不经过额外训练的情况下生成合理的操作计划?
- 生成的操作计划在多大程度上能够直接执行,而不需要进一步的调整?
-
如何改善生成的计划的可执行性?
- 作者提出了哪些具体工具和技术来提高生成的操作计划的可执行性?
- 这些工具和技术在执行过程中是否会影响计划的语义正确性?
-
零样本规划(zero-shot planning)的有效性如何?
- 使用零样本规划方法生成的操作计划是否能够在实际环境中执行?
- 通过翻译和调整语言模型生成的操作计划,是否能够在保持语义正确性的前提下提高可执行性?
-
未来的改进方向是什么?
- 作者认为有哪些方面可以进一步改进?
- 如何进一步利用零样本规划方法来提高实际应用中的可执行性?
具体例子
- Task: 刷牙
- GPT-2 1.5B:
- 走向浴室
- 走向水槽
- 找到牙刷
- 拿起牙刷
- 将牙刷放入嘴里
- 用牙刷刷牙两分钟
- 吐出牙膏,刷牙放入水槽
- Codex 12B:
- 走向浴室
- 打开门
- 走向水槽
- 将锅放在水槽上
- 将刷子放在牙刷上
- 转向牙膏
- 放牙膏在牙刷上
- 放牙齿在牙刷上
- 人类:
- 走向家庭办公室
- 走向垃圾桶
- 找到垃圾桶
- 转向垃圾桶
- 找到椅子
- 坐在椅子上
- 找到支票
- 抓起支票
- 挤压支票
- 站起来
- 走向垃圾桶
- 将支票放在垃圾桶上
- GPT-2 1.5B:
通过这些例子,可以看到大型语言模型生成的操作计划虽然在语义上是合理的,但在实际执行时往往不够精确和可操作。通过翻译和调整,可以显著提高计划的可执行性,但同时可能会减少其语义正确性。
未来研究方向
- 进一步改进零样本规划方法: 如何更好地利用零样本规划方法生成更精确和可执行的操作计划?
- 增强模型的理解能力: 如何进一步提高语言模型对任务和环境的理解能力,以便生成更精确的操作计划?
- 结合更多环境信息: 如何利用更多环境信息来增强生成的操作计划的可执行性?
通过这些讨论,我们可以更深入地理解如何利用大型语言模型来生成和优化可执行的操作计划,以实现更好的具身智能体任务执行。
相关文章:

语言模型作为零样本规划者:提取可执行知识以供具身代理使用
【摘要】 本文研究了预训练的语言模型(LLMs)能否被用来执行在交互式环境中的任务。作者发现,尽管LLMs在生成高阶任务的行动计划时可能无法做到完全精确定义,但通过适当提示,大型预训练语言模型可以分解高阶任务到中阶…...

Baklib智能推荐引擎驱动内容中台升级
智能推荐引擎技术架构 现代智能推荐系统的技术架构以语义分析算法为核心,通过自然语言处理技术解构内容特征,结合动态知识图谱实现信息实体关系的智能映射。该系统采用分层设计架构,基础层依托深度学习模型处理海量非结构化数据,…...

显示器长时间黑屏
现象 电脑启动后,进入登录界面前会随机黑屏,有时候十几秒,有时候几分钟 进入桌面后,长时间不操作电脑黑屏,移动鼠标,点击键盘后尝试点亮屏幕,也会消耗较长时间 尝试 重装系统,或者重新安装显卡,都能够恢复,但过段时间以后又出现黑屏情况 集成显卡,独立显卡都出现过 操作系统…...

顺序表与链表·续
引言 本文承接上文(顺序表与链表-CSDN博客),开始对链表的要点提炼。前文提到顺序表适合需要频繁随机访问且数据量固定的场景,而链表适合需要频繁插入和删除且数据量动态变化的场景。链表的引入弥补了顺序表在动态性和操作效率上的…...

nvidia驱动升级-ubuntu 1804
升级 1.从官网下载*.run驱动文件 2.卸载原始驱动 sudo /usr/bin/nvidia-uninstall sudo apt-get --purge remove nvidia-\* # 可能不需要加-\ sudo apt-get purge nvidia-\* # 可能不需要加-\ sudo apt-get purge libnvidia-\* # 可能不需要…...

【Linux】——初识操作系统
文章目录 冯-诺依曼体系结构操作系统shell 冯-诺依曼体系结构 我们现在所使用的计算机就是冯-诺依曼体系结构。 存储器就是内存。 由下图可知,寄存器最快,为啥不用寄存器呢? 因为越快价格就最贵,冯诺依曼体系结构的诞生…...

本地化deepseek
小白都能拥有自己的人工智能 1、我本地环境 系统:win10 cpu:i7(i7-12700),差不多就行 硬盘:500G+2T,可以不用这么大 显卡:七彩虹2060 12G ,够用了 我的配置最高也只能配上8B了, R1模型版本CPUGPU内存存储8B Intel Core i7/AMD Ryzen 7 及以上 无强制要求,有 4…...

利用可变参数模板,可打印任意参数和参数值。(C++很好的调式函数)
很酷的应用: (1) 如何获取可变参数名 代码例子: #define _test(...) (test_t(#__VA_ARGS__, __VA_ARGS__))template<typename... Args> void test_t(const char* names, Args... args) {std::cout << names <<…...

Yashan DB 体系结构
一、体系结构概况 1.1 线程管理 YashanDB采用多线程架构,线程分为两类: • 工作线程(Worker Threads):每个客户端连接到数据库实例时,会创建一个工作线程。工作线程负责处理客户端的SQL请求,执…...

测试工程师Deepseek实战之如何反向PUA它
问: 你是一名资深测试开发工程师 帮我设计一个提效工具,具有以下功能: 1.页面使用PYQT5设计,用两个输入控件,最好是日期类型的控件,第一个日期控件作为开始日期,第二个日期控件作为结束日期;前后…...

Windows系统中在VSCode上配置CUDA环境
前置步骤 安装符合GPU型号的CUDA Toolkit 配置好 nvcc 环境变量 安装 Visual Studio 参考https://blog.csdn.net/Cony_14/article/details/137510909 VSCode 安装插件 Nsight Visual Studio Code Editionvscode-cudacpp 安装 cmake 并配置好环境变量 注:Windows 端…...

React Native 0.76 升级后 APK 体积增大的原因及优化方案
在将 React Native 从 0.71 升级到 0.76 后,打包体积从 40 多 MB 增加到了 80 MB。经过一系列排查和优化,最终找到了解决方案,并将优化过程整理如下。 1. React Native 0.76 体积增大的可能原因 (1) 新架构默认启用 React Native 0.76 默认启用了 New Architecture(新架…...

pycharm找不到conda可执行文件
conda 24.9.2 在pycharm的右下角就可以切换python解释器了...

定时任务框架
常用定时任务框架 JDK 自带的 ScheduledExecutorService 适用于轻量级定时任务,基于线程池实现。API 简单,适用于小规模任务调度。 Quartz 强大的 Java 任务调度框架,支持 Cron 表达式、分布式集群、持久化等。适用于复杂调度场景࿰…...

ESP32S3读取数字麦克风INMP441的音频数据
ESP32S3 与 INMP441 麦克风模块的集成通常涉及使用 I2S 接口进行数字音频数据的传输。INMP441 是一款高性能的数字麦克风,它通过 I2S 接口输出音频数据。在 Arduino 环境中,ESP32S3 的开发通常使用 ESP-IDF(Espressif IoT Development Framew…...

利用后缀表达式构造表达式二叉树的方法
后缀表达式(逆波兰表达式)是一种将运算符放在操作数之后的表达式表示法。利用后缀表达式构造表达式二叉树的方法主要依赖于栈结构。 转换步骤 初始化 创建一个空栈。 遍历后缀表达式 对后缀表达式的每个符号依次处理: 遇到操作数 如果当前符…...

使用express创建服务器保存数据到mysql
创建数据库和表结构 CREATE DATABASE collect;USE collect;CREATE TABLE info (id int(11) NOT NULL AUTO_INCREMENT,create_date bigint(20) DEFAULT NULL COMMENT 时间,type varchar(20) DEFAULT NULL COMMENT 数据分类,text_value text COMMENT 内容,PRIMARY KEY (id) ) EN…...

YOLOv12本地部署教程——42%速度提升,让高效目标检测触手可及
YOLOv12 是“你只看一次”(You Only Look Once, YOLO)系列的最新版本,于 2025 年 2 月发布。它引入了注意力机制,提升了检测精度,同时保持了高效的实时性能。在保持速度的同时,显著提升了检测精度。例如&am…...

SQLAlchemy系列教程:如何防止SQL注入
SQL注入是一种常见的安全漏洞,它允许攻击者通过应用程序的SQL查询操纵数据库。使用ORM工具(如SQLAlchemy)提供的内置功能可以帮助减轻这些风险。本教程将指导您完成保护SQLAlchemy查询的实践。 了解SQL注入 当攻击者能够通过用户输入插入或操…...

1. 树莓派上配置机器人环境(具身智能机器人套件)
1. 安装树莓派系统 镜像下载地址(windows/Mac/Ubuntu),安装Pi5. 2. 环境配置(登录Pi系统) 2.1 启用 SSH From the Preferences menu, launch Raspberry Pi Configuration. Navigate to the Interfaces tab. Select Enable…...

基于SpringBoot的智慧停车场小程序(源码+论文+部署教程)
运行环境 • 前端:小程序 Vue • 后端:Java • IDE工具:IDEA(可自行选择) HBuilderX 微信开发者工具 • 技术栈:小程序 SpringBoot Vue MySQL 主要功能 智慧停车场微信小程序主要包含小程序端和…...

【从零开始学习计算机科学】数字逻辑(九)有限状态机
【从零开始学习计算机科学】数字逻辑(九)有限状态机 有限状态机状态机的表示方法有限状态机的Verilog描述有限状态机 有限状态机(简称状态机)相当于一个控制器,它将一项功能的完成分解为若干步,每一步对应于二进制的一个状态,通过预先设计的顺序在各状态之间进行转换,状…...

HarmonyOS Next~鸿蒙系统ArkCompiler跨平台编译技术的革新实践
HarmonyOS Next~鸿蒙系统ArkCompiler跨平台编译技术的革新实践 引言 在万物互联时代,操作系统对编译技术的需求已从单纯的代码转换演变为跨设备协同、高效资源调度与极致性能优化的综合挑战。华为鸿蒙系统(HarmonyOS)自主研发的ArkCompiler…...

AI大模型概念知多少
什么是大模型?什么是模型参数 1)现在的大模型要解决的问题,就是一个序列数据转换的问题: 输入序列 X X[x1 ,x2 ,...,xm ], 输出序列Y[y1 ,y2 ,…,yn ],X和Y之间的关系是:YWX。 “大模型”这个词…...

powermock,mock使用笔记
介于日本的形式主义junit4单体测试,特记笔记,以下纯用手机打出来,因为电脑禁止复制粘贴。 pom文件 powermock-module-junit1.7.4 powermock-api-mokcito 1.7.4 spring-test 8 1,测试类头部打注解 RunWith(PowerMockRunner.class…...

基于置换对称性的模型融合:实现凸盆地单盆地理论
【摘要】 一种合并神经网络模型的新方法,通过置换对称性来合并模型。即使在大规模的非凸优化问题中,神经网络损失景观似乎通常只有一个(几乎)封闭的盆地,这在很大程度上归因于隐藏层单元置换对称性。作者介绍了三种算法,用于将一个模型的单元置换为与参考模型对齐,从而…...

把握好自己的节奏, 别让世界成为你的发条匠
我见过凌晨两点还在回复工作群消息的职场妈妈,也见过凌晨三点抱着手机刷短视频的年轻人。 地铁站台的上班族永远在狂奔,连刚会走路的小孩都被早教班塞满了日程表。 现如今生活节奏快,像一只巨大的发条,每个人都被拧得紧紧的&#…...

linux awk命令和awk语言
linux awk和awk语言 通常大家说的awk几乎都是在linux/unix中使用的awk命令,见下, https://www.geeksforgeeks.org/awk-command-unixlinux-examples/ 作为命令使用的话,存在下内容 Awk 是一个工具,使程序员能够编写小巧但有效的…...

电脑网络出现问题!简单的几种方法解除电脑飞行模式
在某些情况下,您可能需要关闭电脑上的飞行模式以便重新连接到 Wi-Fi、蓝牙或其他无线网络。本教程中简鹿办公将指导您如何在 Windows 和 macO S操作系统上解除飞行模式。 一、Windows 系统下解除飞行模式 通过快捷操作中心 步骤一:点击屏幕右下角的通知…...

ASP.NET Core 6 MVC 文件上传
概述 应用程序中的文件上传是一项功能,用户可以使用该功能将用户本地系统或网络上的文件上传到 Web 应用程序。Web 应用程序将处理该文件,然后根据需要对文件进行一些验证,最后根据要求将该文件存储在系统中配置的用于保存文件的存储中&#…...