基于Transformer的大规模预训练语言模型(PLMs)通常在大量文本上进行预训练,以自监督目标学习上下文词表示,这种目标被称为掩码语言模型(Masked Language Model, MLM)(Devlin et al., 2019)。
具体来说,给定一个序列 X X X,我们通过随机掩盖15%的标记将其破坏为 X ~ \tilde{X} X~,然后训练一个参数化为 θ \theta θ的语言模型来重构 X X X,通过条件在 X ~ \tilde{X} X~上预测被掩盖的标记 x ~ \tilde{x} x~:
max θ log p θ ( X ∣ X ~ ) = max θ ∑ i ∈ C log p θ ( x ~ i = x i ∣ X ~ ) \max_{\theta} \log p_{\theta}(X | \tilde{X}) = \max_{\theta} \sum_{i \in C} \log p_{\theta}(\tilde{x}_i = x_i | \tilde{X}) maxθlogpθ(X∣X~)=maxθ∑i∈Clogpθ(x~i=xi∣X~)
其中, C C C是序列中被掩盖标记的索引集。
BERT的作者提出了以下策略来处理被掩盖的标记:
- 10%的被掩盖标记保持不变。
- 另10%的被掩盖标记被随机选取的标记替换。
- 剩余的被掩盖标记被替换为 [MASK] 标记。
详细解释及示例
假设我们有一个输入句子:
The quick brown fox jumps over the lazy dog.
根据上述策略,我们将掩盖15%的标记。假设我们随机选择了以下标记进行掩盖:
The quick [MASK] fox jumps over the lazy [MASK].
根据BERT的策略,我们处理这些被掩盖的标记:
- 保持10%的被掩盖标记不变。
- 另10%的被掩盖标记用随机选取的标记替换。
- 剩余的被掩盖标记用 [MASK] 标记替换。
对于这个句子,我们假设以下处理方式:
The quick brown fox jumps over the lazy [MASK].
其中,[MASK] 标记保持不变,因为我们选择了句子末尾的“dog”作为保持不变的10%。
模型的目标是通过上下文信息(即其余未被掩盖的词语)来预测被掩盖的标记。在这个示例中,模型需要通过“quick brown fox jumps over the lazy”来预测被掩盖的词语是“dog”。
数学表达
在数学上,预训练语言模型通过最大化被掩盖标记的条件概率来进行优化。假设 X ~ \tilde{X} X~是掩盖后的序列, X X X是原始序列, C C C是被掩盖标记的索引集,那么目标是最大化以下概率:
max θ ∑ i ∈ C log p θ ( x ~ i = x i ∣ X ~ ) \max_{\theta} \sum_{i \in C} \log p_{\theta}(\tilde{x}_i = x_i | \tilde{X}) maxθ∑i∈Clogpθ(x~i=xi∣X~)
这个目标函数表示模型在给定掩盖后的序列 X ~ \tilde{X} X~的条件下,最大化被掩盖标记 x ~ i \tilde{x}_i x~i等于原始标记 x i x_i xi的对数概率之和。
通过这种方法,模型能够学习到词语的上下文表示,从而在各种自然语言处理任务中表现出色。MLM训练方法使得模型不仅能理解单词的含义,还能理解它们在句子中的语法和语义关系,从而提高了语言模型的泛化能力和准确性。
为什么使用log函数
在语言模型的训练过程中,使用对数函数(log函数)来计算损失和优化目标有几个重要的原因:
1. 数学上的便利性
对数函数具有许多有利的数学性质,使得计算和优化更加简便。特别是对于概率分布,使用对数可以将乘法运算转化为加法运算,这在处理多个独立事件的联合概率时尤其有用。假设我们有多个独立事件的联合概率:
p θ ( X ) = p θ ( x 1 ) ⋅ p θ ( x 2 ) ⋅ … ⋅ p θ ( x n ) p_{\theta}(X) = p_{\theta}(x_1) \cdot p_{\theta}(x_2) \cdot \ldots \cdot p_{\theta}(x_n) pθ(X)=pθ(x1)⋅pθ(x2)⋅…⋅pθ(xn)
通过取对数,这个联合概率的对数可以表示为各个概率对数的和:
log p θ ( X ) = log p θ ( x 1 ) + log p θ ( x 2 ) + … + log p θ ( x n ) \log p_{\theta}(X) = \log p_{\theta}(x_1) + \log p_{\theta}(x_2) + \ldots + \log p_{\theta}(x_n) logpθ(X)=logpθ(x1)+logpθ(x2)+…+logpθ(xn)
这种转换简化了计算,尤其是在梯度下降等优化算法中。
2. 避免下溢问题
在机器学习和统计学中,处理非常小的概率值时,乘积运算可能会导致下溢问题(即结果接近于零,导致计算机无法表示)。通过使用对数函数,可以将小概率值转化为较大的负数,避免下溢问题。例如,概率值很小时,其对数值仍然在数值上具有一定的范围,便于计算和表示。
3. 对数似然函数
在许多统计模型中,对数似然函数(log-likelihood function)是一个常用的目标函数。对于给定的参数 θ \theta θ和观测数据 X X X,对数似然函数定义为:
log p θ ( X ∣ data ) \log p_{\theta}(X | \text{data}) logpθ(X∣data)
通过最大化对数似然函数,我们可以找到最能解释观测数据的参数 θ \theta θ。在预训练语言模型的上下文中,最大化对数似然函数等价于最小化负对数似然损失,从而找到最优的模型参数。
4. 平滑处理
对数函数可以平滑处理概率值之间的差异。相对于线性尺度上的差异,对数尺度上的差异更小,这有助于避免某些数据点对总损失的过度影响,使得训练过程更为稳定。例如,对于两个概率值 0.1 0.1 0.1和 0.01 0.01 0.01,它们的差异在对数尺度上较小:
log
(
0.1
)
=
−
1
\log(0.1) = -1
log(0.1)=−1
log
(
0.01
)
=
−
2
\log(0.01) = -2
log(0.01)=−2
而在线性尺度上,差异为 0.09 0.09 0.09,对训练过程可能产生较大的影响。
示例解释
假设我们在训练一个模型来预测单词的概率,对于一个句子“the quick brown fox”,我们掩盖“quick”并让模型预测它的概率。假设模型输出的概率为 p θ ( quick ∣ the brown fox ) = 0.05 p_{\theta}(\text{quick}|\text{the brown fox}) = 0.05 pθ(quick∣the brown fox)=0.05。
使用对数损失函数:
log p θ ( quick ∣ the brown fox ) = log ( 0.05 ) ≈ − 2.9957 \log p_{\theta}(\text{quick}|\text{the brown fox}) = \log(0.05) \approx -2.9957 logpθ(quick∣the brown fox)=log(0.05)≈−2.9957
在训练过程中,我们会最小化这个负对数损失值,通过梯度下降等优化算法更新模型参数,从而提高模型对“quick”的预测概率。通过这种方法,模型可以逐步学习到更好的参数,使得预测更加准确。
总之,使用对数函数在语言模型的训练中不仅提供了计算上的便利性,还能有效避免数值问题,提高训练的稳定性和效率。