1

通过从头构建学习的LLM第3章读后感

힘센캥거루
2025년 10월 29일(수정됨)
4
1
17

我在MacBook上泼了一大杯水后,崩溃了,浪费了大约3-4天。

现在回想起来,反正MacBook已经坏了,应该想着送修,干点别的事情。

无论如何,虽然有点晚了,但我觉得必须坚持到底,所以留下了第3章的读后感。

1. 注意力机制

第3章的主要内容是注意力机制。

注意力字面意思是在句子中想要关注哪个部分。

例如,假设理解我昨天吃了饭这句话。

我们自然会集中在昨天吃了等词上。

为了理解正在处理的单词,需要与哪些单词结合,通过注意力机制通过单词的组合来理解语境。

通过从头构建学习的LLM第3章读后感-1

2. 自注意力

自注意力是求取句子内令牌之间的关系。 

假设已经将令牌实现为如下嵌入向量。

import torch

inputs = torch.tensor(
  [[0.43, 0.15, 0.89], # Your     (x^1)
   [0.55, 0.87, 0.66], # journey  (x^2)
   [0.57, 0.85, 0.64], # starts   (x^3)
   [0.22, 0.58, 0.33], # with     (x^4)
   [0.77, 0.25, 0.10], # one      (x^5)
   [0.05, 0.80, 0.55]] # step     (x^6)
)

在这里,通过对所需的一个令牌与其他令牌的点乘求取令牌之间的关系来获得注意力分数。

此时,点乘这个概念可能看起来很新,但在矩阵中的点乘向量中的内积相同。

通过从头构建学习的LLM第3章读后感-2

这意味着两个向量的方向性越相似,值越大,若相互垂直,则值为0。

通过它可以确认两个嵌入有多相似

查看的不是向量本身,而是两个向量的相似性,是因为初始化嵌入时分散了无意义的向量。

因此,测量向量本身是没有意义的。

通过从头构建学习的LLM第3章读后感-3

然后,将注意力权重的和正则化到1,并将输入向量与注意力权重相乘相加。

注意力权重越高,对语境向量的影响就越大,因此从各个嵌入之间获得以查询输入的嵌入为适当位置的方向向量

这就是语境向量

这样为每个嵌入计算,会得到如下形式的张量。

tensor([[0.4421, 0.5931, 0.5790],
        [0.4419, 0.6515, 0.5683],
        [0.4431, 0.6496, 0.5671],
        [0.4304, 0.6298, 0.5510],
        [0.4671, 0.5910, 0.5266],
        [0.4177, 0.6503, 0.5645]])

张量的结构本身是二维的,但其内部内容是三维语境向量。

可以利用它以方向表达各个嵌入之间的关系。

3. 可训练的自注意力

在可训练的自注意力中,将每个键、查询值降低到更低的维度。

此时最初处理的值全部是随机值。

处理后,通过反向传播过程进行更新。

torch.manual_seed(123)

W_query = torch.nn.Parameter(torch.rand(d_in, d_out), requires_grad=False)
W_key   = torch.nn.Parameter(torch.rand(d_in, d_out), requires_grad=False)
W_value = torch.nn.Parameter(torch.rand(d_in, d_out), requires_grad=False)

在上方可以看到初始的query、key、value值都是随机的。

初始值都没意义,但经过训练后会变为有意义的值。

通过这个过程,我们可以获得单个单词的语境向量

4. 因果注意力

因果注意力是对令牌进行遮罩的方式。

这是通过预测未来来预测下一个语境的方式。

刚开始接触这内容时,首先想到的是过拟合问题,但...

ChatGPT的回答不同。

通过从头构建学习的LLM第3章读后感-4

防止过拟合是因果注意力的副产品。

模型帮助学习实际的语言生成方向(左→右)。

这样训练的语境向量可以理解句子的意义,并生成新句子,甚至进行推理和类比。

有各种方法来支持这一点。

5. 疑问

读书时产生了许多想法。

  • 为什么感觉比独热编码困难得多,这样做是为了什么?

  • 进行因果注意力是因为过拟合吗?

通过从头构建学习的LLM第3章读后感-5

和ChatGPT谈了很久,结论如下。

知道答案
--> 模型不再预测而只是复制
--> 损失几乎为0(可以计算)
--> 梯度几乎为0
--> 几乎没有更新
--> 反向传播没有产生有意义的变化
--> 学习实际上没有完成

例如,要在黑暗的房间里找到东西必须用手摸索。

这个过程培养了理解空间和寻找物件的能力。

但如果你已经知道物品的位置,就不需要摸索,因此最终不会学会“寻找的方法”。

在语言模型中查看未来令牌也是类似的,如果知道答案,就会失去学习预测的能力。

通过从头构建学习的LLM第3章读后感-6

因此,因果注意力(causal attention)是诱导损失的函数

因果注意力通过遮罩未来引起损失,并根据该损失更新语境向量。

在减少预测误差的过程中,模型加深对语境的理解,并随着推理、类比、评估能力的提高。

6. 读后感

由于MacBook被水泼了,延迟了一周,感到焦虑。

所以想快速阅读然后跳过,但不可能。

每个初次看到的句子都很难理解并且以新的方式出现。

通过从头构建学习的LLM第3章读后感-7

为什么要在这里乘以降维的矩阵?为什么要在这里进行突然的遮罩?

探索这些问题的过程十分漫长且无味。

虽然AI能回答问题,但当我做新的解释时,总是被告知是错误的,因此深入思考什么是正确的意义。

我想这样的思考过程或许会让我成长。

期待第4章能学习到什么。

관련 글

学校事务自动化——利用 AI 检查学生综合素质评价(生记簿)科目别“细部能力及特长事项”
学校事务自动化——利用 AI 检查学生综合素质评价(生记簿)科目别“细部能力及特长事项”
如果要在学校工作里选出一项最无意义、最辛苦、最无聊的,我会选生记簿检查。在初中,学生综合素质评价(生活记录簿)并不那么重要,但在高中它与升学直接相关,因此极其重要。问题在于,这样的生记簿检查最终找的无非就是简单的错别字、禁止填写用语、拼写等。这篇文章就是从这样的疑问开始的。现在这种简单检查,是不是已...
从零构建中学习 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 第4章读书心得
从零开始动手实现 LLM 第4章读书心得
今天是11月26日,如果每天读一章并看完的话,这次挑战就算成功。在老大和老二的各种干扰下,不知道能不能做到。1. Dummy Transformer在实现 GPT 模型的过程中,看到是从 PyTorch 里拿来一个 Transformer 的 dummy 模块用的。一查才发现,在 PyTorch 的...
通过从头开始制作学习 LLM 第二章读书笔记
通过从头开始制作学习 LLM 第二章读书笔记
已经是参加挑战的第二周。昨天还没有完成第二章,趁着来参加 1 泊 2 日的研修,熬到 12 点才勉强赶上进度。1. 内容第二章的内容以单词的分词、编码、解码、嵌入向量为中心。尽管之前试过制作 One-hot 编码器,对于其他部分比较熟悉,但是嵌入向量本身的内容是新的。

댓글을 불러오는 중...