Bootstrap

中学生就能看懂:从零开始理解LLM内部原理【一】

本篇原文来自于作者Rohit Patel的长篇雄文《Understanding LLMs from Scratch Using Middle School Math-A self-contained, full explanation to inner workings of an LLM》(用中学数学从零开始理解大型语言模型:LLM内部原理的完整全解读》)。由于中英文表达的差异以及较多的数据科学专业名词,原文中仍然有一些较晦涩与解释不清之处。因此,我们在原文翻译的基础上,进行了适当的改写与充实,以帮助大家更好的理解这篇文章。相信你如果完整阅读完本文,一定会对LLM的工作原理有崭新的认识。

本文中将从头开始讲解大语言模型(LLM)的工作原理——假设你只会加法和乘法**,**也不会引用其他知识来源。我们从用纸和笔构建一个简单的神经网络模型开始,然后逐步深入,带你全面理解现代 LLM 和 Transformer 架构的所有细节。文章会尽量剥离掉机器学习中的复杂术语和行话,把所有内容还原为最简单的形式:数字。但必要时我们会解释相关术语,以便你在阅读带有术语的内容时能有所参照。

理论上,一个有决心的人可以基于这里的所有信息重现一个现代的 LLM,因此文章覆盖的内容非常多,也不适合“随便看看”。我们会讲解如下内容:

1. 一个简单的神经网络

2. 这些模型是如何被训练的?

3. 这些模型如何生成语言?

4. 什么使得 LLM 如此有效?

5. 嵌入(Embeddings)

6. 子词分词器(Sub-word tokenizers)

7. 自注意力机制(Self-attention)

8. Softmax

9. 残差连接(Residual connections)

10. 层归一化(Layer Normalization)

11. Dropout

12. 多头注意力(Multi-head attention)

13. 位置嵌入(Positional embeddings)

14. GPT 架构

15. Transformer 架构

1一个简单的神经网络

你可以把神经网络模型看作一个魔法“盒子”,放进去一些信息,会“吐出“你期望的信息。比如,放进去一张图片,输出图片的类别;放进去一段文字,输出文字的情感类别。但要注意的是,神经网络只能接受数字作为输入,也只能输出数字——没有例外。所以,设计的核心就在于如何将输入转化为数字,将输出数字解释为对目标的实现,最终构建能够处理你提供的输入信息,并生成所需输出信息的神经网络

现在来看如何用加法与乘法构建一个能够对物体进行分类的简单神经网络。在这个模型中:

输入的信息为已知物体的数据:

  • 颜色值(RGB 值)

  • 体积(单位:毫升)

目标输出是物体的分类:

  • 叶子(Leaf)

  • 花朵(Flower)

这里有两个例子输入信息:

接下来,我们构建一个能够完成此分类任务的神经网络。

首先需要决定的是如何解释输入和输出,即让输入输出“数字化”。由于这里的输入已经是数字,因此可以直接送入神经网络。但输出的是类别—叶子或者花朵,而神经网络无法直接输出这些类别。因此,考虑两个方案让输出的数字和类别对应:

方案 1:输出一个数字。如果数字为正,则判断为叶子,否则判断为花朵。

方案 2:输出两个数字,分别代表叶子和花朵(的概率),较大的数字代表分类结果。

我们选择方案 2,因为它在后续的扩展中更具通用性。以下是使用该方案的神经网络示意图:

在这个图中,我们输入了四个数字(色值与体积),输出了两个数字。由于输出代表叶子的数字为0.8,代表花朵的数字为0.2,所以分类结果就是叶子(0.8>0.2)。

解释图中的三个术语:

  • 神经元/节点(Neurons/nodes):图中圆圈内的数字。

  • 权重(Weights):图中连线上的数字。

  • 层(Layers):一组神经元被称为一层。上面的神经网络有三层:输入层(4 个神经元)、中间层(3 个神经元)和输出层(2 个神经元)。

如何计算预测结果:

  1. 假设已经训练好一个神经网络,包括上图中的层次、连线与权重、以及输入输出神经元对应的解释都已经确定与校准。

  2. 我们将4个数字(RGB与体积)输入到输入层的四个神经元。

  3. 现在开始向前传播到下一层:将神经元中的数字与连线上的权重相乘,并将结果相加,填入到下一层对应的神经元,依次类推。

  4. 计算完输出层的神经元后,较大的数字就对应分类结果。在上图中,较大的数字输出在代表叶子的神经元,所以分类结果就是“叶子”。

注意,模型本身并不理解叶子、花朵或 RGB 和体积的含义。它的任务仅仅是接收 4 个数字作为输入,输出 2 个数字。我们根据自己的解释,将输入视为 RGB 和体积,将输出视为叶子或花朵的概率。这种解释完全由我们决定,而模型的任务只是通过合适的权重将输入映射到最后的输出。

有趣的是,我们可以用同一个神经网络处理完全不同的任务。比如,输入云量、湿度等 4 个数字,输出“晴天”或“雨天”的概率。如果权重校准得当,那么这个神经网络就可以同时完成叶子/花朵分类和天气预测的任务!神经网络只会输出两个数字,至于如何解释这些数字,完全由我们决定。

一些被省略的复杂细节:

1. 激活层 (Activation Layer)

含义:

激活层是神经网络中不可缺少的一部分,它对每个神经元的输出值应用一个非线性函数,使得它能够处理更复杂的问题。激活函数常用的有 ReLU (Rectified Linear Unit),它的规则很简单:

  • 如果输入值是负数,输出设置为 0。

  • 如果输入值是正数,输出保持不变。

上图例子:

在之前的神经网络中,我们有一个中间层的神经元值,比如:

  • 一个神经元的值是 -26.6,另一个是 -47.1。

如果我们使用 ReLU 激活函数,这两个值会被替换为 0,因为它们都是负数。在应用 ReLU 激活函数后,神经网络的计算会继续向前传播,使用这些修改后的值来计算下一层的神经元值。

为什么需要激活层:

  • 如果没有激活层,神经网络的所有计算(加法和乘法)实际上可以被简化为一个简单的线性计算公式(看下面的例子)。即输出层的每个神经元的值可以直接用输入层神经元值加权求和得到,而不需要额外的中间层。

  • 激活层通过引入非线性,使得网络能够学习和拟合更复杂的关系,比如曲线分类问题,而不仅仅是简单的线性分类。

没有激活层的例子:

如果没有激活层,输出层绿色节点的值可以直接表示为输入层的加权求和,比如:

(0.10 * -0.17 + 0.12 * 0.39 - 0.36 * 0.1) x R + (-0.29 * -0.17 - 0.05 * 0.39 - 0.21* 0.1) x G + ……

最终整个网络可以被简化成两层,失去了中间层的意义。

2. 偏置 (Bias)

含义:

偏置是神经元的一个额外数值,用于调整神经元的最终输出值。它与加权求和的结果相加,用于提升模型的表达能力。每个神经元都可以有一个偏置值。

上图例子:

假设中间层蓝色节点的计算公式如下:

其中:

  • (32, 107, 56, 11.2) 是输入神经元值(上一层)。

  • (0.10, -0.29, -0.07, 0.46) 是对应的权重。

  • 0.25 是偏置值。

计算结果为:= -26.35

作用:

•如果没有偏置,模型只能通过调整权重来拟合/校准输入与输出之间的关系。

•引入偏置后,即使输入为零,神经元仍然可以输出一个值(偏置的值),从而使网络具有更大的灵活性。

神经网络模型参数的定义:

模型中的参数 (parameters) 包括:

  • 所有神经元之间的权重。

  • 所有神经元的偏置值。

这些参数是通过模型的训练过程不断优化的。

3. Softmax 函数

含义:

Softmax 是一种将输出层的值转换为概率分布的函数。它的作用是:

  • 将所有输出值转化为非负数。

  • 确保所有输出值加起来等于 1。

Softmax 的公式如下(看不懂不影响):

其中:

  • z_i 是输出层的第 i 个神经元的值。

  • e^{z_i} 是指数函数。

上图例子:

假设输出层的两个神经元值分别是:

  • 0.8 对应叶子。

  • 0.2 对应花朵。

经过 Softmax 处理后,输出值可能变为:

  • 叶子:

  • 花朵:

此时,输出值为概率,可以更直观地表示分类的信心与结果。

为什么不用直接比较输出值:

•输出层的值可能是正数或负数,直接比较可能不直观。

•Softmax 确保了值是概率分布,可以在多分类任务中更好地应用。

简单的总结:

  • 激活层:引入非线性计算(否则多层就丧失意义),提升神经网络表达能力。

  • 偏置:增加模型灵活性,使得输出不完全依赖于输入。

  • Softmax:把输出转化为概率分布,更便于理解与解释。

最后,如果加上这几个相对复杂的细节,整个神经网络的工作过程为:

1. 输入层:

  • 接收 RGB 和体积(4 个数字)。

2. 中间层:

  • 首先对输入进行加权求和,并通过偏置值做调整。

  • 然后通过激活函数(如 ReLU)处理,将负值置为 0,正值保持不变。

3. 输出层:

  • 中间层的值通过加权求和与偏置调整,得到输出值。

  • 假设输出为两个值(如 0.8 和 0.2),表示叶子和花朵的原始分类分数。

  • 使用 Softmax 转换为概率分布(如 0.64 和 0.36),最终输出分类结果。

OK,现在我们有了一个简单的神经网络。下一篇将了解它如何被训练,以及如何被应用到语言模型。

零基础如何学习AI大模型

领取方式在文末

为什么要学习大模型?

学习大模型课程的重要性在于它能够极大地促进个人在人工智能领域的专业发展。大模型技术,如自然语言处理和图像识别,正在推动着人工智能的新发展阶段。通过学习大模型课程,可以掌握设计和实现基于大模型的应用系统所需的基本原理和技术,从而提升自己在数据处理、分析和决策制定方面的能力。此外,大模型技术在多个行业中的应用日益增加,掌握这一技术将有助于提高就业竞争力,并为未来的创新创业提供坚实的基础。

大模型典型应用场景

AI+教育:智能教学助手和自动评分系统使个性化教育成为可能。通过AI分析学生的学习数据,提供量身定制的学习方案,提高学习效果。
AI+医疗:智能诊断系统和个性化医疗方案让医疗服务更加精准高效。AI可以分析医学影像,辅助医生进行早期诊断,同时根据患者数据制定个性化治疗方案。
AI+金融:智能投顾和风险管理系统帮助投资者做出更明智的决策,并实时监控金融市场,识别潜在风险。
AI+制造:智能制造和自动化工厂提高了生产效率和质量。通过AI技术,工厂可以实现设备预测性维护,减少停机时间。

这些案例表明,学习大模型课程不仅能够提升个人技能,还能为企业带来实际效益,推动行业创新发展。

学习资料领取

如果你对大模型感兴趣,可以看看我整合并且整理成了一份AI大模型资料包,需要的小伙伴文末免费领取哦,无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

在这里插入图片描述

部分资料展示

一、 AI大模型学习路线图

整个学习分为7个阶段
在这里插入图片描述
请添加图片描述

二、AI大模型实战案例

涵盖AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,皆可用。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

三、视频和书籍PDF合集

从入门到进阶这里都有,跟着老师学习事半功倍。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

四、LLM面试题

在这里插入图片描述
在这里插入图片描述

五、AI产品经理面试题

在这里插入图片描述

😝朋友们如果有需要的话,可以V扫描下方二维码联系领取~
在这里插入图片描述

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]👈

;