0


AI智能体的介绍

最近几个月

随着大语言模型的持续火爆

利用大模型来构建AI智能体的研究呢

也陆续进入了人们的视野

AI智能体这个概念呢

也逐渐的流行开来

先是斯坦福大学谷歌的研究者们

成功的构建了一个虚拟小镇

小镇上的居民呢不再是人

而是25个AI的智能体

他们的行为呢

比人类角色扮演更加真实

甚至还举办了一场情人节的派对

随后

商汤清华等机构提出了能够自主学习

解决任务的通才AI智能体GITM

在我的世界中比以往所有的智能体

都更有优秀的表现

同一时间

英伟达开元的Voyager

也给AI圈带来了不小的震撼

作为一个大模型驱动

可以终身学习的游戏智能体

Voyager在我的世界中玩出了很高的水平

这些AI智能体的先后涌现

甚至让人认为

是未来通用人工智能AGI的雏形

很多AI领域的大佬和科技巨头

对AI智能体的发展

都产生了极大的兴趣

并寄予了厚望

今年年初回归OpenAI的安德烈卡帕西

在OpenAI的黑客马拉松活动上就透露

每当有新的AI智能体论文出现的时候

OpenAI内部呢就会感到非常的有兴趣

并且认真的进行讨论

那么我们不禁要问

到底什么是AI智能体

它由哪些部分组成

它的神奇之处又具体表现在哪些方面呢

近日OpenAI安全系统的负责人Lilian Weng

就写了一篇关于AI智能体的博客

首先简单介绍一下作者啊

Lilian Weng是2018年加入的OpenAI

在GPT4项目中

主要参与一训练强化学习和对齐

模型安全等方面的工作

那在她的这篇博客文章中呢

她就认为AI智能体的核心驱动力是大语言模型

而规划planning

记忆memory和工具使用Tool use

是实现它的三个关键组件

Lilian Weng对每个组件都展开了详细的剖析

并且提供了一些案例的研究

比如说科学发现智能体

生成式智能体模拟和概念验证的示例

对于AI智能体未来将面临哪些挑战呢

他也给出了自己的观点

我对文章的内容呢做了一些提炼

在这里跟大家分享一下

有兴趣的同学

可以去详细阅读一下原文

首先Lilian介绍了一下智能体系统的概念

在大语言模型赋能的自主智能体系统中

大语言模型充当了智能体的大脑

它有三个关键的组件

首先是规划

规划呢又分为两个部分

一个是子目标和分解

智能体呢可以将大型的任务

分解为更小可管理的子目标

从而高效的处理复杂的任务

第二个是反思和完善

智能体可以对过去的行为

展开自我批评和自我反思

从错误中吸取教训

并针对未来的步骤进行完善

提高最终结果的质量

其次的组件是记忆

分为短期记忆和长期记忆

所有的上下文学习

都是利用了模型的短期记忆来学习

而通常利用外部向量存储和快速检索的能力

为智能体提供长时间保留和回忆记忆的能力

最后呢是工具的使用

智能体呢可以学会调用外部的API

来获取模型权重中缺失的额外信息

这些信息呢

通常在预训练之后很难改变

包括当前的信息代码执行能力

以及对专有信息源的访问等等

随后呢作者分别详细讲解了这三个关键的组件

首先是规划

我们知道一项复杂的任务

通常会涉及到许多的步骤

智能体必须了解任务是什么并提前进行规划

那么呢这就会涉及到任务的分解

以及相关的技术

首先呢是思维链COT

它已经成为了增强复杂任务上模型性能的标准提示技术

在实现过程中

模型被指示一步一步的思考

从而利用更多的测试时间计算

将困难任务分解为更小更简单的步骤

COT呢可以将大型的任务

转化为多个可管理的小任务

并解释清楚模型的思维过程

其次呢是思维树TOT

他通过在每一步探索多种推理可能性来扩展了COT

首先它会将问题分解为多个思考步骤

并且在每个步骤中生成多个思考

创建一种树形的结构

搜索过程可以是

广度优先搜索BFS

或者是

深度优先搜索DFS

其中呢每个状态由

分类器

或者是

多数的投票

来进行评估

具体来说

就是任务分解过程中

可以通过以下三种方式来完成

第一种方式

是基于大语言模型的

简单提示

比如XYZ的步骤是什么

实现XYZ的指目标是什么

第二种是

使用特定于任务的指示

比如说写一个故事的大纲

或者是第三种

人工输入

另一种截然不同的方法是使用

LLM+p

它靠外部的

经典规划器

来进行长期的规划

这个方法呢会利用规划领域定义语言

PDDL

作为描述规划问题的中间接口

在这个过程中

大语言模型会首先将问题转化为

problem PDDL

然后请求

经典的规划器

基于现有的

Domain PDDL

生成

PDDL规划

最后再将

PDDL规划

转换回自然的语言

本质上规划步骤被

外包

给了外部的工具

并且假设可以使用特定领域的PDDL

和合适的规划器

这在某些机器人的设置中很常见

但是在许多其他领域并不常见

在规划过程中

自我反思self reflection

它允许自主智能体通过完善以往的行动决策

和纠正以往的错误来迭代改进

因而呢会在

出现试错的这个现实世界任务

发挥至关重要的作用

ReAct方法

能够通过将

动作空间

扩展为

一个任务特定的

离散动作

和语言空间的组合

从而将推理和动作集成在大语言模型中

离散动作

使得大语言模型能够与环境交互

例如使用维基百科的搜索API

而语言空间促使大语言模型

以自然语言的方式来生成

推理轨迹
reflection框架

则为智能体

配备了动态记忆和自我反思的能力

提高了推理的技能

它有一个

标准的强化学习设置

其中

奖励模型

提供了简单的二元奖励

动作空间

则遵循了react中的设置

Chain of Hindsight(CoH)

这种方式鼓励模型通过显式地呈现

一系列过去的输出

来改进它自己的输出

其中每个输出呢都带有了

反馈的注释

为了避免

过拟合

CoH添加了

正则化项

来最大化的预训练数据集的

对数似然

同时呢为了避免捷径和复制

研究者们在训练过程中

随机屏蔽了

0%到5%的过去的token

COH的思路

是呈现上下文中

连续改进输出的历史

并且训练模型产生更好的输出

算法蒸馏AD

它是将相同的思路

应用到了强化学习任务中的

跨情节轨迹

尽管AD算法仅仅使用了

离线的强化学习

但是它的性能接近于

RL^2

在线强化学习算法

并且呢学习速度比

专家蒸馏

和源策略算法要快得多

其次呢是

记忆组件

(人类)记忆分为三种类型

第一种呢是

感知记忆

第二种呢是

短期记忆STM

或者称为

工作记忆

第三种呢就是

长期记忆LTM

其中感知记忆是记忆的早期阶段

它能够在

原始刺激

结束后

保持对

感官信息

比如说视觉听觉等的

印象

感知记忆呢通常只能持续几秒钟

它的子类包括

图像记忆
回声记忆

触摸记忆

而短期记忆STM或者称为

工作记忆

存储着我们目前所知道的信息

以及执行复杂认知任务

比如学习和推理所需要的信息

一般来讲呢

短期记忆可以持续20-30秒

而长期计可以将信息储存很长的时间

从几天到几十年不等

它的存储容量呢基本上是无限的

长期记忆呢有两种子类别

分别是

显式的陈述性记忆

隐式的程序性记忆

前者是

对事实和事件的记忆

指的是那些可以有意识的回忆起来的记忆

包括

记忆事件和经过的情景记忆

以及

记忆事实和概念的语义记忆

后者的记忆是

无意识

涉及到自主执行的技能和习惯

比如说骑自行车或者在键盘上打字

参考

人类记忆的分类

我们可以得到几种

映射关系
感知记忆

可以作为原始输入的

学习嵌入表示

短期记忆作为上下文学习

由于受到Transformer

有限上下文窗口长度

的限制

短期记忆是短暂而且有限的

长期记忆作为外部的向量存储

智能体可以查询快速检索从而进行访问

外部记忆可以

缓解注意力的一些限制

为了更好的处理外部记忆

一个常见的做法是

信息的嵌入表示

保存到一个

向量存储数据库

这个数据库呢可以支持快速的

最大内积搜索MIPS

为了

优化检索的速度

研究者经常使用的方法是

近似最近邻ANN算法

在加速MIPS中

经常会用到的ANN算法包括

局部敏感哈希LSH
近似最近邻ANNOY
分层可导小世界HNSW

Facebook AI团队开源的库

FAISS

以及

可扩展最近邻ScaNN算法

更多的

MIPS算法

和性能的比较呢

可以在

ann-benchmarks.com

中查看


第三个关键组件呢是

使用工具

使用工具是人类的一个显著特点

我们创造修改和利用外部的物体

来探知和认知现实世界

类似的

给大语言模型配备外部的工具

可以大幅的扩展模型的能力

MRKL

是一种用于自主智能体的

神经符号架构

命名来源于模块化推理

modular reasoning
知识knowledge和语言language

这三者的简称

每个MRKL系统呢都包含一些

专家模块

通用的大语言模型作为一个

路由器

负责将

查询

路由到最合适的专家模块

这些模块呢可以是

神经网络

例如

深度学习模型

也可以是

符号的

例如

数学计算器货币转换器天气的API

MRKL的研究团队使用

数学计算

进行实验

实验结果证实

外部符号工具

能够可靠的工作时

知道何时和如何使用这些工具是至关重要的

而这个是由大语言模型的能力决定的

ChatGPT的插件

OpenAI的API函数调用

就是大语言模型使用工具

在增强能力的最好实例

工具API的集合

可以是由其他开发者提供的

插件

或者是

自定义的函数调用
HuggingGPT

则是一个利用ChatGPT

作为

任务规划器的框架

根据模型的描述

来选择

HuggingFace平台

中可以使用的模型

并且根据执行的结果归纳总结出响应

HuggingGPT系统由四个阶段组成

第一个

任务规划阶段

大语言模型作为大脑

用户请求

解析为

多个任务

每个任务呢有

四个关联的属性

分别是

任务类型
任务ID
依赖项

参数

研究团队使用了少量的例子

来指导大语言模型进行

任务解析和规划

第二个模型选择阶段

大语言模型会从一个

模型列表

中选择模型

将任务分配给

专家模型

由于上下文长度有限

就需要进行

基于任务类型的过滤

第三个就是

任务的执行阶段

专家模型执行具体的任务

并且

记录任务结果

第四个呢是

响应的生成阶段

大语言模型

接收执行的结果

并向用户

提供总体的结果

HuggingGPT在实际使用中呢

还需要解决几个挑战

第一个呢就是

需要提高效率

因为大语言模型的推理以及与其他模型的交互

都会

减慢进程

第二 它依赖一个

长的上下文窗口

来沟通复杂的任务内容

第三 提高大语言模型

输出

和外部模型服务的稳定性

接下来Lilian还介绍了一个

评估工具

增强型大语言模型性能的基准

API Bank

它包含了

53个常用的API工具

一个完整的

工具增强型大语言模型工作流

以及涉及

568个API调用

264个已注释的对话
API Bank基准

中可以选择的API相当的多样化

包括

搜索引擎计算器
日历查询
智能家具控制
日程管理

等等

大语言模型首先可以通过

API搜索引擎

找到合适的API进行调用

然后

使用相关的文档

来调用API

在API bank的工作流中

大语言模型需要做出一些决定

包括

是否需要调用API
确定要调用的正确的API

以及

基于API结果的响应

这个基准在三个层次上

评估了智能体的工具使用能力

包括

调用API的能力
检索API能力

以及

检索和调用之外规划API的能力

考虑到不明确的用户需求

模型可能会需要进行多次的API调用

来解决实际的问题

随后Lilian介绍了一个案例

一个用来进行科学发现的智能体

ChemCrow

它是一个由大语言模型设计的

化学智能体

能够完成

有机合成
药物发现

材料设计

方面的任务

通过

整合17种专家设计的工具

ChemCrow提高了大语言模型在化学方面的性能

并衍生出了新的能力

有趣的是呢

尽管基于大语言模型的评估结果得出的结论是

GPT-4

ChemCrow

的性能几乎相当

但是经过专家人工的评估表明

ChemCrow

在很大程度上优于

GPT4

Lilian还提到了

生成式智能体

的概念

它能够将

大语言模型

记忆、规划和反射机制

相结合

使得智能体能够根据过去的经验做出反应

并且与其他的智能体进行交互

有关智能体大家应该最熟悉的例子就是

AutoGPT

有了它人类无需插手

AutoGPT就能够自主完成任务

具体来说呢

AutoGPT就相当于给基于GPT的模型

有了一个

内存

身体

有了它你就可以把一项任务交给AI的智能体

让它自主的提出一个计划

然后去执行这个计划

此外呢它还具有互联网访问

长期和短期的内存管理

用于文本生成的

GPT4实例

以及使用GPT3.5进行文件存储

和生成摘要等等功能

此外

作者还列举了

GPT-Engineer

(口误)这个项目

和代码生成类的工具差不多

能够根据提示生成

一整个代码库

最后呢作者也提出了

基于大语言模型构建智能体的一些限制

包括

有限的上下文长度
长期规划

任务分解

还要面临的挑战

以及

自然语言接口

的可靠性

好了以上就是Lilian Weng对AI智能体的介绍和分析

完整的内容大家可以去自己阅读一下原文

里边还有

一些数学公式和伪代码

可以供大家参考


本文转载自: https://blog.csdn.net/weixin_41748874/article/details/135176835
版权归原作者 韫秋鱼线 所有, 如有侵权,请联系我们删除。

“AI智能体的介绍”的评论:

还没有评论