从零开始动手实现 LLM 第4章读书心得

힘센캥거루
2025년 11월 26일
2
14

今天是11月26日,如果每天读一章并看完的话,这次挑战就算成功。

在老大和老二的各种干扰下,不知道能不能做到。

1. Dummy Transformer

从零开始动手实现 LLM 第4章读书心得-1

在实现 GPT 模型的过程中,看到是从 PyTorch 里拿来一个 Transformer 的 dummy 模块用的。

一查才发现,在 PyTorch 的 nn 里已经实现了好几种 Transformer 模型。

把这些 Transformer 模型叫作 dummy(虚拟、空模)是因为它们虽然结构相同,但还没有经过训练。

2. 正规化(归一化)

进入 Transformer Block 的这些值中,如果某一个维度特别大,数据就会朝那个方向倾斜。

因此要把数值转换成均值为 0、方差为 1 的分布。

然后在 Feed Forward Network 里,先用 Linear 把维度扩展,再做非线性变换。

这时候会用到 ReLU 或 GELU 这样的非线性激活函数。

从零开始动手实现 LLM 第4章读书心得-2

据说相比 ReLU,GELU 更“平滑/近似线性”,因此参数会更容易调整。

而且在每个 Block 里,都会通过 Linear 函数先把维度拉高,再缩回来。

把维度拉高之后,就能进行更丰富的非线性探索。

比如有苹果、橙子和胡萝卜,就好像对这些食材进行汆烫、烧烤、剁碎、混合等各种不同方式的烹饪。

然后把做好的各种料理再集中起来,把精华重新压缩回原来的维度里。

从零开始动手实现 LLM 第4章读书心得-3

3. Shortcut(残差捷径)

训练是从发生损失的地方开始往前传,所以会反向一路追溯回去。

比如说,假设二楼在漏水。

那就往上到三楼、四楼、五楼,反向去查到底是哪里开始漏的。

这就是所谓的反向传播(backpropagation)。

从零开始动手实现 LLM 第4章读书心得-4

但像上图那样构建的模型,每经过一个线性层,梯度都会衰减(消失)。

梯度消失的意思是,在反向传播过程中,越深的层几乎得不到训练,这样一来堆很多层就失去意义。

所以会在每个线性层里,把输入值和输出值相加,提供一条防止梯度消失的“旁路”。

这一点用数学来理解会更直观。

Residual 과정 : y = x + F(x)
backward 과정 : dL/dx = dL/dy * (1 + dF/dx)
최종 gradient : dL/dy * (1 + dF/dx)

在反向传播的过程中,由于在每一层的梯度中都会额外加上一个 1,这个 1 总是被保证存在,因此每一层的梯度都不会完全消失。

从而可以更有效地辅助训练过程。

4. 构建 GPT 模型

接下来,把这样构建好的 dummy 模型与 Attention 模块连接起来。 

最后再让这个 Attention 模块可以重复多次,然后对输出的 token 进行重新解码就可以了。

从零开始动手实现 LLM 第4章读书心得-5

5. 后记

一开始内容还挺轻松,越往后看越吃力。

从代码角度看会觉得难,但如果通过比喻和象征来学,其实也没有那么可怕。

现在时代变了,比起死记硬背,更重要的是“理解”。

只会背是创造不出新的东西的,但只要理解了,就能在人工智能的帮助下完成自己的 GPT。

虽然剩下的时间不多了,但还是打算尽量去理解透。

관련 글

从零构建中学习 LLM 第7章读书心得与挑战回顾
从零构建中学习 LLM 第7章读书心得与挑战回顾
第7章的内容是让模型遵循指令进行微调的过程。也就是让它针对某个问题给出我们期望的回答。果然,最需要的还是数据。1. 指令微调步骤这里的核心是准备好问答数据集,用作输入-输出对来进行训练。这就叫做提示(prompt)风格。其他部分就像之前的流程一样,对内容进行分词(tokenize)、训练和评估,过程...
从零开始构建中学习 LLM 第 6 章读后感
从零开始构建中学习 LLM 第 6 章读后感
第 6 章是为分类进行微调。作为例子给出的任务是构建垃圾邮件分类器。垃圾邮件分类器需要判断一封邮件是不是垃圾邮件,因此输出结果要是类似 0、1 这样的值。1. 微调的顺序微调的过程和训练模型的过程很相似。准备数据集,加载权重值,然后进行训练和评估。稍微不同的一点是,会有一个把输出层映射到 0(非垃圾...
从零开始构建中学习 LLM 第5章读书后记
从零开始构建中学习 LLM 第5章读书后记
今天是12月14日。其实挑战期已经过去整整两周了,但也不能因此就放弃写后记。像这样留下的 TIL(Today I Learned),以后都会变成自己的血和肉。这次打算比起代码本身,更专注在“意义”上来写一写。1. 模型的损失计算这一部分讲的是,在构建好 GPT 模型之后,用什么方式来计算损失。GPT...
通过从头构建学习的LLM第3章读后感
通过从头构建学习的LLM第3章读后感
我在MacBook上泼了一大杯水后,崩溃了,浪费了大约3-4天。现在回想起来,反正MacBook已经坏了,应该想着送修,干点别的事情。无论如何,虽然有点晚了,但我觉得必须坚持到底,所以留下了第3章的读后感。1. 注意力机制第3章...
通过从头开始制作学习 LLM 第二章读书笔记
通过从头开始制作学习 LLM 第二章读书笔记
已经是参加挑战的第二周。昨天还没有完成第二章,趁着来参加 1 泊 2 日的研修,熬到 12 点才勉强赶上进度。1. 内容第二章的内容以单词的分词、编码、解码、嵌入向量为中心。尽管之前试过制作 One-hot 编码器,对于其他部分比较熟悉,但是嵌入向量本身的内容是新的。
适合 MacBook 用户的 Python OCR 推荐
适合 MacBook 用户的 Python OCR 推荐
为了识别学生的医疗诊断证明,我几乎尝试了所有的 OCR。我使用过 Tesseract、EasyOCR、PaddleOCR 等各种 OCR,但没有一个对韩语的性能让我满意。不过最近我发现了一个包装了 MacBook 上实时文本功能的 Python 库...

댓글을 불러오는 중...