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

从0开始学习大模型--Day03--Agent规划与记忆

规划(planning)

规划,可以为理解观察和思考。如果用人类来类比,当我们接到一个任务,我们的思维模式可能会像下面这样:

·1、首先会思考怎么完成这个任务。

2、然后会审视手头上所拥有的工具,以及如何使用这些工具高效地达成目的。

3、再会把任务拆分成子任务。(就像咱们做思维导图一样。)

4、在执行任务的时候,我们会对执行过程进行反思和完善,吸取教训以完善未来的步骤。

5、执行过程中思考任务何时可以终止。

这是人类的规划能力,我们希望智能体也拥有这样的思维模式,因此可以通过 LLM 提示工程,为智能体赋予这样的思维模式。在智能体中,最重要的是让 LLM 具备两种能力:子任务拆解和反思与改进

子任务拆解

通过LLM使得智能体可以把大型任务分解为更小的、更可控的子任务,从而能够有效完成复杂的任务。

思维链(Chain of Thoughts,CoT):思维链已经是一种比较标准的提示技术,能显著提升LLM完成复杂任务的效果。当我们对LLM要求“think step by step”,会发现LLM会把问题分解成多个步骤,一步一步思考问题和如何解决,能使得输出的结果更加准确,这是一种线性的思维模式。

思维树(Tree-of thought,ToT):对CoT的进一步扩展,在思维链的每一步,推理出多个分支,拓扑展开成一棵思维树,使用启发方式评估每个推理分支对问题解决的贡献,选择搜索算法,使用广度优先搜索(BFS)或深度优先搜索(DFS)等算法来探索思维树,并进行前瞻和回溯)。

思维链和思维树的不同思考过程

反思与改进

Agent对过去的行动进行自我批评和反思,从错误中学习并改进未来的步骤,从而提高最终结果的质量。

在实际任务中,试错是不可避免的,而自我反思在这个过程中起着至关重要的作用。它允许 Agent 通过改进过去的行动决策和纠正以前的错误来进行迭代改进。

反思是 Agent 对事情进行更高层次、更抽象思考的结果。反思是周期性生议的,当gent感知到的最新事件的重要性评分之和超过一定阈值时,就会生成反思。这可以类比为我们常用的成语“三思而后行",做重大决策的时候,我们会反思自己先前的决策。

事实上,有没有这种类似思维模式的框架,对于大模型的给出的答案,质量与耗费的时间区别是显而易见的,无论是只有标准,仅推理还是仅行动,都会在一定程度上限制答案,相当于是在闭门造车,而如果用对了框架,像前面所说的一样,先规划,做出行动后思考是否合理,再去决定下一步行动,这样给出的答案相比之下就会更完善,在解决问题上也会更高效。像是我们比较经常会说到的就是LLM有时会因为幻觉而给出很荒谬的答案,就是因为没有交互,也没有观察答案的反馈,直接就给出答案。

记忆(memory)

生活中的记忆机制

感觉记忆(Sensory Memory):这是记忆的最早阶段,提供在原始刺激结束后保留感官信息(视觉、听觉等)的印象的能力。感觉记忆通常只持续几秒钟。

短期记忆(或工作记忆):这是一种持续时间较短的记忆,能够暂时存储和处理有限数量的信息。例如,记住一个电话号码直到拨打完毕。

长期记忆:这是一种持续村间较长的记忆,可以存储大量信息,从几分钟到一生。长期记忆可以进一步分为显性记忆和隐性记忆。显性记忆,可以有意识地回忆和表达的信息,显性记忆又可以分为情景记忆(个人经历的具体事件)和语义记忆(一般知识和概念)。隐性记忆,这种记忆通常是无意识的,涉及技能和习惯,如骑自行车或打字。

智能体中的记忆机制

形成记忆:大模型在大量包含世界知识的数据集上进行预训练。在预训练中,大模型通过调整神经元的权重来学习理解和生成人类语言,这可以被视为“记忆"的形成过程。通过使用深度学习和梯度下降等技术,大模型可以不断提高基于预测或生产文本的能力,进而形成世界记忆或长期记忆

短期记忆:在当前任务执行过程中所产生的信息,比如某个工具或某个子任务执行的结果,会写入短期记忆中。记忆在当前任务过程中产生和暂存,在任务完结后被清空。

长期记忆:长期记忆是长时间保留的信息。一般是指外部知识库,通常用向量数据库来存储和检索。

学习来源于B站教程:【进阶篇】05.Agent记忆(memory)_哔哩哔哩_bilibili

http://www.xdnf.cn/news/4315.html

相关文章:

  • “胖都来”商标申请可以通过注册不!
  • 如何应对客户在验收后提出新需求?
  • ESP32蓝牙开发笔记(十四)
  • Zsh + iTerm2搭配使用教学,非常舒服,macOS
  • 系统架构-云原生架构设计
  • 14前端项目----登录/注册
  • 【强化学习】#4 蒙特卡洛方法
  • leetcode 70.爬楼梯(c++详细最全解法+补充知识)
  • C++ 备忘录模式详解
  • NVM完全指南:安装、配置与最佳实践
  • 尤雨溪宣布:Vue 生态正式引入 AI
  • 医疗人工智能大模型中的关键能力:【中期训练】mid-training
  • android中的背压问题及解决方案
  • AOP封装进行批量的数据查询并填充
  • shell 脚本
  • Android学习总结之MMKV(代替SharedPreferences)
  • 黑电平校正(Black Level Correction, BLC)算法
  • 【C++】C++中this指针的介绍及使用
  • 实现引用计数线程安全的shared_ptr
  • 从Huggingface下载模型的方法小结
  • Linux如何安装AppImage程序
  • WHAT - Rust 静态派发(Static Dispatch)和 动态派发(Dynamic Dispatch)
  • 计算机视觉注意力机制【一】常用注意力机制整理
  • The Action Replay Process
  • spark行动算子
  • Java中对象集合转换的优雅实现【实体属性范围缩小为vo】:ListUtil.convert方法详解
  • mujoco仿真器学习笔记
  • 孤岛铜怎么解决
  • CAN报文中的标准帧和扩展帧
  • C++ string的使用