3 most important points

  1. Decoder-Only 是主流架构; Encoder-Only 生成能力缺失,且限于句子和段落级别,发展缓慢
  2. Encoder-Decoder 适合做需要理解输入(即有条件)后的输出相关任务,如机器翻译,问答系统,但计算复杂度更高,且泛化性能类似
  3. 本篇提到的所有模型,后期基本都没有结构上的改进了,在卷数据量和数据清洗

5 thoughts

  1. BERT 和 Transformer 差别还是有一些的,GPT 可以说是几乎没有差别,只是去掉了一个模块,做了一些小改动,亮点全在框架和思路——敏锐发现自监督学习的潜力,开发少样本学习和 In-context Learning,是现在 LLM 的基础

Notes

Evolutionary Tree of LLMs

来自 GPT

路线代表模型主要创新
堆规模派(Scaling law)GPT 系列、Claude、Gemini数据、指令调优、对齐机制
结构创新派(Architecture)RWKV、Mamba、RetNet、Mixtral注意力替代、长上下文、专家机制
算法优化派(Efficiency)FlashAttention、LoRA、QLoRA更高效的训练与推理
范式探索派(Agent 化)Gemini、GPT-4o多模态融合、推理与工具使用一体化

Encoder-Only

  • BERT
  • 优点
    • 通过 MLM 任务获取到上下文相关的双向特征表示
    • 可以通过微调,将预训练好的模型迅速迁移到各种下游任务
    • 适合各种自然语言理解 NLU 任务
  • 缺点
    • 只使用了 transformer 编码器部分,没有进行自回归预训练,且架构上缺少解码器,不适合直接处理自然语言生成 NLG 任务,如生成对话,文章摘要,机器翻译
    • 只适合处理句子和段落级别的任务,不适合处理文档级别任务

Encoder-Decoder

  • T5(Text-to-Text Transfer Transformer)
    • 思路:
      • 模型:将所有 NLP 问题,都转化为 Text-to-Text 问题,用统一模型解决
      • 输入:在输入数据前加上任务声明前缀(summarize、translate English to german…)这是 prompt 的前身?
      • 输出:即使是需要输出连续值的任务,也输出文本,例如 STS-B(文本语义相似度任务)
    • 结构:原始 Transformer
    • 训练:
      • 数据:C4,Colossal Clean Crawled Crpus, 公开爬取网页数据集
      • 预训练:
        • 高层次方法:选择类似 BERT 的 MLM 任务,即破坏部分并还原
        • 文本破坏方法:选择小段文本替换(而不是 token 替换)
        • 破坏占比:15%
        • 小段文本替换的长度选择:3
    • 规模:
      • Small (60M):Encoder 和 Decoder 都只有 6 层,隐维度 512,8 头;
      • Base (220M):相当于 Encoder 和 Decoder 都用 BERT-base;
      • Large (770M):Encoder 和 Decoder 都用 BERT-large 设置,除了层数只用 12 层;
      • 3B (Billion) /11B:层数都用 24 层,不同的是其中头数量和前向层的维度。 11B 达到 Sota,本质是数据量堆起来的
  • 优点
    • 适合做需要理解输入(即有条件)后的输出相关任务,如机器翻译,问答系统
  • 缺点(与 decoder-only 相比)
    • 需要训练两个模块,计算复杂度高
    • Attention 容易退化为低秩矩阵,限制表达能力;在同等参数量下,泛化性能类似

Decoder-Only

  • GPT 系列
  • LLaMA 系列
  • 优点:
    • In-context Learning:Decoder 机构的 In-context Learning 能力更强,因为 Prompt 可以更直接的作用于 Decoder 的每一层参数,无需经过编码器的转换,微调的信号更强,使得 Decoder-Only 能够更准确的捕捉和利用输入序列的信息
    • Attention:双向 Attention 的注意力矩阵容易退化为低秩状态;Causal Attention 的注意力矩阵是下三角阵,依然满秩,建模能力强,且具有隐式的位置编码功能
    • 计算效率:支持一直复用 KV-cache,计算效率更高
    • 泛化性:zero-shot 泛化性能更好,few-shot 能力更强

Reference