近年来,语言模型(LMs)在自然语言处理领域取得了巨大成功,其核心在于能够估计自然语言序列的概率分布。这种分布对于计算语言学研究中的困惑度和惊异度至关重要。虽然我们通常关心的是如何测量词语的这些值,但大多数语言模型实际上是基于子词进行操作的。尽管看起来很简单,但要根据一种单元的概率准确计算另一种单元的概率,需要格外小心。事实上,我们发现许多最近的语言学研究都错误地计算了这些值。
本文推导了计算词语概率的正确方法,重点介绍了依赖使用词首标记(bow)分词器的语言模型(例如 GPT 系列)时出现的问题。实证结果表明,纠正概率计算中普遍存在的“错误”会影响句子理解和词汇优化分析中的测量结果。
1. 引言
语言模型定义了概率分布。在接受语言数据训练后,这些模型可以用来估计字符序列 c ∈ C∗ 或上下文词 wt ∈ W 中词的概率,其中 w<t ∈ W ∗。虽然推导这种估计现在已经很少作为训练这种模型的明确目标,但这种用例在一些领域仍然至关重要。例如,估计字符序列的概率对于计算模型的困惑度是必要的,这是语言模型训练中的一个核心评价指标。估计一个词在上下文中的概率对于计算一个词的惊异度是必要的:− log p(wt | w<t),这是心理语言学和计算语言学中的一个重要值。
值得注意的是,大多数最近的语言模型都是在子词上运行的:经常一起出现的字符序列。这样做既是为了优化,也是为了效率。然而,子词并不一定构成实际的词,正如语言词典所定义的那样。至少从表面上看,从子词 p(s) 的概率分布转换为字符 p(c) 或词 p(w) 的概率分布似乎很简单。然而,一些技术细节很容易被忽视。例如,几个子词序列 s 可以映射到一个字符序列 c,这意味着准确计算 p(c) 应该边缘化这些选项。
在这项工作中,我们讨论了如何正确计算一个词的上下文概率:p(wt | w<t)。这个值的计算取决于用来定义语言模型词汇的分词器的选择。当使用词尾标记(eow)分词器时,计算 p(wt| w<t) 很简单。然而,当使用词首标记(bow)分词器时,正确计算这个值就不那么简单了。我们推导了这些分词方案的方法,我们将在图1中介绍。由于许多广泛使用的语言模型都采用了词首标记分词器(例如,GPT 模型、Pythia、Mistral),这突出了大多数最近的心理语言学和计算语言学工作在计算词语概率方面普遍存在的“错误”。
实证结果表明,纠正这种计算会影响先前两项实证分析的结果:一项是关于句子理解的,另一项是关于词汇的交际效率的。虽然这些研究的结论没有改变,但我们确实观察到,当使用正确的方法和有缺陷的方法计算词语概率时,测量结果之间存在统计学意义上的显著差异。我们得出结论,这种方法的选择有可能影响实证分析,未来的工作应该采用我们的修正。
2. 什么是词?
尽管经过了几十年的讨论和辩论,但对于什么是词,并没有一个统一的、被广泛接受的定义。通常,定义是针对语言中的某些系统做出的,例如其拼写法、音系学或语法。作为一个具体的例子,人们可以使用一种语言的声音系统来划分词语,假设它们划分了某些音系过程(如元音和谐)运作的范围。或者,人们可以将词语定义为语法元素(例如,词根加词缀),这些元素具有凝聚力,以固定的顺序出现,并具有连贯的意义。值得注意的是,语法词和音系词之间并不是一一对应的关系。例如,英语中的连字符元素,如 editor-in-chief 或 mother-in-law,通常被分析为一个包含多个音系词的语法词。
我们在此不讨论这个更广泛的问题。虽然我们使用的是自然语言处理应用程序中常见的定义——词语是按拼写法定义的——但我们的方法只假设存在一组确定性的规则,用于将字符串分割成词语。
3. 词语及其分布
令 W 为一个词典——一种语言中所有词语的(可能是无限的)集合——而 w ∈ W 是这个词典中的一个词语。此外,令 w ∈ W ∗ 为一个词语序列;W ∗ 表示所有有限长度词语序列的集合。现在,假设分布 p 描述了这种语言的用户产生序列 w 的概率。我们可以自回归地将这些概率分解为:
$$
p(w) = p(eos | w) \prod_{t=1}^{|w|} p(w_t | w_{<t})
$$
其中 eos 是一个特殊的序列结束符号,它使这个在 W ∗ 上的概率分布有效。本文关注的是使用预先训练好的语言模型来计算一个词在上下文中的概率的正确方法,即 p(wt | w<t)。为此,我们首先讨论它与其他量的等价性,这将最终揭示先前计算方法中的一个缺陷。我们首先定义一个概率函数 PW,它在字符串集 ΨW ⊆ W ∗ 上运行。
定义 1. 给定分布 p(w),我们定义概率函数 PW : P(W ∗) → [0, 1],它返回任何事件 w ∈ ΨW ⊆ W ∗ 发生的概率。由于这些事件是不相交的,PW(ΨW) 可以定义为:
$$
P_W(\Psi_W) \stackrel{\text{def}}{=} \sum_{w \in \Psi_W} p(w)
$$
现在,令 ◦ 表示连接(在字符串或字符串集之间),而 w ◦ W ∗ 表示所有以 w 为前缀的字符串的集合:{w◦w′ | w′ ∈ W ∗}。我们可以通过对 PW 的两次评估来计算我们想要的条件分布:
$$
p(w | w_{<t}) = \frac{P_W(w_{<t} ◦ w ◦ W^∗)}{P_W(w_{<t} ◦ W^∗)}
$$
请注意,这是对概率联合规则的简单调用:条件 p(w | w<t) 等于观察到前缀 w<t ◦ w 的概率(由 PW(w<t ◦ w ◦ W ∗) 表示)除以观察到前缀 w<t 的概率(由 PW(w<t ◦ W ∗) 表示)。我们称 PW(w ◦ W ∗) 形式的概率为 w 的前缀概率。
拼写法. 我们在这里假设这种语言可以书写,并且它有一个标准化的拼写惯例。形式上,给定一种语言的字母表 C,每个字符串 w 都可以通过函数 S W ∗→C∗ : W ∗→ C∗ 映射到一个字符序列 c ∈ C∗。此外,我们假设这种语言允许从拼写法中直接进行分割。因此,给定一个字符序列 c,我们可以提取一个词语序列,如
$$
S^{-1}_{C∗→W ∗} (c) = w.
$$
4. 子词和语言模型
大多数现代语言模型不是直接定义为词语 w 的分布,而是定义为子词的分布。这些子词本身是由分词器的选择来定义的。在本节中,我们将首先介绍分词器,以及它们如何将词语映射到子词(以及反向映射)。然后,我们将使用这些构建块来展示如何从子词概率中计算出词语概率。
4.1 从词语到子词,再回到词语
分词器带有一个词汇表 S,其元素是子词 s ∈ S;每个子词代表一个字符序列 c ∈ S∗→C∗ : S ∗ → C∗。然后,可以通过简单地将一个子词序列映射到它们所代表的字符并将它们连接在一起来定义一个去分词化函数 S S∗→C∗。分词器还提供了一个分词化函数 C∗ → S ∗,它接受一个字符序列作为输入,并将其映射到一个子词序列。值得注意的是,多个子词序列可以映射到同一个字符序列;然而,大多数分词器会选择其中一个子词序列作为规范选择,并使用一个确定性的分词化函数。
总的来说,我们定义的映射函数使我们能够在词语和子词之间进行转换,这在使用子词分布计算词语概率时是必要的。我们将词语到子词的映射写成:
$$
S_{W ∗→S∗} \stackrel{\text{def}}{=} S_{W ∗→C∗} \cdot S_{C∗→S∗},
$$
$$
S_{S∗→W ∗} \stackrel{\text{def}}{=} S_{S∗→C∗} \cdot S_{C∗→W ∗}
$$
重要的是,这些函数在应用为 S S∗→W ∗ (S W ∗→S∗ (w)) = w 时会相互逆转,但在以相反顺序应用时却不一定。这意味着每个 w 都映射到一个唯一的 s,并且每个 w 都可以用某个 s 来表示;但是,有些子词序列不会被我们的分词化函数映射到。例如,如果一个分词器将词语 probability 映射到子词 [_prob, ability],那么子词序列 [_p, r, o, b, …] 就永远不会被映射到。我们将未映射的子词序列表示为:
$$
S^x \stackrel{\text{def}}{=} S^∗ \setminus {S_{W ∗→S∗}(w) | w ∈ W ∗}
$$
4.2 从词语概率到子词概率
现在,令 pθ 为一个具有参数 θ 和词汇表 S 的语言模型。这个模型定义了所有有限子词序列 s ∈ S ∗ 的集合上的概率分布,并且它的参数经过优化,以便在给定以下条件的情况下,对子词的真实分布提供良好的估计:
$$
p(s) = \sum_{w \in W ∗} p(w) \mathbf{1} {s = S_{W ∗→S∗}(w)}
$$
由于并非所有子词序列都被映射到,并且因为 W ∗→S∗ 中的每个映射都是唯一的,所以我们可以将此分布改写为:
$$
p(s) =
\begin{cases}
p(w) & \text{if } s = S_{W ∗→S∗}(w) \
0 & \text{if } s ∈ S^x
\end{cases}
$$
在本文中,我们关注的是精确的语言模型,我们将其定义为与 p 具有相同支持度的 pθ;形式上,当 p(s) = 0 时,pθ(s) = 0。然而,我们将在下一节简要讨论如何将我们的发现推广到非精确模型。
4.3 从子词概率到词语概率
等式 (7) 提出了一种从语言模型中提取词语概率的方法;我们可以简单地使用以下等价关系:
$$
p(w) = p(s), \text{ for } s = S_{W ∗→S∗}(w)
$$
值得注意的是,为了在实践中将这种等价关系应用于语言模型 pθ(s),该模型需要是精确的。虽然我们在这里关注的是精确分布,但我们注意到,将我们的结果扩展到非精确分布只需要边缘化潜在的歧义:也就是说,计算给定词语的 p(w) 需要对映射到它的(有限)子词序列集求和。等式 (8) 的含义是,如果我们可以创建一个与所选词语集 ΨW “等价” 的子词集 ΨS,那么我们就可以通过对 ΨS 中的子词求和来计算 ΨW 的概率。形式上,我们将两个集合之间的等价关系定义为:
$$
\Psi_W \stackrel{\Delta}{=} \Psi_S \implies (w ∈ \Psi_W ⇐⇒ S_{W ∗→S∗}(w) ∈ \Psi_S)
$$
现在,令 PS 为一个类似于 PW(在定义 1 中)定义的概率函数。然后可以得出:
$$
P_W(\Psi_W) = P_S(\Psi_S), \text{ for } \Psi_W \stackrel{\Delta}{=} \Psi_S
$$
我们现在可以根据子词概率来定义我们感兴趣的量 p(w | w<t):它只是两个不同集合 ΨS 的 PS(·) 的商。
引理 1. 可以使用子词上的概率分布来计算词语的上下文概率,如下所示:
$$
p(w | w_{<t}) = \frac{P_S(\Psi'_S)}{P_S(\Psi''_S)}
$$
其中 Ψ′ S ∆= w<t ◦ w ◦ W ∗,而 Ψ′′ S ∆= w<t ◦ W ∗。
证明. 这个结果来自于将等式 (10) 中的等价关系简单地应用于等式 (3) 中 p(w | w<t) 的定义。
幸运的是,找到引理 1 所需的集合 Ψ′ S 和 Ψ′′ S 很简单。这是因为,对于给定的词语集 ΨW,子词集
$$
\Psi_S = {S_{W ∗→S∗}(w) | w ∈ \Psi_W}
$$
满足等价关系 ΨW ∆= ΨS。根据构造,我们有 w ∈ ΨW =⇒ S W ∗→S∗ (w) ∈ ΨS。此外,由于 S W ∗→S∗ 的单射性,它必须是 W ∗→S∗(w) ∈ ΨS =⇒ w ∈ ΨW,证明了等式 (9) 中等价关系的两边。
然而,在使用等式 (11) 计算上下文概率之前,还有一个障碍需要克服:两个集合 Ψ′ W = (w<t ◦ w ◦ W ∗) 和 Ψ′′ W = (w<t ◦ W ∗) 都是无限的。因此,我们必须找到一种比对(也是无限的)集合 Ψ′ S 和 Ψ′′ S 求和更有效的策略来计算概率。
4.4 利用语言模型的自回归性
我们现在讨论如何利用大多数语言模型以自回归方式计算概率这一事实来有效地计算引理 1 中的概率。简而言之,大多数语言模型提供了条件概率的估计:p(s | s<t)。根据等式 (3) 和 PS(S ∗) = 1 的事实,我们可以使用这些条件来有效地计算前缀概率。
引理 2. 我们可以使用条件概率来计算前缀概率,如下所示:
$$
P_S(s ◦ S ∗) = \prod_{t=1}^{|s|} \frac{P_S(s_{<t} ◦ s_t ◦ S ∗)}{P_S(s_{<t} ◦ S ∗)} = \prod_{t=1}^{|s|} p(s_t | s_{<t})
$$
因此,如果我们可以找到一组子词前缀 ΨS = {s(k)} k=1 K,对于这些前缀,我们有等价关系 w ◦ W ∗ ∆= ∪ s∈ΨS s ◦ S ∗,那么我们可以计算前缀概率,如下所示:
$$
P_W(w ◦ W ∗) = P_S \Bigg( \bigcup_{s∈\Psi_S} s ◦ S ∗ \Bigg) = \sum_{s∈\Psi_S} P_S(s ◦ S ∗)
$$
反过来,这些让我们可以有效地计算 p(w | w<t)。
5. 映射的细微之处:依赖于分词器的策略
我们剩下的任务是找到一组子词前缀,这些前缀将允许我们计算 Ψ′ W 和 Ψ′′ W 的概率。在本节中,我们将讨论分词器的规范——特别是它在其词汇表中是使用词尾标记还是词首标记——如何影响这项任务。
5.1 感知分割的分词器
在接下来的章节中,我们将考虑 W ∗→S∗,它们在一个序列 w 中独立地对词语进行操作。这对于我们下面的方法是必要的,并且是自然语言处理中的一种常见做法(通常称为预分词),其中文本在被分词器转换为子词之前,会根据某些标准(例如,空格)进行分割。在这里,我们认为预分词是 W ∗→S∗ 实现的步骤之一。我们在下面的定义中将其形式化。
定义 2. 我们将感知分割的分词器定义为其操作可以跨序列中的词语分解的分词器,即:
$$
S_{W ∗→S∗}(w) = S_{W ∗→S∗}(w_{t}) = S_{W→S∗}(w_1) ◦ S_{W→S∗}(w_2) ◦ · · · ◦ S_{W→S∗}(w_{|w|})
$$
虽然可以创建词汇表中子词可以跨越词语边界的分词器,但大多数分词器都满足此标准。例如,sentencepiece 库有一个选项,允许在学习分词器的词汇表时允许多词子词,但默认情况下它不允许这样做。
定义 2 中的分解有一个重要的含义。如 4.1 节所述,(序列级)分词化函数 W ∗→S∗ 必须是单射的,这意味着每个词序列必须映射到唯一的子词序列。因此,词级分词化函数 W→S∗ 必须具有以下属性:连接其输出始终会导致唯一的字符串。此属性在压缩文献中称为唯一可解码性。虽然有几种方法可以保证唯一可解码性,但大多数分词器依赖于相对简单的策略:它们使用 S 中子词的子集标记词尾或词首(eow 或 bow)。我们将在接下来讨论这些策略。
5.2 词尾标记
我们现在考虑 eow 标记分词器。这些分词器使用其词汇表 S eow ⊆ S 的一个子集来指示词尾,其余词汇表 S mid def= S \ S eow 映射回词首或词中。
定义 3. eow 标记分词器是一种感知分割的分词器,它标记词尾。它的词级分词化函数可以写成 Seow W→S∗ : W → S ∗ mid ◦ S eow.
重要的是,根据上面的定义,当观察到子词 st ∈ S eow 时,这意味着当前子序列 st′:t(其中 t′ ≤ t)可以映射回一个词,并且表示新词的子序列将从 st+1 开始。(当前子序列 st′:t 由最小的 t′ 确定,其中 st′:t−1 ∈ S ∗ mid;请注意,这意味着 t′ = 1 或 st′−1 ∈ S eow。)此属性的含义是 eow 标记分词器提供瞬时可解码性:带有 st ∈ S eow 的前缀 s≤t 是瞬时可解码的,因为它始终映射到相同的词,而不管其后续 s>t 如何。瞬时可解码性使我们能够计算词的上下文概率,如下所示。
定理 1. 令 W ∗→S∗ 为 eow 标记分词器。此外,令 sw def= S W ∗→S∗ (w)。我们可以证明以下等价关系:
$$
P_W(w_{<t} ◦ W ∗) = P_S(s_{w_{<t}} ◦ S ∗)
$$
$$
P_W(w_{<t} ◦ w ◦ W ∗) = P_S(s_{w_{<t}} ◦ s_w ◦ S ∗)
$$
此外,我们可以计算词的概率,如下所示:
$$
p(w | w_{<t}) = \prod_{t'=1}^{|s_w|} p(s_{w_{t'}} | s_{w_{<t}} ◦ s_{w_{<t'}})
$$
证明. 有关正式证明,请参见附录 C.1。
等式 (16) 来自瞬时可解码性,因为 sw◦S ∗ 中的每个序列 s 都映射回 w◦W ∗。等式 (17) 然后来自引理 1 和 2 的简单应用:
$$
p(w | w_{<t}) = \prod_{t'=1}^{|s_w|} p(s_{w_{t'}} | s_{w_{<t}} ◦ s_{w_{<t'}})
$$
值得注意的是,等式 (17) 相当简单,并且是大多数自然语言处理从业者计算词概率的方式。然而,在下一节中,我们将看到,如果使用 bow 标记分词器,它将无法计算出正确的概率。
5.3 词首标记
我们现在考虑 bow 标记分词器。与 eow 情况类似,bow 标记分词器词汇表 S bow ⊆ S 的一个子集专门用于指示词首。然后,其余词汇表 S mid def= S \ S bow 表示词中或词尾。我们在下面提供此分词器的正式定义。
定义 4. bow 标记分词器是一种感知分割的分词器,它标记词首。它的词级分词化函数可以写成 Sbow W→S∗ : W → S bow ◦ S ∗ mid.
根据上面的定义,当观察到子词 st ∈ S bow 时,这意味着先前的子序列 st′:t−1 可以映射回一个词,并且表示新词的子序列从 st 开始。(先前的子序列 st′:t−1 由 st′ ∈ S bow 和 st′+1:t−1 ∈ S ∗ mid 确定。)因此,此类分词器不是瞬时可解码的。它们只提供我们所说的近乎瞬时可解码性:前缀 s≤t 并不总是映射到相同的词,因为它的映射取决于以下子词 st+1 是否在 S bow ∪{eos} 中。因此,使用近乎瞬时代码计算概率需要 discounting 延续 st+1 /∈ S bow ∪ {eos} 的概率;我们将此折扣因子标记为 Bug Fix 1 。
定理 2. 令 W ∗→S∗ 为 bow 标记分词器。此外,令 · 表示集合与 eos 的并集,例如,S bow = S bow ∪ {eos}。我们可以证明以下等价关系:
$$
P_W(w_{<t} ◦ W ∗) = P_S(s_{w_{<t}} ◦ \overline{S_{bow}} ◦ S ∗)
$$
$$
P_W(w_{<t} ◦ w ◦ W ∗) = P_S(s_{w_{<t}} ◦ s_w ◦ \overline{S_{bow}} ◦ S ∗)
$$
证明. 有关正式证明,请参见附录 C.2。
等式 (19) 来自近乎瞬时可解码性,因为每个序列 sw ◦S bow ◦ S ∗ 都映射回 w ◦ W ∗,但 sw ◦ S mid ◦ S ∗ 中的序列则不然。此外,我们可以计算词的概率,如下所示:
$$
p(w | w_{<t}) = \frac{\prod_{t'=1}^{|s_{w_{<t}}◦w|} p(s_{w_{<t}◦w_{t'}} | s_{w_{<t}◦w_{<t'}})}{\prod_{t'=1}^{|s_{w_{<t}}|} p(s_{w_{<t_{t'}}} | s_{w_{<t_{<t'}}})} \frac{\sum_{s∈S_{bow}}p (s | s_{w_{<t}} ◦s_w)}{\sum_{s∈S_{bow}}p (s | s_{w_{<t}})}
$$
5.4 实际问题和极端情况
在本节中,我们将讨论值得特别考虑的极端情况。许多此类情况的出现是由于实际需求,例如确保在适当的位置存在或不存在空格。值得注意的是,对这些极端情况的需求通常取决于语言,因为它们是由于拼写惯例而产生的。我们讨论了两种处理特殊情况的分词器惯例的含义:序列开头和结尾的处理。
未标记词尾的最终词. 一些 eow 标记分词器不会像等式 (15) 中那样完全分解,而是以不同的方式处理序列中的最终词。具体来说,它们会覆盖这些词上的 W→S∗ 的行为,并且不使用 S eow 中的子词来标记其结尾。这通常也是对紧跟在标点符号后面的词应用的处理方法。这种机制允许分词器避免暗示不存在的空格的存在,例如在字符串的末尾。值得注意的是,这打破了瞬时可解码性——使此代码仅近乎瞬时。令 sw mid def= Smid W→S∗ (w),其中 Smid W→S∗ : W → S ∗ mid。在观察到子序列 sw mid 后,我们无法立即将其映射回 w,并且必须等待下一个符号:如果 sw mid 后面跟着 eos 或标点符号,则将其映射回 w;如果不是,则将其映射到另一个词。因此,处理这种情况需要以下修复(此处称为 Bug Fix 2):
$$
p(w | w_{<t}) = \frac{p(s_{w_{mid}}| s_{w_{<t}})}{\sum_{s∈\overline{S_{!?}}}p(s| s_{w_{<t}}◦ s_{w_{mid}}) + p(s_w| s_{w_{<t}})}
$$
未标记词首的初始词. 正如 eow 标记分词器通常以不同的方式处理最终词一样,bow 标记分词器也以不同的方式处理序列中的初始词,以便适当地处理空格。这些分词器通常不会用 bow 标记初始词,而是将 Smid W→S∗ 应用于 w1。这会影响序列中第一个词的概率计算。在这种情况下,第一个词的前缀 w<t 为空(此处表示为 "")。虽然根据等式 (19) 计算词的上下文概率需要计算 PS(S bow ◦ S ∗),但序列中的第一个子词将不在 S bow 中,而是在 S mid 中。因此,此类词的概率计算需要以下修正(Bug Fix 3 ):
$$
p(w | "") = p(s_{w_{mid}} | "") \frac{\sum_{s∈S_{bow}} p (s | s_w)}{\sum_{s∈S_{mid}} p (s | "")}
$$
6. 实验
我们现在研究修正词概率的计算如何影响先前研究的结果。我们探讨了两种设置:围绕句子理解的心理语言学实验和评估词汇交际效率的计算语言学实验。我们遵循这些工作的实验方法,观察使用修正后的惊异度估计如何影响最初使用其标准(有缺陷的)惊异度估计得出的结论。
模型. 在我们的第一个实验中,我们使用 GPT-2 和 Pythia 估计上下文概率;在第二个实验中,我们只关注 Pythia。这两个套件都包含各种规模的语言模型。我们使用 transformers 库中这些模型的开源版本。GPT-2 和 Pythia 使用 bow 标记分词器,这意味着我们采用 5.3 节中讨论的方法来计算词的上下文概率。
6.1 句子理解
惊异度理论假设读者在阅读时会对含义保持一个信念分布;因此,在观察到句子中的每个词后,他们必须更新此分布。在关于如何执行这些信念更新的一些假设下,惊异度理论然后预测它们的成本与词的惊异度有关,惊异度定义为负对数概率:
$$
h(w_t) \stackrel{\text{def}}{=} − log p(w_t | w_{<t})
$$
惊异度理论被广泛接受为理解努力的模型,许多工作都凭经验支持它。值得注意的是,计算惊异度所需的真实上下文概率 p(wt | w<t) 是未知的,必须进行近似。以上所有工作都使用语言模型来做到这一点,而最近的工作使用的是在 bow 标记分词器生成的子词之上运行的语言模型。值得注意的是,这些工作使用“有缺陷的” p(wt | w<t) 版本计算惊异度估计。在本节中,我们将重现先前一些工作的 结果,观察此修正如何影响结果。
设置摘要. 我们在 4 个阅读时间数据集上运行分析——Brown、Dundee、Natural Stories 和 Provo。此外,根据先前的工作,我们通过测量在使用和不使用惊异度作为预测变量的线性回归器下数据对数似然的変化 ∆llh 来评估惊异度对阅读时间的预测能力。有关我们实验设置的更多详细信息,请参见附录 A.1。
结果. 图 3 显示了在使用和不使用惊异度作为预测变量的回归器下数据对数似然的変化;值在附录中的表 1 中详细列出。我们首先注意到,惊异度的预测能力随着语言模型规模的增加而降低,如先前工作中所观察到的那样。然而,在这里,我们更感兴趣的是我们的修正对这些结果的影响——标记为有缺陷的惊异度与修正后的惊异度。有趣的是,我们观察到由于我们的修正,预测能力只发生了很小的変化,并且这些変化对于每个模型来说 individually 并不显着。然而,当对所有模型进行汇总分析时,我们发现这种积极的改进对于 Brown、Natural Stories 和 Provo 来说是一致且显着的(在我们 的排列检验中 α < 0.01)。这些结果可以在表 1 中看到。
6.2 交际效率
几十年来,人们一直在研究语言的词汇,以期更好地了解塑造自然语言的力量。人们特别感兴趣的一个特征是词长以及交际效率的趋势如何影响词长。关于这种趋势究竟是如何发挥作用的,有几种假设。Zipf 认为说话者倾向于最小化话语长度,因此词长应该与频率相关。Piantadosi 等人认为说话者会最大化信息传递,因此词长应该与词的预期惊异度相关联:
$$
E[h(w_t)] \stackrel{\text{def}}{=} E_{w_{<t}}[− log p(w_t | w_{<t}) | w_t]
$$
我们遵循 Pimentel 等人的说法,将此称为信道容量假设 (CCH)。最后,Pimentel 等人指出了 Piantadosi 等人解决方案中的一个问题,并认为为了最大化信息传递,长度应该与以下值相关联:
$$
\frac{E[h^2(w_t)]}{E[h(w_t)]} \stackrel{\text{def}}{=} \frac{E_{w_{<t}}[(− log p(w_t | w_{<t}))^2 | w_t]}{E_{w_{<t}}[− log p(w_t | w_{<t}) | w_t]}
$$
设置摘要. 我们使用英语维基百科语料库 Wiki-40B 的一个子集进行分析。我们比较了上面的三个值(单字频率,以及等式 (24) 和 (25));根据它们与词长的相关性来评估它们。其中两个值取决于词的上下文概率,因此我们也比较了它们的修正版本和有缺陷的版本。
结果. 图 4 中的结果与 Pimentel 等人的发现一致:一旦使用更大(且更好)的语言模型来估计词的惊异度,CCH 假设(Piantadosi 等人的版本和 Pimentel 等人的版本)下的指标就会成为词长的较弱预测因子。有趣的是,修正惊异度的计算也会导致 CCH 预测因子与词长之间的相关性下降。因此,改进 CCH 的预测因子始终会损害其对词长的预测能力——无论是在使用更好的模型、Pimentel 等人对 CCH 最优解的修正,还是我们对概率计算的修正时。我们得出结论,与 Pimentel 等人一样,词长最好由 Zipf 的假设来预测。
7. 结论
这项工作阐述了使用语言模型准确计算上下文词概率的复杂性。我们关注使用子词词汇表带来的挑战。我们表明,使用词首 (bow) 分词器定义的子词词汇表(在许多现代语言模型中很常见)引入了经常被忽视的复杂性。我们指出,这导致了各种先前实证分析中概率估计的潜在不准确性。我们的方法修正导致了结果的显着差异,尽管我们探讨的先前研究的总体结论保持不变。这一发现强调了精确计算方法在语言学研究中的重要性。未来的工作应确保采用这些修正,以提高其分析的可靠性。
局限性
作者认为这项工作的理论和实证方面都存在局限性。也许主要的理论局限性是没有考虑到分词器可能实现的所有潜在极端情况(类似于例如在 5.4 节中讨论的那些)。空格的使用因语言而异,并且许多分词器行为的极端情况都是专门为处理这种情况而设计的。可能需要推导出其他概率计算的修正,以处理 5.4 节中未讨论的范例。例如,在西班牙语中,"¿" 后面的词通常没有 bow 标记,因此可能需要使用类似于 Bug Fix 3 的方法。我们的理论结果也仅限于自回归模型。虽然当今大多数语言模型都满足此标准,但未来的语言模型可能会以不同的方式设计,因此我们的方法不一定适用。在经验方面,我们工作的一大局限性是仅在两项研究中探讨了我们方法的影响。此外,我们的实验仅限于英语。因此,需要进行更多研究来了解我们的修正对其他语言以及计算语言学(以及更广泛地说,自然语言处理)其他领域中经验结果的影响程度。
Q: 这篇论文试图解决什么问题?
A: 这篇论文试图解决的问题是在使用基于子词(subword)的语言模型(Language Models, LMs)来估计自然语言中单词序列的概率分布时,如何正确地计算给定上下文的单词概率。尽管基于子词的语言模型在自然语言处理(NLP)任务中表现出色,但它们通常操作的是子词而非单词,这就需要将子词概率转换为单词概率。这个过程需要特别注意,因为一些技术细节容易被忽视,导致概率计算不准确。
论文的主要贡献包括:
- 指出许多最近的语言学研究在计算这些值时存在错误。
- 推导出使用基于子词的语言模型来正确计算单词概率的方法。
- 特别强调了在使用以词首标记(beginning-of-word, bow)的分词器的语言模型时,正确计算单词概率的复杂性,例如GPT系列模型。
- 通过实证分析,展示了纠正概率计算中普遍存在的错误如何影响句子理解以及词汇优化分析中的测量结果。
简而言之,论文的核心目标是提供一种准确的方法来从基于子词的语言模型中计算出单词的概率,以支持语言学研究中的各种应用,如计算句子的困惑度(perplexity)和单词的惊奇度(surprisal)。
Q: 有哪些相关研究?
A: 论文中提到了多个与语言模型、概率计算、句子理解、词汇优化等相关的研究。以下是一些关键的参考文献和它们的贡献概述:
- Hale (2001): 提出了句子理解中的惊奇度理论,这是计算语言理解努力的一个模型。
- Levy and Jaeger (2007): 研究了说话者如何通过句法缩减来优化信息密度。
- Piantadosi et al. (2011): 提出了词汇的通信效率理论,即词汇长度与单词的预期惊奇度相关。
- Sennrich et al. (2016): 探讨了使用子词单元进行神经机器翻译的方法。
- Kudo and Richardson (2018): 提出了SentencePiece,一个简单且语言独立的子词分词器和反分词器。
- Radford et al. (2019): 展示了语言模型在无监督多任务学习中的应用。
- Touvron et al. (2023): 提出了LLaMA,一个开放且高效的基础语言模型。
- Cao and Rimell (2021): 讨论了在评估语言模型时考虑边际可能性的重要性。
- Chirkova et al. (2023): 探讨了在计算概率时是否需要考虑所有可能的分词。
- Gallé (2019): 研究了较短序列在字节对编码(BPE)中的有效性。
- Mielke et al. (2021): 提供了NLP中开词库建模和分词的简要历史。
- Oh and Schuler (2023a, 2023b, 2024): 研究了基于Transformer的语言模型惊奇度与人类阅读时间的拟合度,并指出了计算单词概率时的混淆问题。
- Pimentel et al. (2023a, 2023b): 重新审视了词汇长度的最优性,并研究了预期对阅读时间的影响。
- Smith and Levy (2008, 2013): 提供了关于阅读时间的最优处理时间的正式模型和实证研究。
- Shain (2019): 研究了在自然阅读中单词频率和可预测性的影响。
- Wilcox et al. (2020, 2023): 探讨了神经语言模型对人类实时理解行为的预测能力。
这些研究为理解语言模型在计算单词概率、句子理解、词汇优化等方面的应用提供了理论基础和实证分析。论文通过指出现有研究中的计算错误,并提出纠正方法,进一步推动了这一领域的研究进展。
Q: 论文如何解决这个问题?
A: 论文通过以下步骤解决了如何准确计算基于子词的语言模型中单词概率的问题:
- 理论推导:首先,论文提出了计算单词概率的理论方法,包括在不同分词器(如词首标记beginning-of-word, bow和词尾标记end-of-word, eow)情况下的具体计算公式。
- 区分分词器类型:论文区分了两种类型的分词器:使用词首标记的分词器和使用词尾标记的分词器。对于每种类型的分词器,论文提供了不同的计算方法。
- 推导正确公式:对于使用词尾标记的分词器,计算相对简单。而对于使用词首标记的分词器,论文推导出了正确的计算公式,这涉及到对模型概率的调整以考虑子词序列的映射。
- 实证分析:论文通过实证分析展示了在句子理解(psycholinguistics)和词汇优化(computational linguistics)研究中,使用正确的计算方法与之前错误方法相比,对结果的影响。
- 提出修正方法:论文提出了修正方法(例如,Bug Fix 1, Bug Fix 2, Bug Fix 3),这些修正方法考虑了分词器在处理特殊案例(如序列的开始和结束)时的特定行为。
- 实验验证:通过使用不同的语言模型(例如GPT-2和Pythia)和不同的数据集进行实验,论文验证了修正方法的有效性,并展示了这些修正如何影响对阅读时间数据的预测。
- 讨论影响:论文讨论了这些修正对于之前研究结论的潜在影响,指出虽然修正方法会导致统计上显著的差异,但并不会改变之前研究的基本结论。
- 提出建议:最后,论文建议未来的研究应该采用这些修正方法,以提高分析的可靠性。
通过这一系列步骤,论文不仅解决了准确计算单词概率的问题,还为未来的语言学研究提供了一种更加精确的计算框架。
Q: 论文做了哪些实验?
A: 论文进行了两类实验来评估纠正单词概率计算方法的影响:
- 句子理解实验 (Sentence Comprehension Experiments):
- 目的:探索纠正单词概率计算对于句子理解研究的影响。
- 数据集:使用了四个阅读时间数据集,包括Brown、Dundee、Natural Stories和Provo。
- 方法:通过测量在线性回归模型中加入和不加入惊奇度(surprisal)作为预测因子时数据对数似然(log-likelihood)的变化(Δllh),来评估惊奇度的预测能力。
- 结果:发现使用修正后的惊奇度估计方法对于模型的预测能力有正面影响,尤其是在Brown、Natural Stories和Provo数据集上。
- 词汇通信效率实验 (Communicative Efficiency Experiments):
- 目的:研究纠正单词概率计算对于评估词汇通信效率假设的影响。
- 数据集:使用了Wiki-40B数据集的英文部分。
- 方法:比较了单词长度与几种不同假设(包括Zipf的最小化假设、Piantadosi等人的通道容量假设CCH以及Pimentel等人提出的修正CCH假设)的相关性。
- 结果:发现使用修正后的惊奇度估计方法会导致CCH假设预测单词长度的相关性降低,这表明Zipf的假设仍然是预测单词长度的最佳模型。
这两类实验都使用了基于Transformer的语言模型,包括GPT-2和Pythia,它们都使用了词首标记的分词器。实验结果表明,修正单词概率的计算方法虽然对原有研究的结论没有根本性影响,但在统计上产生了显著差异,这强调了在语言学研究中采用精确计算方法的重要性。
Q: 有什么可以进一步探索的点?
A: 尽管这篇论文在准确计算基于子词的语言模型中的单词概率方面取得了重要进展,但仍有一些潜在的研究方向可以进一步探索:
- 多语言模型的评估:论文中的实验主要限于英语和几种特定的语言模型。未来的研究可以在更多语言和不同类型的语言模型上评估修正方法的有效性。
- 更广泛的NLP任务:论文主要关注了句子理解和词汇优化两个领域。可以探索这些修正方法在其他NLP任务,如机器翻译、文本摘要、情感分析等中的应用和影响。
- 非自回归模型:论文的理论和方法主要适用于自回归模型。研究者可以探索非自回归或其他新型语言模型架构中如何应用这些概率计算方法。
- 更复杂的分词策略:论文讨论了一些特定的分词器行为,但可能还有其他复杂的分词策略需要考虑。研究者可以探索这些策略对概率计算的影响,并提出相应的修正方法。
- 实际应用中的效率问题:在实际应用中,计算效率是一个重要因素。研究者可以探索如何优化这些修正方法,以减少计算成本并提高效率。
- 用户研究和心理学实验:虽然论文通过数据集评估了修正方法的影响,但进行用户研究或心理学实验可以提供更深入的理解,了解这些修正如何影响人类理解和处理语言的方式。
- 模型泛化能力:研究这些修正方法是否提高了语言模型对未见数据的泛化能力,特别是在处理罕见词汇或特定领域语言时。
- 模型解释性:提高模型的解释性是NLP中的一个重要研究方向。研究者可以探索这些修正方法是否有助于更好地解释模型的预测。
- 与其他语言学理论的结合:将这些概率计算方法与其他语言学理论结合,比如语用学、话语分析等,以探索它们在更广泛的语言学研究中的应用。
- 算法的鲁棒性分析:研究这些修正方法在面对不同类型的输入噪声、异常值或数据不平衡时的鲁棒性。
这些方向不仅可以推动语言模型概率计算方法的发展,还可能对NLP领域的其他方面产生深远的影响。
Q: 总结一下论文的主要内容
A: 这篇论文《How to Compute the Probability of a Word》由Tiago Pimentel和Clara Meister撰写,主要探讨了在使用基于子词的语言模型(LMs)时,如何准确地计算给定上下文的单词概率。以下是对论文主要内容的总结:
- 问题背景:语言模型(LMs)在自然语言处理(NLP)中用于估计字符或单词序列的概率分布,这对于计算困惑度(perplexity)和惊奇度(surprisal)等指标至关重要。然而,大多数现代语言模型操作的是子词而非单词,这就需要将子词概率转换为单词概率。
- 研究问题:论文指出,尽管这一转换看似直接,但在实际操作中存在技术细节容易被忽视,导致许多研究在计算这些概率时出现错误。
- 方法论:论文提出了正确的方法来计算单词概率,特别是针对使用词首标记(bow)分词器的语言模型,如GPT系列。论文还讨论了词尾标记(eow)分词器的情况。
- 实证分析:通过实证分析,论文展示了在句子理解研究和词汇优化分析中,使用正确和错误方法计算概率时的统计差异。
- 实验结果:实验结果表明,修正概率计算方法虽然对之前研究的结论没有根本性影响,但在统计上产生了显著差异。
- 理论贡献:论文提出了一系列定理和引理,为在不同分词器下计算单词概率提供了理论基础。
- 修正方法:论文提出了针对特定分词器行为的修正方法(Bug Fixes),以确保概率计算的准确性。
- 研究建议:论文建议未来的研究应该采用这些修正方法,以提高分析的可靠性。
- 局限性:论文讨论了其理论局限性,包括未考虑所有可能的分词器行为,以及理论结果可能不适用于非自回归模型。
- 未来工作:论文提出了未来研究的方向,包括在更多语言和NLP任务中评估修正方法的有效性,以及探索计算效率和模型泛化能力等。
总的来说,这篇论文为理解和改进基于子词的语言模型中单词概率的计算提供了重要的理论基础和实证分析,对语言学研究和NLP实践具有指导意义。