作者反驳没人懂大模型的流行说法,拆解 LLM 的可检验机制
Yes I Understand How LLMs Work
Andrew Kemendo 在博文中反驳了没人理解大语言模型的流行说法,主张 LLM 是由数学函数和软件构成的机械系统,每个运算步骤都可被检查和修改。
原文逐层拆解了 LLM 的可检验机制,读者可以据此区分媒体叙事与从业者视角下的技术现实。
我不断听到有人反复声称"没人知道大语言模型是如何工作的",我想最终终结这种说法。
这不仅仅是来自从未训练过模型的人的说法。MIT Technology Review 刊登了一篇标题为《没人知道 AI 是如何工作的》的文章。TIME 刊登了另一篇标题为《没有人真正知道 AI 系统是如何工作的》的文章。WIRED 将神经网络描述为即使对它们的创造者来说也是神秘的,而 IBM 在其教育材料中也重复了类似的说法。这些都是主要出版物,把当前可解释性研究的局限呈现得仿佛它们确立了人类理解的边界。事实并非如此。
我理解大语言模型是如何工作的。成千上万其他花了多年时间研究、设计、训练和实现它们的人也理解。你不理解它们是如何工作的,或是你个人不认识任何理解它们的人,并不意味着没人理解它们。
大语言模型是机械系统。它们由人类设计、实现,并在人类工程化的计算机上执行的数学函数和软件构建而成。这个过程中的任何地方都不涉及魔法。我们知道信息如何进入系统,如何被转换,参数如何在训练过程中被调整,以及这些参数如何被用来计算输出。
考虑一下当你向语言模型提问时实际发生了什么。
你的符号(自然文本)被转换成另一种符号格式(tokens)中不同类型的代表性数据,这些数据以数值形式呈现给计算开关,并通过一系列数学运算进行传递。在"transformer"架构中,这些运算将多个数学函数序列化:矩阵乘法、注意力计算、归一化和非线性变换。得到的数值,或称"激活",会通过这一过程的连续版本(称为"层")传递,直到模型产生关于可能下一个 token 的分布,然后根据其解码过程从中选择输出。在训练过程中,模型的预测使用损失函数进行评估,有时结合来自人类或其他软件的标签或反馈,得到的误差信号被用来调整其参数。对已部署模型的普通查询不会自动更改这些参数。
每一种这样的运算都可以被检查。如果你有访问模型的权限和合适的工具,我们可以在每一层记录激活,检查单个注意力头,检查权重和偏置,并追踪产生特定输出的数值计算过程。我们可以修改组件、移除它们、替换它们,并观察发生了什么变化。
此外,我们对这些过程的理解已经足够深入,人们不断对其进行改进。我们开发新架构,修改训练流程,识别计算瓶颈,改变注意力的计算方式,并刻意改变模型行为。这些改进之所以可能,恰恰是因为我们理解这些系统如何工作,并能够研究我们尚未理解的部分。
我亲自训练过模型,亲手编写过学习算法,并且将职业生涯的大部分时间都投入到了人工智能领域。我还撰写过一篇关于人工智能历史与机制的解释文章,供那些希望了解这些系统起源的人阅读。我并不理解每个模型的方方面面,任何人也都做不到。这从来都不是我们用来判断一个人是否理解某项技术的标准。
已经有完整的研究项目专门致力于这项工作。Transformer Circuits 研究项目研究神经网络的内部计算机制,而对电路追踪(circuit tracing)的研究则开发出用于识别和测试负责特定模型行为的通路的方法。这些工作正在进行中,你可以自己查阅所有细节,因为与许多其他科学学科的实验工作不同,这些研究大多是公开的,而且利用现有的计算机,你可以免费自行构建模型。
就语言模型而言,我们能够走得更远,远远超过几乎所有其他技术,因为复现其生成过程相对便宜。例如,与尝试复现商用飞机制造过程不同,天上并没有满天飞的 DIY 客机。
如果我能够获得训练数据、架构、优化过程、初始条件以及计算环境,我就可以随心所欲地训练模型并对其特征进行描述——这正是我们在不同训练运行之间建立稳定性、并在评估和模型卡片中记录所得模型特征的方式。我可以更改随机种子、调整训练样本的顺序、修改架构,或者移除部分训练数据。我可以重复这些实验,并比较所得模型,以确定哪些行为会稳定出现,哪些则依赖于特定的训练条件。
在存在随机性或非确定性的地方,我们可以通过实验来描述其特征。我们可以测量分布、隔离变量,并研究训练条件与所得行为之间的因果关系。我们甚至可以比较独立训练的模型所学到的内部表征,以探究类似的计算结构是否会在不同的训练历程中涌现。
我所描述的,正是实验科学的工作方式。
我们尚未开发出一种便捷的程序,能将每一项内部计算转译为任何未受训练的人都能理解的解释——这一事实并不能证明该系统是不可理解的。解读工作可能困难重重,对大多数人来说也难以触及,这在现代世界几乎适用于每一项技术。
我此前曾撰文讨论过信念(faith)以及我们对世界的理解中有多少是从他人那里继承而来的。绝大多数人从未亲自验证过支撑他们日常所用技术的物理原理。他们依赖的是由那些开展实验、构建理论、并打造出有效系统的人们所产生的庞大知识积累。
核技术始终是我最爱引用的类比。相对而言,很少有人了解核反应堆的详细工程设计,而能够接触到理解特定核武器设计所需机密信息的人则更少。那么有没有人会说没人懂核链式反应呢?没有,社会只是普遍接受了这样一个事实:除非你接受专业教育并积累实践经验,否则你很难在操作层面理解其中的大部分内容(费曼关于量子理解的观点另当别论)。
人工智能同样是高度专业化的领域,尽管其基础科学比大多数实验学科更易于被任何愿意学习的人所掌握。随着这些系统变得日益复杂,能够深入理解其构建与运行细节的技术人员将越来越少。
承认自己不懂某件事,与宣称没人懂,这两者之间有着天壤之别。在作出后一种断言之前,你应该拿出相当过硬的证据。
当然,人工智能领域还有无数悬而未决的问题,这正是我们一直对它进行深入研究的全部原因;而关于智能本身的开放性问题,其范围远远超出了人工智能。正如我在关于以科学严谨性作为 AI 基准的讨论中所论述的,进步依赖于可检验的假设与实验。每一个成熟的科学学科都存在未解之谜。物理学家并未穷尽物理学的一切,生物学家也并未洞悉生物学的全部。但没有人会因此得出结论说没人懂物理学或生物学。这正是科学的意义所在——它永远不会终结。
2019 年,我曾与东北大学计算哲学实验室的几位哲学家进行过一次长谈,其中最大的收获竟与人工智能或计算无关。我们的结论是:哲学并不回答问题,而是把一个问题拆解为更多问题,以求更清晰的把握。
这正是科学的本质,也是人工智能以及一切其他技术学科取得进步的方式。当你宣称没人懂得大型语言模型(或任何其他技术)如何工作时,你看起来像个傻瓜。如果你确实遇到了这些系统中尚未被理解的东西,那就太好了——你找到了一个值得研究的科学问题。提出假设,设计实验,看看你能学到什么。我所反对的是,把个人的无知轻率地上升为关于人类知识的普遍断言,尤其是当这种断言被用来暗示人工智能在某种程度上是神秘的或超乎科学解释之外的时候。
它们是我们构建、训练和检验的机器。我们可以复现它们的行为,修改它们的内部运作,并研究它们的学习过程。即便是这个领域的基础知识,也需要多年才能掌握;而获取这些知识的难度,并不能证明没有人具备这些知识。
来源:Hacker News · kemendo.com