大语言模型发展历程解析:从早期NLP到Transformer的架构演进

1次阅读
没有评论

共计 2220 个字符,预计需要花费 6 分钟才能阅读完成。

image.webp

统计语言模型时代(1990s-2000s)

语言建模最初通过统计方法实现,核心思想是基于马尔可夫假设:一个词的出现概率仅依赖前面有限的 n - 1 个词(n-gram 模型)。典型代表包括:

大语言模型发展历程解析:从早期 NLP 到 Transformer 的架构演进

  • 二元语法模型(Bigram):基于前一个词预测当前词,概率公式为 $P(w_i|w_{i-1})$
  • 平滑技术 :解决零概率问题的拉普拉斯平滑(Add-one Smoothing)和 Katz 回退

主要局限:
1. 无法建模长距离依赖(n 取值通常不超过 5)
2. 面临维度灾难(vocabulary_size^n 参数空间)

神经网络语言模型突破(2003-2013)

Bengio 在 2003 年提出首个神经网络语言模型(NNLM),关键技术演进:

  • 分布式表示 :通过词嵌入(Word2Vec 前身)解决 one-hot 稀疏性问题
  • 三层前馈网络结构
    # 简化版 NNLM 架构(PyTorch 风格伪代码)class NNLM(nn.Module):
        def __init__(self, vocab_size, embed_dim, hidden_dim):
            super().__init__()
            self.embedding = nn.Embedding(vocab_size, embed_dim)
            self.fc1 = nn.Linear(embed_dim * context_size, hidden_dim)
            self.fc2 = nn.Linear(hidden_dim, vocab_size)
    
        def forward(self, x):
            embeds = self.embedding(x).view(-1)  # 拼接上下文词向量
            out = F.relu(self.fc1(embeds))
            return self.fc2(out)

里程碑:Mikolov 等人提出的 Word2Vec(2013)通过 Skip-gram 和 CBOW 模型实现高效词向量训练

RNN/CNN 时代(2014-2017)

循环神经网络方案

  • LSTM/GRU:解决长序列梯度消失问题
  • 双向架构 :如 BiLSTM 同时考虑前后文信息

典型应用:
– Google 的 Seq2Seq(2014)机器翻译系统
– 多层 LSTM 语言模型(如 Graves 2013)

卷积网络方案

  • TextCNN(Kim 2014):并行处理 n -gram 特征
  • Dilated CNN:扩大感受野(如 WaveNet 2016)

共同缺陷:
1. RNN 的序列依赖性限制并行能力
2. CNN 难以建模全局依赖关系

Transformer 革命(2017- 至今)

Vaswani 等人在《Attention Is All You Need》中提出 Transformer 架构,核心组件:

  • 自注意力机制 :计算复杂度 $O(n^2·d)$,n 为序列长度,d 为维度
  • 多头注意力 :并行多个注意力头捕获不同特征

关键实现(PyTorch 示例):

class MultiHeadAttention(nn.Module):
    def __init__(self, d_model, num_heads):
        super().__init__()
        self.d_k = d_model // num_heads
        self.num_heads = num_heads
        self.q_linear = nn.Linear(d_model, d_model)
        self.k_linear = nn.Linear(d_model, d_model)
        self.v_linear = nn.Linear(d_model, d_model)

    def forward(self, q, k, v, mask=None):
        # 线性变换后分割多头
        q = split_heads(self.q_linear(q), self.num_heads)  # [B, H, L, D/H]
        k = split_heads(self.k_linear(k), self.num_heads)
        v = split_heads(self.v_linear(v), self.num_heads)

        # 缩放点积注意力
        scores = torch.matmul(q, k.transpose(-2, -1)) / math.sqrt(self.d_k)
        if mask is not None:
            scores = scores.masked_fill(mask == 0, -1e9)
        attn = F.softmax(scores, dim=-1)
        return combine_heads(torch.matmul(attn, v))

技术对比分析

技术阶段 代表模型 参数量级 训练效率 长程依赖能力
统计语言模型 Trigram 1e6-1e7 ★★★★
神经网络语言模型 Word2Vec 1e7-1e8 ★★★☆ ★★
RNN 时代 3 层 LSTM 1e8-1e9 ★★☆ ★★★
Transformer BERT-base 1e8-1e9 ★★ ★★★★
现代 LLM GPT-3 1e11+ ★★★★

生产环境考量

  1. 计算资源需求
  2. 175B 参数的 GPT- 3 需要数千张 GPU 训练
  3. 推理时显存占用公式:$4\times\text{参数量}\times\text{序列长度}$(FP32)

  4. 延迟优化方案

  5. 量化:FP16/INT8 降低带宽需求
  6. 模型裁剪:Head/Layer 剪枝
  7. 缓存机制:KV Cache 复用

模型选型指南

  • 轻量级场景 (移动端):ALBERT/TinyBERT
  • 平衡型任务 (对话系统):GPT-2/BlenderBot
  • 知识密集型 :GPT-3/PaLM
  • 多语言需求 :mT5/BLOOM

当前趋势表明,模型架构仍在快速演进中,稀疏化、模块化设计将成为下一代 LLM 的重要方向。

正文完
 0
评论(没有评论)