大模型如何“理解”语言?从词向量到注意力机制的认知之旅

2026/04/11 AI 共 3642 字,约 11 分钟

大模型如何“理解”语言?从词向量到注意力机制的认知之旅

当我们与ChatGPT流畅对话,或惊叹于Claude能精准总结长篇文档时,一个根本性的问题随之浮现:这些模型真的“理解”了语言吗?它们没有感官体验,没有生活常识,如何能处理如此复杂的人类符号系统?本文将带你深入大语言模型(LLM)的内部世界,从技术层面拆解其“理解”语言的奥秘。

一、理解的基石:从符号到向量

传统计算机程序处理的是明确的指令和符号(如“if-else”),但语言充满歧义和上下文依赖。大模型的第一步,是将离散的符号(字、词)转化为计算机能处理的数学对象——向量

1.1 词嵌入(Word Embedding)

“国王”、“王后”、“男人”、“女人”这些词,在模型眼中不再是字符串,而是高维空间(例如512维)中的点。神奇的是,在这个向量空间中,语义关系会表现为几何关系。经典的例子是:vec(“国王”) - vec(“男人”) + vec(“女人”) ≈ vec(“王后”)。这表明模型捕捉到了“性别”和“王室”的概念维度。

# 一个简化的示意代码,展示如何使用预训练词向量(如GloVe)
import numpy as np

# 假设我们有一个小型预训练词向量字典
pretrained_embeddings = {
    king: np.array([0.5, -0.2, 0.1]),
    man: np.array([0.3, -0.1, 0.0]),
    woman: np.array([0.35, 0.1, 0.05]),
    queen: np.array([0.55, 0.15, 0.1])
}

def analogy(word1, word2, word3):
    """计算类比:word1 : word2 :: word3 : ?"""
    result_vec = pretrained_embeddings[word2] - pretrained_embeddings[word1] + pretrained_embeddings[word3]
    # 在字典中寻找与result_vec最相似的向量
    closest_word = None
    min_distance = float(inf)
    for word, vec in pretrained_embeddings.items():
        if word in [word1, word2, word3]:
            continue
        dist = np.linalg.norm(vec - result_vec)
        if dist < min_distance:
            min_distance = dist
            closest_word = word
    return closest_word

print(analogy(man, king, woman)) # 理想输出:”queen”

1.2 上下文感知:从静态到动态

早期的词嵌入(如Word2Vec)是静态的,即一个词在任何上下文中都是同一个向量。这无法解决“苹果手机”和“吃了一个苹果”中“苹果”的歧义问题。现代大模型(如BERT、GPT)使用动态上下文编码。同一个词在不同句子中会获得不同的向量表示,这个表示由模型根据整个句子的上下文实时计算得出。

二、理解的核心架构:Transformer与注意力机制

如果说词向量是砖瓦,那么Transformer架构就是让这些砖瓦组成智能大厦的蓝图。其核心是自注意力机制

2.1 自注意力机制:全局关联的魔法

想象你在阅读这句话:“他把香蕉剥了皮,然后吃了它。” 人类能瞬间知道“它”指的是“香蕉”。自注意力机制让模型也能做到这一点。在处理“它”这个词时,模型会计算“它”与句子中所有其他词(包括“香蕉”)的“注意力分数”,从而将更多的“注意力”分配给“香蕉”,并基于此更新“它”的表示。

# 一个极度简化的自注意力计算示意(忽略缩放、多头等细节)
import torch
import torch.nn.functional as F

def simple_self_attention(input_vectors):
    """
    input_vectors: [seq_len, embedding_dim] 输入序列的向量表示
    """
    seq_len, d_k = input_vectors.shape
    # 生成查询(Q)、键(K)、值(V)矩阵
    Q = input_vectors # 简化处理,实际是线性变换
    K = input_vectors
    V = input_vectors

    # 计算注意力分数:Q和K的点积,表示相关性
    scores = torch.matmul(Q, K.T) # [seq_len, seq_len]
    # 对分数进行softmax归一化,得到注意力权重
    attention_weights = F.softmax(scores, dim=-1) # [seq_len, seq_len]
    # 用注意力权重加权求和V,得到新的序列表示
    output = torch.matmul(attention_weights, V) # [seq_len, embedding_dim]
    return output, attention_weights

# 示例:假设我们有三个词的向量 [“他”, “吃”, “香蕉”]
seq_vectors = torch.tensor([[0.1, 0.2], [0.2, 0.3], [0.9, 0.8]]) # 3个词,每个词2维向量
new_vectors, attn = simple_self_attention(seq_vectors)
print(注意力权重矩阵显示词与词之间的关联强度:)
print(attn)
# 在训练好的模型中,处理“吃”时,可能会对“香蕉”有较高的注意力权重。

2.2 Transformer编码器-解码器结构

  • 编码器(如BERT所用):像是一个“阅读理解专家”,通过多层自注意力,对输入文本(如一个句子)进行深度编码,生成富含上下文信息的向量表示。它擅长分类、问答、语义相似度判断。
  • 解码器(如GPT所用):像一个“写作大师”,在生成每个新词时,不仅关注已编码的输入,还关注它自己已经生成的所有词(通过掩码自注意力,防止看到未来信息)。它擅长文本生成、翻译、摘要。

大语言模型(如GPT系列)通常使用仅解码器架构,将编码和解码的功能合二为一,通过海量文本的“下一个词预测”任务进行训练。

三、理解如何涌现:从模式匹配到能力泛化

模型通过在海量文本(万亿级token)上预测下一个词,学会了文本中的统计规律。但这如何升级为“理解”?

3.1 模式与知识的压缩

训练过程本质上是一个巨大的无损压缩过程。为了更准确地预测下一个词,模型必须在其数百亿甚至上万亿的参数中,高效地存储关于世界的事实、语法规则、逻辑关系和文体风格。这些知识不是以数据库条目形式存储,而是以高度非线性的方式分布在网络的权重中。

3.2 情境学习与思维链

  • 情境学习:给模型几个输入-输出的例子(“Few-shot Learning”),它就能模仿模式完成任务。这表明模型并非死记硬背,而是学会了执行任务的“方法”或“格式”。
  • 思维链:当要求模型在回答复杂推理问题时“一步一步思考”时,其准确性会大幅提升。这暗示模型在生成最终答案的中间步骤中,隐式地构建了推理路径。我们可以通过提示工程显式地引导这一过程。
用户:办公室有10个苹果,小明吃了2个,小红又买了5个进来。现在有几个苹果?
模型(直接回答):13个。

用户:办公室有10个苹果,小明吃了2个,小红又买了5个进来。请一步步思考。
模型(思维链):
1. 最初有10个苹果。
2. 小明吃了2个,剩下 10 - 2 = 8个。
3. 小红买了5个进来,现在有 8 + 5 = 13个。
所以,现在有13个苹果。

四、实际应用场景:理解力的体现

  1. 语义搜索与问答:模型将查询和文档都编码为向量,在向量空间中寻找最接近的匹配,超越了传统的关键词匹配。
  2. 代码生成与理解:将代码视为一种特殊语言。模型能理解自然语言需求(如“写一个快速排序函数”)与代码语法、逻辑之间的映射关系。
  3. 情感分析与意图识别:通过上下文判断“这手机真是绝了”是褒义还是贬义,或者判断用户说“我空调不制冷了”背后的意图是“报修”而非“闲聊”。
  4. 多语言翻译:模型在向量空间中为不同语言构建了一个对齐的语义空间,使得“Hello world”和“你好,世界”的向量表示在含义上非常接近。

五、结语:统计机器还是认知主体?

大模型对语言的“理解”,是一种基于海量数据统计和复杂模式识别的功能性理解。它能够处理语义、语法和部分语用,表现出惊人的泛化能力,但其本质仍是一个高级的“关联引擎”。它没有意识,没有对世界的内在体验,其“理解”完全依赖于训练数据中存在的模式。

因此,说大模型“理解”语言,更像是在描述它能够在功能上模拟人类语言理解行为。这种模拟已经强大到足以改变我们与信息交互的方式,并催生出无数革命性的应用。未来,如何将符号逻辑、世界知识甚至感知信息更有效地融入这些统计模型,是实现更接近人类理解的关键一步。

理解大模型如何“理解”,不仅是为了更好地使用它,也是为了更清醒地认识当前人工智能的能力边界与未来方向。

文档信息

Search

    Table of Contents