大语言模型背后的数字旅程:从文本输入到概率输出的 Transformer 核心机制

34 阅读8分钟

在当今的人工智能浪潮中,以 GPT、Llama 为代表的大语言模型(LLM)展现出了惊人的语言理解与生成能力。然而在计算机的世界里,本质上只有数字和运算。大语言模型究竟是如何把人类的文本变成数字,在内部进行“思考”,最终又变成人类语言吐出来的?这一切都要归功于 Transformer 架构。

以下将为你揭开大语言模型内部运行的六大核心枢纽。

1. 数字化起点:词元化(Tokenization)

人类的文本是无法直接输入给计算机的,因此第一步必须进行数字化。这个阶段属于纯粹的规则与统计阶段,不涉及任何神经网络,也没有模型参数。

在这个阶段,系统会将一段连续的文字切分成一个个更小的单位,这些单位被称为 Token(词元) 。目前主流的大模型采用的都是子词(Subword)词元化技术。

  • 缩减词表数量: 如果以整个词(Word)为单位构建词表,英文动辄几十万个词,中文更是浩如烟海,词表会无比庞大,遇到生僻词还会出现“无法识别(OOV)”的情况。
  • 高效切分: 子词技术将高频词完整保留,将低频词拆分成更小的“词根”或“字符组合”。比如将 unbelievable 拆分为 un + believe + able。这样仅需几万到十几万个 Token 的小词表,就能组合出世间万物所有的文本,极大降低了系统负担。

2. 升维与语义空间:向量嵌入(Embedding)

Token 依然只是编号(比如“苹果”对应 1024 号),计算机仍无法理解“苹果”和“梨”都是水果,而“汽车”是交通工具。为了让计算机理解语义,必须将 Token 转换成连续的数学向量

在深度学习早期,人们常用 One-Hot(独热)编码(即一个长长的向量,只有对应编号的位置是 1,其余全为 0)。但这种做法存在三大致命缺陷:

  1. 维度过高且过于稀疏: 词表有 10 万个词,向量就有 10 万维,极度浪费计算资源。
  2. 缺乏“距离”概念: 任何两个词的 One-Hot 向量求距离都是一样的,无法体现语义的远近。
  3. 没有数学或逻辑关系: 无法在向量上做加减法。

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 作为“中心主题词” 。这个中心主题词会带着自己的语义,去全文中检索: “在这个上下文里,谁跟我关系最密切?”

  1. 计算相关度: 中心主题词与全文其他每一个词计算数学相似度。
  2. 分配权重: 与它相关度高的词(比如指代词“它”和被指代的“苹果”),分配的权重就高;不相关的词,权重就低。
  3. 信息聚合: 按照计算出来的权重,把其他词身上的数学向量特征“吸附”并聚合到自己身上。

一轮聚合过后,文本中向量的总数量没有改变,但每个向量代表的语义都变得无比丰富。

在实际的大模型中,这样的聚合操作会在几十层甚至上百层的网络结构中反复轮回复合。几百轮下来,每个 Token 的向量里不仅包含了自己原本的意思,还深深烙印了周围关联的词、短语乃至整段话的上下文语境。

注意(因果掩码限制): 解码器在生成文本时具有严格的“时间箭头”。它的信息聚合只能从自己前面的 Token 中抓取信息,绝不能偷看未来的词。因此,只有当序列流动到最后一个向量时,它才真正聚合了前面所有提示词和已生成文本的全部全局信息。

6. 终点:从语义向量到人类语言(Linear & Softmax)

模型经过几十上百轮的信息聚合,最终目的就是为了完美理解当前的语义。此时,位于序列最末尾的那个最后一个向量,就成了整句话语义的“集大成者”。

接下来,大模型需要利用这个向量来预测“下一个最可能出现的字(Token)”,这需要经过最后两道数学关卡:

  • Linear(线性层): 线性层就像是一个“匹配过滤器”。它拿着这枚包含了整句话含义的终极向量,去和最初的“Token 词表向量表”里的每一个词做点乘(相关度计算)。如果词表里有 10 万个词,就会得到 10 万个不同的相关度数值(Logits)。数值越高,代表这个词作为下一个字出现的可能性越大。
  • Softmax(归一化层): 线性层吐出来的数值可能很大也可能很小(比如 12.5 或 -3.2),无法直接作为概率使用。Softmax 函数的作用就是将这 10 万个杂乱无章的数值,等比例压缩映射到 01 之间,并且保证所有词的概率相加绝对等于 1

最终,大模型会得到一张完美的概率表(例如:“的”的概率是 70%,“苹果”的概率是 5%……)。模型会根据这张概率表抽样吐出下一个 Token。

接着,这个新吐出来的 Token 会被加入到已经生成的文本末尾,和前面的文字一起,再次化为向量输入模型,重新开始新一轮的自注意力聚合、线性投影和 Softmax。这个过程如同齿轮般循环往复,直到模型吐出一个特殊的终止符(EOS) ,长篇大论的精彩回答便戛然而止。这就是大语言模型孕育出智慧的完整数学旅程。