大模型与人类交流的底层原理
大型语言模型(LLM)之所以能够与人类进行流畅的交流,并非因为它们拥有意识或理解能力,而是基于复杂的数学统计和模式识别。其核心工作流程通常包含四个关键步骤:文本 Token 化、向量化与位置编码、自注意力机制处理、以及编码输出预测。
1. 文本 Token 化与向量化
1.1 Token 化(Tokenization)
计算机无法直接理解自然语言,必须将文本转换为机器可处理的数字序列。这一过程称为 Token 化。
传统的分词方式是将单词切分为独立的单元,但这种方法存在'未登录词'(OOV, Out-of-Vocabulary)问题。现代大模型多采用子词分词算法(如 Byte Pair Encoding, BPE)。
示例: 假设输入句子为 "We go to work by train"。
- 传统分词: ["We", "go", "to", "work", "by", "train"]
- BPE 分词: 可能会将长词拆分为更小的常见子串,例如 "un" + "known"。
# 伪代码示例:使用 HuggingFace Tokenizer
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
inputs = tokenizer("We go to work by train", return_tensors="pt")
print(inputs['input_ids'])
1.2 词嵌入(Word Embedding)
Token 化后,每个 token 被映射为一个高维向量(Embedding),通常维度在几百到几千之间。这些向量捕捉了单词的语义信息。
- 语义相似性:在向量空间中,语义相近的词距离更近。例如,"sea" 和 "ocean" 的向量夹角很小。
- 特征表示:向量的不同维度可能对应不同的语言特征(如时态、性别、情感倾向等)。
1.3 位置编码(Positional Encoding)
Transformer 架构本身不具备顺序感知能力(因为它并行处理所有 token)。为了保留词语的顺序信息,必须引入位置编码。
常用的方法是正弦/余弦函数编码。它将位置信息注入到词向量中,使得模型能够区分 "The cat sat on the mat" 和 "The mat sat on the cat"。
$$ PE_{(pos, 2i)} = \sin(pos / 10000^{2i/d_{model}}) $$ $$ PE_{(pos, 2i+1)} = \cos(pos / 10000^{2i/d_{model}}) $$
2. Transformer 自注意力机制
有了向量化数据,模型的核心计算单元是 Transformer 中的自注意力(Self-Attention)机制。
2.1 自注意力的作用
自注意力允许模型在处理某个词时,关注句子中的其他相关词。这解决了 RNN(循环神经网络)只能顺序处理且难以捕捉长距离依赖的问题。
- Query (Q), Key (K), Value (V): 每个词都被线性变换为 Q, K, V 三个向量。
- 注意力分数: 通过计算 Query 与 Key 的点积,得到权重,决定哪些词对当前词最重要。
$$ Attention(Q, K, V) = softmax(\frac{QK^T}{\sqrt{d_k}})V $$


