Browse Source

Merge pull request #1 from Tsumugii24/main

update chapter1,2,3
1.Bold text problem
2.Quotation symbol problem
3.Commas in formulas
jjyaoao 9 months ago
parent
commit
cfaee999b2

+ 13 - 13
docs/chapter1/第一章 初识智能体.md

@@ -10,7 +10,7 @@
 
 这个定义包含了智能体存在的四个基本要素。环境是智能体所处的外部世界。对于自动驾驶汽车,环境是动态变化的道路交通;对于一个交易算法,环境则是瞬息万变的金融市场。智能体并非与环境隔离,它通过其传感器持续地感知环境状态。摄像头、麦克风、雷达或各类**应用程序编程接口(Application Programming Interface, API)**返回的数据流,都是其感知能力的延伸。
 
-获取信息后,智能体需要采取行动来对环境施加影响,它通过执行器来改变环境的状态。执行器可以是物理设备(如机械臂、方向盘)或虚拟工具(如执行一段代码、调用一个服务)。
+获取信息后,智能体需要采取行动来对环境施加影响,它通过执行器来改变环境的状态。执行器可以是物理设备(如机械臂、方向盘)或虚拟工具(如执行一段代码、调用一个服务)。
 
 然而,真正赋予智能体“智能”的,是其**自主性(Autonomy)**。智能体并非只是被动响应外部刺激或严格执行预设指令的程序,它能够基于其感知和内部状态进行独立决策,以达成其设计目标。这种从感知到行动的闭环,构成了所有智能体行为的基础,如图1.1所示。
 
@@ -48,7 +48,7 @@
 
 ### 1.1.2 大语言模型驱动的新范式
 
-以**GPT(Generative Pre-trained Transformer)**为代表的大语言模型的出现,正在显著改变智能体的构建方法与能力边界。由大语言模型驱动的智能体,其核心决策机制与传统智能体存在本质区别,从而赋予了其一系列全新的特性。
+以**GPT(Generative Pre-trained Transformer)**为代表的大语言模型的出现,正在显著改变智能体的构建方法与能力边界。由大语言模型驱动的LLM智能体,其核心决策机制与传统智能体存在本质区别,从而赋予了其一系列全新的特性。
 
 这种转变,可以从两者在核心引擎、知识来源、交互方式等多个维度的对比中清晰地看出,如表1.1所示。简而言之,传统智能体的能力源于工程师的显式编程与知识构建,其行为模式是确定且有边界的;而LLM智能体则通过在海量数据上的预训练,获得了隐式的世界模型与强大的涌现能力,使其能够以更灵活、更通用的方式应对复杂任务。
 
@@ -73,7 +73,7 @@
 
 (1)**基于内部决策架构的分类**
 
-第一种分类维度是依据智能体内部决策架构的复杂程度,这个视角在《Artificial Intelligence: A Modern Approach》中系统性地提出[1]。正如 1.1.1 节所述,传统智能体的演进路径本身就构成了最经典的分类阶梯,它涵盖了从简单的**反应式**智能体,到引入内部模型的**模型式**智能体,再到更具前瞻性的**基于目标**和**基于效用**的智能体。此外,**学习能力**则是一种可赋予上述所有类型的元能力,使其能通过经验自我改进。
+第一种分类维度是依据智能体内部决策架构的复杂程度,这个视角在《Artificial Intelligence: A Modern Approach》中系统性地提出^[1]^。正如 1.1.1 节所述,传统智能体的演进路径本身就构成了最经典的分类阶梯,它涵盖了从简单的**反应式**智能体,到引入内部模型的**模型式**智能体,再到更具前瞻性的**基于目标**和**基于效用**的智能体。此外,**学习能力**则是一种可赋予上述所有类型的元能力,使其能通过经验自我改进。
 
 (2)**基于时间与反应性的分类**
 
@@ -127,7 +127,7 @@
 
 - **神经符号主义AI(Neuro-Symbolic AI)**
 
-长久以来,符号主义和亚符号主义这两大阵营如同两条平行线,各自发展。为克服上述两种范式的局限,一种“大和解”的思想开始兴起,这就是神经符号主义AI,也称神经符号混合主义。它的目标,是融合两大范式的优点,创造出一个既能像神经网络一样从数据中学习,又能像符号系统一样进行逻辑推理的混合智能体。它试图弥合感知与认知、直觉与理性之间的鸿沟。诺贝尔经济学奖得主丹尼尔·卡尼曼(Daniel Kahneman)在其著作《思考,快与慢》(Thinking, Fast and Slow)中提出的双系统理论,为我们理解神经符号主义提供了一个绝佳的类比[2],如图1.4所示:
+长久以来,符号主义和亚符号主义这两大阵营如同两条平行线,各自发展。为克服上述两种范式的局限,一种“大和解”的思想开始兴起,这就是神经符号主义AI,也称神经符号混合主义。它的目标,是融合两大范式的优点,创造出一个既能像神经网络一样从数据中学习,又能像符号系统一样进行逻辑推理的混合智能体。它试图弥合感知与认知、直觉与理性之间的鸿沟。诺贝尔经济学奖得主丹尼尔·卡尼曼(Daniel Kahneman)在其著作《思考,快与慢》(Thinking, Fast and Slow)中提出的双系统理论,为我们理解神经符号主义提供了一个绝佳的类比^[2]^,如图1.4所示:
 
 - **系统1**是快速、凭直觉、并行的思维模式,类似于亚符号主义AI强大的模式识别能力。
 - **系统2**是缓慢、有条理、基于逻辑的审慎思维,恰如符号主义AI的推理过程。
@@ -157,7 +157,7 @@
 
 ### 1.2.1 任务环境的特性
 
-要理解智能体的运作,我们必须先理解它所处的**任务环境**。在人工智能领域,通常使用 **PEAS 模型**来精确描述一个任务环境,即分析其**性能度量 (Performance)、环境 (Environment)、执行器 (Actuators) 和 传感器 (Sensors)**。以一个旅行规划智能体为例,下表1.2展示了如何运用PEAS模型对其任务环境进行规约。
+要理解智能体的运作,我们必须先理解它所处的**任务环境**。在人工智能领域,通常使用**PEAS模型**来精确描述一个任务环境,即分析其**性能度量 (Performance)、环境 (Environment)、执行器 (Actuators) 和 传感器 (Sensors)**。以一个旅行规划智能体为例,下表1.2展示了如何运用PEAS模型对其任务环境进行规约。
 
 <div align="center">
   <p>表 1.2 旅行规划智能体的PEAS描述</p>
@@ -170,7 +170,7 @@
 
 其次,行动的结果也并非总是确定的。根据结果的可预测性,环境可分为**确定性**和**随机性**。当智能体执行本地代码进行数学计算时,结果是确定的;但当它调用一个实时变化的搜索引擎API时,结果便带有随机性,这就要求智能体必须具备容错和处理不确定性的能力。
 
-此外,环境中还可能存在其他行动者,从而形成**多**智能体** **(Multi-agent)** 环境。在这种情况下,智能体之间需要协作或竞争,一个智能体的行动会成为另一个智能体环境中的变量,这对智能体的沟通和协调能力提出了更高要求。
+此外,环境中还可能存在其他行动者,从而形成**多智能体(Multi-agent)** 环境。在这种情况下,智能体之间需要协作或竞争,一个智能体的行动会成为另一个智能体环境中的变量,这对智能体的沟通和协调能力提出了更高要求。
 
 最后,几乎所有任务都发生在**序贯**且**动态**的环境中。“序贯”意味着当前动作会影响未来;而“动态”则意味着环境自身可能在智能体决策时发生变化。这就要求智能体的“感知-思考-行动-观察”循环必须能够快速、灵活地适应持续变化的世界。
 
@@ -201,7 +201,7 @@ Observation: 北京当前天气为晴,气温25摄氏度,微风。
 
 **标准化接口组件定义**
 
-Perception-Thought-Action-Observation循环是通过一套标准化的接口组件来实现的。为确保系统的可扩展性与可维护性,这些接口遵循单一职责原则,分别对应循环中的一个关键环节。下面我们将对这四个核心组件进行定义。
+`Perception-Thought-Action-Observation` 循环是通过一套标准化的接口组件来实现的。为确保系统的可扩展性与可维护性,这些接口遵循单一职责原则,分别对应循环中的一个关键环节。下面我们将对这四个核心组件进行定义。
 
 **接口1:感知器**
 
@@ -312,7 +312,7 @@ class AgentInterface:
         pass
 ```
 
-这些接口定义为后续的具体实现提供了规范。每个接口都有明确的输入输出格式,确保了组件间的解耦和系统的可扩展性。在接下来的1.2.3节中,我们将逐步实现这些接口(分别为PerceptionImpl、ThinkingImpl、ExecutionImpl、ObservationImpl),并最终组装成一个完整的智能体的基本示例。
+这些接口定义为后续的具体实现提供了规范。每个接口都有明确的输入输出格式,确保了组件间的解耦和系统的可扩展性。在接下来的1.2.3节中,我们将逐步实现这些接口(分别为`PerceptionImpl``ThinkingImpl``ExecutionImpl``ObservationImpl`),并最终组装成一个完整的智能体的基本示例。
 
 ### 1.2.3 智能体的行动循环
 
@@ -641,7 +641,7 @@ class BaseLLM:
         raise NotImplementedError("子类必须实现这个方法")
 ```
 
-接下来,我们继承 `BaseLLM` 接口,创建一个具体的、可以和任何兼容OpenAI接口的服务进行通信的客户端。
+接下来,我们继承 `BaseLLM` 接口,创建一个具体的、可以和任何兼容 `OpenAI` 接口的服务进行通信的客户端。
 
 这个类主要负责以下三项任务:
 
@@ -836,8 +836,8 @@ if __name__ == "__main__":
 目前,市场上涌现了多款优秀的AI编程辅助工具,它们虽然均能提升开发效率,但在实现路径和功能侧重上各有千秋:
 
 - **GitHubCopilot**: 作为该领域最具影响力的产品之一,Copilot 由 GitHub 与 OpenAI 联合开发。它深度集成于 Visual Studio Code等主流编辑器中,以其强大的代码自动补全能力而闻名。开发者在编写代码时,Copilot 能实时提供整行甚至整个函数块的建议。近年来,它也通过 Copilot Chat 扩展了对话式编程的能力,允许开发者在编辑器内通过聊天解决编程问题。
-- **Tabnine:** Tabnine 是另一款广受欢迎的代码补全工具。它的一个显著特点是支持在本地环境中运行模型,这对于注重代码隐私和安全的企业来说具有很强的吸引力。Tabnine 同样能够学习特定代码库的模式和风格,从而提供更加个性化和贴合项目规范的代码建议
-- **Codeium**: Codeium 作为一个强劲的竞争者而备受关注,它以惊人的速度和个人免费版迅速获得了大量用户。Codeium 在代码补全速度上表现优异,并且支持广泛的编辑器。除了代码补全,它也提供了对话式的聊天功能,使其成为 GitHub Copilot 的替代品,尤其受到独立开发者和对成本敏感的用户的青睐
+- **Claude Code**: Claude Code 是由 Anthropic 开发的 AI 编程助手,旨在通过自然语言指令帮助开发者在终端中高效地完成编码任务。它能够理解完整的代码库结构,执行代码编辑、测试和调试等操作,支持从描述功能到代码实现的全流程开发。Claude Code 还提供了无交互(headless)模式,适用于 CI、pre-commit hooks、构建脚本和其他自动化场景,为开发者提供了强大的命令行编程体验
+- **Trae**: 作为新兴的 AI 编程工具,Trae 专注于为开发者提供智能化的代码生成和优化服务。它通过深度学习技术分析代码模式,能够为开发者提供精准的代码建议和自动化重构方案。Trae 的特色在于其轻量级的设计和快速响应能力,特别适合需要频繁迭代和快速原型开发的场景
 - **Cursor**: 与上述主要作为插件或集成功能存在的工具不同,Cursor 则选择了一条更具整合性的路径,它本身就是一个AI原生的代码编辑器。它并非在现有编辑器上增加AI功能,而是在设计之初就将AI交互作为核心。除了具备顶级的代码生成和聊天能力外,它更强调让AI理解整个代码库的上下文,从而实现更深层次的问答、重构和调试。
 
 当然还有许多优秀的工具没有例举,为了更具体地展示此类工具如何与开发者进行日常协同,我们将选择 Cursor 作为使用案例。因为它编辑器即智能体的设计理念,能完整地体现AI作为开发者工具的交互模式。下面,我们将通过几个常见的开发场景,展示如何与Cursor这样的工具型智能体进行协作。
@@ -1131,7 +1131,7 @@ Next Action: Generate task instruction for `FrontendDeveloper`.
 
 该规划将高层级目标转化为了结构化的子任务和明确的角色分工。
 
-1. 通信机制
+2. 通信机制
 
 规划完成后,各智能体需通过结构化的通信协议交换信息。`项目经理`依据其规划,生成一条 JSON 格式的消息,用于任务分派:
 
@@ -1150,7 +1150,7 @@ Next Action: Generate task instruction for `FrontendDeveloper`.
 
 JSON作为一种机器可读格式,确保了指令的无歧义性。通信模式可分为直接通信(如API调用)和基于共享内存的间接通信,后者耦合度更低,扩展性更好。
 
-1. 协作策略
+3. 协作策略
 
 协作策略定义了智能体间的工作流与依赖关系。在集中式协调中,存在一个编排者节点,负责任务分发与状态监控。其交互流程如下所示:
 

+ 13 - 13
docs/chapter2/第二章 智能体发展史.md

@@ -10,7 +10,7 @@
 
 ### 2.1.1 物理符号系统假说
 
-符号主义时代的理论根据,是1976年由**艾伦·纽厄尔(Allen Newell)**和**赫伯特·西蒙(Herbert A. Simon)**共同提出的**物理符号系统假说(PhysicalSymbol SystemHypothesis, PSSH)**[1]。这两位图灵奖得主通过这一假说,为在计算机上实现通用人工智能提供了理论指导和判定标准。
+符号主义时代的理论根据,是1976年由**艾伦·纽厄尔(Allen Newell)**和**赫伯特·西蒙(Herbert A. Simon)**共同提出的**物理符号系统假说(PhysicalSymbol SystemHypothesis, PSSH)**^[1]^。这两位图灵奖得主通过这一假说,为在计算机上实现通用人工智能提供了理论指导和判定标准。
 
 该假说包含两个核心论断:
 
@@ -53,7 +53,7 @@
 
 **应用案例与分析:MYCIN系统**
 
-MYCIN是历史上最著名、最具影响力的专家系统之一,由斯坦福大学于20世纪70年代开发[2]。它被设计用于辅助医生诊断细菌性血液感染并推荐合适的抗生素治疗方案。
+MYCIN是历史上最著名、最具影响力的专家系统之一,由斯坦福大学于20世纪70年代开发^[2]^。它被设计用于辅助医生诊断细菌性血液感染并推荐合适的抗生素治疗方案。
 
 - **工作原理**:MYCIN通过与医生进行问答式交互来收集病人的症状、病史和化验结果。其知识库包含了约600条由医学专家提供的“IF-THEN”规则。推理机主要采用反向链的方式工作:从“确定致病菌”这一最高目标出发,反向推导需要哪些证据和条件,然后向医生提问以获取这些信息。其简化的工作流程如图2.3所示。
 
@@ -67,7 +67,7 @@ MYCIN是历史上最著名、最具影响力的专家系统之一,由斯坦福
 
 ### 2.1.3 SHRDLU
 
-如果说专家系统展示了符号AI在专业领域的“深度”,那么由**特里·威诺格拉德(Terry Winograd)**于1968-1970年开发的SHRDLU项目[3],则在“广度”上实现了革命性的突破。SHRDLU旨在构建一个能在“积木世界”这一微观环境中,通过自然语言与人类流畅交互的综合性智能体。“积木世界”是一个模拟的三维虚拟空间,其中包含不同形状、颜色和大小的积木,以及一个可以抓取和移动它们的虚拟机械臂。用户通过自然语言向SHRDLU下达指令或提问,SHRDLU则在虚拟世界中执行动作或给出文字回答。
+如果说专家系统展示了符号AI在专业领域的“深度”,那么由**特里·威诺格拉德(Terry Winograd)**于1968-1970年开发的SHRDLU项目^[3]^,则在“广度”上实现了革命性的突破。SHRDLU旨在构建一个能在“积木世界”这一微观环境中,通过自然语言与人类流畅交互的综合性智能体。“积木世界”是一个模拟的三维虚拟空间,其中包含不同形状、颜色和大小的积木,以及一个可以抓取和移动它们的虚拟机械臂。用户通过自然语言向SHRDLU下达指令或提问,SHRDLU则在虚拟世界中执行动作或给出文字回答。
 
 <div align="center">
   <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/2-figures/1757246501849-3.png" alt="图片描述" width="90%"/>
@@ -100,13 +100,13 @@ SHRDLU的历史地位与影响主要体现在三个方面:
 符号主义智能体的“智能”完全依赖于其知识库的质量和完备性。然而,如何构建一个能够支撑真实世界交互的知识库,被证明是一项极其艰巨的任务,主要体现在两个方面:
 
 - **知识获取瓶颈(Knowledge Acquisition Bottleneck)**:专家系统的知识需要由人类专家和知识工程师通过繁琐的访谈、提炼和编码过程来构建。这个过程成本高昂、耗时漫长,且难以规模化。更重要的是,人类专家的许多知识是内隐的、直觉性的,很难被清晰地表达为“IF-THEN”规则。试图将整个世界的知识都进行手工符号化,被认为是一项几乎不可能完成的任务。
-- **常识问题(Common-sense Problem)**:人类行为依赖于庞大的常识背景(例如,“水是湿的”、“绳子可以拉不能推”),但符号系统除非被明确编码,否则对此一无所知。为广阔、模糊的常识建立完备的知识库至今仍是重大挑战,Cyc项目[4]历经数十年努力,其成果和应用仍然非常有限。
+- **常识问题(Common-sense Problem)**:人类行为依赖于庞大的常识背景(例如,“水是湿的”、“绳子可以拉不能推”),但符号系统除非被明确编码,否则对此一无所知。为广阔、模糊的常识建立完备的知识库至今仍是重大挑战,Cyc项目^[4]^历经数十年努力,其成果和应用仍然非常有限。
 
 **(2)框架问题与系统脆弱性**
 
 除了知识层面的挑战,符号主义在处理动态变化的世界时也遇到了逻辑上的困境。
 
-- **框架问题(Frame Problem)**:在一个动态世界中,智能体执行一个动作后,如何高效判断哪些事物未发生改变是一个逻辑难题[5]。为每个动作显式地声明所有不变的状态,在计算上是不可行的,而人类却能毫不费力地忽略不相关的变化。
+- **框架问题(Frame Problem)**:在一个动态世界中,智能体执行一个动作后,如何高效判断哪些事物未发生改变是一个逻辑难题^[5]^。为每个动作显式地声明所有不变的状态,在计算上是不可行的,而人类却能毫不费力地忽略不相关的变化。
 - **系统脆弱性(Brittleness)**:符号系统完全依赖预设规则,导致其行为非常“脆弱”。一旦遇到规则之外的任何微小变化或新情况,系统便可能完全失灵,无法像人类一样灵活变通。SHRDLU的成功,也正是因为它运行在一个规则完备的封闭世界里,而真实世界充满了例外。
 
 ## 2.2 构建基于规则的聊天机器人
@@ -115,7 +115,7 @@ SHRDLU的历史地位与影响主要体现在三个方面:
 
 ### 2.2.1 ELIZA 的设计思想
 
-ELIZA是由麻省理工学院的计算机科学家**约瑟夫·魏泽鲍姆(Joseph Weizenbaum)**于1966年发布的一个计算机程序[6],是早期自然语言处理领域的著名尝试之一。ELIZA并非一个单一的程序,而是一个可以执行不同“脚本”的框架。其中,最广为人知也最成功的脚本是“DOCTOR”,它模仿了一位罗杰斯学派的非指导性心理治疗师。
+ELIZA是由麻省理工学院的计算机科学家**约瑟夫·魏泽鲍姆(Joseph Weizenbaum)**于1966年发布的一个计算机程序^[6]^,是早期自然语言处理领域的著名尝试之一。ELIZA并非一个单一的程序,而是一个可以执行不同“脚本”的框架。其中,最广为人知也最成功的脚本是“DOCTOR”,它模仿了一位罗杰斯学派的非指导性心理治疗师。
 
 ELIZA的工作方式极其巧妙:它从不正面回答问题或提供信息,而是通过识别用户输入中的关键词,然后应用一套预设的转换规则,将用户的陈述转化为一个开放式的提问。例如,当用户说“我为我的男朋友感到难过”时,ELIZA可能会识别出关键词“我为……感到难过”,并应用规则生成回应:“你为什么会为你的男朋友感到难过?”
 
@@ -280,7 +280,7 @@ ELIZA的实践清晰地揭示了符号主义方法的核心矛盾:系统看似
 
 ## 2.3 马文·明斯基的心智社会
 
-符号主义的探索和ELIZA的实践,共同指向了一个问题:通过预设规则构建的、单一的、集中的推理引擎,似乎难以通向真正的智能。无论规则库多么庞大,系统在面对真实世界的模糊性、复杂性和无穷变化时,总是显得僵化而脆弱。这一困境促使一些顶尖的思考者开始反思人工智能最底层的设计哲学。其中,**马文·明斯基(Marvin Minsky)**没有继续尝试为单一推理核心添加更多规则,而是在他的**《心智社会》(The Society of Mind)**[7]一书中提出了一个革命性的问题:"What magical trick makes us intelligent? The trick is that there is no trick. The power of intelligence stems from our vast diversity, not from any single, perfect principle."
+符号主义的探索和ELIZA的实践,共同指向了一个问题:通过预设规则构建的、单一的、集中的推理引擎,似乎难以通向真正的智能。无论规则库多么庞大,系统在面对真实世界的模糊性、复杂性和无穷变化时,总是显得僵化而脆弱。这一困境促使一些顶尖的思考者开始反思人工智能最底层的设计哲学。其中,**马文·明斯基(Marvin Minsky)**没有继续尝试为单一推理核心添加更多规则,而是在他的**《心智社会》(The Society of Mind)**^[7]^ 一书中提出了一个革命性的问题:"What magical trick makes us intelligent? The trick is that there is no trick. The power of intelligence stems from our vast diversity, not from any single, perfect principle."
 
 ### 2.3.1 对单一整体智能模型的反思
 
@@ -342,7 +342,7 @@ ELIZA的实践清晰地揭示了符号主义方法的核心矛盾:系统看似
 
 ### 2.4.1 从符号到联结
 
-作为对符号主义局限性的直接回应,**联结主义(Connectionism)**在20世纪80年代重新兴起。与符号主义自上而下、依赖明确逻辑规则的设计哲学不同,联结主义是一种自下而上的方法,其灵感来源于对生物大脑神经网络结构的模仿[8]。它的核心思想可以概括为以下几点:
+作为对符号主义局限性的直接回应,**联结主义(Connectionism)**在20世纪80年代重新兴起。与符号主义自上而下、依赖明确逻辑规则的设计哲学不同,联结主义是一种自下而上的方法,其灵感来源于对生物大脑神经网络结构的模仿^[8]^。它的核心思想可以概括为以下几点:
 
 1. **知识的分布式表示**:知识并非以明确的符号或规则形式存储在某个知识库中,而是以连接权重的形式,分布式地存储在大量简单的处理单元(即人工神经元)的连接之间。整个网络的连接模式本身就构成了知识。
 2. **简单的处理单元**:每个神经元只执行非常简单的计算,如接收来自其他神经元的加权输入,通过一个激活函数进行处理,然后将结果输出给下一个神经元。
@@ -361,7 +361,7 @@ ELIZA的实践清晰地揭示了符号主义方法的核心矛盾:系统看似
 
 联结主义主要解决了感知问题(例如,“这张图片里有什么?”),但智能体更核心的任务是进行决策(例如,“在这种情况下,我应该做什么?”)。**强化学习(Reinforcement Learning, RL)**正是专注于解决序贯决策问题的学习范式。它并非直接从标注好的静态数据集中学习,而是通过智能体与环境的直接交互,在“试错”中学习如何最大化其长期收益。
 
-以AlphaGo为例,其核心的自我对弈学习过程便是强化学习的经典体现[9]。在这个过程中,AlphaGo(智能体)通过观察棋盘的当前布局(环境状态),决定下一步棋的落子位置(行动)。一局棋结束后,根据胜负结果,它会收到一个明确的信号:赢了就是正向奖励,输了则是负向奖励。通过数百万次这样的自我对弈,AlphaGo不断调整其内部策略,逐渐学会了在何种棋局下选择何种行动,最有可能导向最终的胜利。这个过程完全是自主的,不依赖于人类棋谱的直接指导。
+以AlphaGo为例,其核心的自我对弈学习过程便是强化学习的经典体现^[9]^。在这个过程中,AlphaGo(智能体)通过观察棋盘的当前布局(环境状态),决定下一步棋的落子位置(行动)。一局棋结束后,根据胜负结果,它会收到一个明确的信号:赢了就是正向奖励,输了则是负向奖励。通过数百万次这样的自我对弈,AlphaGo不断调整其内部策略,逐渐学会了在何种棋局下选择何种行动,最有可能导向最终的胜利。这个过程完全是自主的,不依赖于人类棋谱的直接指导。
 
 这种通过与环境互动、根据反馈信号来优化自身行为的学习机制,就是强化学习的核心框架。下面我们将详细拆解其基本构成要素和工作模式。
 
@@ -428,9 +428,9 @@ ELIZA的实践清晰地揭示了符号主义方法的核心矛盾:系统看似
 
 如第一章所述,智能体与环境的交互可以被抽象为一个核心循环。LLM驱动的智能体通过一个由多个模块协同工作的、持续迭代的闭环流程来完成任务。该流程遵循图2.9所示的架构,具体步骤如下:
 
-1. **感知 (Perception)**:流程始于感知模块。该模块从**外部环境 (****Environment****)** 中接收输入,即**观察 (Observation)**。这些观察信息(如用户指令或环境状态变化)被处理后,传递给规划模块。
+1. **感知 (Perception)**:流程始于感知模块。该模块从**外部环境 (Environment)** 中接收输入,即**观察 (Observation)**。这些观察信息(如用户指令或环境状态变化)被处理后,传递给规划模块。
 2. **规划 (Planning)**:规划模块接收到观察信息后,对其进行分析和高级策略制定。此阶段包含**反思 (Reflection)** 和**自我批判 (Self-criticism)** 等关键机制,旨在将高层级目标分解为更具体的、结构化的行动计划。该计划随后被发送至系统的认知核心——大型语言模型。
-3. **核心处理 (****LLM** **Processing)**:作为中枢的**大型语言模型 (LLM)** 接收来自规划模块的指令。它会与**记忆模块 (Memory)** 进行交互,整合历史信息和上下文,进行深度推理,并最终决策出下一步的具体操作。这个操作通常表现为一个**工具调用 (Tool Call)**。
+3. **核心处理 (LLM Processing)**:作为中枢的**大型语言模型 (LLM)** 接收来自规划模块的指令。它会与**记忆模块 (Memory)** 进行交互,整合历史信息和上下文,进行深度推理,并最终决策出下一步的具体操作。这个操作通常表现为一个**工具调用 (Tool Call)**。
 4. **行动 (Action)**:LLM生成的工具调用指令被发送到**执行模块 (Execution Module)**。该模块解析指令,选择并使用**工具箱 (Tool Use)** 中相应的工具(如代码执行器、搜索引擎等)来执行任务。执行后,工具返回一个**工具结果 (Tool Result)** 给LLM,同时对环境产生一个实际的**行动 (Action)**。
 5. **反馈与更新 (Feedback & Update)**:LLM接收到返回的**工具结果**,评估该步骤的执行效果。基于此结果,LLM会对记忆模块进行**更新 (Memory Update)**,例如记录本次行动的成功、失败或关键产出。同时,环境因智能体的行动而发生改变,产生新的**观察 (Observation)**,该信息被感知模块捕获,从而启动下一轮循环。
 
@@ -444,7 +444,7 @@ ELIZA的实践清晰地揭示了符号主义方法的核心矛盾:系统看似
 
 1. **符号主义 (Symbolism)**:以**司马贺 (Herbert A. Simon)**、**明斯基 (Marvin Minsky)** 等先驱为代表,认为智能的核心在于对符号的操作与逻辑推理。这一思想催生了能够理解自然语言指令的SHRDLU、知识驱动的专家系统以及在国际象棋领域取得巨大成功的“深蓝”计算机。
 2. **联结主义 (Connectionism)**:其灵感源于对大脑神经网络的模拟。尽管早期发展受限,但在**杰弗里·辛顿 (Geoffrey Hinton)** 等研究者的推动下,反向传播算法为神经网络的复苏奠定了基础。最终,随着深度学习时代的到来,这一思想通过卷积神经网络、Transformer等模型成为当前的主流。
-3. **行为主义 (****Behaviorism****)**:强调智能体通过与环境的互动和试错来学习最优策略,其现代化身为强化学习 。从早期的TD-Gammon到与深度学习结合并击败人类顶尖棋手的AlphaGo,这一流派为智能体赋予了从经验中习得复杂决策行为的能力。
+3. **行为主义 (Behaviorism)**:强调智能体通过与环境的互动和试错来学习最优策略,其现代化身为强化学习 。从早期的TD-Gammon到与深度学习结合并击败人类顶尖棋手的AlphaGo,这一流派为智能体赋予了从经验中习得复杂决策行为的能力。
 
 进入21世纪20年代,这些思想流派以前所未有的方式深度融合。以GPT系列为代表的大语言模型,其本身是联结主义的产物,却成为了执行符号推理、进行工具调用和规划决策的核心“大脑”,形成了神经-符号结合的现代智能体架构。为了系统性地回顾这一发展脉络,下图2.10梳理了从20世纪50年代至今,人工智能体发展史上的关键理论、项目与事件,为读者提供一个清晰的全局概览,作为本章知识的沉淀。
 
@@ -460,7 +460,7 @@ ELIZA的实践清晰地揭示了符号主义方法的核心矛盾:系统看似
   <p>图 2.11 AI Agent 技术栈概览</p>
 </div>
 
-该技术栈图由Letta公司于2024年11月发布[10],它将AI智能体相关的工具、平台和服务进行了分层与分类,为我们理解当前的市场格局和技术选型提供了宝贵的参考。
+该技术栈图由Letta公司于2024年11月发布^[10]^,它将AI智能体相关的工具、平台和服务进行了分层与分类,为我们理解当前的市场格局和技术选型提供了宝贵的参考。
 
 ## 2.5 本章小结
 

+ 29 - 25
docs/chapter3/第三章 大模型基础.md

@@ -106,7 +106,7 @@ N-gram 模型虽然简单有效,但有两个致命缺陷:
 
 **(2)神经网络语言模型与词嵌入**
 
-N-gram 模型的根本缺陷在于它将词视为孤立、离散的符号。为了克服这个问题,研究者们转向了神经网络,并提出了一种思想:用连续的向量来表示词。2003年,Bengio 等人提出的**前馈神经网络语言模型 (Feedforward Neural Network Language Model)** 是这一领域的里程碑[1]。
+N-gram 模型的根本缺陷在于它将词视为孤立、离散的符号。为了克服这个问题,研究者们转向了神经网络,并提出了一种思想:用连续的向量来表示词。2003年,Bengio 等人提出的**前馈神经网络语言模型 (Feedforward Neural Network Language Model)** 是这一领域的里程碑^[1]^
 
 其核心思想可以分为两步:
 
@@ -166,7 +166,7 @@ king - man + woman 的结果向量: [0.9 0.2]
 
 **(3)循环神经网络 (RNN) 与长短时记忆网络 (LSTM)**
 
-前一节的神经网络语言模型虽然引入了词嵌入解决了泛化问题,但它和 N-gram 模型一样,上下文窗口是固定大小的。为了预测下一个词,它只能看到前 n−1 个词,再早的历史信息就被丢弃了。这显然不符合我们人类理解语言的方式。为了打破固定窗口的限制,**循环神经网络 (Recurrent Neural Network, RNN)** 应运而生,其核心思想非常直观:为网络增加“记忆”能力[2]。
+前一节的神经网络语言模型虽然引入了词嵌入解决了泛化问题,但它和 N-gram 模型一样,上下文窗口是固定大小的。为了预测下一个词,它只能看到前 n−1 个词,再早的历史信息就被丢弃了。这显然不符合我们人类理解语言的方式。为了打破固定窗口的限制,**循环神经网络 (Recurrent Neural Network, RNN)** 应运而生,其核心思想非常直观:为网络增加“记忆”能力^[2]^
 
 如图3.3所示,RNN 的设计引入了一个**隐藏状态 (hidden state)** 向量,我们可以将其理解为网络的短期记忆。在处理序列的每一步,网络都会读取当前的输入词,并结合它上一刻的记忆(即上一个时间步的隐藏状态),然后生成一个新的记忆(即当前时间步的隐藏状态)传递给下一刻。这个循环往复的过程,使得信息可以在序列中不断向后传递。
 
@@ -177,7 +177,7 @@ king - man + woman 的结果向量: [0.9 0.2]
 
 然而,标准的 RNN 在实践中存在一个严重的问题:**长期依赖问题 (Long-term Dependency Problem)**。在训练过程中,模型需要通过反向传播算法根据输出端的误差来调整网络深处的权重。对于 RNN 而言,序列的长度就是网络的深度。当序列很长时,梯度在从后向前传播的过程中会经过多次连乘,这会导致梯度值快速趋向于零(**梯度消失**)或变得极大(**梯度爆炸**)。梯度消失使得模型无法有效学习到序列早期信息对后期输出的影响,即难以捕捉长距离的依赖关系。
 
-为了解决长期依赖问题,**长短时记忆网络 (Long Short-Term Memory, LSTM)** 被设计出来[3]。LSTM 是一种特殊的 RNN,其核心创新在于引入了**细胞状态 (Cell State)** 和一套精密的**门控机制 (Gating Mechanism)**。细胞状态可以看作是一条独立于隐藏状态的信息通路,允许信息在时间步之间更顺畅地传递。门控机制则是由几个小型神经网络构成,它们可以学习如何有选择地让信息通过,从而控制细胞状态中信息的增加与移除。这些门包括:
+为了解决长期依赖问题,**长短时记忆网络 (Long Short-Term Memory, LSTM)** 被设计出来^[3]^。LSTM 是一种特殊的 RNN,其核心创新在于引入了**细胞状态 (Cell State)** 和一套精密的**门控机制 (Gating Mechanism)**。细胞状态可以看作是一条独立于隐藏状态的信息通路,允许信息在时间步之间更顺畅地传递。门控机制则是由几个小型神经网络构成,它们可以学习如何有选择地让信息通过,从而控制细胞状态中信息的增加与移除。这些门包括:
 
 - **遗忘门 (Forget Gate)**: 决定从上一时刻的细胞状态中丢弃哪些信息。
 - **输入门 (Input Gate)**: 决定将当前输入中的哪些新信息存入细胞状态。
@@ -185,17 +185,18 @@ king - man + woman 的结果向量: [0.9 0.2]
 
 ### 3.1.2 Transformer 架构解析
 
-在上一节中,我们看到RNN及LSTM通过引入循环结构来处理序列数据,这在一定程度上解决了捕捉长距离依赖的问题。然而,这种循环的计算方式也带来了新的瓶颈:它必须按顺序处理数据。第 t 个时间步的计算,必须等待第 t−1 个时间步完成后才能开始。这意味着 RNN 无法进行大规模的并行计算,在处理长序列时效率低下,这极大地限制了模型规模和训练速度的提升。Transformer在2017 年由谷歌团队提出[4]。它完全抛弃了循环结构,转而完全依赖一种名为**注意力 (Attention)** 的机制来捕捉序列内的依赖关系,从而实现了真正意义上的并行计算。
+在上一节中,我们看到RNN及LSTM通过引入循环结构来处理序列数据,这在一定程度上解决了捕捉长距离依赖的问题。然而,这种循环的计算方式也带来了新的瓶颈:它必须按顺序处理数据。第 t 个时间步的计算,必须等待第 t−1 个时间步完成后才能开始。这意味着 RNN 无法进行大规模的并行计算,在处理长序列时效率低下,这极大地限制了模型规模和训练速度的提升。Transformer在2017 年由谷歌团队提出^[4]^。它完全抛弃了循环结构,转而完全依赖一种名为**注意力 (Attention)** 的机制来捕捉序列内的依赖关系,从而实现了真正意义上的并行计算。
 
 **(1)Encoder-Decoder 整体结构**
 
 最初的 Transformer 模型是为端到端任务机器翻译而设计的。如图3.4所示,它在宏观上遵循了一个经典的**编码器-解码器 (Encoder-Decoder)** 架构。
 
 <div align="center">
-  <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/3-figures/1757249275674-3.png" alt="图片描述" width="90%"/>
+  <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/3-figures/1757249275674-3.png" alt="图片描述" width="50%"/>
   <p>图 3.4 Transformer 整体架构图</p>
 </div>
 
+
 我们可以将这个结构理解为一个分工明确的团队:
 
 1. **编码器 (Encoder)**:任务是“**理解**”输入的整个句子。它会读取所有输入词元(这个概念会在3.2.2节介绍),最终为每个词元生成一个富含上下文信息的向量表示。
@@ -287,7 +288,7 @@ class DecoderLayer(nn.Module):
 
 现在,我们来填充骨架中最关键的模块,注意力机制。
 
-想象一下我们阅读这个句子:“The agent learns because **it** is intelligent.”。当我们读到加粗的 "it" 时,为了理解它的指代,我们的大脑会不自觉地将更多的注意力放在前面的 "agent" 这个词上。**自注意力 (Self-Attention)** 机制就是对这种现象的数学建模。它允许模型在处理序列中的每一个词时,都能兼顾句子中的所有其他词,并为这些词分配不同的“注意力权重”。权重越高的词,代表其与当前词的关联性越强,其信息也应该在当前词的表示中占据更大的比重。
+想象一下我们阅读这个句子:“The agent learns because **it** is intelligent.”。当我们读到加粗的 "**it**" 时,为了理解它的指代,我们的大脑会不自觉地将更多的注意力放在前面的 "agent" 这个词上。**自注意力 (Self-Attention)** 机制就是对这种现象的数学建模。它允许模型在处理序列中的每一个词时,都能兼顾句子中的所有其他词,并为这些词分配不同的“注意力权重”。权重越高的词,代表其与当前词的关联性越强,其信息也应该在当前词的表示中占据更大的比重。
 
 为了实现上述过程,自注意力机制为每个输入的词元向量引入了三个可学习的角色:
 
@@ -311,10 +312,11 @@ $$\text{Attention}(Q,K,V)=\text{softmax}\left(\frac{QK^{T}}{\sqrt{d_{k}}}\right)
 它将原始的 Q, K, V 向量在维度上切分成 h 份(h 就是“头”数),每一份都独立地进行一次单头注意力的计算。这就好比让 h 个不同的“专家”从不同的角度去审视句子,每个专家都能捕捉到一种不同的特征关系。最后,将这 h 个专家的“意见”(即输出向量)拼接起来,再通过一个线性变换进行整合,就得到了最终的输出。
 
 <div align="center">
-  <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/3-figures/1757249275674-4.png" alt="图片描述" width="90%"/>
+  <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/3-figures/1757249275674-4.png" alt="图片描述" width="50%"/>
   <p>图 3.5 多头注意力机制</p>
 </div>
 
+
 如图3.5所示,这种设计让模型能够共同关注来自不同位置、不同表示子空间的信息,极大地增强了模型的表达能力。以下是多头注意力的简单实现可供参考。
 
 ```Python
@@ -427,12 +429,14 @@ class PositionWiseFeedForward(nn.Module):
 
 位置编码的核心思想是,为输入序列中的每一个词元嵌入向量,都额外加上一个能代表其绝对位置和相对位置信息的“位置向量”。这个位置向量不是通过学习得到的,而是通过一个固定的数学公式直接计算得出。这样一来,即使两个词元(例如,两个都叫 `agent` 的词元)自身的嵌入是相同的,但由于它们在句子中的位置不同,它们最终输入到 Transformer 模型中的向量就会因为加上了不同的位置编码而变得独一无二。原论文中提出的位置编码使用正弦和余弦函数来生成,其公式如下:
 
-$$ PE_{(pos,2i)}=\sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) $$,$$PE_{(pos,2i+1)}=\cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right)$$
+$$ PE_{(pos,2i)}=\sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) $$,
+
+$$PE_{(pos,2i+1)}=\cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right)$$,
 
 其中:
 
-- pos是词元在序列中的位置(例如,0,1,2,...)
-- i是位置向量中的维度索引(从0到$d_{\text{model}}/2$)
+- $pos$ 是词元在序列中的位置(例如,$0$$1$$2$,...)
+- $i$ 是位置向量中的维度索引(从 $0$  $d_{\text{model}}/2$)
 - $d_{\text{model}}$是词嵌入向量的维度(与我们模型中定义的一致)
 
 现在,我们来实现 `PositionalEncoding` 模块,并完成我们 Transformer 骨架代码的最后一部分。
@@ -473,7 +477,7 @@ class PositionalEncoding(nn.Module):
 
 前面一节中,我们动手构建了一个完整的Transformer 模型,它能在很多端到端的场景表现出色。但是当任务转换为构建一个与人对话、创作、作为智能体大脑的通用模型时,或许我们并不需要那么复杂的结构。
 
-Transformer的设计哲学是“先理解,再生成”。编码器负责深入理解输入的整个句子,形成一个包含全局信息的上下文记忆,然后解码器基于这份记忆来生成翻译。但 OpenAI 在开发 **GPT (Generative Pre-trained Transformer)** 时,提出了一个更简单的思想[5]:**语言的核心任务,不就是预测下一个最有可能出现的词吗?**
+Transformer的设计哲学是“先理解,再生成”。编码器负责深入理解输入的整个句子,形成一个包含全局信息的上下文记忆,然后解码器基于这份记忆来生成翻译。但 OpenAI 在开发 **GPT (Generative Pre-trained Transformer)** 时,提出了一个更简单的思想^[5]^:**语言的核心任务,不就是预测下一个最有可能出现的词吗?**
 
 无论是回答问题、写故事还是生成代码,本质上都是在一个已有的文本序列后面,一个词一个词地添加最合理的内容。基于这个思想,GPT 做了一个大胆的简化:**它完全抛弃了编码器,只保留了解码器部分。** 这就是 **Decoder-Only** 架构的由来。
 
@@ -559,9 +563,9 @@ Decoder-Only 架构的工作模式被称为**自回归 (Autoregressive)**。这
 
 早期的 GPT 模型(如 GPT-3)主要是“文本补全”模型,它们擅长根据前面的文本续写,但不一定能很好地理解并执行人类的指令。
 
-**指令调优 (Instruction Tuning)** 是一种微调技术,它使用大量“指令-回答”格式的数据对预训练模型进行进一步的训练。经过指令调优后,模型能更好地理解并遵循用户的指令。我们今天使用的大多数主流模型(如 ChatGPT, Llama 3-Instruct)都是指令调优过的模型。
+**指令调优 (Instruction Tuning)** 是一种微调技术,它使用大量“指令-回答”格式的数据对预训练模型进行进一步的训练。经过指令调优后,模型能更好地理解并遵循用户的指令。我们今天日常工作学习中使用的所有模型(如 `ChatGPT`, `DeepSeek`, `Qwen`)都是其模型家族中经过指令调优过的模型。
 
-- **对“文本补全”模型的提示***(你需要用少样本提示“教会”模型做什么)***:**
+- **对“文本补全”模型的提示(你需要用少样本提示“教会”模型做什么):**
 
 ```Plain
 这是一段将英文翻译成中文的程序。
@@ -571,7 +575,7 @@ Decoder-Only 架构的工作模式被称为**自回归 (Autoregressive)**。这
 中文:
 ```
 
-- **对“指令调优”模型的提示***(你可以直接下达指令)***:**
+- **对“指令调优”模型的提示(你可以直接下达指令):**
 
 ```Plain
 请将下面的英文翻译成中文:
@@ -589,7 +593,7 @@ How are you?
 你现在是一位资深的Python编程专家。请解释一下Python中的GIL(全局解释器锁)是什么,要让一个初学者也能听懂。
 ```
 
-**提供示例 (In-context Example)** 这与少样本提示的思想一致,通过在提示中提供清晰的输入输出示例,来“教会”模型如何处理我们的请求,尤其是在处理复杂格式或特定风格的任务时非常有效。
+**上下文示例 (In-context Example)** 这与少样本提示的思想一致,通过在提示中提供清晰的输入输出示例,来“教会”模型如何处理我们的请求,尤其是在处理复杂格式或特定风格的任务时非常有效。
 
 ```Plain
 # 案例
@@ -643,7 +647,7 @@ How are you?
 
 **3.2.2.2 字节对编码算法解析**
 
-字节对编码 (Byte-Pair Encoding, BPE) 是最主流的子词分词算法之一[6],GPT系列模型就采用了这种算法。其核心思想非常简洁,可以理解为一个“贪心”的合并过程:
+字节对编码 (Byte-Pair Encoding, BPE) 是最主流的子词分词算法之一^[6]^,GPT系列模型就采用了这种算法。其核心思想非常简洁,可以理解为一个“贪心”的合并过程:
 
 1. **初始化**:将词表初始化为所有在语料库中出现过的基本字符。
 2. **迭代合并**:在语料库上,统计所有相邻词元对的出现频率,找到频率最高的一对,将它们合并成一个新的词元,并加入词表。
@@ -715,8 +719,8 @@ for i in range(num_merges):
 
 后续的许多算法都是在BPE的基础上进行优化的。其中,Google 开发的 WordPiece 和 SentencePiece 是影响力最大的两种。
 
-- **WordPiece**: Google BERT 模型采用的算法[7]。它与 BPE 非常相似,但合并词元的标准不是“最高频率”,而是“能最大化提升语料库的语言模型概率”。简单来说,它会优先合并那些能让整个语料库的“通顺度”提升最大的词元对。
-- **SentencePiece**: Google 开源的一款分词工具[8],Llama 系列模型采用了此算法。它最大的特点是,将空格也视作一个普通字符(通常用下划线 `_` 表示)。这使得分词和解码过程完全可逆,且不依赖于特定的语言(例如,它不需要知道中文不使用空格分词)。
+- **WordPiece**: Google BERT 模型采用的算法^[7]^。它与 BPE 非常相似,但合并词元的标准不是“最高频率”,而是“能最大化提升语料库的语言模型概率”。简单来说,它会优先合并那些能让整个语料库的“通顺度”提升最大的词元对。
+- **SentencePiece**: Google 开源的一款分词工具^[8]^,Llama 系列模型采用了此算法。它最大的特点是,将空格也视作一个普通字符(通常用下划线 `_` 表示)。这使得分词和解码过程完全可逆,且不依赖于特定的语言(例如,它不需要知道中文不使用空格分词)。
 
 **3.2.2.3 分词器对开发者的意义**
 
@@ -868,15 +872,15 @@ print(response)
 
 **缩放法则(Scaling Laws)**是近年来大语言模型领域最重要的发现之一。它揭示了模型性能与模型参数量、训练数据量以及计算资源之间存在着可预测的幂律关系。这一发现为大语言模型的持续发展提供了理论指导,阐明了增加资源投入能够系统性提升模型性能的底层逻辑。
 
-研究发现,在对数-对数坐标系下,模型的性能(通常用损失 Loss 来衡量)与参数量、数据量和计算量这三个因素都呈现出平滑的幂律关系[9]。简单来说,只要我们持续、按比例地增加这三个要素,模型的性能就会可预测地、平滑地提升,而不会出现明显的瓶颈。这一发现为大模型的设计和训练提供了清晰的指导:在资源允许的范围内,尽可能地扩大模型规模和训练数据量。
+研究发现,在对数-对数坐标系下,模型的性能(通常用损失 Loss 来衡量)与参数量、数据量和计算量这三个因素都呈现出平滑的幂律关系^[9]^。简单来说,只要我们持续、按比例地增加这三个要素,模型的性能就会可预测地、平滑地提升,而不会出现明显的瓶颈。这一发现为大模型的设计和训练提供了清晰的指导:在资源允许的范围内,尽可能地扩大模型规模和训练数据量。
 
-早期的研究更侧重于增加模型参数量,但 DeepMind 在 2022 年提出的“Chinchilla 定律”对此进行了重要修正[10]。该定律指出,在给定的计算预算下,为了达到最优性能,**模型参数量和训练数据量之间存在一个最优配比**。具体来说,最优的模型应该比之前普遍认为的要小,但需要用多得多的数据进行训练。例如,一个 700 亿参数的 Chinchilla 模型,由于使用了比 GPT-3(1750 亿参数)多 4 倍的数据进行训练,其性能反而超越了后者。这一发现纠正了“越大越好”的片面认知,强调了数据效率的重要性,并指导了后续许多高效大模型(如 Llama 系列)的设计。
+早期的研究更侧重于增加模型参数量,但 DeepMind 在 2022 年提出的“Chinchilla 定律”对此进行了重要修正^[10]^。该定律指出,在给定的计算预算下,为了达到最优性能,**模型参数量和训练数据量之间存在一个最优配比**。具体来说,最优的模型应该比之前普遍认为的要小,但需要用多得多的数据进行训练。例如,一个 700 亿参数的 Chinchilla 模型,由于使用了比 GPT-3(1750 亿参数)多 4 倍的数据进行训练,其性能反而超越了后者。这一发现纠正了“越大越好”的片面认知,强调了数据效率的重要性,并指导了后续许多高效大模型(如 Llama 系列)的设计。
 
 缩放法则最令人惊奇的产物是“能力的涌现”。所谓能力涌现,是指当模型规模达到一定阈值后,会突然展现出在小规模模型中完全不存在或表现不佳的全新能力。例如,**链式思考 (Chain-of-Thought)**、**指令遵循 (Instruction Following)**、多步推理、代码生成等能力,都是在模型参数量达到数百亿甚至千亿级别后才显著出现的。这种现象表明,大语言模型不仅仅是简单地记忆和复述,它们在学习过程中可能形成了某种更深层次的抽象和推理能力。对于智能体开发者而言,能力的涌现意味着选择一个足够大规模的模型,是实现复杂自主决策和规划能力的前提。
 
 ### 3.3.2 模型幻觉
 
-**模型幻觉(Hallucination)**通常指的是大语言模型生成的内容与客观事实、用户输入或上下文信息相矛盾,或者生成了不存在的事实、实体或事件。幻觉的本质是模型在生成过程中,过度自信地“编造”了信息,而非准确地检索或推理。根据其表现形式,幻觉可以被分为多种类型[11],例如:
+**模型幻觉(Hallucination)**通常指的是大语言模型生成的内容与客观事实、用户输入或上下文信息相矛盾,或者生成了不存在的事实、实体或事件。幻觉的本质是模型在生成过程中,过度自信地“编造”了信息,而非准确地检索或推理。根据其表现形式,幻觉可以被分为多种类型^[11]^,例如:
 
 - **事实性幻觉 (Factual Hallucinations)**: 模型生成与现实世界事实不符的信息。
 - **忠实性幻觉 (Faithfulness Hallucinations)**: 在文本摘要、翻译等任务中,生成的内容未能忠实地反映源文本的含义。
@@ -884,14 +888,14 @@ print(response)
 
 幻觉的产生是多方面因素共同作用的结果。首先,训练数据中可能包含错误或矛盾的信息。其次,模型的自回归生成机制决定了它只是在预测下一个最可能的词元,而没有内置的事实核查模块。最后,在面对需要复杂推理的任务时,模型可能会在逻辑链条中出错,从而“编造”出错误的结论。例如:一个旅游规划 Agent,可能会为你推荐一个现实中不存在的景点,或者预订一个航班号错误的机票。
 
-此外,大语言模型还面临着知识时效性不足和训练数据中存在的偏见等挑战。大语言模型的能力来源于其训练数据。这意味着模型所掌握的知识是其训练数据收集时的最新材料。对于在此日期之后发生的事件、新出现的概念或最新的事实,模型将无法感知或正确回答。与此同时训练数据往往包含了人类社会的各种偏见和刻板印象。当模型在这些数据上学习时,它不可避免地会吸收并反映出这些偏见 [12]
+此外,大语言模型还面临着知识时效性不足和训练数据中存在的偏见等挑战。大语言模型的能力来源于其训练数据。这意味着模型所掌握的知识是其训练数据收集时的最新材料。对于在此日期之后发生的事件、新出现的概念或最新的事实,模型将无法感知或正确回答。与此同时训练数据往往包含了人类社会的各种偏见和刻板印象。当模型在这些数据上学习时,它不可避免地会吸收并反映出这些偏见^[12]^
 
 为了提高大语言模型的可靠性,研究人员和开发者正在积极探索多种检测和缓解幻觉的方法:
 
-1. **数据层面**: 通过高质量数据清洗、引入事实性知识以及强化学习与人类反馈 (RLHF) 等方式[13],从源头减少幻觉。
+1. **数据层面**: 通过高质量数据清洗、引入事实性知识以及强化学习与人类反馈 (RLHF) 等方式^[13]^,从源头减少幻觉。
 2. **模型层面**: 探索新的模型架构,或让模型能够表达其对生成内容的不确定性。
 3. **推理与生成层面**:
-   1. **检索增强生成 (Retrieval-Augmented Generation, RAG)**[14]: 这是目前缓解幻觉的有效方法之一。RAG 系统通过在生成之前从外部知识库(如文档数据库、网页)中检索相关信息,然后将检索到的信息作为上下文,引导模型生成基于事实的回答。
+   1. **检索增强生成 (Retrieval-Augmented Generation, RAG)**^[14]^: 这是目前缓解幻觉的有效方法之一。RAG 系统通过在生成之前从外部知识库(如文档数据库、网页)中检索相关信息,然后将检索到的信息作为上下文,引导模型生成基于事实的回答。
    2. **多步推理与验证**: 引导模型进行多步推理,并在每一步进行自我检查或外部验证。
    3. **引入外部工具**: 允许模型调用外部工具(如搜索引擎、计算器、代码解释器)来获取实时信息或进行精确计算。
 
@@ -940,4 +944,4 @@ print(response)
 
 [13] Christiano, P., Leike, J., Brown, T. B., Martic, M., Legg, S., & Amodei, D. (2017). Deep reinforcement learning from human preferences. *arXiv preprint arXiv:1706.03741*.
 
-[14] Lewis, P., Perez, E., Piktus, A., Petroni, F., Karpukhin, V., Goswami, N., ... & Kiela, D. (2020). Retrieval-augmented generation for knowledge-intensive NLP tasks. In *Advances in neural information processing systems* (pp. 9459-9474).
+[14] Lewis, P., Perez, E., Piktus, A., Petroni, F., Karpukhin, V., Goswami, N., ... & Kiela, D. (2020). Retrieval-augmented generation for knowledge-intensive NLP tasks. In *Advances in neural information processing systems* (pp. 9459-9474).