零基础认识大语言模型(LLM)工作原理(3.大模型绕不开的架构--Transformer到底是怎么工作的?)

最近正好有空,打算抽时间复盘总结一下这些年零零散散学习的AI知识.

下面是目录

零基础认识大语言模型(LLM)工作原理目录 - GuZhenYin - 博客园

如果说上一章介绍的是:

模型吃进去什么。

那么这一章介绍的就是:

模型的大脑到底是如何工作的。

第三章 Transformer 到底是怎么工作的

很多介绍 Transformer 的文章,一开始就是下面这张公式:

看到这里,绝大多数兄弟已经放弃了。

事实上,即使不知道任何数学公式,也完全可以理解 Transformer 的核心思想。

这一章,我们不用矩阵、向量运算这些复杂公式来表述,而是用一个现实例子,说明模型到底是如何"思考"一段文字的。


3.1 从一句话开始

假设我们给模型输入一句话:

小明昨天去北京出差,今天他回来了。

然后问:

"他"是谁?

对于我们人类来说,答案非常简单。

当然是:

小明。

但是,如果你仔细思考,会发现句子里面其实并没有写:

他 = 小明。

我们的大脑为什么能够知道?

因为我们会自动回忆前面的内容。

发现:

小明

关系最紧密。

于是理解了"他"就是小明。

Transformer 做的事情,其实非常类似。

它也会**回头看,**不过它不是只看一个词。

而是看前面的所有 Token。


3.2 Transformer 为什么叫 Transformer?

很多人第一次看到:Transformer。

都会问,为什么叫Transformer?

是不是它的直译--变形金刚?(哈哈哈 开个玩笑..)

其实Transformer 的中文一般翻译为:

转换器。

为什么叫转换器?

因为它不断地把一串 Token,逐渐转换成越来越丰富的语义表示。

举个例子,刚开始,模型看到:苹果
它只知道这是一个 Token。

经过第一层它开始知道这是:水果。

再经过几层。

它知道这里说的是:苹果公司。

继续经过几层。

它发现上下文出现:

复制代码
iPhone
Mac
Apple Store

于是最终理解这里的苹果,不是水果。

而是:Apple 公司。

注意,这里Token 没变,变化的是模型内部对它的理解。

所以Transformer真正转换的不是文字。

而是,每一个 Token 的语义表示。

那么Transformer是怎么转换token的语义的呢?

下面我们分步骤讲.


3.3 第一步:Embedding

上一节,我们提到:

复制代码
苹果
↓
Token ID
↓
31582

这里很多人会问模型直接处理31582不行吗?

答案是不行。

为什么?

因为31582只是编号,这种编号太短,可存储内容太少,表示的语义也有限。

而且编号之间没有任何关系。

例如:

复制代码
苹果
31582
香蕉
712
北京
89231

从数字来看,31582和712没有任何联系。

但是,我们人类知道苹果和香蕉都属于水果。

它们应该更接近。

因此,模型需要把Token ID变成一种新的表示。

它就是:Embedding(词向量)。

可以把它理解成:

模型给每一个 Token 建立的一张"身份证"。

不过这张身份证不是姓名,住址,出生年月这些。

而是一大串数字.例如:

复制代码
苹果

↓

[0.13,
-0.42,
0.78,
......]

在大模型里面,可能一个token有几千维这些数字。

共同描述:苹果这个词在语言世界里的位置。


3.4 为什么叫"向量空间"?

很多文章都会说:

Token 被映射到高维向量空间。

听起来特别抽象,其实你可以想象成一张地图。(当然 地图最多也就三维空间)

地图上每一个 Token都有自己的坐标。

例如:

当然,真正的大模型完全不是二维。

而是几千维。

但是,原理一样,距离越近说明语义越接近。

例如模型可能发现:

复制代码
北京
上海
广州

在向量空间中距离很近。

因为它们都是城市。

而:

复制代码
Redis
MySQL
Kafka

也很近。

因为它们作为技术中间件经常出现在同样的上下文。

注意:模型并没有人告诉它,Redis 是数据库。

它只是统计发现Redis、Kafka、MySQL、Spring Boot经常一起出现。

于是通过大量的训练和计算,慢慢的这些 Token就在空间里面越来越近。


3.5 Transformer 最重要的一步--Attention(注意力机制)

到了这里,模型已经拥有了每一个 Token 的Embedding。

接下来,神奇的事情发生了。

Transformer 会问:

当前我要预测下一个 Token 时,前面的哪些 Token 最重要?

例如:

复制代码
小明
昨天
去了
北京
今天
他回来了。

他是谁?

准备开始预测:

后面一句Transformer 会按token依次计算

复制代码
"小明"

重要吗?

★★★★★

"昨天"

重要吗?

★★

"北京"

重要吗?

★★★

"今天"

重要吗?

★★

最终模型发现和"他"关系最大的。其实是:小明。

于是模型就知道"他"大概率指的是小明。

这一步。就是Transformer 最伟大的发明:

Attention(注意力机制)。

很多人认为Attention就是让模型注意重点。

其实更准确一点说Attention 做的是:

计算每一个 Token 对当前 Token 的影响程度。

后面一节,我们将专门讲解 Attention 是如何工作的,以及为什么它彻底改变了自然语言处理的发展方向。


本章小结(第一部分)

这一部分,我们讲了三个关键概念:

  1. Transformer 并不是直接处理文字,而是处理 Token 的语义表示。
  2. Embedding 不是普通编号,而是让语义相近的 Token 在高维空间中彼此靠近。
  3. Transformer 的核心思想不是死记硬背,而是在生成每一个 Token 时,动态决定应该重点关注前文中的哪些 Token。

说明

这里特意没有讲 Q、K、V,也没讲任何矩阵公式

因为我们要先理解 Transformer 为什么需要 Embedding、为什么需要 Attention,再去学习它们是如何实现的。

下一章我们开始学习Transformer 的核心模块之一 Attention ,我们会讲到 Q(Query)、K(Key)、V(Value),那时它们就不会再是三个生硬的字母参数,而是三个非常容易理解的角色。