跳转到内容

AI学习笔记

关于AI的学习笔记,包括读书、视频学习等。

基础数学

排列与组合

递归与数学归纳法

递归和数学归纳法是计算机科学和数学中两个联系非常紧密的概念,它们就像是看待同一个问题的两种不同角度,或者说是一枚硬币的两面。

它们都依赖于“将问题与一个更简单的、同类型的版本联系起来”的思想,并通过一个明确的“起点”来确保整个过程的有效性。所以,理解了其中一个,往往能帮助你更好地理解另一个。

重要函数

指数函数与Sigmoid函数:

正态分布的概率密度函数:

用计算机实际确定神经网络时,必须设定权重和偏置的初始值。求初始值时,正态分布(normal distribution)是一个有用的工具。使用服从这个分布的随机数,容易取得好的结果。

正态分布是服从以下概率密度函数 f(x) 的概率分布。

其中常数 µ 称为期望值(平均值),σ 称为标准差。它的图像如下图所示,由于形状像教堂的钟,所以称为钟形曲线。

期望值 µ 为 0、标准差 σ 为 1 的正态分布的概率密度函数的图像。这个正态分布称为标准正态分布

按照正态分布产生的随机数称为正态分布随机数。在神经网络的计算中,经常用到正态分布随机数作为初始值。

计算机擅长递推关系式:

向量与内积

向量的内积:

我们在考虑具有方向的向量的乘积时,包含了“方向与方向的乘积” 这样不明确的概念。 因此,我们需要一个新的定义——内积。两个向量 a、b 的内积 a · b 的定义如下所示。

内积也叫点积,也叫数量积,也叫标量积,因为点积的运算结果是一个数量(标量)。

余弦相似性:

柯西 - 施瓦茨不等式:

  • 当两个向量方向相反时,内积取得最小值。(梯度下降法的基本原理)
  • 当两个向量不平行时,内积取平行时的中间值。
  • 当两个向量方向相同时,内积取得最大值。

可以认为内积表示两个向量在多大程度上指向相同方向。如果将方向相似判定为“相似”,则两个向量相似时内积变大。后面我们考察卷积神经网络时,这个观点就变得十分重要。

内积的座标表示:

也有很多文献使用式内积的座标表示作为内积的定义。

向量的一般化:

神经网络虽然要处理数万维的空间,但是二维以及三维空间的向量性质可以直接利用。出于该原因,向量被充分应用在后述的梯度下降法中。

神经网络的加权输入——向量内积:

矩阵

矩阵的乘积:

矩阵的乘积在神经网络的应用中特别重要。对于两个矩阵 A、B,将 A 的第 i 行看作行向量,B 的第 j 列看作列向量,将它们的内积作为第 i 行第 j 列元素,由此而产生的矩阵就是矩阵 A、B 的乘积 AB。

矩阵的乘法不满足交换律:

单位矩阵:

单位矩阵,它是对角线上的元素 aii为 1、 其他元素为 0 的方阵,通常用 E 表示。例如,2 行 2 列、3 行 3 列的单位矩 阵 E(称为 2 阶单位矩阵、3 阶单位矩阵)分别如下表示。

Hadamard 乘积:

转置矩阵:

矩阵计算示例:

导数与偏导数

导数的定义:

已知函数 f(x),求导函数 f'(x),称为对函数 f (x) 求导。当式 (1) 的值存在时,称函数可导。

这个表示方法是十分方便的,这是因为复杂的函数可以像分数一样计算导数。

常用导数公式:

导数的线性性:

和的导数为导数的和,常数倍的导数为导数的常数倍。导数的线性性是误差反向传播法背后的主角

分数函数的导数和 Sigmoid 函数的导数:

多变量函数:

神经网络的计算往往会涉及成千上万个变量,这是因为构成神经网络的神经单元的权重和偏置都被作为变量处理。

偏导数:

求导的方法也同样适用于多变量函数的情况。但是,由于有多个变量 所以必须指明对哪一个变量进行求导。在这个意义上,关于某个特定变量的导数就称为偏导数(partial derivative)。

多变量函数的最小值条件:

光滑的单变量函数 y = f (x) 在点 x 处取得最小值的必要条件是导函数在该点取值 0 ,这个事实对于多变量函数同样适用。例如对于有两个变量的函数,可以如下表示。

复杂函数求导的链式法则

复合函数:

已知函数 y = f(u),当 u 表示为 u = g(x) 时,y 作为 x 的函数可以表示为形如 y = f(g(x)) 的嵌套结构(u 和 x 表示多变量)。这时,嵌套结构的函 数 f(g(x)) 称为 f(u) 和 g(x) 的复合函数。

神经元处理就是一个复合函数:

单变量函数的链式法则:

多变量函数的链式法则:

梯度下降法

著名的寻找最小值的点的方法——梯度下降法,是神经网络的数学武器。

梯度下降法的思路:

然而,在实际问题中(神经网络的参数巨大),联立方程式 (1) 通常不容易求解,那么该如何解决呢?梯度下降法是一种具有代表性的替代方法。该方法不直接求解式 (1) 的方程,而是通过慢慢地移动图像上的点进行摸索,从而找出函数的最小值。在数值分析领域,梯度下降法也称为最速下降法。这个名称表示沿着坡度上的最短路径下降(想像成球在坡上自由下滚的路径)。

最优化问题和回归分析

在为了分析数据而建立数学模型时,通常模型是由参数确定的。在数学世界中,最优化问题就是如何确定这些参数。

从数学上来说,确定神经网络的参数是一个最优化问题,具体就是对神经网络的参数(即权重和偏置)进行拟合,使得神经网络的输出与实际数据相吻合。

为了理解最优化问题,最浅显的例子就是回归分析。

代价函数:

神经网络的变量参数

变量参数表示:

在给定学习数据的第 k 个学习实例时,各个变量的值可以如下表示。

参数表示两个神经元交互:

误差反向传播法

关误差反向传播法是 1986 年美国斯坦福大学的鲁梅尔哈特(Rumelhart)等人命名的神经网络学习方法。

梯度下降法对于寻找多变量函数的最小值的问题是有效的。然而在神经网络的世界中,变量、参数和函数错综复杂,无法直接求导数,也无法直接使用梯度下降法,于是就出现了误差反向传播法,它通过递推关系式越过导数计算。误差反向传播法的特点是将繁杂的导数计算替换为数列的递推关系式。

只要求出输出层的神经单元误差,其他的神经单元误差就不需要进行偏导数计算!

整体工作流程:

截图出自: 5分钟-通俗易懂 - 神经网络 反向传播算法(手算)

如何一步一步掌握反向传播

误差反向传播(Backpropagation)是理解神经网络如何学习的关键,但初学时可能会觉得有些复杂。别担心,我会一步一步地带你理解它。把它想象成我们一起爬一座山,每一步我们都会确保你站稳了再往上走。

核心思想:

反向传播的核心思想是 “贡献度分配”。简单来说,就是神经网络在一次预测后,如果发现预测结果与真实结果有差距(也就是产生了“误差”),我们就需要知道网络中的每一个参数(权重和偏置)对这个最终的误差“贡献”了多少。知道了每个参数的“贡献度”,我们就能相应地调整它们,使得下一次预测时误差能减小一点。这个调整的过程就是学习。

我们把所有的数学符号都暂时抛开,用更生活化的方式来理解误差反向传播。

想象一下,我们正在训练一群小助手(神经网络)来完成一项任务,比如识别图片里是猫还是狗。

第一步:小助手们如何一起“猜”答案?(前向传播)

  1. 输入信息: 我们给第一个小助手看一张图片(这就是输入数据)。
  2. 信息传递与加工:
    • 这个小助手看完图片后,会根据他自己的一些“经验规则”(这就是权重)和一些固有的“倾向性”(这就是偏置),形成一个初步的判断。
    • 然后,他把他的判断传递给下一个小助手。在传递的时候,这个判断的“强调程度”会根据他们之间的“连接强度”(还是权重)有所不同。
    • 下一个小助手拿到上一个人的判断后,也会结合自己的“经验规则”和“倾向性”,以及一个“激活开关”(激活函数——决定这个判断是否足够重要到传递下去,或者如何转换这个判断),形成自己的判断。
  3. 层层传递: 这个过程会经过好几组小助手(隐藏层),每一组都会在前一组的基础上,对信息进行更复杂的加工和提炼。
  4. 最终答案: 最后一组小助手(输出层)会给出最终的“猜测结果”,比如:“我认为这张图有80%的可能是猫,20%的可能是狗。”

这就是数据在网络里从头到尾走一遍,得到一个预测结果的过程。就像流水线作业,每个环节处理一下,最后出来一个成品。

第二步:看看猜得怎么样?(计算“错误程度”)

  1. 对照正确答案: 我们拿出这张图片的正确答案(比如,这确实是一张猫的图片)。
  2. 比较差异: 我们比较一下小助手们最终的猜测结果和正确答案之间的差距有多大。这个差距,就是“错误程度”或“损失”。
    • 如果他们猜“80%是猫”,而正确答案是猫,那错误程度就比较小。
    • 如果他们猜“10%是猫”,那错误程度就很大了。
  3. 衡量标准(损失函数): 我们需要一个统一的方法来衡量这个“错误程度”。比如,可以说“猜错的百分比”或者“与正确答案的距离”等等。

目标: 我们希望小助手们下次猜的时候,“错误程度”能变小一点。

第三步:找出谁的“锅”比较大?(反向传播的核心)

现在到了关键部分!既然猜错了,或者猜得不够好,我们就得回头看看,是哪些环节的小助手,以及他们当时依据的“经验规则”(权重)和“倾向性”(偏置)导致了这个不够好的结果。这就是“反向传播”——从最终的错误结果开始,一层一层往回追溯责任。

  1. 从最后往前看:

    • 首先看最后一组给出猜测结果的小助手。他们的猜测直接导致了我们看到的“错误程度”。我们就评估一下,他们当时的判断,对于这个最终的错误,“贡献”了多少。
    • 比如,如果某个输出小助手非常肯定地把猫说成了狗,那他的“责任”就很大。
  2. 逐层追究:

    • 然后,我们再看倒数第二组小助手。最后一组小助手的判断,是基于倒数第二组传递给他们的信息,以及他们之间传递信息时的“强调程度”(权重)的。
    • 所以,我们会分析,倒数第二组小助手的哪个判断,通过哪个“强调程度”,对最后一组小助手的错误判断“贡献”最大。
    • 这就好比问:“小明(最后一层)你为什么判断错了?” 小明说:“因为小红(倒数第二层)给我的信息是这样的,而且她特别强调了某个点(权重)。” 于是我们就知道小红和她强调的那个点也需要对错误负责。
  3. 一直追到最开始: 这个“追究责任”的过程会一直从输出层反向传播到最靠近输入层的小助手,弄清楚网络中每一个“经验规则”(权重)和每一个“倾向性”(偏置)分别对最终的“错误程度”负有多大的责任。我们把这个“责任大小”或者说“影响程度”理解为一种信号。

这个“追究责任”的过程,就像侦探破案,从结果(案件)出发,一步步倒推,找到每个环节的关键线索(每个参数对误差的贡献)。

第四步:让小助手们吸取教训,调整自己(更新权重和偏置)

知道了每个“经验规则”(权重)和“倾向性”(偏置)对错误“贡献”了多少之后,我们就要调整它们,让小助手们下次能做得更好。

  1. 调整方向和幅度:

    • 如果某个“经验规则”让结果变得更糟了,我们就往相反的方向调整它。
    • 如果某个“经验规则”对错误“贡献”很大,那我们就多调整它一点;如果“贡献”很小,就少调整一点。
    • 我们还有一个“学习精细度”(学习率)的概念。这就像我们调整旋钮时的幅度,是小心翼翼地微调,还是大刀阔斧地改。如果调得太猛,可能会矫枉过正;调得太慢,学习效率又太低。
  2. 如何调整:

    • 对于每一个“经验规则”(权重):我们根据它对错误的“贡献程度”,以及设定的“学习精细度”,来更新它。如果它让错误变大,我们就减小它一点(或者往反方向调整);如果它能让错误变小(虽然这次还是错了,但它努力的方向是对的),我们可能就加强它一点(但这通常是通过梯度的正负来实现,简单理解就是往减少错误的方向调整)。
    • 对于每一个“倾向性”(偏置):也用类似的方法进行调整。

整个学习过程就像这样循环往复:

  1. 猜一次: 小助手们根据现有经验(权重和偏置)对新数据进行判断(前向传播)。
  2. 看差距: 比较判断结果和正确答案,计算“错误程度”(计算损失)。
  3. 找原因: 从最终错误出发,反向追溯,弄清楚每个经验规则和倾向性对错误的“贡献度”(反向传播)。
  4. 做改进: 根据“贡献度”和“学习精细度”,调整经验规则和倾向性(参数更新)。

不断重复这个过程,每次都用新的数据或者同样的数据进行训练,小助手们就会逐渐变得越来越聪明,判断得越来越准确,“错误程度”也会越来越小。

用更加专业的术语来总结整个学习过程的循环:

  1. 前向传播: 输入数据,计算预测输出。
  2. 计算损失: 用损失函数比较预测输出和真实标签。
  3. 反向传播: 计算损失函数对网络中所有权重和偏置的梯度。
  4. 参数更新: 使用梯度下降和学习率更新权重和偏置。

重复以上步骤(通常是对许多批次的训练数据进行迭代),直到网络的损失收敛到一个可接受的水平,或者达到预设的训练轮数。

总结与关键点:

  • 目标驱动: 一切都是为了最小化损失函数。
  • 贡献度分配: 反向传播通过链式法则,巧妙地计算出每个参数对最终误差的“责任大小”(即梯度)。
  • 逐层计算: 误差从输出层开始,一层一层向后传播,计算每一层的梯度。
  • 迭代优化: 通过梯度下降不断调整参数,逐步提升模型性能。

为了更好地征服它,你可以尝试以下方法:

  1. 从最简单的网络开始: 比如一个只有一个输入节点、一个输出节点、没有隐藏层的网络(逻辑回归就可以看作是这样一种简单的神经网络)。手动推导一遍它的前向传播、损失计算、反向传播求梯度和参数更新。
  2. 找一个带例子的教程: 很多在线教程会用具体的数值例子来演示反向传播的计算过程,跟着算一遍会非常有帮助。
  3. 理解不同激活函数及其导数: 比如 Sigmoid, ReLU。知道它们的导数形式对于理解 $\sigma'(z)$ 这一项很重要。
  4. 尝试用代码实现一个简单的神经网络: 即使是很基础的,自己动手实现一遍前向和反向传播,可以极大地加深理解。Python 和 NumPy 是很好的工具。

如何理解智能体以及智能体框架

阅读资料:

视频学习资料:

  1. Anthropic团队:构建AI智能体的妙招

这个视频是 Anthropic 团队入探讨如何构建有效的 AI 代理(Agent),并区分Agent与工作流程的概念,同时分享了他们在实际应用中的经验和见解。

观点:

  • Agent与工作流程的区别:Agent是模型自主决策和选择行动的过程,而工作流程是由预先人为编排的固定步骤组成。
  • Agent的设计应该基于模型的上下文和知识:开发者需要对模型有同理心,并且在设计代理时要考虑到模型的视角。
  • Agent在编码和搜索等领域的应用:Agent可以在这些领域自动化任务,并且在生产环境中展现出实用性。
  • Agent的未来趋势:Agent将在企业中自动化重复任务,并且可能会出现多智能体协同工作的环境。
  • 对消费者任务的Agent高估:指定偏好和任务的工作量可能与自己完成任务的工作量相当,因此Agent在这方面可能被高估。
  • 开发者的建议:应该有一种衡量结果的方法,并且从简单的实现开始,逐步增加复杂性,以适应模型能力的提升。
  1. 如何构建你自己的AI智能体

观点:

  • AI智能体是能够自主感知、处理信息和采取行动的软件系统。
  • AI 智能体的学习和适应能力使其成为改变工作和生活方式的关键因素,并在多个行业中发挥重要作用。
  • 基于规则的智能体适合处理结构化、重复性的任务,而基于学习的智能体能够适应复杂场景并持续改进。
  • 现代 AI 系统通常采用混合方法,结合基于规则和基于学习的方法,以提高性能和智能化水平。
  • AI 智能体在 2025 年将达到新的成熟度和整合水平,对提升效率、增强个性化体验和推动创新至关重要。
  • 构建自己的 AI 智能体可以帮助人们更深入地理解 AI 技术,即使对于非技术人员也有无代码或低代码平台可用。
  • 通过学习构建 AI 智能体的过程,人们可以更好地准备面对 AI 技术带来的挑战和机遇。
  1. AI智能体组成初创团队

视频强调了以下几点:

  • 自动化的重要性:自动化工具如 n8n 能够释放团队成员,让他们专注于更具创造性的工作。
  • AI 作为创新驱动:OpenAI 等 AI 平台可以作为创新和业务发展的关键推动力,帮助解决复杂问题。
  • AI 与人类协作的未来:AI 工具与人类团队成员的协作将成为未来工作方式的新趋势,提高整体的工作表现和业务成果。

重点点评摘要:

OpenAI 在定义 Agent 时采取了一种过于僵硬的“二元对立”方法。实际上,目前大多数“Agentic 系统”都是 Workflows 和 Agents 的有机结合。而理想的 Agent 框架应当能够支持从“结构化工作流”向“由大模型驱动”的模式逐步过渡,并且在两者之间灵活切换。

传统的软件系统设计,大多遵循清晰的请求 - 响应模式。前端发送请求,后端接收请求,访问数据库,执行变更,再返回结果。这种模式在过去几十年里构建了无数成功的系统。而即便引入了自动化或代码生成工具,本质上,真正起作用的仍是工程师在开发阶段对代码的精细打磨。代码一旦部署到生产环境,执行的就是确定性的、静态的计算过程。

但今天,越来越多的系统开始引入模糊计算(fuzzy compute),依靠大模型进行动态推理和生成响应。以 OpenAI 为例,全球数以万计的应用正在调用其模型服务,每次调用并不是简单的 CRUD 操作,而是依赖模型的推理能力在运行时做出决策。这种变化意味着,应用程序的行为不再由静态代码全权决定,而是由不断进化的模型能力动态驱动。而且,不论你是否持续优化自己本地的代码,只要大模型在背后不断进化,调用这些模型的应用自然也会获益。

与此同时,大模型自身的进步速度远超预期。今年 OpenAI 和 Gemini 的 Deep Research 项目的成功,就是充分利用 O3 进行研究规划和推理执行的例子;随后 Bolt 和 Manus AI 也基于 Claude 做出了类似实践,而且几乎未使用复杂的工作流工程。

这些都说明,随着大模型能力越来越强,传统那套“人精细打磨、模型配合执行”的模式正在变得越来越吃力,而让模型自主推理、动态决策的系统,反而越来越有优势。

因此这也决定了我们到底是继续靠人手设计复杂的工作流,让模型在框架里跑,还是直接利用大模型越来越强的推理能力,搭建更灵活、更通用的 Agent。

Harrison Chase 更喜欢 Anthropic 的定义,认为他们的定义更精确,更技术化:

不同客户对 Agent 的认知存在差异。有些人将 Agent 视为完全自主的系统,能够长时间独立运行,灵活使用各种工具来完成复杂任务。 也有些人认为 Agent 是遵循预设规则、按照固定 Workflows 运作的系统。在 Anthropic,我们把所有这些变体都归类为 Agentic 系统,但在架构上,我们明确区分 Workflows 和 Agents:

Workflows:依靠预先编写好的代码路径,协调 LLM 和工具完成任务; Agents:由 LLM 动态推理,自主决定任务流程与工具使用,拥有更大的决策自由度。

对于 Agent 的配置,通常包括模型、指令和工具,且多在循环中执行任务。两者的主要区别在于,Workflows 更为确定性和可控,适合简单任务;而 Agents 更灵活、适合复杂的、需要动态决策的场景。

大多数情况下,简单的 Workflows 就足够用,只有在任务复杂且需要更高灵活性时,才需要构建 Agentic 系统。正如 Anthropic 提到的:“在开始构建 Agent 之前,确保你的用例确实需要它。”

LLM 本身能力存在局限性,且在上下文信息传递方面常出现错误或不完整的情况,后者在实践中更为普遍。导致 Agent 效果不佳的常见原因包括:System Message 不完整或过于简短、用户输入模糊不清、未向 LLM 提供正确的工具、工具描述不清晰、缺乏恰当的上下文信息以及工具返回的响应格式不正确。

Workflows 和 Agents 混合模式更为可靠

Agentic 框架主要分为提供高级别 Agent 封装和常见 Workflow 封装两种类型。而像 LangGraph 这样的底层编排框架,则可同时支持 Workflows、Agents 以及二者之间的混合形态,这对于构建生产级 Agentic 系统至关重要。

构建可靠 Agents 的关键挑战在于确保大模型接收到正确的上下文信息,而 Workflows 的优势在于它们能够将正确的上下文传递给给 LLMs ,可以精确地决定数据如何流动。

构建应用时,需要在“可预测性 vs 自主性”和“低门槛 vs 高上限”之间找到平衡。当系统越偏向 Agentic,其可预测性就会越低。Workflow 框架提供了高上限,但门槛也高,但需要自己编写很多 Agent 的逻辑。Agent 框架则是低门槛,但上限也低——虽然容易上手,但不足以应对复杂的用例。像 LangGraph 这样的框架,目标是兼具低门槛(提供内置的 Agent 封装,方便快速启动)和高上限(提供低层功能,支持实现高级用例)。

许多 Agent 框架提供的 Agent 封装(如包含 prompt、model 和 tools 的类)虽然易于上手,但可能限制对 LLM 输入输出的控制,从而影响可靠性,早期的 LangChain 也曾面临类似问题,“它们提供的封装反而成了障碍”。

在实际应用中,Agentic 系统往往并非由单一 Agent 组成,而是由多个 Agent 协作完成。在多 Agent 系统中,通信机制至关重要。因为构建可靠 Agent 的核心,依然是确保 LLM 能接收到正确、充分的上下文信息。为了实现高效通信,常见的方法包括「Handoffs」(交接)等模式,像 Agents SDK 就提供了这种风格的封装。

但有时候,这些 Agents 之间最好的通讯方式是 Workflows。而 Workflows 和 Agents 的混合模式,往往能带来最好的可靠性,因此 Agentic 系统往往是 Workflows 与 Agents 的结合体。如 Anthropic 所总结的:“这些构建模块并非一成不变的指令,而是可以根据具体用例自由调整和组合的常见模式”。

而 Agent 框架则通过提供统一封装、记忆管理、人机协作、流式处理、可观测性和容错机制,大幅降低构建可靠 Agentic 系统的复杂度,但前提是开发者需理解其底层机制

是不是都会变成 Agents?

Chase 认为,未来所有应用都将由简单的、能够调用工具的 Agents 主导的观点是值得商榷的。虽然工具调用 Agents 的性能在提升,但“能够控制输入给 LLM 的内容依然会非常重要(垃圾进,垃圾出)”,简单的 Agent 循环并不能覆盖所有应用需求。

实际上,对于很多企业级应用来说,任务本身具有大量细微差异,难以靠单一、通用的 Agent 处理。“每家公司的客户支持体验都足够独特,以至于一个通用 Agent 无法达到所需的性能”,这也是 Sierra 选择构建客户支持 Agent 平台而非单一 Agent 的原因。

OpenAI 的 Deep Research 项目是 Agent 的一个好例子,这同时也证明了针对特定任务训练的模型可以只用简单 Agent 循环。它的成功前提是:“你能针对你的特定任务训练一个 SOTA 模型”,而当前只有大型模型实验室能够做到这一点。对于大多数初创公司或企业用户来说,这并不现实。

在通用任务领域,Claude code 和 OpenAI 的 Codex CLI 是两个代码 Agents 的例子,它们都使用了简单的工具调用循环。但 Chase 认为,其基础模型在训练时使用了大量的编程数据和任务,这些领域数据的确切形态也影响巨大。正如 Chase 引用 Ben Hylak 的观察:

当前的模型已经不再擅长在 Cursor 中工作了。

它们的优化方向主要是针对终端环境,这也是为什么 3.7 和 o3 在 Cursor 里体验较差,但在其他环境中表现出色的原因。

因此,总结来看,简单 Agents 在特定条件下有效,但仅限于数据和任务极为匹配的场景。对绝大多数应用而言,Workflows 仍然不可或缺,且生产环境中的 Agentic 系统将是 Workflows 和 Agents 的结合。

OpenAI 的观点哪里不对?

Chase 指出,OpenAI 在讨论 Agentic 框架时,其观点建立在一些错误的二分法之上,混淆了“Agentic 框架”的不同维度,从而夸大了他们单一封装的价值。归根结底,他们没有准确把握生产级 Agentic 系统的核心挑战,也没有清晰认识到框架真正应该提供的价值——即一个可靠、透明的编排层,能够让开发者精确控制传递给 LLM 的上下文,同时无缝处理持久化、容错、Human-in-the-loop 等生产关键问题。

他认为 OpenAI 的论述中存在以下几方面的问题(除去一些王婆卖瓜的观点):

  1. OpenAI 将“声明式 vs 非声明式”与“是否需要编排框架”混为一谈

LangGraph 并不是完全声明式的 —— 但它已经足够声明式了,主要的问题是,“非声明式”这个说法承担了太多含义,而且具有误导性。通常,当人们批评声明式框架时,他们倾向于更偏好命令式框架。“但 Agents SDK 并不是一个命令式框架,它是一种封装”。

  1. 错误归因 Workflows 的局限性

OpenAI 声称:“随着 Workflows 变得越来越动态和复杂,这种方法会迅速变得笨拙和具有挑战性。”

但实际上,这与声明式或非声明式无关,而是 Workflows 和 Agents 的应用场景问题。你完全可以用声明式的图来表达 Agents SDK 中的 Agent 逻辑,而且这个图的动态性和灵活性,和 Agents SDK 本身是一样的。

更重要的是,大部分应用场景下,Workflows 足够简单直接,OpenAI 和 Anthropic 自己也承认这一点。因此,我们应该尽可能使用 Workflows,大多数 Agentic 系统都是两者的结合。只有在确实需要时才引入更复杂的 Agent,但不要什么都用 Agent。

  1. 低估了 Agents SDK 本身的学习复杂度

OpenAI 暗示使用框架会引入新的领域特定语言,增加学习成本。但实际上:“Agents SDK 本身就是一种新的封装,它也需要学习,而且学习曲线更陡峭。” 特别是在确保正确上下文传递这一关键点上,Agents SDK 比 LangGraph 反而增加了开发难度。

  1. 关于“灵活性”的错误陈述

OpenAI 宣称 Agents SDK 更灵活,但实际情况是:“用 Agents SDK 能做到的事情,只是 LangGraph 能力范围的 10%。” LangGraph 提供了更通用、更强大的编排能力,而不是简单封装特定模式。

  1. 关于“实现更动态和适应性强的 Agent 编排”的误导

OpenAI 认为 Agents SDK 可以实现更动态、更适应性的编排,但这本质上还是一个“Workflows vs Agents”的设计权衡问题。

最后,Harrison 在他的文章中还做了一件很酷的事情,那就是他列了一个表格,把现在市面上所有相关的 Agent 框架都拿出来做了个全面的比较。

对于想要深入了解和选择 Agent 框架的开发者来说,它提供了一个结构化的、易于理解的方式来比较不同框架的能力,帮助开发者做出更明智的决策,并认识到优秀 Agent 框架应该具备的关键特性。

AI 2027 超人类人工智能

视频:AGI或于2027年来临

网站:https://ai-2027.com/

AI 2027 的项目,由前 OpenAI 的人牵头,琢磨着人工智能这事儿。他们算计着,大概 2027 年前后,机器脑子就可能比人脑子转得快了,全面超越,叫“超人类人工智能”。这动静,比工业革命还大。

他们画了个路线图:先是编码超人,再是研究超人,最后是超级智能的研究者,一步步快得很。还提了个叫 Agent-4 的模型,厉害得很,能加速科技进步,但也藏着风险,比如被人拿去做坏事,或者机器自己失控。

这项目认定AI牵扯到国家间的竞争,特别是中美。别老把技术往政治上扯,得用更平和、客观的眼光看未来。总的来说,就是提醒大家,AI 这趟车快来了,有好有坏,得早做准备。

斯坦福大学2025年AI指数报告

网址:斯坦福大学2025年AI指数报告 - 2025-ai-index-report

重点解读:

2025 年人工智能指数报告由斯坦福 HAI 编制,旨在为研究人员、政策制定者和公众提供关于人工智能领域的最新数据和趋势。报告包括全球人工智能研究的统计分析、人工智能技术应用的案例研究、以及人工智能带来的社会影响。报告强调了人工智能在伦理、隐私和安全性方面的重要性,并对未来的发展进行了展望。

观点:

  • 人工智能领域的发展速度:报告指出,人工智能技术的发展速度远快于人们通常预期。
  • 人工智能的研究热点:报告分析了人工智能研究的热点领域,如深度学习、自然语言处理等。
  • 人工智能的应用和影响:报告通过案例研究展示了人工智能技术在医疗、交通、金融等多个行业的应用。
  • 人工智能的伦理和政策问题:报告强调了人工智能技术应用中的伦理和政策挑战,包括隐私、安全性和公平性等问题。
  • 人工智能的未来趋势:报告提供了对人工智能未来发展趋势的预测,包括技术创新、政策制定和社会影响等方面。

核心发现与趋势​:

  1. 技术性能显著提升
  • 基准测试突破​:2023年引入的MMMU、GPQA、SWE-bench等复杂测试中,AI系统性能一年内分别提升18.8%、48.9%和67.3%,视频生成和有限时间编程任务表现接近或超越人类。
  • 复杂推理局限性​:AI虽能解决国际数学奥赛题,但在PlanBench等逻辑推理任务中仍不可靠,高精度场景应用受限。
  1. AI深度融入日常生活
  • 医疗应用​:FDA批准的AI医疗设备从2015年6个增至2023年223个。
  • 自动驾驶规模化​:Waymo每周提供超15万次无人驾驶服务,百度Apollo Go在中国多城市推出低价自动驾驶出租车。
  1. 商业投资与生产力提升
  • 投资格局​:2024年美国私人AI投资达1091亿美元(中国93亿,英国45亿),生成式AI投资339亿美元(年增18.7%)。
  • 企业普及​:78%企业2024年采用AI(2023年55%),研究证实AI提升生产力并缩小技能差距。
  1. 中美技术竞争与全球化
  • 模型开发​:美国主导数量(40个前沿模型),中国模型性能差距缩至近持平(MMLU、HumanEval测试),中国领跑论文和专利。
  • 全球化趋势​:中东、拉美、东南亚推出重要模型。
  1. 负责任AI的挑战与进展
  • 风险与评估​:AI事故增加,企业伦理评估不足;新工具(HELM Safety、FACTS)推动安全评估。
  • 政策加速​:OECD、欧盟、联合国等发布治理框架,强调透明度和可信度。
  1. 公众态度分化与转变
  • 区域差异​:中国(83%)、印尼(80%)乐观,加拿大(40%)、美国(39%)悲观。德国、法国等原悲观地区乐观度显著上升(+10%)。
  1. 技术成本降低
  • 效率革命​:GPT-3.5级模型推理成本两年降280倍,硬件成本年降30%,能效年增40%;开源模型性能差距缩至1.7%。
  1. 政府监管与战略投资
  • 法规加强​:2024年美国发布59项AI法规(2023年29项),全球75国立法提及AI次数年增21.3%。
  • 战略投资​:沙特“超越计划”(1000亿美元)、中国半导体基金(475亿)、法国AI计划(1090亿欧元)。
  1. 教育与人才培养进展
  • 教育普及​:全球2/3国家推行K-12计算机教育(2019年翻倍),美国计算机本科毕业生十年增22%。
  • 资源不均​:非洲多国受限于基础设施,美国半数教师缺乏AI教学能力。
  1. 产业主导与竞争加剧
  • 行业垄断​:2024年90%前沿模型来自企业(2023年60%),学术机构主导高引研究。
  • 模型规模化​:训练算力每5个月翻一番,数据集每8个月翻一番,而能耗每年增长40%;模型性能差距缩至5.4%(前两名仅差0.7%)。
  1. 科学领域的里程碑
  • 诺奖与图灵奖​:物理学奖(深度学习基础)、化学奖(AI蛋白质折叠应用)、图灵奖(强化学习贡献)印证AI科学影响力。
  1. 复杂推理仍是挑战
  • 逻辑缺陷​:AI在PlanBench等需严格逻辑的任务中表现不稳定,高精度场景应用受限。

How I use LLMs

一些Andrej Karpathy大神的视频合集。

视频:

作者Youtube主页:https://www.youtube.com/@AndrejKarpathy

作者博客:https://karpathy.ai/

作者介绍

安德烈·卡帕斯(Andrej Karpathy)是一位在人工智能领域,尤其在深度学习和计算机视觉方面做出卓越贡献的计算机科学家。以下是他的简要介绍:

背景与教育:

他拥有斯坦福大学的博士学位,师从知名人工智能学者李飞飞。

他的学术背景为他在人工智能领域的深入研究奠定了坚实的基础。

职业生涯:

他曾在OpenAI担任研究科学家,参与了多项前沿的人工智能项目。

他曾担任特斯拉人工智能和自动驾驶视觉总监,负责推动自动驾驶技术的视觉感知发展。

近期他创立了Eureka Labs,一个人工智能原生教育平台。

主要贡献:

他因其在深度学习教育方面的贡献而广受认可,特别是他创建的斯坦福大学CS231n课程,对深度学习的普及产生了深远影响。

他在计算机视觉和深度学习领域的科研成果,推动了相关技术的发展。

其他方面:

他以清晰易懂的方式解释复杂的人工智能概念而闻名,通过他的在线资源和社交媒体,他向广大受众分享了人工智能的知识。

总而言之,安德烈·卡帕斯是一位在人工智能领域具有重要影响力的学者和实践者,他的工作不仅推动了技术进步,也促进了人工智能知识的传播。

How I use LLMs视频总结摘要:

主要介绍了如何使用大型语言模型(如 GPT-3)进行实际应用,包括聊天、解决问题、编程、数据分析和图表生成等,并讨论了不同模型的特点和使用场景。

内容涵盖了从基础到高级的大型语言模型的使用方法。首先,介绍了 ChatGPT 的基本交互方式,即通过文本输入和输出进行对话。随后,详细讨论了不同的 LLMs 服务提供商,如 OpenAI 的 ChatGPT、Anthropic 的 Claude、Google 和 Meta 的相应产品,以及它们的定价和功能等级。此外,介绍了如何通过搜索引擎集成来获取最新信息,以及如何使用深度研究功能来处理复杂问题,例如医学研究和产品比较。网页还展示了如何通过文件上传功能让 LLMs 分析和解释文档,如书籍和科学论文。

在编程领域,LLMs 被展示为能够编写和执行代码的工具,例如进行数据分析和创建交互式应用程序。网页还强调了 LLMs 在编程和软件开发中的实际应用,包括如何使用专门的代码编辑器插件来提高开发效率。最后,网页探讨了 LLMs 在未来可能带来的变革,以及如何通过这些工具来增强人类的认知和决策能力。

观点:

  1. 大型语言模型是强大的工具:LLMs 能够处理各种任务,包括回答问题、编写代码和解释文档。
  2. 不同服务提供商的 LLMs 有特定的优势和限制:用户应根据自己的需求选择合适的服务和级别。
  3. 搜索引擎集成和深度研究功能提高了 LLMs 处理实时和复杂问题的能力:这使得 LLMs 能够超越其训练数据的局限。
  4. LLMs 的文件分析能力使得它们能够辅助学习和研究:通过上传文档,LLMs 可以帮助用户理解和总结内容。
  5. LLMs 在编程和软件开发中的应用将极大地提高开发效率:它们能够自动化代码编写和调试过程。
  6. LLMs 的发展可能会引领人类认知和决策方式的变革:通过与 LLMs 的协作,人类可以处理更复杂的问题并做出更好的决策。

大语言模型简单说

3Blue1Brown Large Language Models explained briefly

LLM是一个复杂的数学函数,它能预测任何文本的下一个单词(准确说是token,即词元)。

下一个token是从一个概率分布的token序列中选取一个作为输出token。循环往复直到生成完整个输出结果。

大模型为什么会有预测下一个输出token序列的能力?

大模型主要通过学习大量的文本数据,掌握了语言的规律和模式。

  • 类似于人类通过阅读大量书籍来积累知识和理解语言规律。
  • 训练数据包括互联网文本、书籍、代码等各类数据。

是通过什么策略选取序列中的某个token?

LLM在选择下一个token时,有多种采样策略,每种策略都有其特点和适用场景:

  1. 贪婪解码 (Greedy Decoding)

    • 每次都选择概率最高的token(温度为0)
    • 优点:输出最确定性的结果
    • 缺点:容易产生重复、单调的文本
    • 适用:需要高度确定性的场景,如代码生成
  2. 温度采样 (Temperature Sampling)

    • 通过温度参数调节概率分布
    • 温度越高(>1),分布越平坦,生成更具创造性但可能不够连贯
    • 温度越低(<1),越倾向于选择高概率token,生成更保守但更连贯
    • 温度=0时等同于贪婪解码
    • 适用:需要控制输出创造性程度的场景
  3. Top-K 采样

    • 只从概率最高的K个token中随机选择
    • 可以避免选到概率极低的无关token
    • K值的选择会影响输出的多样性
    • 适用:需要在保持质量的同时增加一定随机性的场景
  4. Top-P (Nucleus) 采样

    • 选择累积概率达到P的最小token集合
    • 比Top-K更灵活,可以自适应不同场景
    • 通常P设置在0.9到0.95之间
    • 适用:需要平衡质量和多样性的通用场景

实际应用中,这些策略常常会组合使用。例如,可以同时设置合适的温度参数和使用Top-P采样,以在文本的确定性和创造性之间取得良好的平衡。这也解释了为什么使用相同的提示词,每次可能会得到略有不同的回答。

大模型的行为具体指:

  1. Token预测行为

    • 对下一个token的概率分布预测
    • 在不同上下文下的token选择倾向
    • 生成文本的连贯性和质量
  2. 推理能力表现

    • 逻辑推理的准确性
    • 知识关联和利用能力
    • 问题解决的策略选择
  3. 语言理解和生成

    • 对输入文本的理解准确度
    • 生成文本的语法正确性
    • 语义表达的准确性和自然度
    • 多语言处理能力
  4. 任务适应性

    • 对不同类型任务的处理能力
    • 指令遵循程度
    • 上下文学习能力
  5. 输出特征

    • 创造性程度
    • 回答的确定性
    • 输出的一致性
    • 生成内容的多样性

这些行为都受模型参数影响,通过调整参数可以改变:

  • 模型对不同token的偏好程度
  • 生成文本的风格和特点
  • 对特定任务的处理能力
  • 输出的可控性和稳定性

大模型的行为受什么影响?

大模型的行为由许多不同的连续值(通常称为参数或权重)决定,改变这些参数将改变预测的token序列的概率。

调整参数的主要算法包括:

  1. 反向传播算法 (Backpropagation)
    • 最基础和常用的参数优化方法
    • 通过计算损失函数对参数的梯度来更新参数
    • 适用于大多数深度学习模型训练

反向传播算法(back propagation)通过调整网络输入的权重系数来降低实际输出与标记数据之间的误差

  1. 随机梯度下降 (SGD) 及其变体

    • SGD:每次使用小批量数据更新参数
    • Adam:自适应学习率的优化器
    • AdaGrad:针对不同参数自适应学习率
    • RMSprop:解决AdaGrad学习率递减过快的问题
  2. 进化算法 (Evolutionary Algorithms)

    • 遗传算法:模拟自然选择过程
    • 粒子群优化:模拟群体行为
    • 适用于特定场景的参数优化
  3. 强化学习方法

    • PPO (Proximal Policy Optimization)
    • RLHF (Reinforcement Learning from Human Feedback)
    • 通过奖励机制优化模型行为
  4. 二阶优化方法

    • Newton法
    • BFGS及其变体
    • 考虑了Hessian矩阵信息,收敛更快但计算成本高
  5. 元学习 (Meta-learning)

    • MAML (Model-Agnostic Meta-Learning)
    • 学习如何更好地学习和适应新任务
  6. 蒸馏技术 (Knowledge Distillation)

    • 通过教师模型指导学生模型的参数优化
    • 可用于模型压缩和知识迁移

每种算法都有其适用场景和特点,实践中常常会组合使用多种方法来获得最佳效果。选择合适的优化算法需要考虑:

  • 计算资源限制
  • 数据规模和特点
  • 模型架构
  • 具体任务需求

Transformer:大语言模型的底层支撑

在理解了LLM如何预测token、如何选择输出以及表现出的各种行为后,我们需要知道:是什么样的技术架构支撑起了这些强大的能力?答案就是Transformer。

为什么Transformer能支撑起大模型的预测能力?

  1. 并行的token处理能力

    • 传统模型像人用手指按顺序读文字,一次只能处理一个token
    • Transformer像用眼睛看文章,可以同时处理所有token
    • 这种并行能力让模型能更快地学习文本规律,提升预测准确性
  2. 更智能的token选择机制

    • 传统模型在选择下一个token时,主要依赖于最近的上下文
    • Transformer的注意力机制让模型可以自由关注任何相关token
    • 这就是为什么前面讲到的各种采样策略(贪婪解码、Top-K等)能如此有效

Transformer如何影响模型的行为表现?

  1. 对于Token预测行为

    • 注意力机制让模型能够捕捉到长距离的token关联
    • 并行处理提升了预测速度和准确性
    • 多头注意力机制让模型能从多个角度理解token间关系
  2. 对于推理能力

    • 自注意力层能够建立复杂的逻辑关联
    • 深层的网络结构支持多步推理
    • 残差连接确保信息能够有效传递
  3. 对于语言理解和生成

    • 能同时处理上下文中的所有信息
    • 支持双向理解,而不是单向处理
    • 位置编码让模型理解token的相对位置关系
  4. 对于任务适应性

    • 统一的架构可以处理各种NLP任务
    • 强大的表达能力支持多任务学习
    • 可扩展性让模型能够不断增长规模
  5. 对于输出特征

    • 灵活的注意力分布支持创造性生成
    • 多层结构保证输出的连贯性
    • 概率化的输出机制提供可控的随机性

为什么说它是划时代的?

Transformer就像是AI领域的"蒸汽机",它不仅提供了更好的解决方案,更重要的是开启了大语言模型的新时代:

  • 让模型规模可以突破到数千亿参数
  • 使训练速度提升了几十倍甚至上百倍
  • 为GPT、BERT等现代大模型铺平了道路
  • 带来了AI领域的"工业革命"

现在,当我们讨论大模型的各种能力时,都离不开Transformer这个底层架构。它就像是现代AI的"操作系统",为上层的各种行为和能力提供了基础支持。无论是token预测、知识推理,还是多语言处理,都是建立在Transformer的创新机制之上的。

大数据 + 大模型 → 能力增强

Scaling Law指的是模型的性能随着系统规模(例如数据量D、模型参数量N、计算资源C等)的变化而变化的规律。可以看做大模型的摩尔定律

图片来自视频:AI can't cross this line and we don't know why.

  1. Kaplan-McCandlish 扩展法则

2020 年,OpenAI 团队的 Jared Kaplan 和 Sam McCandlish 等人首次探究了神经网络的性能与数据规模 D 以及模型规模 N 之间的函数关系。他们在不同规模的数据集(从 2200 万到 230 亿个 Token)和不同规模的模型下(从 768 到 15 亿 个参数)进行实验,实验结果表明,模型的性能与模型以及数据规模这两个因素均高度正相关。然而,在模型规模相同的情况下,模型的具体架构对其性能的影响相对较小。因此,扩大模型规模和丰富数据集成为了提升大型模型性能的两个关键策略。

如果计算预算增加,为了达到最优模型性能,数据集的规模 D 以及模型规模 N 都应同步增加。但是模型规模的增长速度应该略快于数据规模的增长速度。如果总计算预算增加了 10 倍,模型规模应扩大约 5.37 倍,而数据规模应扩大约 1.86 倍,以实现模型的最佳性能。(这个有争议,后来别的论文并不认同。)

OpenAI 提出的这一扩展法则不仅定量地揭示了数据规模和模型规模对模型能力的重要影响,还指出了在模型规模上的投入应当略高于数据规模上的投入。这一发现不仅为理解语言模型的内在工作机制提供了新的见解,也为如何高效地训练这些模型提供了宝贵的指导意见。

  1. Chinchilla 扩展法则

谷歌旗下 DeepMind 团队对“模型规模的增长速度应该略高于数据规模的增长速度”这一观点提出了不同的看法。在 2022 年,他们对更大范围的模型规模(从 7000 万到 1600 亿个参数)以及数据规模(从 50 亿到 5000 亿个 Token)进行了深入的实验研究,并据此提出了 Chinchilla 扩展法则。

DeepMind 同样探索了计算预算的最优分配问题,最终得出数据集规模 D 与模 型规模 N 的最优配置应为,数据集量 D 与 模型规模 N 几乎同等重要,如果总计算预算增加了 10 倍,那么模型规模以及数据规模都应当扩大约 3.16 倍。谷歌后续在 2023 年 5 月发布的 PaLM 2 的技术报告中也再次证实了这一观点,进一步强调了数据规模在提升模型性能中的重要性

此外,Chinchilla 扩展法则进一步提出,理想的数据集大小应当是模型规模的 20 倍。例如,对于一个 7B(70 亿参数)的模型,最理想的训练数据集大小应为 140B(1400 亿)个 Token。但先前很多模型的预训练数据量并不够,例如 OpenAI 的 GPT-3 模型的最大版本有 1750 亿参数,却只用了 3000 亿 Token 进行训练; 同样,微软的 MT-NLG 模型拥有 5300 亿参数,而训练用的 Token 数量却只有 2700 亿。因此,DeepMind 推出了数据规模 20 倍于模型规模的 Chinchilla 模型(700 亿参数,1.4 万亿 Token),最终在性能上取得了显著突破。

DeepMind 提出的 Chinchilla 扩展法则是对 OpenAI 先前研究的补充和优化,强调了数据规模在提升模型性能中的重要性,指出模型规模和数据规模应该以相同的比例增加,开创了大语言模型发展的一个新方向:不再单纯追求模型规模的增加,而是优化模型规模与数据规模的比例。(备注:从Gemini2和2.5的强大性能这个结果看来,DeepMind的Chinchilla扩展法则看起来更为合理,当然这个领域一直在研究和突破,还有其他更为合理的量化关系。)

大数据 + 大模型 → 能力扩展

如图所示,模型训练数据规模以及参数数量的不断提升,不仅带来了学习能力的稳步增强,还为大模型“解锁”了一系列新的能力,例如上下文学习能力常识推理能力数学运算能力代码生成能力等。值得注意的是,这些新能力并非通过在特定下游任务上通过训练获得,而是随着模型复杂度的提升凭空自然涌现。这些能力因此被称为大语言模型的涌现能力(Emergent Abilities)

涌现能力往往具有突变性和不可预见性。这些能力也并没有一个平滑的、逐渐积累的过程,而是在模型达到一定规模和复杂度后,很突然地显现。(备注:自然界有很多涌现现象,我们人类目前还无法很好地解释。)

这些涌现能力使得大语言模型可以在不进行专项训练的前提下完成各类任务,但同时也带来了诸多挑战,包括模型的可解释性、信息安全与隐私、伦理和公平性问题,以及对计算资源的巨大需求等。解决这些挑战需要在技术、法律和社会层面进行综合考量,以确保大语言模型的健康发展和可持续进步。

Transformer大模型架构

在语言模型的发展历程中,Transformer 框架的问世代表着一个划时代的转折点。其独特的自注意力(Self-Attention)机制极大地提升了模型对序列数据的处理能力,在捕捉长距离依赖关系方面表现尤为出色。此外,Transformer 框架对并行计算的支持极大地加速了模型的训练过程。当前,绝大多数大语言模型均以 Transformer 框架为核心,并进一步演化出了三种经典架构,分别是 Encoder-only 架构,Decoder-only 架构以及 Encoder-Decoder 架构。

架构的历史演变:

随着时间的流逝,我们见证了上述三种架构的演变和流行趋势的更替。在大语言模型的早期发展阶段(2018 年左右),BERT 和 GPT-1 分别作为 Encoder-only 和 Decoder-only 架构的代表几乎同时出现。但受限于当时的模型参数规模,BERT 强大的上下文理解能力比 GPT-1 初阶的文本生成能力更为亮眼。使得 Encoder-only 架构得到了更为广泛的探索和应用,而 Decoder-only 架构吸引得关注则相对关注较少。 然而,随着用户对机器翻译等生成任务需求的增加,缺乏解码组件的 Encoder-only 架构逐渐无法满足直接生成的需求,因而被逐渐“冷落”。同时,2019 年末诞生了一众 Encoder-Decoder 架构的模型,由于其能够有效处理序列到序列(Sequence toSequence)的生成任务,逐渐成为主流。到了 2019 年末,随着算力资源的急速发展,研究者开始寻求不断提升参数量来激发更强的生成能力。得益于其参数易扩展性,Decoder-only 架构下的模型参数量急剧扩充,文本生成能力大幅提升。自 2021 年之后,在 GPT-3 等模型的推动下,Decoder-only 架构开始占据主流,甚至逐渐主导了大语言模型的发展。尽管如此,Encoder-Decoder 架构也仍然活跃在开源社区中,不断被探索和改进。至于 Encoder-only 架构,在 BERT 带来最初的爆炸性增长之后,其关注度有所下降,但也仍然在部分判别任务中发挥着重要作用,例如文本分类、情感分析、命名实体识别等。总的来讲,大语言模型的主流架构经历了从 Encoder-only 到 Encoder-Decoder,再到 Decoder-only 的发展过程,而引发这种更迭趋势的原因可能是模型本身生成能力以及计算效率上的差异。 Encoder-only 架构专注于对输入数据进行深入的表示和理解,这使得它在理解型任务中表现出色。但当涉及到文本生成任务时,其生成能力则不尽如人意。由于缺少专门用于生成输出的组件,它需要通过迭代进行掩码预测来生成文本,这需要模型进行多次前向传播以逐步填充文本中的掩码部分,从而导致计算资源的大量消耗。在当今对人工智能内容生成(AIGC)需求不断增长的背景下,这种架构的应用受到了一定的限制。而 Encoder-Decoder 架构使用编码器来处理输入,并使用解码器来生成输出,能够处理复杂的序列到序列任务。但相较于后续崛起的 Decoder-only 架构,其模型参数规模更为庞大,随之带来的是显著增加的计算复杂度。特别是在处理长序列数据时,编码器和解码器均面临沉重的计算负担,这在一定程度上限制了模型的应用效率。相比之下,Decoder-only 架构通过仅使用解码器来优化计算流程,显著简化了模型结构。它采用自回归生成策略,逐步构建输出文本,每一步的生成过程仅需考虑已经生成的文本部分,而不是整个输入序列。这样的设计减少了模型的参数量和计算需求,提高了模型本身的可扩展性,因此非常适合大量文本生成的场景在 AIGC 的应用场景下得到了广泛的应用

这三种架构的发展不仅推动了自然语言处理技术的进步,也为各行各业带来了深远的影响。随着研究的深入,未来的语言模型有望在更具优势的架构下变得更加强大和灵活,并在更多领域发挥作用。

Transformer主要思想:

Token分词向量化

  • 无统一公式​:Token数量完全依赖模型的分词规则。
  • 中英文差异​:中文通常以单字或子词为单位,英文按子词拆分。
  • 实践建议​:直接调用模型的分词器(Tokenizer)进行精确统计。

在线工具​:

语言模型无法直接理解文本。在 Prompt 进入大模型之前,需要将它拆分成一个 Token 的序列,其中 Token 是承载语义的最小单元,由 Token ID 唯一标识。将文本转化为 Token 的过程称之为分词(Tokenization),如图所示,对于“小浣熊吃干脆面”这样一句话,经过分词处理之后,会变成一个 Token 序列,每个 Token 有对应的 Token ID。

分词过程颇具挑战性,我们需要精心设计分词方法。为实现有效分词,首先需构建一个包含大语言模型所能识别的所有 Token 的词表,并依据该词表进行句子拆分。在构建大语言模型的词表时,分词器依赖于分词算法,如 BBPE、BPE和 WordPiece等,这些算法通过分析语料库中的词频等信息来划分 Token。

每个大语言模型都有自己的分词器,分词器维护一个词表,能够对文本进行分词。分词器的质量对模型的性能有着直接的影响。一个优秀的分词器不仅能显著提升模型对文本的理解能力,还能够提高模型的处理速度,减少计算资源的消耗。

在常用的开源模型中,不同模型采用了不同的分词器,这些分词器具有各自的特点和性能。它们的质量受到多种因素的影响,包括词表的大小、分词的效率等属性。

关于中文分词:

像 DeepSeek、Qwen 这类中文开源大语言模型,对中文分词进行了优化,平均每个 Token 能够表示 1.3 个字(每个字仅需 0.7 个 Token 即可表示),一些常用词语和成语甚至可以直接用一个 Token 来表示。相比之下,以英文为主要语料的模型,如 GPT-4、LLaMA 系列,对中文的支持度较弱,分词效率不高。

关于 Token 向量化:

在完成分词之后,这些 Token 随后会经过模型的嵌入矩阵(Embedding Matrix)处理,转化为固定大小的表征向量。这些向量序列被直接输入到模型中,供模型理解和处理。在模型生成阶段,模型会根据输入的向量序列计算出词表中每个词的概率分布。模型从这些概率分布中选择并输出对应的 Token,这些 Token 再被转换为相应的文本内容。

总结:

通过分词技术把文本拆分成 Token,再把这些 Token 转换成特征向量,这样模型就能用数字的方式理解和表示文本的意思,从而更好地分析和学习各种语言结构,无论是简单的词语还是复杂的句子和语境。

Prompt Engineering提示工程

NLP预测范式:

  • 传统NLP范式:预训练-微调-预测
  • LLM时代的新范式:预训练-提示预测

提示工程的前置条件:

随着模型训练数据规模和参数数量的持续增长,大语言模型突破了泛化瓶颈,并涌现出了强大的指令跟随能力。泛化能力的增强使得模型能够处理和理解多种未知任务,而指令跟随能力的提升则确保了模型能够准确响应人类的指令。两种能力的结合,使得我们能够通过精心编写的指令输入,即 Prompt,来引导模型适应各种下游任务,从而避免了传统微调方法所带来的高昂计算成本。

规范定义:

Prompt 工程(Prompt Engineering),又称提示工程,是指设计和优化用于与生成式人工智能模型交互的 Prompt 的过程。这种技术的核心在于,将新任务通过Prompt 构建为模型在预训练阶段已经熟悉的形式,利用模型固有的泛化能力来执行新的任务,而无需在额外的特定任务上进行训练。Prompt 工程的成功依赖于对预训练模型的深入理解,以及对任务需求的精确把握。通过构造合适的 Prompt 输入给大语言模型,大语言模型能够帮助我们完成各种任务。

提示工程的意义:

Prompt 工程提供了一种高效且灵活的途径来执行自然语言处理任务。它允许我们无需对模型进行微调,便能有效地完成既定任务,避免微调带来的巨大开销。通过精心设计的 Prompt,我们能够激发大型语言模型的内在潜力,使其在垂域任务数据增强智能代理等多个领域发挥出卓越的性能。

Prompt 的四个基本元素:

任务说明上下文问题输出格式,对于大语言模型生成的效果具有显著影响。这些元素的精心设计和组合构成了 Prompt 工程的核心。

  • 任务说明——向模型明确提出具体的任务要求。任务说明应当清晰、直接,并尽可能详细地描述期望模型完成的任务。
  • 上下文——向模型提供的任务相关背景信息,用以增强其对任务的理解以及提供解决任务的思路。上下文可以包括特定的知识前提、目标受众的背景、相关任务的示例,或任何有助于模型更好地理解任务的信息。
  • 问题——向模型描述用户的具体问题或需要处理的信息。这部分应直接涉及用户的查询或任务,为模型提供一个明确的起点。问题可以是显式的提问,也可以是隐式的陈述句,用以表达用户的潜在疑问。
  • 输出格式——期望模型给出的回答的展示形式。这包括输出的格式,以及任何特定的细节要求,如简洁性或详细程度。例如,可以指示模型以 JSON 格式输出结果。