1. 什么是语言模型

语言模型(Language Model,LM)的经典定义是一种对令牌序列(token)的概率分布。假设有一个令牌集的词汇表 $V$ 。语言模型p为每个令牌序列$x_{1}, x_{2},...x_{L} \in V$分配一个概率(介于0和1之间的数字):

$$ p(x_1, \dots, x_L) $$

概率可以直观的告诉我们一令牌序列有多好(正常)。例如,如果词汇表为{ate, ball, cheese, mouse, the},语言模型可能会分配以下概率(举例):

$$ \begin{aligned} p(\text{mouse, the, the, cheese, ate}) &= 0.0001 \\ p(\text{the, mouse, ate, the, cheese}) &= 0.02 \\ p(\text{the, cheese ate, the, mouse}) &= 0.01 \\ \end{aligned} $$

从数学上讲,语言模型是一个简单而又美妙的对象。但是这种简单是具有欺骗性的:赋予所有序列以(有意义的)概率的能力,这种能力要求语言模型具有非凡的(但是隐含的)语言能力和世界知识。

例如,语言模型应该赋予"mouse the the cheese ate"比较低的概率,因为其语法不正确。由于世界知识的存在,语言模型应该隐含地赋予"the mouse ate the cheese" 比 " the cheese ate the mouse" 更高的概率。这是因为,两个句子在语法上是相同的,但是在语义上却存在差异,而语言模型需要具备卓越的语言能力和世界知识,才能准确评估序列的概率。

语言模型也可以做生成任务。如定义所示,语言模型 p 接受一个序列并返回一个概率来评估其好坏。我们也可以根据语言模型生成一个序列。最纯粹的方法是从语言模型 $p$ 中以概率$p(x_{1:L})$进行采样,表示为:

$$ x_{1:L} \sim p $$

如何在计算上高效地实现这一点取决于语言模型 p 的形式。实际上,我们通常并不是直接从语言模型中进行采样,这既因为真实语言模型的限制,也因为我们有时希望获得的不是一个“平均”的序列,而是更接近“最佳”序列的结果。

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

序列$x_{1:L}$的联合分布$p(x_{1:L})$的常见写法是使用概率的链式法则:

$$ 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}) $$

举个关于文本的例子:

$$ \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(x_{i}∣x_{1:i−1})$ 是一个给定前面的记号 $x_{1:i−1}$ 后,下一个记号 $x_{i}$ 的条件概率分布。在数学上,任何联合概率分布都可以通过这种方式表示。然而,自回归模型的特点是,它可以利用例如前馈神经网络等方法有效计算出每个条件概率分布 $p(x_i \mid x_{1:i-1})$ 。在自回归语言模型 $p$ 中生成整个序列 $x_{1:L}$,我们每次生成令牌(token)都需要用之前生成的令牌计算得到:

$$ \begin{aligned} \text { for } i &=1,\ldots, L: \\ x_i & \sim p(x_i \mid x_{1:i-1})^{1/T} \end{aligned} $$

其中,$T \geq 0$ 是一个控制模型随机性的温度参数

  • $T = 0$:确定性地在每个 $i$ 位置选择最可能地令牌 $x_{i}$
  • $T = 1$:从纯语言模型中正常(normally)采样
  • $T = \infty$:从整个词汇表上均匀分布采样

然而,如果我们仅将概率提高到 $1/T$

最后修改:2025 年 03 月 11 日
如果觉得我的文章对你有用,请随意赞赏