第一章 引言
-
1.1 语言模型LM
LM是一种对词元序列(token)的概率分布
从语言模型p中以概率$p(x_{1:L})$进行采样:

关键是p的模型。
1.1.1 自回归语言模型(Autoregressive language models)
链式法则:

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

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

- ∝成正比
- T较高时,结果更随机;较低时,模型会倾向于生成概率较高的词元
自回归语言模型允许有效地生成给定提示 $x{1:i}$ 的补全 $x{i+1:L}$。
1.2 大模型相关历史回顾
交叉熵
N-gram模型。在一个n-gram模型中,关于$x{i}$的预测只依赖于最后的 $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(𝖼𝗁𝖾𝖾𝗌𝖾∣𝗍𝗁𝖾,𝗆𝗈𝗎𝗌𝖾,𝖺𝗍𝖾,𝗍𝗁𝖾)=p(𝖼𝗁𝖾𝖾𝗌𝖾∣𝖺𝗍𝖾,𝗍𝗁𝖾)$
这些概率是基于各种n-gram(例如,𝖺𝗍𝖾 𝗍𝗁𝖾 𝗆𝗈𝗎𝗌𝖾和𝖺𝗍𝖾 𝗍𝗁𝖾 𝖼𝗁𝖾𝖾𝗌𝖾)在大量文本中出现的次数计算的,并且适当地平滑以避免过拟合(例如,Kneser-Ney平滑)。
如果n太小,那么模型将无法捕获长距离的依赖关系,下一个词将无法依赖于𝖲𝗍𝖺𝗇𝖿𝗈𝗋𝖽。然而,如果n太大,统计上将无法得到概率的好估计(即使在“大”语料库中,几乎所有合理的长序列都出现0次).
因此,语言模型被限制在如语音识别和机器翻译等任务中,其中声音信号或源文本提供了足够的信息,只捕获局部依赖关系(而无法捕获长距离依赖关系)并不是一个大问题。
神经语言模型
仍受上下文长度限制,但是更大的n是可行的
RNNs(包括LSTM) 依赖整个上下文
Transformer 返回固定上下文长度,更容易训练(GPT3中n=2048)
GPT-3最吸引人的地方是上下文学习。
第二章 大模型能力
-
2.1 语言模型
困惑度(Perplexity)是一个重要的指标,是自然语言处理和语言模型中的一个重要概念,用于衡量语言模型的性能。它可以解释为模型在预测下一个词时的平均不确定性。简单来说,如果一个模型的困惑度较低,那么它在预测下一个词的时候就会更加准确。对于给定的语言模型和一个测试数据集,困惑度被定义为:

其中, $X=x{1},x{2},…,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}) \approxeq (1 + \epsilon) \text{perplexity}p(x{1:L})$
第三章 模型架构
-
3.1 概括
prompt

3.2 分词
词元(token)一般在NLP(自然语言处理)中来说,通常指的是一个文本序列中的最小单元,可以是单词、标点符号、数字、符号或其他类型的语言元素。通常,对于NLP任务,文本序列会被分解为一系列的tokens,以便进行分析、理解或处理。在英文中一个"token"可以是一个单词,也可以是一个标点符号。在中文中,通常以字或词作为token(这其中就包含一些字符串分词的差异性,将在后续内容中讲到)。
为什么说是“隐式的对齐”,这是由于每一个词在模型中,都有一个其确定的词向量。
3.2.1 基于空格的分词
3.2.2 字节对 编码BPE
3.2.3 Unigram model (SentencePiece)
它被用来训练T5和Gopher模型。
p(分词)·p(分词) = 似然值
似然值的计算是 unigram 模型中重要的一部分,它用于评估分词结果的质量。较高的似然值表示训练数据与分词结果之间的匹配程度较高,这意味着该分词结果较为准确或合理。
通过算法来剔除对似然值贡献较小的词汇:

保留那些对于似然值有较大贡献的词汇,提升模型的性能。
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可以依赖于任意远的过去(例如,x1),它不太可能以“精确”的方式依赖于它
- 从某种意义上说,LSTM真正地将深度学习引入了NLP领域。
3.3.5 Transformer

将K和Q得到分数:
$score{i}=x^{⊤}{i}W^{⊤}{key}W{query}y$


(1) 通过将其与每个$x_{i}$进行比较来处理$y$。
(2)返回
$W{value} x{1: L} \operatorname{softmax}\left(x{1: L}^{\top} W{key}^{\top} W_{query} y / \sqrt{d}\right)$
我们可以将注意力看作是具有多个方面(例如,句法、语义)的匹配。为了适应这一点,我们可以同时使用多个注意力头,并简单地组合它们的输出。

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

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

3.3.6 位置嵌入

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

不同版本的Transformer之间存在重要但详细的差异:
- 层归一化“后归一化”(原始Transformer论文)与“先归一化”(GPT-2),这影响了训练的稳定性(Davis等人,2021)。
- 应用了丢弃(Dropout)以防止过拟合。
- GPT-3使用了sparse Transformer(稀释 Transformer)来减少参数数量,并与稠密层交错使用。
- 根据Transformer的类型(Encdoer-Only, Decoder-Only, Encdoer-Decoder),使用不同的掩码操作。
原文见>> So Large LM