自2023年初开始,大模型在国内外引起了极大的关注。实际上,早在2022年底,国外已经对这一技术展开了非常激烈的讨论,而在国内对大模型的普及和认知很大程度上得益于`ChatGPT`的问世。这一现象级的对话式应用直接改变了人们对智能应用的既有看法。在此之前,我们已经习惯了`智能客服`的机械式回答和`智能应用`的频繁出错,所以,当一个能够使用`自然语言`(即人类的交流语言)理解情感、解决问题并且能即问即答的应用系统出现时,人们很难相信它背后不是真实的人类,而是一个由人类设计的机器模型。

下图中的对话来源于基于`GPT-4.0`模型的对话式应用ChatGPT

如上图所示,我们可以用最自然的对话方式让大模型帮助我们处理各种任务、解决问题、学习新知识,甚至在需要时提供安慰。它表现得像是一个无所不知、无所不能的朋友。每当你需要它扮演不同角色时,只需新建一个对话窗口,它便能化身为全新的伙伴。在它出现之前,人工智能的技术领域中无论是机器学习模型还是深度学习模型,它们都需要特定的数据先进行训练才能去执行具体任务,比如机器学习中的分类任务或深度学习的实体识别等。而大模型以其接近人类的交互特性,跨越了这些界限,用独立的个体直接去解决各种类型的问题,并且还表现得很好,直接把人工智能的热度推到了一个新的高度。

也正是这样的一种技术上的跨越,业内人会把2023年称为大模型的元年,因为它标志着人工智能迈上了一个新的台阶,而且,属于大模型的时代也才刚刚开始。所以我们作为技术人,肯定不是仅仅做一个“吃瓜群众”,看热闹的同时,更多的精力都在积极跟进大模型的发展,深入理解并掌握其背后的技术演进,以此来不断更新自身的技术视野。当然,我们要研究的并不是表面的应用`ChatGPT`,而是其背后的强力基座模型-`GPT`。

1. 大模型应用的快速迭代

比较有意思的是,如果有在2023年起就开始使用`ChatGPT`类应用的非技术岗位的小伙伴,大概率都会有这样一些想法:大模型技术一年半以来的技术发展并未带来显著的产品变革,无非是界面美观了一些,功能增加了一些,例如现在支持上传图片、文件和构建插件等。但通过表象应用去看本质,会发现大模型技术的迭代速度是远远快于其他领域的。其快速发展的有两个核心方向:

1. 大模型自身的能力在不断变强

2. 大模型的对话效果在大幅提升

大模型有两个关键概念:原生能力和涌现能力。

所谓原生能力,指的是大模型基于特定的神经网络架构,在训练过程中通过不断摄入数据来学习,最终具备解答特定领域问题的能力。这种能力就像是印在大模型“大脑”中的知识,是其能够独立解答问题的基础。就如同我们在大学学习三年后能够解决高等数学问题一样,这种能力是通过学习得来的,我们称之为原生能力。大模型的这种能力的提升在于:随着能获取到的数据量增加,开发者可以基于先前性能表现为其构建更优质的学习数据,结合学习方法的不断迭代优化(技术上称之为预训练技术或微调),大模型的原生能力就可以持续进化。这种进步的直观表现是模型的理解能力和回答质量的提升。

其次,我们还会重点关注大模型的涌现能力。这一能力指的是,尽管大模型可能没有直接学习过某些信息,但在与它对话时提供相关信息后,它能够类比和推理出解决方案。这类似于我们在准备高考时做过的“五年高考三年模拟”的题目,尽管高考题目不会与模拟题完全相同,但我们仍可以利用相同的思维模式解决考试试题。大模型的这部分能力提升主要体现在:我们通过给它构造各种函数调用、处理复杂问题的过程示例(Agent能力)等,在预训练或者微调阶段帮助它学习并强化这种能力。这样,大模型就能在其应用的第二个方向上——即实际问题解决中发挥更加重要的作用。

Stage 1: 提示工程

虽然大语言模型非常强大,但要有效使用它们并非易事。在开发者急于探索如何像处理传统算法模型那样通过微调快速迭代更新大模型的内部知识时,一篇极具启发性的论文 [GPT-3 Language Models are Few-Shot Learners](https://arxiv.org/pdf/2005.14165) 提出了 `In-Context Learning` 的概念。该方法通过向模型提供少量标注的“输入-输出对”示例,在不需要大规模微调的情况下即可显著改善大模型的输出质量。这一发现开启了使用大模型的新方式。

当提出问题后,大模型能够以自然语言返回响应,这是生成式人工智能的一大优点。有些任务确实可以通过这种提示工程的方式引导大模型在对话过程中生成正确的回复,但这个过程最大的问题就是需要人工介入,正如上面的例子中涉及到的北京的天气信息:

```json
{
  "location": {
    "city": "Beijing",
    "country": "CN",
    "timezone": "Asia/Shanghai",
    "coordinates": {
      "latitude": 39.9042,
      "longitude": 116.4074
    }
  },
  "current": {
    "temperature": {
      "value": 34,
      "unit": "C"
    },
    "humidity": 55,
    "pressure": {
      "value": 1012,
      "u "024-08-28T05:45:00+08:00",
    "sunset": "2024-08-28T19:18:00+08:00"
  }
}

```

对于试图将大模型的响应与其他应用程序连接起来的开发人员来说,这就是一场噩梦。开发人员通常使用正则表达式 (Regex) 或提示工程将输出转换为所需的格式,然后才能将其传递到另一个应用程序,也就是说,这个过程中如果不需要人工介入,还想让它自动拿到这些信息,怎么做?

对这种JSON数据应该非常熟悉,我们可以调用某个天气平台的API,比如 [OpenWeather](https://openweathermap.org/),输入一个城市的关键词, 就能得到该城市当前的天气信息数据,也就是如上所示的JSON形式,那么这样的信息,如何让大模型自动解析,就进入到了我们探索大模型应用的第二个阶段 - 函数调用。

Stage 2:函数调用

2023 年 7 月,OpenAI 为其 GPT 模型引入了函数调用功能。大模型发展到现在,所有热门的大模型均已不同的形式让自己具备函数调用能力。通过函数调用,我们可以提供一个用户定义的 JSON 字符串,其中包含希望从大模型获取的响应结构,以及想要向大模型提出的问题。

这里指的可以调用的函数,我们通常称之为 工具 ,在这个阶段,我们要做的是描述该工具是用来做什么的,然后让大模型智能地选择输出包含调用这些函数的参数的 JSON 对象。简而言之,它允许:

- 自主决策:大模型可以智能地选择工具来回答问题。

- 可靠的解析:响应采用 JSON 格式,而不是更典型的类似对话的响应。

乍一看似乎没什么,但这就是大模型能够连接到外部系统的原因,比如通过具有结构化输入的API,本地的数据库,自己编写的Python代码函数等等。有了这个功能,大模型在应用方面就开启了无限的可能性。比如:

当大模型被赋予函数调用的能力时,它会在每次回答问题之前先检查可以调用哪些工具,并评估用户的问题是否需要调用这些工具。如果需要,它便会调用相应的工具,并根据工具返回的结果来构筑答案。这整个过程都是大模型根据其自主判断的。所以在提升这一,阶段不仅极大地扩展了大模型的应用范围,还在一定程度上解决了知识库更新不及时、无法获取实时信息及其带来的优势。

但是,在函数调用技术阶段趋于成熟的同时,我们仍然发现了另一个非常大的问题:大模型幻觉

大模型直到现在依然普遍存在一个问题:当面对自己不了解的问题时,它们有时会产生不准确甚至荒谬的回答,这就是所谓的**大模型幻觉问题**。以上图中的例子为例,当大模型被询问关于公司制度的问题时,在没有任何技术手段介入的情况下,理想的回答应该是“我不知道”或“请提供一下你所入职公司的具体制度”等回答,而我们看到的却是大模型错误地从一个HR的角度进行了回复,这就会给用户带来混淆和误导。

在Stage 1:提示工程`中我们提到,大模型可以基于`in-context learning`的提示思想,利用提供的背景信息来回答特定问题,直接引发了第一轮大模型应用落地的热潮,主要集中在**本地知识库问答领域**。因为无论是个人还是企业,都希望大模型能够根据其私有数据——如个人学习资料或公司规章制度等让大模型准确高效地回答问题,充当智能客服、智能助理这样的角色。然而,一个显著的挑战是数据量可能极大,从单个文件到数千G的文件系统不等,而大模型在对话处理上存在输入长度限制,无法将所有数据作为背景信息直接处理。

因此,面对本地知识库问答的挑战,并考虑到大模型的幻觉问题和长度限制问题,出现的解决方案就是:RAG(Retrieval-Augmented Generation),以此进入到了大模型应用的第三个阶段。

Stage 3. Retrieval-Augmented Generation

通过人们不断地对大模型领域的探索,非常多的实验论文能够证明,当为大模型提供一定的上下文信息后,其输出会变得更稳定。那么,将知识库中的信息或掌握的信息先输送给大模型,再由大模型服务用户,就是大家普遍达成共识的一个结论和方法。传统的对话系统、搜索引擎等核心依赖于检索技术,如果将这一检索过程融入大模型应用的构建中,既可以充分利用大模型在内容生成上的能力,也能通过引入的上下文信息显著约束大模型的输出范围和结果,同时还实现了将私有数据融入大模型中的目的,达到了双赢的效果。

所以我们才看到RAG的实现是包括两个阶段的:检索阶段和生成阶段。在检索阶段,从知识库中找出与问题最相关的知识,为后续的答案生成提供素材。在生成阶段,RAG会将检索到的知识内容作为输入,与问题一起输入到语言模型中进行生成。这样,生成的答案不仅考虑了问题的语义信息,还考虑了相关私有数据的内容。

RAG技术解决的两个关键的问题是:

1. 如果用户提出的问题,其对应的答案出现在一篇文章中,去知识库中找到一篇与用户输入相关的文章是很容易的,但是我们将检索到的这整篇文章直接放入`Prompt`中并不是最优的选择,因为其中一定会包含非常多无关的信息,而无效信息越多,对大模型后续的推理影响越大。

2. 任何一个大模型都存在最大输入的Token限制,一个流程中可能涉及多次检索,每次检索都会产生相应的上下文,无法容纳如此多的信息。

但事实上,如上面的流程图所示,大模型在整个RAG架构中占据的比例实际上非常小。我们主要依赖大模型结合背景信息进行推理的能力。在RAG的多个优化阶段中,检索策略的作用更为重要。此外,RAG的实际应用场景相对有限,无论是哪种形式的问答系统,都还未能达到我们所期望的通用人工智能(AGI)的水平。因此,**现阶段进入到了`AI Agent`的全面爆发,这项技术直接体现的是我们正在向期望的更复杂、更全面的技术方向发展。

那什么是通用人工智能?为什么AI Agent 能够做到通用人工智能呢?

2. AI Agent 应用爆发

人工智能技术领域迄今为止唯一开发成功的人工智能类型是狭义人工智能(Artificial Narrow Intelligence,ANI),也称弱人工智能。它指的是在执行特定任务或一组密切相关的任务的人工智能系统。 ANI 并不复制人类智能,而是在有限的参数和上下文范围内模拟人类行为。例如图像生成和识别、自然语言处理、计算机视觉等。自动驾驶汽车中的人工智能系统、推荐引擎、Siri、Google Assistant 和 Alexa 都是狭义人工智能的形式。狭义人工智能取得了重大突破很大程度上归功于机器学习和深度学习的进步,由自然语言处理 (NLP) 提供支持,使其能够理解和处理人类语言。例如,人工智能系统现在在医学中用于高精度诊断癌症和其他疾病。

而我们现在期望做到的通用人工智能(AGI),是指具有相当于或超越人类能力的人工智能。它涵盖跨不同领域学习、理解和应用知识的能力。AGI也被称为强人工智能。

所以能够感受到,我们现阶段做到的人工智能和通用人工智能之间存在根本区别。像`ChatGPT`这样的应用虽然掀起了新一轮的热潮,但本质上是它们也只是在做“预测”,通过大量数据的训练以达到生成准确响应的目的,但缺乏目标、身份或主动决策的概念。所以它们也只是复杂的文本生成器,没有目的或方向感。我们还没有完全做到AGI,因为现有的每个人工智能模型都只是模仿人类智能的某个方面。例如,大语言模型非常擅长理解和撰写文本,它们的能力常常超越人类在这些领域的表现。然而,当涉及到简单的算术任务时,LLMs就会经常出现问题。

那么让大模型能够自己解决更复杂的问题,现阶段提出的解决方案就是:AI Agent。

早在 2016 年,强化学习代理就被炒得沸沸扬扬,人们试图创建不同类型的强化学习代理来玩游戏,从而去评判这类代理的智能性。当时还没有人工智能代理的概念。 OpenAI 进行了一系列研究,包括探索强化学习 (RL) 在不同领域的应用,比如游戏和网页导航。其中,有一个名为“World of Bits”的项目,就是在训练人工智能代理在复杂的网络环境中执行任务,例如订购商品或服务。这个项目是对强化学习技术在现实世界任务中应用潜力的探索之一。论文:[World of Bits: An Open-Domain Platform for Web-Based Agents](https://proceedings.mlr.press/v70/shi17a/shi17a.pdf)

如上图所示,这张论文中展示的多个网页界面中,每个界面都关联着一个特定的查询问题,用于展示不同类型的在线任务或服务。具体包括:

1. 机票预订:从旧金山到纽约的航班预订。

2. 餐馆搜索:寻找旧金山最好的韩国餐馆。

3. 贷款计算器:计算$2000贷款两年期限的月付额。

4. 产品价格查询:查询印第安纳州的iPhone 7 Plus价格。

5. 单词搜索:使用字母“sycopthat”寻找9个字母的单词。

6. 食谱搜索:寻找不含鸡肉但包含或执行相关的操作。

这些示例显示了人工智能如何帮助处理各种在线活动,从搜索信息到处理具体的请求,如购物或查询。这种技术的目的是通过自动化过程来简化用户的日常任务,提高效率,可能通过智能代理或特定的应用程序可以实现。此类系统通常会集成到网站或应用程序中,使用户可以通过自然语言查询来互动,系统则返回相关的答案或执行相关的操作。看似简单,但这并不像我们现在思考的那么简单。它就像自动驾驶汽车一样,很容易想到,很容易创建概念验证,但很难使其真正可用。

OpenAI 持续不断的研究一直得不到比较好的结果,我们认为主要的原因就是缺少了直到现在才出现的:大模型。

早在2023年中旬,OpenAI 作为在大模型整个行业的技术领航者,很早就推出了 GPT Plugins 商店,就是在借助大模型的力量,重新启动相关研究,并希望打造一个类似APP Store的生态系统,让每个人都能以极低的门槛创建自己的智能应用,无论是供个人使用还是为他人服务。然而,直到现在,GPT Plugins并未实现其初衷,使用率也未达预期。主要原因在于,如果把强化学习的一套方案移植到大模型,这种做法似乎并未产生立竿见影的效果。这直接导致了GPT Plugins虽然能开发智能应用,但这些应用还远未能满足我们对复杂度和功能性的高要求,也未能达到我们对人工智能应用预期的高度。同时,我会认为2023年的大模型,自身能力不足也是造成这种现状的根本原因。

人类具有非凡的能力,能够不断吸收信息、做出决定、采取行动、观察变化,然后做出下一个决定。我们的整个生活是一个永无休止的观察、思想和行动的链条。通过将复杂的问题分解为更小的、可管理的部分,并不断地借鉴前几代人的知识,我们人类已经取得了长足的进步。**通用人工智能的最终形态就是:我们能够转移这个概念到大模型上,使其不断做出新的决策,从而逐步接近更复杂问题的解决方案。

至此,也就衍生出了 AI Agent (人工智能代理)的基本概念:一个感知环境、处理信息并采取行动以实现特定目标的软件程序或系统。现阶段我们会把单一的大模型作为AI Agent 的核心,而不是全部。它应该是一个超级好的大语言模型,能够解释问题、观察环境并据此做出决策。如果在AI Agent 构建流程中添加一些将语音转换为文本的模型、解释图像内容的模型,就可以构建自己的 `Jarvis` 所需的一切。(复仇者联盟电影中钢铁侠的私人虚拟助理)

用户通过语音向AGI提问,AGI首先解析并理解这个问题,然后搜索相关的存储文档或在线信息。基于搜索到的信息,AGI生成一个适当的回答,例如解释它无法找到与用户提问的问题相关的具体信息。最后,AGI将生成的文本回答转化为语音输出,以向用户提供回应。整个过程显示了AGI如何利用现有资源来理解和回应复杂的人类询问。从这个过程中,就可以很好的理解,AGI的实现过程中为什么要关注 AI Agents ,而不是单一的大模型。

很好解释,通过提示工程, 大模型可以生成更类似于人类的响应。但当我们应用代理的概念时,我们使用大模型不仅仅是回答问题,而是作为大脑处理它所看到的观察结果并决定下一步该做什么。人类处理问题就是这样:如果有一项任务需要解决,往往是去寻找能够帮助我们尽可能轻松地解决该任务的方法和工具。如果我们不给大模型配备足够的工具,即便它知道要做什么,但不具备调用工具的能力一切将会变为空谈。

从根本上讲,与严格遵守设定脚本或任务序列的传统自动化系统不同,人工智能代理具有感知、解释、学习和适应的能力。将它们视为数字助理,不仅执行任务,还不断评估周围环境,从不同的交互中学习,并做出决策以实现特定目标。它们可以采取多种形式,从执行单一任务的简单软件到管理复杂流程的复杂系统。人工智能代理在不可预测的环境中表现出色,其适应性和学习能力可以得到充分利用。从浏览互联网、与应用程序交互、处理大量数据到参与交易,这些任务都可以委托给人工智能代理。

Logo

AtomGit AI 社区提供模型库、数据集、Agent、Token等资源

更多推荐