大模型理论学习记录(一)
语言模型概念
语言模型(LM)的经典定义是一种对令牌序列(token)的概率分布。语言模型p为每个令牌序列 x 1 , . . . , x L x_{1},...,x_{L} x1,...,xL ∈ V V V 分配一个概率(介于0和1之间的数字)。所以对于任意的词序列,语言模型能够计算出这个序列是一句话的概率。
eg.对于以下两个词序列:
A:今天|天气|真|好,B:好|今天|真|天气
A明显是一句话,B明显不是一句话,一个好的语言模型需要对序列A给出很高的概率,对序列B给出很小的概率。
自回归语言模型(Autoregressive language models)
将序列
x
1
:
L
x_{1:L}
x1:L 的联合分布
p
(
x
1
:
L
)
p(x_{1:L})
p(x1:L) 的常见写法是使用概率的链式法则:
p
(
x
1
:
L
)
=
p
(
x
1
)
p
(
x
2
∣
x
1
)
p
(
x
3
∣
x
1
,
x
2
)
⋯
p
(
x
L
∣
x
1
:
L
−
1
)
=
∏
i
=
1
L
p
(
x
i
∣
x
1
:
i
−
1
)
.
p(x_{1:L}) = p(x_1) p(x_2 \mid x_1) p(x_3 \mid x_1, x_2) \cdots p(x_L \mid x_{1:L-1}) = \prod_{i=1}^L p(x_i \mid x_{1:i-1}).
p(x1:L)=p(x1)p(x2∣x1)p(x3∣x1,x2)⋯p(xL∣x1:L−1)=i=1∏Lp(xi∣x1:i−1).
p
(
x
i
∣
x
1
:
i
−
1
)
p(x_{i}∣x_{1:i−1})
p(xi∣x1:i−1) 是一个给定前面的记号
x
1
:
i
−
1
x_{1:i−1}
x1:i−1 后,下一个记号
x
i
x_{i}
xi 的条件概率分布。在数学上,任何联合概率分布都可以通过这种方式表示。然而,自回归语言模型的特点是它可以利用例如前馈神经网络等方法有效计算出每个条件概率分布
p
(
x
i
∣
x
1
:
i
−
1
)
p(x_{i}∣x_{1:i−1})
p(xi∣x1:i−1) 。在自回归语言模型
p
p
p 中生成整个序列
x
1
:
L
x_{1:L}
x1:L ,我们需要一次生成一个令牌(token),该令牌基于之前以生成的令牌进行计算获得:
for
i
=
1
,
…
,
L
:
x
i
∼
p
(
x
i
∣
x
1
:
i
−
1
)
1
/
T
,
\begin{aligned} \text { for } i & =1, \ldots, L: \\ x_i & \sim p\left(x_i \mid x_{1: i-1}\right)^{1 / T}, \end{aligned}
for ixi=1,…,L:∼p(xi∣x1:i−1)1/T,
其中
T
≥
0
T≥0
T≥0 是一个控制我们希望从语言模型中得到多少随机性的温度参数:(详细介绍见:深度学习高温蒸馏:Softmax With Temperature)
- T=0:确定性地在每个位置 i 选择最可能的令牌 x i x_{i} xi
- T=1:从纯语言模型“正常(normally)”采样
- T=∞:从整个词汇表上的均匀分布中采样
理解T:这个温度参数会应用于每一步的条件概率分布 p ( x i ∣ x 1 : i − 1 ) p(x_{i}∣x_{1:i−1}) p(xi∣x1:i−1) ,将其幂变为 1 / T 1/T 1/T 。假设温度越来越大(T越来越大),那么物体都会被液化(概率分布更平滑),会获得更平均的概率分布,生成的结果更具随机性;当温度小的时候物体的固体性质更明显(概率分布更尖锐),模型会更倾向于生成概率较高的令牌。
然而,如果仅将概率提高到 1 / T 1/T 1/T 的次方,概率分布可能不会加和到 1。可以通过重新标准化分布来解决这个问题。将标准化版本 p T ( x i ∣ x 1 : i − 1 ) ∝ p ( x i ∣ x 1 : i − 1 ) 1 / T p_{T}(x_{i}∣x_{1:i−1})∝p(x_{i}∣x_{1:i−1})^{1/T} pT(xi∣x1:i−1)∝p(xi∣x1:i−1)1/T 称为退火条件概率分布。
大模型相关历史回顾
信息理论
语言模型的发展可以追溯到克劳德·香农,他在1948年的具有里程碑意义的论文《通信的数学理论》中奠定了信息理论的基础。在这篇论文中,他引入了用于度量概率分布的熵(Entropy)的概念:
H ( p ) = ∑ x p ( x ) log 1 p ( x ) . H(p) = \sum_x p(x) \log \frac{1}{p(x)}. H(p)=x∑p(x)logp(x)1.
熵实际上是一个衡量将样本 x ∼ p x∼p x∼p 编码(即压缩)成比特串所需要的预期比特数的度量。举例来说,“the mouse ate the cheese” 可能会被编码成 “0001110101”。
熵的值越小,表明序列的结构性越强,编码的长度就越短。直观地理解, log 1 p ( x ) \log \frac{1}{p(x)} logp(x)1 可以视为用于表示出现概率为 p ( x ) p(x) p(x) 的元素 x x x 的编码的长度。
实际上达到香农极限(Shannon limit)是非常具有挑战性的(例如,低密度奇偶校验码),这也是编码理论研究的主题之一。
n-gram模型
在一个n-gram模型中,关于
x
i
x_{i}
xi的预测只依赖于最后的
n
−
1
n-1
n−1 个字符
x
i
−
(
n
−
1
)
:
i
−
1
x_{i−(n−1):i−1}
xi−(n−1):i−1 ,而不是整个历史:
p
(
x
i
∣
x
1
:
i
−
1
)
=
p
(
x
i
∣
x
i
−
(
n
−
1
)
:
i
−
1
)
.
p(x_i \mid x_{1:i-1}) = p(x_i \mid x_{i-(n-1):i-1}).
p(xi∣x1:i−1)=p(xi∣xi−(n−1):i−1).
以i=3,n=3的tri-gram语言模型为例:
p
(
x
3
∣
x
1
:
2
)
=
p
(
x
3
∣
x
2
)
=
c
o
u
n
t
(
x
3
,
x
2
)
c
o
u
n
t
(
x
2
)
p(x_3 \mid x_{1:2})=p(x_3 \mid x_{2}) = \frac{count(x_3,x_2)}{count(x_2)}
p(x3∣x1:2)=p(x3∣x2)=count(x2)count(x3,x2)
其中count(*)表示在文本中出现的次数。
总结一下,n-gram语言模型有两个要点:
- 使用n-1阶马尔可夫假设简化后验概率 ,提高模型的泛化能力
- 使用数数法计算后验概率
将n-gram模型拟合到数据上非常便宜且可扩展。因此,n-gram模型被训练在大量的文本上。例如,Brants等人(2007)在2万亿个tokens上训练了一个5-gram模型用于机器翻译。相比之下,GPT-3只在3000亿个tokens上进行了训练。
然而,n-gram模型有其根本的限制。如果n太小,那么模型将无法捕获长距离的依赖关系,下一个词将无法依赖于前文。如果n太大,统计上将无法得到概率的好估计(即使在“大”语料库中,几乎所有合理的长序列都出现0次),也就是 c o u n t ( x i − ( n − 1 ) , . . . , x i ) = 0 count(x_{i-(n-1)},...,x_i)=0 count(xi−(n−1),...,xi)=0,导致在进行预测时,很多句子的概率都是0,为了避免这种情况发生,大量的研究工作致力于对count()=0的情况做平滑处理(An Empirical Study of Smoothing Techniques for Language Modeling),最简单的方法是所有词组出现次数加1。
神经语言模型
语言模型的一个重要进步是神经网络的引入。Bengio等人在2003年首次提出了神经语言模型,其中 p ( x i ∣ x i − ( n − 1 ) : i − 1 ) p(x_{i}∣x_{i−(n−1):i−1}) p(xi∣xi−(n−1):i−1) 由神经网络给出。虽然上下文长度仍然受到n的限制,但现在对更大的n值估计神经语言模型在统计上是可行的。
自2003年以来,神经语言建模的两个关键发展包括:
- Recurrent Neural Networks(RNNs),包括长短期记忆(LSTMs),使得一个令牌 x i x_{i} xi的条件分布可以依赖于整个上下文 x 1 : i − 1 x_{1:i−1} x1:i−1 (有效地使 n = ∞ n=∞ n=∞ ),但这些模型难以训练。
- Transformers是一个较新的架构(于2017年为机器翻译开发),再次返回固定上下文长度n,但更易于训练(并利用了GPU的并行性)。此外,n可以对许多应用程序“足够大”(GPT-3使用的是n=2048)。
相关链接:
学习资料来源
深度学习高温蒸馏:Softmax With Temperature
An Empirical Study of Smoothing Techniques for Language Modeling