本文从零基础出发,深入解析了大语言模型(LLM)和 Transformer 架构的工作原理。内容涵盖了神经网络基础、模型训练、嵌入技术、分词器,以及自注意力机制、残差连接和层归一化等核心组件。最后,文章详细说明了如何将这些模块组合成 GPT 架构和完整的 Transformer 架构。
在这篇文章中,我们将从零开始讨论大语言模型 (LLMs) 的工作原理——仅假设你知道如何对两个数字进行加法和乘法。本文旨在实现完全的自包含。我们首先从在纸笔上构建一个简单的 Generative AI 开始,然后逐步讲解深入理解现代 LLM 和 Transformer 架构所需的一切。本文将剥离 ML 中所有花哨的语言和术语,并简单地将一切呈现为它们的本质:数字。我们仍会标出这些事物的名称,以便你在阅读带有术语的内容时能够联系起来。
从加法/乘法过渡到当今最先进的 AI 模型,而不假设其他知识或参考其他来源,意味着我们要涵盖大量内容。这不是一个玩具级的 LLM 解释——一个有决心的人理论上可以根据这里的所有信息重建一个现代 LLM。我删减了每一个不必要的词句,因此这篇文章并不适合走马观花地浏览。
让我们开始吧。
首先要注意的是,神经网络只能接收数字作为输入,也只能输出数字。没有例外。艺术在于如何将输入表示为数字,以实现目标的方式解释输出数字。最后,构建能够接收你提供的输入并给出你想要输出的神经网络(基于你为这些输出选择的解释)。让我们来看看我们是如何从数字的加减乘除演变到像 Llama 3.1 这样的模型的。
让我们来看一个可以对物体进行分类的简单神经网络:
一片叶子和一朵向日葵的数据可能如下所示:

图片由作者提供
现在让我们构建一个执行此分类的神经网络。我们需要决定输入/输出的解释。我们的输入已经是数字,所以我们可以直接将它们喂入网络。我们的输出是两个物体:叶子和花,神经网络无法直接输出。让我们看看这里可以使用的几种方案:
两种方案都允许网络输出我们可以解释为叶子或花的数字。在这里我们选择第二种方案,因为它能很好地推广到我们稍后要看的其他事物。这是一个使用该方案进行分类的神经网络。让我们来看看它是如何运作的:

图片由作者提供
一些术语:
术语/节点 (Neurons/nodes):圆圈中的数字
权重 (Weights):线条上的彩色数字
层 (Layers):神经元的集合称为层。你可以认为这个网络有 3 层:包含 4 个神经元的输入层,包含 3 个神经元的中间层,以及包含 2 个神经元的输出层。
要计算这个网络的预测/输出(称为“前向传播 (forward pass)”),你从左侧开始。我们拥有输入层神经元的数据。要“向前”移动到下一层,你需要将圆圈中的数字与相应神经元配对的权重相乘,然后将它们全部相加。我们在上面展示了蓝色和橙色圆圈的数学计算。运行整个网络,我们看到输出层中的第一个数字更高,因此我们将其解释为“网络将这些 (RGB,Vol) 值分类为叶子”。一个经过良好训练的网络可以接收各种 (RGB,Vol) 输入并正确分类物体。
模型完全没有叶子或花的概念,也没有 (RGB,Vol) 的概念。它的任务是接收准确的 4 个数字并给出准确的 2 个数字。是我们解释了这 4 个输入数字是 (RGB,Vol),也是我们的决定去查看输出数字并推断如果第一个数字较大就是叶子,依此类推。最后,也取决于我们选择正确的权重,使得模型能接收我们的输入数字并给出正确的两个数字,以便在我们解释它们时得到我们想要的解释。
一个有趣的副作用是,你可以使用同一个网络,不输入 RGB,Vol,而是输入其他 4 个数字,如云量、湿度等,并将这两个数字解释为“一小时内晴天”或“一小时内下雨”,然后如果你校准好了权重,你可以让同一个网络同时做两件事——分类叶子/花和预测一小时内的降雨!网络只是给你两个数字,你是否将其解释为分类、预测或其他什么完全取决于你。
为了简化而略去的内容(可以忽略,不影响理解):
在上面的例子中,我们神奇地拥有了允许我们将数据输入模型并获得良好输出的权重。但这些权重是如何确定的呢?设置这些权重(或“参数”)的过程称为“训练模型 (training the model)”,我们需要一些训练数据来训练模型。
假设我们有一些数据,其中包含输入,并且我们已经知道每个输入对应的是叶子还是花,这就是我们的“训练数据 (training data)”,并且由于我们为每组 $(R, G, B, Vol)$ 数字都有叶子/花的标签,这就是“标记数据 (labeled data)”。
它的工作原理如下:
几点说明:
- 原文链接: medium.com/data-science/...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!