大模型基础知识

📁 归档 · 机器学习📆 发布 · 2025-05-01🤯 作者 · PH 👀 665 次浏览

第一章 引言

1.1 语言模型LM

LM是一种对词元序列(token)的概率分布。

从语言模型 $p$ 中以概率 $p(x_{1:L})$ 进行采样:

$$ p(x{1:L}) = \prod{i=1}^L p(xi \mid x{1:i-1}) $$

关键是 $p$ 的模型。

1.1.1 自回归语言模型(Autoregressive language models)

链式法则:

$$ p(x{1:L}) = \prod{i=1}^L p(xi \mid x{1:i-1}) $$

在自回归语言模型中生成整个序列,我们需要一次生成一个词元(token),该词元基于之前已生成的词元进行计算获得:

$$ x_i \sim p(xi \mid x{1:i-1}) $$

其中 $T$ 是一个控制我们希望从语言模型中得到多少随机性的温度参数:

$$ p(xi \mid x{1:i-1}) \propto \exp\left(\frac{\log p(xi \mid x{1:i-1})}{T}\right) $$

  • $\propto$ 成正比
  • $T$ 较高时,结果更随机;较低时,模型会倾向于生成概率较高的词元

自回归语言模型允许有效地生成给定提示 $x{1:i}$ 的补全 $x{i+1:L}$。

1.2 大模型相关历史回顾

交叉熵

N-gram模型。在一个n-gram模型中,关于 $xi$ 的预测只依赖于最后的 $n-1$ 个字符 $x{i-(n-1):i-1}$ ,而不是整个历史:

$$ p(xi \mid x{1:i-1}) = p(xi \mid x{i-(n-1):i-1}). $$

例如:

3-gram
$$ p(\text{cheese} \mid \text{the}, \text{mouse}, \text{ate}, \text{the}) = p(\text{cheese} \mid \text{ate}, \text{the}) $$

这些概率是基于各种n-gram(例如,$\text{ate the mouse}$ 和 $\text{ate the cheese}$)在大量文本中出现的次数计算的,并且适当地平滑以避免过拟合(例如,Kneser-Ney平滑)。

如果 $n$ 太小,那么模型将无法捕获长距离的依赖关系,下一个词将无法依赖于 $\text{Stanford}$。然而,如果 $n$ 太大,统计上将无法得到概率的好估计(即使在“大”语料库中,几乎所有合理的长序列都出现0次)。

因此,语言模型被限制在如语音识别和机器翻译等任务中,其中声音信号或源文本提供了足够的信息,只捕获局部依赖关系(而无法捕获长距离依赖关系)并不是一个大问题。

神经语言模型

仍受上下文长度限制,但是更大的 $n$ 是可行的。

RNNs(包括LSTM)依赖整个上下文。

Transformer 返回固定上下文长度,更容易训练(GPT3中 $n=2048$)。

GPT-3最吸引人的地方是上下文学习。

第二章 大模型能力

2.1 语言模型

困惑度(Perplexity)是一个重要的指标,是自然语言处理和语言模型中的一个重要概念,用于衡量语言模型的性能。它可以解释为模型在预测下一个词时的平均不确定性。简单来说,如果一个模型的困惑度较低,那么它在预测下一个词的时候就会更加准确。对于给定的语言模型和一个测试数据集,困惑度被定义为:

$$ \text{perplexity}(X) = \exp\left(-\frac{1}{N} \sum_{i=1}^N \log p(xi \mid x{1:i-1})\right) $$

其中, $X=x{1},x{2},\dots,x_{N}$ 是测试集中的词序列, $N$ 是测试集中的总词数。困惑度与语言模型的质量紧密相关。一个优秀的语言模型应能准确预测测试数据中的词序列,因此它的困惑度应较低。相反,如果语言模型经常做出错误的预测,那么它的困惑度将较高。

困惑度可以被理解为每个标记(token)的平均"分支因子(branching factor)"。这里的“分支因子”可以理解为在每个位置,模型认为有多少种可能的词会出现。例如,若困惑度为10,那意味着每次模型在预测下一个词时,平均上会考虑10个词作为可能的选择。

$$ \text{perplexity}q(x{1:L}) \le \frac{1}{1 - \epsilon} \text{perplexity}p(x{1:L}) \approx (1 + \epsilon) \text{perplexity}p(x{1:L}) $$

第三章 模型架构

3.1 概括

prompt

$$ \text{Prompt} \rightarrow \text{Model} \rightarrow \text{Completion} $$

3.2 分词

词元(token)一般在NLP(自然语言处理)中来说,通常指的是一个文本序列中的最小单元,可以是单词、标点符号、数字、符号或其他类型的语言元素。通常,对于NLP任务,文本序列会被分解为一系列的tokens,以便进行分析、理解或处理。在英文中一个"token"可以是一个单词,也可以是一个标点符号。在中文中,通常以字或词作为token(这其中就包含一些字符串分词的差异性,将在后续内容中讲到)。

为什么说是“隐式的对齐”,这是由于每一个词在模型中,都有一个其确定的词向量。

3.2.1 基于空格的分词

3.2.2 字节对编码BPE

3.2.3 Unigram model (SentencePiece)

它被用来训练T5和Gopher模型。

$p(\text{分词}) \cdot p(\text{分词}) = \text{似然值}$

似然值的计算是 unigram 模型中重要的一部分,它用于评估分词结果的质量。较高的似然值表示训练数据与分词结果之间的匹配程度较高,这意味着该分词结果较为准确或合理。

通过算法来剔除对似然值贡献较小的词汇:

$$ \mathcal{L} = \sum_{x \in \mathcal{X}} \log p(x) $$

保留那些对于似然值有较大贡献的词汇,提升模型的性能。

3.3 模型架构

3.3.1 编码端(Encoder-Only)架构

编码端架构的著名的模型如BERT、RoBERTa等。

这些语言模型生成上下文向量表征,但不能直接用于生成文本。

这些上下文向量表征通常用于分类任务(也被称为自然语言理解任务)。

能双向依赖上下文。

3.3.2 解码器(Decoder-Only)架构

GPT

下文向量表征只能单向地依赖于左侧上下文。

3.3.3 编码-解码端(Encoder-Decoder)架构

最初的Transformer模型,其他的还有如BART、T5等模型。

缺点就是需要更多的特定训练目标。

3.3.4 基础架构

  1. 词元 → 向量

    • (1)直接转嵌入
    • (2)序列模型
    • (3)基于前馈网络,如n-gram
  2. 递归神经网路

    • (1)sequence RNN
    • (2)RNN
      • RNN,当前状态、观测值……
      • simple RNN 线性与非线性变换
      • 双向RNN(从左 从右 拼在一起),用于RLMo与ULMFiT

小结

  • 简单RNN由于梯度消失的问题很难训练。
  • 为了解决这个问题,发展了长短期记忆(LSTM)和门控循环单元(GRU)(都属于RNN)。
  • 然而,即使嵌入 $h$ 可以依赖于任意远的过去(例如,$x_1$),它不太可能以“精确”的方式依赖于它。
  • 从某种意义上说,LSTM真正地将深度学习引入了NLP领域。

3.3.5 Transformer

将K和Q得到分数:

$$ \text{score}_i = xi^\top W{\text{key}}^\top W_{\text{query}} y $$

(1) 通过将其与每个 $x_i$ 进行比较来处理 $y$。

(2) 返回

$$ W{\text{value}} x{1:L} \operatorname{softmax}\left(x{1:L}^\top W{\text{key}}^\top W_{\text{query}} y / \sqrt{d}\right) $$

我们可以将注意力看作是具有多个方面(例如,句法、语义)的匹配。为了适应这一点,我们可以同时使用多个注意力头,并简单地组合它们的输出。

对于自注意层,我们将用$x_i$ 替换 $y$ 作为查询参数来产生,其本质上就是将自身的 $x_i$ 对句子的其他上下文内容进行注意力的运算:

$$ \text{Attention}(Q, K, V) = \operatorname{softmax}\left(\frac{QK^\top}{\sqrt{d}}\right)V $$

自注意力使得所有的词元都可以“相互通信”,而前馈层提供进一步的连接。

3.3.6 位置嵌入

我们现在可以简要地定义GPT-3架构,只需将Transformer块堆叠96次即可:

$$ \text{GPT-3} = \text{Transformer}^{96} $$

不同版本的Transformer之间存在重要但详细的差异:

  • 层归一化“后归一化”(原始Transformer论文)与“先归一化”(GPT-2),这影响了训练的稳定性(Davis等人,2021)。
  • 应用了丢弃(Dropout)以防止过拟合。
  • GPT-3使用了sparse Transformer(稀疏 Transformer)来减少参数数量,并与稠密层交错使用。
  • 根据Transformer的类型(Encoder-Only, Decoder-Only, Encoder-Decoder),使用不同的掩码操作。

原文见>> So Large LM

更多文章

回到顶部