Datawhale简单学点大模型(1)
引用部分为个人的补充和笔记
1.1 什么是语言模型
语言模型(LM)的经典定义是一种对令牌序列(token)的概率分布。假设我们有一个令牌集的词汇表 V V V 。语言模型p为每个令牌序列 x 1 , . . . , x L x_{1},...,x_{L} x1,...,xL ∈ V V V 分配一个概率(介于0和1之间的数字):
p ( x 1 , … , x L ) p(x_1, \dots, x_L) p(x1,…,xL)
概率直观地告诉我们一个标记序列有多“好(good)”。例如,如果词汇表为 {ate, ball, cheese, mouse, the},语言模型可能会分配以下概率(演示):
p ( the, mouse, ate, the, cheese ) = 0.02 , p(\text{the, mouse, ate, the, cheese}) = 0.02, p(the, mouse, ate, the, cheese)=0.02,
p ( the, cheese ate, the, mouse ) = 0.01 , p(\text{the, cheese ate, the, mouse}) = 0.01, p(the, cheese ate, the, mouse)=0.01,
p ( mouse, the, the, cheese, ate ) = 0.0001 , p(\text{mouse, the, the, cheese, ate}) = 0.0001, p(mouse, the, the, cheese, ate)=0.0001,
上述示例中,语言模型应该隐含地赋予"𝗆𝗈𝗎𝗌𝖾 𝗍𝗁𝖾 𝗍𝗁𝖾 𝖼𝗁𝖾𝖾𝗌𝖾 𝖺𝗍𝖾"一个非常低的概率,因为它在语法上是不正确的(句法知识)。由于世界知识的存在,语言模型应该隐含地赋予"𝗍𝗁𝖾 𝗆𝗈𝗎𝗌𝖾 𝖺𝗍𝖾 𝗍𝗁𝖾 𝖼𝗁𝖾𝖾𝗌𝖾"比"𝗍𝗁𝖾 𝖼𝗁𝖾𝖾𝗌𝖾 𝖺𝗍𝖾 𝗍𝗁𝖾 𝗆𝗈𝗎𝗌𝖾"更高的概率。这是因为两个句子在句法上是相同的,但在语义上却存在差异,而语言模型需要具备卓越的语言能力和世界知识,才能准确评估序列的概率。
语言模型也可以做生成任务。如定义所示,语言模型p接受一个序列并返回一个概率来评估其好坏。我们也可以根据语言模型生成一个序列。最纯粹的方法是从语言模型 p p p中以概率 p ( x 1 : L ) p(x_{1:L}) p(x1:L)进行采样,表示为:
x 1 : L ∼ p . x_{1:L}∼p. x1:L∼p.
如何在计算上高效地实现这一点取决于语言模型p的形式。实际上,我们通常不直接从语言模型中进行采样,这既因为真实语言模型的限制,也因为我们有时希望获得的不是一个“平均”的序列,而是更接近“最佳”序列的结果。
自回归语言模型(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 ( t h e , m o u s e , a t e , t h e , c h e e s e ) = p ( t h e ) p ( m o u s e ∣ t h e ) p ( a t e ∣ t h e , m o u s e ) p ( t h e ∣ t h e , m o u s e , a t e ) p ( c h e e s e ∣ t h e , m o u s e , a t e , t h e ) . \begin{align*} p({the}, {mouse}, {ate}, {the}, {cheese}) = \, & p({the}) \\ & p({mouse} \mid {the}) \\ & p({ate} \mid {the}, {mouse}) \\ & p({the} \mid {the}, {mouse}, {ate}) \\ & p({cheese} \mid {the}, {mouse}, {ate}, {the}). \end{align*} p(the,mouse,ate,the,cheese)=