在当今的人工智能浪潮中,以 GPT、Llama 为代表的大语言模型(LLM)展现出了惊人的语言理解与生成能力。然而在计算机的世界里,本质上只有数字和运算。大语言模型究竟是如何把人类的文本变成数字,在内部进行“思考”,最终又变成人类语言吐出来的?这一切都要归功于 Transformer 架构。
以下将为你揭开大语言模型内部运行的六大核心枢纽。
1. 数字化起点:词元化(Tokenization)
人类的文本是无法直接输入给计算机的,因此第一步必须进行数字化。这个阶段属于纯粹的规则与统计阶段,不涉及任何神经网络,也没有模型参数。
在这个阶段,系统会将一段连续的文字切分成一个个更小的单位,这些单位被称为 Token(词元) 。目前主流的大模型采用的都是子词(Subword)词元化技术。
- 缩减词表数量: 如果以整个词(Word)为单位构建词表,英文动辄几十万个词,中文更是浩如烟海,词表会无比庞大,遇到生僻词还会出现“无法识别(OOV)”的情况。
- 高效切分: 子词技术将高频词完整保留,将低频词拆分成更小的“词根”或“字符组合”。比如将
unbelievable拆分为un+believe+able。这样仅需几万到十几万个 Token 的小词表,就能组合出世间万物所有的文本,极大降低了系统负担。
2. 升维与语义空间:向量嵌入(Embedding)
Token 依然只是编号(比如“苹果”对应 1024 号),计算机仍无法理解“苹果”和“梨”都是水果,而“汽车”是交通工具。为了让计算机理解语义,必须将 Token 转换成连续的数学向量。
在深度学习早期,人们常用 One-Hot(独热)编码(即一个长长的向量,只有对应编号的位置是 1,其余全为 0)。但这种做法存在三大致命缺陷:
- 维度过高且过于稀疏: 词表有 10 万个词,向量就有 10 万维,极度浪费计算资源。
- 缺乏“距离”概念: 任何两个词的 One-Hot 向量求距离都是一样的,无法体现语义的远近。
- 没有数学或逻辑关系: 无法在向量上做加减法。
Embedding(向量嵌入) 阶段正是为了解决这些问题而引入了神经网络参数。它就像一块“语义魔法画布”,专门把 Token 映射到一个高维的、连续的数学空间中(通常是 4096 维甚至更高)。
One-Hot 编码与 Embedding 向量对比
| 特性 | One-Hot 编码 | Embedding 向量 |
|---|---|---|
| 表现形式 | 极度稀疏(全 0 中夹带一个 1) | 稠密实数(高维空间中的坐标点) |
| 维度大小 | 等于词表总大小(数万到数十万) | 固定高维(如 512, 2048, 4096 维) |
| 语义关联 | 相互独立,无法计算语义相似度 | 意思相近的词,在空间中的几何距离更近 |
通过 Embedding 转换后,每个 Token 都有了属于自己的、蕴含语义的空间坐标。
3. 赋予文本时序秩序:位置编码(Positional Encoding)
人类语言的魅力在于“秩序”。同样的几个字,顺序不同,含义可能天差地别。
例如:“我不怕他” 与 “他不怕我”,语义完全相反。
Transformer 架构为了追求极致的计算速度,选择同时并行处理一句话里的所有文字。这种“并进”的设计带来了一个副作用:模型在初始状态下是“色盲”的,分不清谁前谁后。
为了打破这种无序状态,系统必须在 Embedding 向量中强行注入位置编码(Positional Encoding) 。位置编码包含了一定的数学规律(通常通过正余弦函数或可学习的参数生成),它会将文字所在的位置信息叠加到原本的语义向量中。这样,每个文字的向量不仅代表了它自己是谁,还代表了它在这句话里站在什么位置。
4. 信息的解构与重组:编码器与解码器(Encoder & Decoder)
在传统的 Transformer 架构中,网络被划分为两个核心部分:
- Encoder(编码器): 负责“听与理解”。它可以把人类看得懂的一句话或一段话,转化成一段极其复杂的数学向量。它擅长纵览全局,对比上下文中各个词的相似度,非常适合做文本分类、情感分析和命名实体识别等分析类任务。
- Decoder(解码器): 负责“说与创造”。它能够把人类看不懂的、由编码器输出的复杂数学向量,一步步重新翻译、生成为人类能看懂的语言。它天生擅长文本续写、对话生成等生成类任务。
随着技术演进,现代大语言模型(如 GPT 系列)普遍走向了 Decoder-Only(仅解码器) 架构。它们不再需要一个独立的编码器来传递信息,而是把用户输入的“提示词(Prompt)”直接当作解码器的初始输入,配合一个特殊的终止/触发 Token,让解码器兼顾理解与生成,极大地简化了模型结构。
5. 网状的语义聚合:自注意力机制(Self-Attention)
文字序列聚合成丰富的语义,核心全在于解码器内部(虽然我们暂时将其视作一个黑盒,但它表现出的行为具有很强的规律性)。
一段长文本里包含了密密麻麻的细节。大模型在处理时,会轮流把每一个 Token 作为“中心主题词” 。这个中心主题词会带着自己的语义,去全文中检索: “在这个上下文里,谁跟我关系最密切?”
- 计算相关度: 中心主题词与全文其他每一个词计算数学相似度。
- 分配权重: 与它相关度高的词(比如指代词“它”和被指代的“苹果”),分配的权重就高;不相关的词,权重就低。
- 信息聚合: 按照计算出来的权重,把其他词身上的数学向量特征“吸附”并聚合到自己身上。
一轮聚合过后,文本中向量的总数量没有改变,但每个向量代表的语义都变得无比丰富。
在实际的大模型中,这样的聚合操作会在几十层甚至上百层的网络结构中反复轮回复合。几百轮下来,每个 Token 的向量里不仅包含了自己原本的意思,还深深烙印了周围关联的词、短语乃至整段话的上下文语境。
注意(因果掩码限制): 解码器在生成文本时具有严格的“时间箭头”。它的信息聚合只能从自己前面的 Token 中抓取信息,绝不能偷看未来的词。因此,只有当序列流动到最后一个向量时,它才真正聚合了前面所有提示词和已生成文本的全部全局信息。
6. 终点:从语义向量到人类语言(Linear & Softmax)
模型经过几十上百轮的信息聚合,最终目的就是为了完美理解当前的语义。此时,位于序列最末尾的那个最后一个向量,就成了整句话语义的“集大成者”。
接下来,大模型需要利用这个向量来预测“下一个最可能出现的字(Token)”,这需要经过最后两道数学关卡:
- Linear(线性层): 线性层就像是一个“匹配过滤器”。它拿着这枚包含了整句话含义的终极向量,去和最初的“Token 词表向量表”里的每一个词做点乘(相关度计算)。如果词表里有 10 万个词,就会得到 10 万个不同的相关度数值(Logits)。数值越高,代表这个词作为下一个字出现的可能性越大。
- Softmax(归一化层): 线性层吐出来的数值可能很大也可能很小(比如 12.5 或 -3.2),无法直接作为概率使用。Softmax 函数的作用就是将这 10 万个杂乱无章的数值,等比例压缩映射到
0到1之间,并且保证所有词的概率相加绝对等于 1。
最终,大模型会得到一张完美的概率表(例如:“的”的概率是 70%,“苹果”的概率是 5%……)。模型会根据这张概率表抽样吐出下一个 Token。
接着,这个新吐出来的 Token 会被加入到已经生成的文本末尾,和前面的文字一起,再次化为向量输入模型,重新开始新一轮的自注意力聚合、线性投影和 Softmax。这个过程如同齿轮般循环往复,直到模型吐出一个特殊的终止符(EOS) ,长篇大论的精彩回答便戛然而止。这就是大语言模型孕育出智慧的完整数学旅程。