目录
[1. 引言与基础概念](#1. 引言与基础概念)
[1.1 自然语言处理中的表示问题](#1.1 自然语言处理中的表示问题)
[1.2 分布假说与向量化表示的理论基础](#1.2 分布假说与向量化表示的理论基础)
[1.3 词向量的基本性质与应用价值](#1.3 词向量的基本性质与应用价值)
[2. 早期方法与共现矩阵](#2. 早期方法与共现矩阵)
[2.1 词袋模型与高维稀疏表示](#2.1 词袋模型与高维稀疏表示)
[2.2 共现矩阵与隐语义分析](#2.2 共现矩阵与隐语义分析)
[2.3 GloVe模型:共现统计与神经网络的融合](#2.3 GloVe模型:共现统计与神经网络的融合)
[3. Word2Vec与神经网络方法的突破](#3. Word2Vec与神经网络方法的突破)
[3.1 Word2Vec的提出与CBOW模型](#3.1 Word2Vec的提出与CBOW模型)
[3.2 Skip-gram模型与词向量学习的核心机制](#3.2 Skip-gram模型与词向量学习的核心机制)
[3.3 负采样与计算效率的关键创新](#3.3 负采样与计算效率的关键创新)
[3.4 分层softmax与其他优化技巧](#3.4 分层softmax与其他优化技巧)
[3.5 FastText与子词信息的引入](#3.5 FastText与子词信息的引入)
[4. 词向量的性质与理论分析](#4. 词向量的性质与理论分析)
[4.1 线性类比与代数结构](#4.1 线性类比与代数结构)
[4.2 向量维度与学习效果的关系](#4.2 向量维度与学习效果的关系)
[4.3 上下文窗口与捕捉信息的粒度](#4.3 上下文窗口与捕捉信息的粒度)
[5. 预训练语言模型的兴起](#5. 预训练语言模型的兴起)
[5.1 从词向量到上下文表示的转变](#5.1 从词向量到上下文表示的转变)
[5.2 Transformer架构与自注意力机制](#5.2 Transformer架构与自注意力机制)
[5.3 BERT的提出与双向上下文建模](#5.3 BERT的提出与双向上下文建模)
[5.4 BERT的架构与输入表示](#5.4 BERT的架构与输入表示)
[5.5 微调与下游任务的适配](#5.5 微调与下游任务的适配)
[6. 词向量与上下文表示的深层关系](#6. 词向量与上下文表示的深层关系)
[6.1 Word2Vec学到的表示在BERT中的体现](#6.1 Word2Vec学到的表示在BERT中的体现)
[6.2 从离散符号到连续表示的哲学意义](#6.2 从离散符号到连续表示的哲学意义)
[6.3 表示的多尺度性与层级结构](#6.3 表示的多尺度性与层级结构)
[7. 重要的改进与变体](#7. 重要的改进与变体)
[7.1 RoBERTa:改进的BERT预训练](#7.1 RoBERTa:改进的BERT预训练)
[7.2 ALBERT:参数共享与效率改进](#7.2 ALBERT:参数共享与效率改进)
[7.3 ELECTRA:生成式对抗式预训练](#7.3 ELECTRA:生成式对抗式预训练)
[8. 多语言与跨语言表示](#8. 多语言与跨语言表示)
[8.1 多语言BERT与零样本跨语言转移](#8.1 多语言BERT与零样本跨语言转移)
[8.2 XLM-R与改进的多语言预训练](#8.2 XLM-R与改进的多语言预训练)
[7. 词向量的实际应用与案例分析](#7. 词向量的实际应用与案例分析)
[7.1 信息检索与相似度计算中的应用](#7.1 信息检索与相似度计算中的应用)
[7.2 命名实体识别与序列标注的改进](#7.2 命名实体识别与序列标注的改进)
[7.3 情感分析与文本分类的案例](#7.3 情感分析与文本分类的案例)
[8. 词向量的局限性与批判分析](#8. 词向量的局限性与批判分析)
[8.1 多义性问题的本质](#8.1 多义性问题的本质)
[8.2 低频词汇与罕见现象](#8.2 低频词汇与罕见现象)
[8.3 文化和语言偏见问题](#8.3 文化和语言偏见问题)
[9. 理论分析与未来方向](#9. 理论分析与未来方向)
[9.1 词向量的数学性质与近似性](#9.1 词向量的数学性质与近似性)
[9.2 语言模型的缩放规律与涌现能力](#9.2 语言模型的缩放规律与涌现能力)
[9.3 词向量到大型语言模型的进化路径](#9.3 词向量到大型语言模型的进化路径)
[9.3 表示学习的可解释性与对齐问题](#9.3 表示学习的可解释性与对齐问题)
[9.4 能源效率与环保问题](#9.4 能源效率与环保问题)
[10. 结论与展望](#10. 结论与展望)
[10.1 从词向量到现代语言理解的发展路径](#10.1 从词向量到现代语言理解的发展路径)
[10.2 未来的研究方向与开放问题](#10.2 未来的研究方向与开放问题)
[10.3 对自然语言处理未来的思考](#10.3 对自然语言处理未来的思考)
[10.4 最后的思考](#10.4 最后的思考)
1. 引言与基础概念
1.1 自然语言处理中的表示问题
自然语言处理作为人工智能领域的重要分支,其核心挑战在于如何将人类语言这一符号序列转化为计算机可以理解和处理的数值形式。在传统的符号主义和统计学方法中,计算机对文本的处理往往依赖于显式的语法规则和硬编码的特征,这种方法虽然在某些任务上表现可靠,但存在明显的瓶颈:首先,它们难以捕捉词汇之间的语义关系,一个词汇在计算机眼中仅仅是一个无意义的符号;其次,特征工程需要大量的人工参与和领域知识,不具有通用性;再次,这些方法难以泛化到新的词汇或新的任务上。因此,学术界和工业界对一种更为通用、更具表现力的表示方法的需求愈发迫切。词向量的出现,正是为了解决这一根本性的问题。
词向量(word embedding)的核心思想是将离散的词汇映射到一个连续的、低维的向量空间,使得语义相近的词汇在该向量空间中的距离较近,语义相距较远的词汇距离较远。这种表示方式有几个关键优势:第一,它能够以统一的、数值化的方式表示词汇,使得计算机可以直接进行数学运算;第二,词向量可以在大规模的无标注文本上通过无监督学习得到,不需要人工标注;第三,词向量可以捕捉词汇的多种语义关系,包括同义关系、对立关系、类属关系等,正如著名的例子"King - Man + Woman ≈ Queen"所展示的那样;第四,一旦学到的词向量可以作为特征转移到各种下游任务中,避免重复的特征工程工作。
1.2 分布假说与向量化表示的理论基础
词向量表示的理论基础源自分布假说(Distributional Hypothesis),这一假说由Harris在1954年提出,其核心观点是"词的意义由其上下文决定"。这个看似简单的观点实际上深刻地改变了自然语言处理的方法论。分布假说认为,如果两个词经常出现在相似的上下文中,那么这两个词的语义应该是相近的。例如,"猫"和"狗"经常出现在相似的句子结构中,比如都可以作为"宠物"、"毛茸茸的"等词的修饰对象或被修饰对象,因此计算机可以推断出"猫"和"狗"在语义上是接近的。这个假说虽然没有经过严格的哲学论证,但在实践中被证明是异常有效的,它为所有现代的词向量方法提供了理论支撑。
在数学上,分布假说可以形式化为:对于一个词汇w,我们定义其上下文为在该词附近(通常是一定窗口大小内)出现的其他词汇的集合。如果我们能够找到一个向量表示v_w,使得这个向量能够很好地预测该词的上下文,或者反过来,能够从其他词的向量预测该词,那么这个向量表示就是有效的。这个思想引发了一系列的计算方法,其中最重要的包括基于共现矩阵的方法(如矩阵分解方法)和基于神经网络的方法(如Word2Vec)。有趣的是,这两种看似不同的方法在数学上有着深刻的联系,这将在后续的章节中详细讨论。
1.3 词向量的基本性质与应用价值
一个良好的词向量表示应该具备多种性质。首先是线性结构性 ,即向量空间应该保留词汇之间的某些线性关系。著名的例子"King - Man + Woman ≈ Queen"说明了这一点,在高质量的词向量空间中,词汇之间的某些关系可以通过向量的加减法来表示和计算。这种性质使得词向量具有一定的可解释性,我们可以通过向量操作来发现和验证词汇之间的关系。其次是相似性保留 ,即语义相近的词汇应该在向量空间中距离较近。这通常通过计算余弦相似度或欧氏距离来衡量。第三是泛化能力,良好的词向量应该能够捕捉词汇的多种语义方面,而不仅仅是单一的、特定任务相关的属性,这样在迁移学习中才能表现良好。
词向量的应用价值体现在多个方面。在文本分类任务中,使用词向量作为特征可以显著改进分类器的性能,因为词向量能够将高维稀疏的词袋特征转化为低维稠密的特征;在信息检索和推荐系统中,词向量可以用于计算文档或商品之间的相似度,提高检索的准确性;在机器翻译中,词向量可以作为编码器和解码器的初始化,加速模型的训练;在问答系统中,词向量可以用于问题和答案候选的相似度匹配;在知识图谱补全中,词向量甚至可以表示实体和关系,用于预测缺失的链接。可以说,词向量已经成为现代自然语言处理系统的基础组件之一。
2. 早期方法与共现矩阵
2.1 词袋模型与高维稀疏表示
在词向量方法出现之前,自然语言处理中最常用的文本表示方法是词袋模型(Bag of Words, BoW)和相关的TF-IDF加权方法。词袋模型的基本思想非常简单:对于一个给定的词汇表,我们为每个词汇创建一个one-hot向量,该向量的维度等于词汇表的大小,而在对应于该词的位置上值为1,其余位置为0。随后,一个文本可以被表示为其中所有词汇的one-hot向量的求和(或者说,统计每个词在文本中出现的次数)。这种表示方法虽然直观且易于实现,但存在严重的问题:首先,如果词汇表包含100万个词汇,那么每个词的one-hot向量就是一个100万维的稀疏向量,计算和存储的成本都非常高;其次,one-hot编码完全失去了词汇之间的任何语义信息,从计算机的角度看,"猫"和"狗"与"铁"和"碳"没有任何区别,都是完全正交的。
TF-IDF方法是对词袋模型的改进,它不仅考虑词汇在文本中出现的频率(TF,Term Frequency),还考虑词汇在整个文本集合中的稀有程度(IDF,Inverse Document Frequency)。直观上,TF-IDF给予那些在当前文本中出现频繁但在整个语料库中比较罕见的词汇更高的权重。虽然TF-IDF在某些任务上表现可靠,但它仍然是基于词汇的频率统计,无法捕捉词汇之间的语义相似性。此外,TF-IDF向量仍然是高维稀疏的,这使得它在处理大规模文本时计算成本很高。
2.2 共现矩阵与隐语义分析
为了克服one-hot和TF-IDF方法的局限,研究者们开始探索利用词汇的共现信息来构建更好的表示。共现矩阵(Co-occurrence Matrix)的思想源自这样的观察:我们可以通过统计词汇之间在文本中一起出现的频率来理解它们之间的关系。最简单的共现矩阵是词汇-词汇共现矩阵(Word-Word Co-occurrence Matrix),其中矩阵的行和列都对应于词汇表中的词汇,矩阵中的第(i,j)项表示词汇i和词汇j在某个定义好的上下文窗口内一起出现的次数。
在实际构建词汇-词汇共现矩阵时,我们通常会滑动一个大小为2c+1的窗口遍历整个语料库,其中c称为上下文窗口的半径。对于窗口中的中心词汇w和其周围的上下文词汇u,我们就将共现矩阵M中对应于(w,u)的项加1。例如,在句子"the quick brown fox"中,如果我们设置c=1,那么对于中心词"quick",其上下文包括"the"和"brown",我们就会增加矩阵中(quick, the)和(quick, brown)对应位置的计数。
构建好共现矩阵后,我们可以直接使用矩阵的行(或列)作为词汇的向量表示。这种表示方法的优点是直观且有一定的数学意义:共现矩阵的某一行代表了该词汇与所有其他词汇的关联程度,语义相近的词汇应该有相似的共现模式,因此它们的行向量应该是相近的。然而,这种直接使用共现矩阵的方法存在几个问题:首先,共现矩阵往往是非常高维的,如果词汇表包含100万个词汇,那么矩阵就是100万×100万的规模,这在计算和存储上都是难以承受的;其次,矩阵是非常稀疏的,大多数词汇对从未在语料库中一起出现,导致矩阵中有大量的零项;再次,共现矩阵受到高频词汇的主导,比如"the"、"is"等功能词会与所有其他词汇都有很高的共现计数,这使得矩阵包含太多的噪声。
为了解决这些问题,研究者们开发了隐语义分析(Latent Semantic Analysis, LSA)和相关的矩阵分解技术。LSA的基本思想是对共现矩阵进行奇异值分解(Singular Value Decomposition, SVD),将原始的高维矩阵投影到一个更低维的隐语义空间中。设共现矩阵为X,其大小为m×n(m表示词汇数,n表示上下文词汇数或文档数),SVD分解可以表示为:
X = U \\Sigma V\^T
其中U是一个m×d的矩阵,其列向量是X^T X的特征向量(对应于最大的d个特征值);Σ是一个d×d的对角矩阵,其对角线上的元素是奇异值,按从大到小排列;V^T是一个d×n的矩阵,其行向量是X X^T的特征向量。在这个分解中,d通常远小于m和n,这样U的每一行就成为了一个低维向量,可以作为对应词汇的向量表示。直观上,这个分解过程捕捉了共现矩阵中最重要的、对应于最大奇异值的模式,忽略了小的奇异值对应的噪声。
隐语义分析在当时是一个重要的进步,它成功地将词向量的维度从原始的百万级降低到了几百维。然而,LSA存在几个局限:首先,SVD分解是一个全局的操作,需要对整个矩阵进行分解,当语料库增大时,计算的复杂度急剧上升;其次,LSA没有通过学习,而仅仅是通过统计分解,因此无法利用有监督信息来优化向量;再次,LSA对共现矩阵的稀疏性和高频词汇的影响没有很好地处理,虽然可以通过各种加权方案来改进,但没有根本解决。
2.3 GloVe模型:共现统计与神经网络的融合
GloVe(Global Vectors for Word Representation)方法由Pennington等人在2014年提出,它的核心贡献在于将共现矩阵的全局统计信息与神经网络方法的局部学习能力相结合。GloVe的基本思想是定义一个目标函数,该函数既考虑词汇对在整个语料库中的共现统计,也通过梯度下降等优化算法来学习词向量。具体地,GloVe定义了一个加权的最小二乘目标函数,其形式为:
J = \\sum_{i,j=1}\^{V} f(X_{ij}) (v_i\^T v_j + b_i + b_j - \\log X_{ij})\^2
在这个目标函数中,V表示词汇表的大小;X_ij表示词汇i和词汇j在共现矩阵中的共现次数;v_i和v_j分别表示词汇i和j的词向量;b_i和b_j分别是词汇i和j的偏置项;f是一个加权函数,其设计目的是处理稀疏和高频词汇的问题。目标函数中的核心项是(v_i^T v_j + b_i + b_j - log X_ij)^2,它表示词向量内积(加上偏置)与共现统计的对数应该相接近。
GloVe加权函数f的设计很有讲究。原始的形式是分段函数,当X_ij小于某个阈值x_max时,f(X_ij) = (X_ij / x_max)^α;当X_ij大于或等于x_max时,f(X_ij) = 1。其中α是一个超参数,通常设置为3/4,x_max通常设置为100。这个加权函数的作用是给予中等频率的共现对更高的权重,同时减少极少出现的共现对(这些往往是噪声)和极其频繁的共现对(如功能词的共现)的影响。与原始的共现矩阵方法相比,GloVe通过这个加权的目标函数取得了更好的词向量质量。
GloVe的优势在于它结合了共现矩阵方法和神经网络方法的优点。相比于纯粹的矩阵分解方法,GloVe的优化过程是局部的、可伸缩的,可以通过随机梯度下降等方法高效地处理大规模语料库。相比于后面我们将介绍的纯粹的神经网络方法如Word2Vec,GloVe显式地利用了全局的共现统计信息,这使得它在某些任务上能够学到更稳定和更富有信息量的向量。事实上,在后来的研究中,人们发现Word2Vec的Skip-gram模型与某种特定形式的矩阵分解问题等价,这进一步印证了共现统计和神经网络方法之间的深刻联系。
3. Word2Vec与神经网络方法的突破
3.1 Word2Vec的提出与CBOW模型
Word2Vec是由Mikolov等人在2013年提出的,它是自然语言处理中的一个划时代的贡献,直接催生了现代深度学习在NLP中的广泛应用。Word2Vec并不是一个单一的算法,而是包含两个主要架构的算法族:CBOW(Continuous Bag of Words)模型和Skip-gram模型。这两个模型虽然从不同的角度来定义学习目标,但都通过一个相对简单的神经网络架构来学习词向量,其计算效率远高于之前的方法。
CBOW模型的基本思想是基于上下文词汇来预测中心词汇。具体地,给定一个窗口大小为2c的上下文(中心词汇左右各c个词汇),模型的目标是学习一个从上下文词汇到中心词汇的映射。在数学上,设中心词汇为w_t,其上下文为{w_{t-c}, ..., w_{t-1}, w_{t+1}, ..., w_{t+c}},CBOW模型试图最大化条件概率:
P(w_t \| w_{t-c}, ..., w_{t-1}, w_{t+1}, ..., w_{t+c})
CBOW模型使用一个简单的三层神经网络来实现这个映射。第一层是输入层,接收上下文词汇的one-hot表示;第二层是隐层(或称为投影层),维度为d(词向量的维度),这一层的权重矩阵W_in的大小为V×d(V是词汇表大小),每个上下文词汇的one-hot向量乘以W_in后得到其对应的词向量,然后对所有上下文词汇的词向量求平均;第三层是输出层,维度为V,其权重矩阵W_out的大小为d×V,输出层应用softmax函数来得到预测的概率分布。CBOW模型的总损失函数是所有训练样本的负对数似然的平均,即:
L = -\\frac{1}{N} \\sum_{t=1}\^{N} \\log P(w_t \| \\text{context}(w_t))
其中N是语料库中词汇出现的总次数。通过随机梯度下降等优化方法,我们可以学习到W_in和W_out。学习完成后,W_in的每一行就是对应词汇的词向量。
CBOW模型虽然看似简单,但它的创新之处在于几个方面。首先,它避免了传统的one-hot编码的稀疏性和计算成本,通过一个隐层直接从上下文词汇的向量表示预测中心词汇。其次,这个模型的学习目标------根据上下文预测词汇------天然符合分布假说,因为只有那些语义相近、出现在相似上下文中的词汇才能被这个模型有效地预测和区分。再次,CBOW模型的计算复杂度相对较低,尤其是在后来引入负采样等技巧之后,使得它可以在大规模语料库上进行有效的训练。
3.2 Skip-gram模型与词向量学习的核心机制
Skip-gram模型与CBOW模型的思路相反,它试图根据中心词汇来预测上下文词汇。给定中心词汇w_t,Skip-gram模型的目标是最大化:
\\sum_{c=-C, c \\neq 0}\^{C} \\log P(w_{t+c} \| w_t)
其中C是上下文窗口的大小。也就是说,对于每个中心词汇,模型需要预测其周围2C个上下文词汇。从神经网络的角度,Skip-gram模型也是一个三层的结构,但与CBOW不同的是,它的输入是单个中心词汇的one-hot表示,隐层是d维的词向量,输出层需要预测所有上下文词汇的概率。与CBOW类似,隐层权重矩阵W_in(大小为V×d)就是我们要学习的词向量矩阵。
Skip-gram模型在实践中往往比CBOW模型表现得更好,特别是在处理罕见词汇时。这可能是因为Skip-gram模型对于每个中心词汇,都有多个预测目标(所有上下文词汇),这给予了稀有词汇更多的学习信号。然而,Skip-gram模型的目标函数涉及对所有词汇进行softmax计算,这在词汇表很大(通常包含几十万到数百万词汇)时计算成本极高。直接计算softmax需要对词汇表中的每个词汇都计算一次指数和归一化操作,其时间复杂度为O(V),其中V是词汇表大小,这对于大规模学习是不可接受的。
3.3 负采样与计算效率的关键创新
为了解决softmax计算的瓶颈,Mikolov等人引入了负采样(Negative Sampling)技术,这是Word2Vec成功的关键创新之一。负采样的核心思想是将原始的多元分类问题(预测正确的上下文词汇)转化为一系列的二元分类问题。对于一个给定的(中心词汇, 上下文词汇)对,我们将其视为一个正样本,其标签为1。同时,我们从词汇表中随机采样k个词汇作为负样本,它们的标签为0。模型的目标是最大化正样本的二元分类概率,同时最小化负样本的二元分类概率。
负采样的目标函数可以表示为:
L=\\log\\sigma(v_w\^Tv_c)+\\sum_{i=1}\^k\\mathbb{E}_{w_n\\sim P_n}\[\\log\\sigma(-v_{w_n}\^Tv_c)\]
在这个公式中,v_w是中心词汇w的词向量;v_c是上下文词汇c的词向量;v_n是负样本词汇的词向量;σ表示sigmoid函数,σ(x) = 1 / (1 + e^(-x));k是负采样的数量(通常设置为5到15);P_n是负采样的分布,通常选择为词汇表中的词汇频率分布的某个幂次。负采样的概率分布通常取为:
P_n(w) = \\frac{freq(w)\^{3/4}}{\\sum_u freq(u)\^{3/4}}
其中freq(w)是词汇w在语料库中出现的频率。这个选择使用3/4的幂次而不是1的原因是,3/4的幂次能够更平衡地对待高频词汇和低频词汇,避免极其常见的词汇过度占据负采样集合。通过负采样,模型不需要计算对所有词汇的softmax,而是只需要计算k+1个二元分类的sigmoid函数,计算复杂度从O(V)降低到O(k),这是一个数量级的改进。
负采样的成功有深层的理论支撑。后来的研究(由Goldberg和Levy等人进行)表明,使用负采样的Skip-gram目标函数实际上等价于对共现矩阵进行了一种特定的矩阵分解,这再次印证了我们之前提到的共现统计和神经网络方法之间的等价性。具体地,Skip-gram with negative sampling可以被解释为隐式地学习一个低秩逼近,使得词向量的内积接近词汇对的点互信息(Pointwise Mutual Information, PMI)的值。点互信息是衡量两个事件共同出现的统计显著性的指标,定义为:
\\text{PMI}(w, c) = \\log \\frac{P(w, c)}{P(w)P(c)} = \\log \\frac{X_{wc}}{X_w X_c / N}
其中X_{wc}是词汇w和上下文c的共现次数,X_w和X_c分别是w和c的总出现次数,N是文本中词汇出现的总次数。通过负采样的目标函数,Skip-gram实际上是在试图使词向量的内积最接近(PMI - log k)的值,其中log k反映了负采样数量的影响。
3.4 分层softmax与其他优化技巧
除了负采样,Mikolov等人还提出了另一种称为分层softmax(Hierarchical Softmax)的方法来加速Word2Vec的训练。分层softmax基于一个关键的观察:与其计算所有词汇的softmax概率,不如将整个词汇表组织成一棵二叉树,然后使用树的路径和内部节点的二元分类来计算概率。在这个树结构中,每个词汇都是树的一个叶节点,从根节点到叶节点有唯一的路径。对于一个词汇w,其概率可以表示为沿着路径上每个内部节点进行正确二元分类的概率的乘积。
具体地,设词汇w在树中从根节点到叶节点的路径为(n_0, n_1, ..., n_L),其中n_0是根节点,n_L对应于词汇w。在每个内部节点n_i处,有一个分类器可以判断应该向左还是向右。如果路径中在节点n_i处应该向左,那么概率贡献为σ(v_{n_i}^T v_w);如果应该向右,概率贡献为1 - σ(v_{n_i}^T v_w)。因此,词汇w的总概率为:
P(w \| w_c) = \\prod_{i=0}\^{L-1} \\sigma(\\text{sign}(d_i) \\cdot v_{n_i}\^T v_w)
其中sign(d_i)是一个指示符,表示在节点n_i处应该向哪个方向。分层softmax的计算复杂度从O(V)降低到O(log V),这对于极大的词汇表特别有效。分层softmax的另一个优点是,树的结构可以根据词汇的频率进行设计,使得频繁的词汇位于树的上层,从而需要更少的计算步骤。
除了负采样和分层softmax,Word2Vec还引入了其他几个实用的技巧来提高训练效率和模型质量。动态上下文窗口(Dynamic Context Window)是指不是固定使用相同大小的上下文窗口,而是随机选择一个在1到C之间的窗口大小。这可以避免模型过拟合到固定的上下文模式。子采样(Subsampling)是指根据词汇的频率随机丢弃一些常见的词汇(如"the"、"a"等功能词)。这个想法基于这样的观察:功能词虽然频繁,但携带的语义信息相对较少,而且它们与所有其他词汇都有共现,不利于学习有区别的词向量。子采样的概率通常设置为:
P(\\text{keep word } w) = \\left(\\sqrt{\\frac{t}{f(w)}} + 1\\right) \\cdot \\frac{f(w)}{t}
其中f(w)是词汇w的频率,t是一个阈值参数,通常设置为1e-5。这个公式确保了高频词汇被丢弃的概率更高。
3.5 FastText与子词信息的引入
在原始的Word2Vec之后,Facebook AI的研究团队基于Skip-gram模型提出了FastText(Fast Text Representations),这是一个重要的改进,特别是在处理形态复杂的语言和未见词汇时。FastText的核心创新在于,它不仅为整个词汇学习向量表示,而且还为每个词汇的字符n-gram(通常使用3到6字符的子序列)学习向量。一个词汇的最终向量表示是其所有字符n-gram向量的求和。
这个设计有几个重要的优势。首先,对于未在训练语料库中出现的词汇(OOV词汇),即使模型没有看过该词汇的完整形式,也可以通过其字符n-gram的向量来生成一个合理的表示。这对于处理新词汇、专业词汇和生字词特别有用。其次,对于形态复杂的语言(如芬兰语、土耳其语等),字符级的子词信息可以帮助模型更好地捕捉词汇之间的形态关系。例如,"jumping"和"jumped"虽然是不同的词汇,但它们共享相同的字符n-gram(如"jump"),这帮助模型认识到它们的语义相关性。
FastText的目标函数与Word2Vec的Skip-gram + negative sampling基本相同,但权重更新涉及所有相关的n-gram向量。这意味着对于每个词汇,梯度被反向传播到其所有字符n-gram向量。FastText的计算成本略高于Word2Vec(因为需要处理更多的向量),但它提供了显著的性能改进,特别是在低资源语言和形态复杂语言上。
实证研究表明,FastText在几个维度上都优于Word2Vec:首先,在处理OOV词汇时性能明显更好;其次,在一些任务上(如词相似度和类比任务)有更好的总体表现;再次,对于拥有丰富形态学的语言,FastText的表现特别突出。然而,FastText的参数数量也相应增加了,这使得存储和推理的成本上升。因此,在选择Word2Vec还是FastText时,需要根据具体的应用场景和约束条件来权衡。
4. 词向量的性质与理论分析
4.1 线性类比与代数结构
Word2Vec学到的词向量最令人印象深刻的性质之一是它们表现出的线性类比能力。最著名的例子是"King - Man + Woman ≈ Queen"。这个例子说明,词向量捕捉了词汇之间的某些语义关系,而这些关系可以通过向量的线性操作(加法和减法)来表示。在数学上,如果v_w表示词汇w的向量,那么向量(v_King - v_Man + v_Woman)应该与v_Queen在方向上最接近(通过余弦相似度衡量)。
这种线性结构的出现令人惊奇,因为Word2Vec的目标函数中并没有显式地编码任何关于线性类比的约束。从数学角度看,这种现象与词向量的学习方式密切相关。在Skip-gram with negative sampling的框架下,如我们之前讨论的,词向量学习实际上是在最小化词向量内积与PMI之间的差异。如果两个类比"Man:Woman"和"King:Queen"在统计上是相似的(即这两对词汇的PMI分布类似),那么对应的向量差(v_Man - v_Woman)和(v_King - v_Queen)应该也是相近的。这从统计的角度解释了为什么线性类比会出现在学到的词向量中。
更深入地,我们可以从向量的几何角度来理解这个现象。如果我们假设词向量的学习过程能够很好地保留高维空间中的某些几何关系,并且类比关系在语义上表现为向量差的相似性,那么学到的低维向量就应该在某种程度上继承这些几何关系。具体地,假设在极高维的"语义空间"中,"Man"和"Woman"的区别方向和"King"与"Queen"的区别方向是平行的(这在语义上是合理的,因为两者都是性别的区别),那么当词向量投影到低维空间时,这两个方向应该仍然保持大致平行,从而产生线性类比。
需要注意的是,线性类比的能力并不是普遍的和绝对的。它在某些语义关系上表现很好,比如国家-首都的关系、词性变化、地理位置等,但在其他类型的关系上可能不太有效。此外,线性类比的强度也受到几个因素的影响,包括参与类比的词汇的频率、语料库的内容、词向量的维度等。研究表明,在大规模的高质量语料库上训练的、维度适当的词向量通常表现出更强的线性类比能力。
4.2 向量维度与学习效果的关系
词向量的维度(也称为向量大小或embedding size)是一个重要的超参数,它直接影响模型的学习效果和计算成本。一般来说,维度越高,词向量可以表示的信息量越多,模型有更多的自由度来捕捉词汇的各种语义和句法特征。然而,维度过高会导致模型的参数数量增加,训练时间和内存需求上升,同时也容易导致过拟合,特别是当训练数据有限时。
在早期的Word2Vec研究中,人们通常使用300维的词向量,这个选择基于经验和实证结果。后来的研究表明,对于大规模的、高质量的训练语料库,300维通常是一个很好的折中选择。在某些特定的应用中,维度可以调整:对于资源受限的场景(如移动设备或实时推理),可能会使用50到100维的较低维度向量;对于对性能要求极高的研究应用,可能会使用500维甚至更高的向量。
维度对学习效果的影响可以通过几个指标来衡量。一个常用的指标是在单词类比任务上的准确率。通常,随着维度的增加,准确率先上升后下降,存在一个最优的维度值。这个最优值的出现可能是因为,较低的维度难以捕捉所有必要的语义信息,而过高的维度导致过拟合到训练噪声。另一个重要的观察是,同样的词向量在不同的下游任务上的最优维度可能不同。这说明,不同的任务对词向量的需求在某种程度上是不同的,有些任务可能更需要细粒度的语义信息,而有些任务可能更需要通用的、鲁棒的特征。
4.3 上下文窗口与捕捉信息的粒度
在Word2Vec中,上下文窗口的大小(参数C)是另一个重要的超参数。窗口大小决定了模型在学习一个词的表示时能看到多远的上下文。直观上,较小的窗口(如C=1或2)使得模型主要学习词汇之间的句法关系和直接的局部共现;较大的窗口(如C=5或10)使得模型可以学到更广泛的、更通用的语义关系,涉及更长距离的词汇之间的联系。
这个观察在实证研究中得到了证实。例如,在相似度任务上,使用较大窗口学到的词向量通常表现更好,因为相似度评估往往基于较为通用和直观的语义关系。相比之下,在类比任务上,较小的窗口有时表现更好,因为某些句法类比(如词性变化)是由更局部的上下文决定的。这与自然语言的性质一致,例如,名词后面通常紧跟着形容词或其他修饰词,这种局部的词性依赖关系对于学习词性的线性类比很重要。
从另一个角度,窗口大小的选择也反映了词向量在捕捉不同粒度信息方面的权衡。较小的窗口关注于词汇的微观结构(micro-level structure),即词汇在句子中的直接伙伴和局部角色;较大的窗口关注于词汇的宏观结构(macro-level structure),即词汇在文档和话题中的整体角色。理想情况下,我们可能希望词向量能够同时捕捉这两种信息,但在单一的固定窗口设置下很难做到完美平衡。这也是后来的研究为什么会探索动态窗口、多尺度窗口,以及最终发展出上下文感知的表示方法(如BERT中的动态词表示)的原因。
5. 预训练语言模型的兴起
5.1 从词向量到上下文表示的转变
尽管Word2Vec在引入低维密集向量表示方面是一个重大进步,但它有一个根本的局限性:它为每个词汇学习一个固定的、与上下文无关的向量。这意味着单词"bank"在"I went to the bank"和"left bank of the river"中被赋予完全相同的向量表示,尽管这两个句子中"bank"的含义完全不同。这个问题被称为多义性问题(polysemy problem),在自然语言中极其普遍,特别是对于常见词汇。
要解决这个问题,自然的思路是让词向量根据上下文动态变化。一个词汇的表示应该由它在当前句子中的上下文决定,而不是一个预先学好的、固定的向量。这个思想导引出了基于循环神经网络(RNN)和其他序列模型的方法。例如,在基于LSTM的语言模型中,每个词汇的隐层状态是根据整个输入序列和该词汇之前的所有词汇计算的,因此自然地编码了上下文信息。
然而,早期的RNN模型面临几个困难:首先,RNN的训练过程缓慢,梯度流动困难(特别是梯度消失和爆炸问题),需要特别的技巧(如LSTM或GRU)来缓解;其次,RNN本质上是单向的,只能看到当前词汇之前的上下文,无法充分利用后面的信息;再次,RNN的计算是串行的,难以并行化,这使得在大规模数据上的训练非常耗时。这些限制激发了研究者寻找更好的方法来学习上下文表示。
5.2 Transformer架构与自注意力机制
2017年,Vaswani等人发表的论文"Attention is All You Need"引入了Transformer架构,这是一个革命性的创新。Transformer的核心贡献是自注意力(Self-Attention)机制,它允许模型并行地处理整个序列,同时直接建立序列中任意两个位置之间的长距离依赖关系,无需依赖于隐层的顺序传递。
自注意力机制的核心思想是,对于序列中的每个位置,我们计算该位置与序列中所有其他位置的"注意力权重",然后用这些权重对所有位置的信息进行加权求和,从而得到该位置的更新表示。在数学上,自注意力可以表示为查询-键-值(Query-Key-Value)的框架。给定输入序列x_1, x_2, ..., x_n,我们首先将每个位置i的输入向量x_i投影到三个不同的向量:查询向量q_i = W_Q x_i,键向量k_i = W_K x_i,值向量v_i = W_V x_i,其中W_Q, W_K, W_V是可学习的投影矩阵。然后,我们计算位置i相对于所有位置j的注意力权重:
\\text{attention}(i, j) = \\frac{q_i\^T k_j}{\\sqrt{d_k}}
其中d_k是键向量的维度。这个值表示查询和键的相似程度,越大表示位置i和位置j之间的相关性越高。为了将这些分数转化为概率分布,我们对所有j应用softmax函数:
\\alpha_{ij} = \\frac{\\exp(\\text{attention}(i, j))}{\\sum_{j'} \\exp(\\text{attention}(i, j'))}
最后,位置i的输出表示是所有位置值向量的加权和:
\\text{output}*i = \\sum_j \\alpha*{ij} v_j
在实践中,为了提高效率和表现力,Transformer使用了多头注意力(Multi-Head Attention),即并行地执行多组独立的自注意力计算,每组使用不同的W_Q, W_K, W_V,然后将结果拼接在一起。设有h个注意力头,每个头的维度为d_k = d / h(d是总的向量维度),多头注意力的形式为:
\\text{MultiHead}(Q, K, V) = \\text{Concat}(\\text{head}_1, ..., \\text{head}_h) W\^O
其中每个head_i = \text{Attention}(Q W_i^Q, K W_i^K, V W_i^V),W^O是一个可学习的输出投影矩阵。多头注意力的优势在于它允许模型同时关注来自不同表示子空间的信息,这相当于有多个"注意力视角"来审视输入序列。
除了多头自注意力,Transformer还包含一个重要的组件叫前馈网络(Feed-Forward Network)。在每个Transformer编码层中,在自注意力之后应用一个位置前馈网络,它是一个两层的全连接网络,中间有一个激活函数(通常是ReLU)。前馈网络的形式为:
\\text{FFN}(x) = \\max(0, x W_1 + b_1) W_2 + b_2
前馈网络在序列的每个位置独立应用,但在不同位置共享权重。此外,Transformer在自注意力和前馈网络之间都使用了残差连接(Residual Connection)和层归一化(Layer Normalization),这些技巧有助于梯度流动和训练稳定性。
5.3 BERT的提出与双向上下文建模
BERT(Bidirectional Encoder Representations from Transformers)是由Devlin等人在2018年提出的,它是将Transformer模型应用于自然语言处理的一个里程碑式的工作。BERT的核心创新在于两个方面:首先,它使用了Transformer的编码器(而不是解码器或完整的编码-解码模型),这使得模型可以看到输入序列中的所有单词,包括目标词之前和之后的上下文,实现了真正的双向表示学习;其次,它使用了两个巧妙的预训练任务来学习有意义的表示,而无需下游任务的标注数据。
BERT的第一个预训练任务是掩蔽语言建模(Masked Language Modeling, MLM)。在这个任务中,在输入序列中随机选择15%的词汇,并将其掩蔽(通常用特殊的[MASK]标记替换),模型的目标是根据上下文预测被掩蔽的词汇。这个任务的定义为:
L_{\\text{MLM}} = -\\sum_{t \\in \\text{masked}} \\log P(x_t \| \\mathbf{x}_{-t})
其中x_t是被掩蔽的第t个词汇,x_{-t}表示除了位置t之外的所有其他词汇。与传统的语言建模(通常只利用左边的上下文)不同,MLM允许模型利用左右两边的上下文,这被称为双向上下文建模。
在实现掩蔽语言建模时,BERT采用了一个更精细的策略。对于被选中掩蔽的词汇,在80%的情况下将其替换为[MASK]标记,在10%的情况下替换为一个随机的词汇,在10%的情况下保持原样。这个设计的目的是为了让模型不能过度依赖[MASK]标记本身来进行预测,而是真正学到有意义的语言模式。此外,模型需要预测被掩蔽位置的具体词汇,这迫使模型学习更细粒度的表示。
BERT的第二个预训练任务是下一句预测(Next Sentence Prediction, NSP)。在这个任务中,模型被给予两个句子A和B,需要预测B是否是A的真正的下一句。在50%的情况下,B确实是A的下一句(标签为IsNext);在50%的情况下,B是从语料库中随机选择的句子(标签为NotNext)。这个任务的目标函数为:
L_{\\text{NSP}} = -\[y \\log P_{\\text{IsNext}} + (1-y) \\log P_{\\text{NotNext}}\]
其中y是二元标签。NSP任务被设计用来学习句子级别的关系,这对于问答、自然语言推理等任务很重要。
BERT的整体预训练目标是两个任务的联合损失:
L = L_{\\text{MLM}} + L_{\\text{NSP}}
通过这两个相对简单但设计巧妙的预训练任务,BERT能够学到高度有信息量的表示,这些表示可以转移到各种下游任务上,通过有限的微调就能取得优异的性能。
5.4 BERT的架构与输入表示
BERT使用一个标准的多层双向Transformer编码器。标准的BERT模型(BERT-base)包含12个Transformer层,每层有12个注意力头,隐层维度为768,前馈网络的内层维度为3072。一个更大的版本BERT-large包含24个层,16个注意力头,隐层维度为1024。这些数字的选择基于实验和计算资源的权衡。
BERT的输入表示相当精巧,它将几种不同的信息编码成单一的向量。对于输入句子,BERT首先将其分解为词级别的子词单位(subword units),这是通过字节对编码(Byte Pair Encoding, BPE)或WordPiece等词元化(tokenization)方法实现的。与传统的word-level表示不同,子词表示可以处理生字词(out-of-vocabulary words),通过将其分解为更小的已知词元。
对于每个词元,BERT将其投影到一个d维的嵌入空间。除了词元嵌入,BERT还添加了两种位置信息。第一种是绝对位置嵌入(Positional Embedding),它为每个序列位置分配一个独特的嵌入向量。原始的Transformer论文中使用了基于三角函数的位置编码,但BERT则使用了可学习的位置嵌入。第二种是分段嵌入(Segment Embedding),它用来区分输入中的不同句子。如果输入是一个句子对(如在NSP任务中),第一个句子的所有词元对应的分段嵌入为0,第二个句子为1。对于单个句子,所有词元的分段嵌入都为0。最终的输入嵌入是词元嵌入、位置嵌入和分段嵌入的求和:
\\mathbf{e}_{\\mathrm{input}}=\\mathbf{e}_{\\mathrm{token}}+\\mathbf{e}_{\\mathrm{position}}+\\mathbf{e}_{\\mathrm{segment}}
此外,BERT在序列的开头添加了一个特殊的[CLS]词元,在序列的末尾(以及每对句子之间)添加了[SEP]词元。[CLS]词元的最终隐层表示被用作整个序列的聚合表示,这个表示可以用于分类任务。
5.5 微调与下游任务的适配
虽然BERT的预训练在无标注数据上进行,但它学到的表示可以通过微调来适应各种有监督的下游任务。微调的过程相对简单但有效:我们使用在特定任务上标注的数据,用极小的学习率继续训练BERT模型,通常只需要少量的训练轮次(3到5轮)就能收敛到很好的性能。
对于不同类型的任务,微调的方式略有不同。对于文本分类任务(如情感分析、主题分类),我们在[CLS]词元的最终表示之上添加一个分类层(通常是一个全连接层),然后使用标准的交叉熵损失进行训练。对于序列标注任务(如命名实体识别、词性标注),我们在每个词元的最终表示之上添加一个标注层,为序列中的每个位置预测标记。对于文本对分类任务(如自然语言推理、语义相似度),我们同样使用[CLS]表示进行分类。对于问答任务(如SQuAD),答案的开始位置和结束位置通过在passage中每个词元的表示之上应用两个线性层(分别预测开始和结束位置)来预测。
微调的成功依赖于几个因素。首先,预训练模型已经学到了大量的语言知识,微调只需要适应特定任务的特殊需求,这通常只需要较小的数据和较短的训练时间。其次,使用较小的学习率很重要,因为预训练的模型已经包含有用的特征,我们只想做小幅调整而不是完全重新训练。通常,微调的学习率在1e-5到5e-5之间选择。第三,早停(Early Stopping)和正则化(如dropout)对于小规模的下游任务很重要,可以防止模型过拟合。
6. 词向量与上下文表示的深层关系
6.1 Word2Vec学到的表示在BERT中的体现
虽然BERT和Word2Vec在表面上看起来完全不同------一个学习固定向量,一个学习动态上下文表示------但在深层的数学和语义上,它们之间有重要的联系。BERT的输入嵌入层可以被看作是词向量的一个版本,只是这些词向量随后被传递给深层的Transformer层,这些层根据上下文来动态调整表示。在某种意义上,BERT的输入嵌入从Word2Vec继承了词向量的思想,然后通过编码器上下文化了这些表示。
更具体地,如果我们只提取BERT的输入嵌入层(即第一层的输入),而不通过任何Transformer层,那么我们就得到了一个静态词向量矩阵,它可以看作是一个现代版的Word2Vec。这个嵌入矩阵是随机初始化的,但通过预训练过程(MLM和NSP任务),它也学到了有意义的词向量。有研究表明,如果我们将BERT的输入嵌入提出来,作为传统的词向量来使用(如用于计算词汇相似度或进行单词类比),它们的表现也相当不错,虽然不如完整的BERT表示那样强大。
从另一个角度,BERT中的每一层都可以被看作是在逐步改进和上下文化初始的词向量。第一层接收初始的词向量,并通过自注意力和前馈网络进行轻微的调整;随着层数增加,表示变得越来越上下文化,越来越适应于特定的输入序列。这个过程可以看作是从静态词向量到完全动态的、句子特定的表示的一个连续的过程。
6.2 从离散符号到连续表示的哲学意义
从Word2Vec到BERT,我们见证了自然语言处理中一个根本性的范式转变,即从离散符号表示转向连续向量表示。这个转变的哲学意义深远。在符号主义的传统中,语言被看作是离散符号的操纵,每个符号本身没有内在的含义,其含义由规则和与其他符号的关系定义。相比之下,连续表示将每个词汇映射到一个连续的、多维的向量空间,其中意义分布在向量的各个维度中。
这个转变的一个重要后果是可解释性的权衡。一方面,我们失去了符号表示的清晰性和可解释性------我们不再能说一个特定的符号"意味着"某些具体的东西,而是向量中的特定维度对应于某些特征的某种程度的激活。另一方面,我们获得了数学上的强大能力------连续表示允许我们使用微积分、线性代数和统计方法来处理和学习,这些方法在符号表示中无法直接应用。此外,连续表示的分布特性使得词汇之间的相似性和关系能够通过几何方式自然地表达和计算。
从学习的角度,这个转变也意味着我们从离散的、基于规则的学习转向连续的、基于优化的学习。在符号系统中,知识通常是通过显式的规则和专家知识编码的;在连续向量表示中,知识是通过在大规模数据上的优化过程学习的,系统通过最小化某个目标函数来自动发现有用的特征和表示。这使得系统能够从数据中自动学习,而无需大量的人工干预,这正是现代深度学习的核心优势所在。
6.3 表示的多尺度性与层级结构
BERT作为一个多层模型,为我们提供了一个有趣的视角来理解表示的多尺度性。不同层的表示捕捉了不同抽象层级的信息。根据一些实证研究,BERT的下层(接近输入)倾向于捕捉更多的句法信息,比如词性和句子结构;而上层(接近输出)倾向于捕捉更多的语义和任务相关的信息。这个观察与我们对卷积神经网络(CNN)在计算机视觉中的理解相似:低层学习简单的、通用的特征(如边缘和纹理),而高层学习复杂的、特定的特征(如对象和场景)。
这种多尺度的表示对于不同的任务有不同的影响。对于一些需要句法信息的任务(如词性标注),使用较低层的表示可能就足够了;对于需要深层语义理解的任务(如自然语言推理或文本摘要),则需要利用较高层的表示。一些研究表明,通过组合来自不同层的表示,我们可以为特定的任务找到最优的表示,这进一步凸显了深度模型中表示的丰富性和灵活性。
7. 重要的改进与变体
7.1 RoBERTa:改进的BERT预训练
虽然BERT是一个强大的模型,但后续的研究发现,通过改进预训练的设置和目标函数,可以进一步提升性能。RoBERTa(Robustly Optimized BERT Pretraining Approach)由Facebook AI研究团队提出,在BERT的基础上做了多个改进。首先,RoBERTa去掉了NSP任务,因为研究表明这个任务可能不如MLM任务重要,而且可能会干扰模型的学习。第二,RoBERTa改变了掩蔽策略,使用动态掩蔽而不是静态掩蔽。在BERT中,掩蔽是在数据预处理阶段固定的,这意味着模型在多轮训练中会看到相同的掩蔽模式。在RoBERTa中,掩蔽在每个训练轮次中都随机生成,这给模型提供了更多样化的学习信号。第三,RoBERTa使用了更大的批量大小和更长的训练时间,在更多数据上训练,这通常能显著改进性能。这些改进导致了RoBERTa在各种基准测试上的性能都超过了原始的BERT。
7.2 ALBERT:参数共享与效率改进
ALBERT(A Lite BERT)则从另一个角度出发,致力于创建一个参数更少、计算更高效的模型,同时保持或改进性能。ALBERT的两个主要创新是参数共享和因式分解。在标准BERT中,每一层都有自己独立的权重矩阵。在ALBERT中,所有层共享相同的权重矩阵,这大幅减少了模型的参数数量。此外,ALBERT将词汇嵌入层的维度(e)从隐层维度(h)分离出来,只将嵌入投影到更低的维度,然后再投影到隐层维度。这种因式分解的形式为:
\\text{Projection}_1: \|V\| \\times d_e, \\quad \\text{Projection}_2: d_e \\times h
其中|V|是词汇表大小,d_e是嵌入维度(通常远小于h)。通过这两个技巧,ALBERT将模型的参数数量减少到BERT的十分之几,同时在很多任务上仍然能够达到或超过BERT的性能。这对于在资源受限的环境中部署模型很有价值。
7.3 ELECTRA:生成式对抗式预训练
ELECTRA提出了一个新的预训练范式,称为生成式对抗式预训练(Generative Adversarial Pretraining)。与BERT的掩蔽语言建模相比,ELECTRA使用一个生成器模型在被掩蔽的位置上生成合理的词汇,然后用一个判别器来判断每个词汇位置是否是被替换过的。这种设置更接近于生成对抗网络(GANs)的思想,但用于语言建模的上下文。ELECTRA的优势在于,通过这种方式,判别器可以从所有被掩蔽的位置学习,而不仅仅是那些被错误预测的位置,这可能导致更高效的学习。实验结果表明,ELECTRA在某些基准测试上能够超过BERT和RoBERTa,特别是在下游任务中使用较少微调数据的设置下。
8. 多语言与跨语言表示
8.1 多语言BERT与零样本跨语言转移
虽然原始的BERT是为英文训练的,但随后推出的多语言BERT(mBERT)在104种语言的无标注文本上进行了联合预训练。虽然多语言BERT的参数数量与原始BERT相同,但它需要为104种不同的语言编码词汇信息,这实际上降低了每种语言的表示效率。然而,多语言BERT的一个令人惊讶的性质是,它在语言之间学到了某种形式的对齐,即相同含义的单词在不同语言中的表示在某种程度上是相近的。这使得模型可以实现零样本跨语言转移,即在某个任务在英文标注数据上进行微调后,模型可以直接应用于其他语言的相同任务,而无需那些语言的标注数据,通常能取得相当不错的结果。
这种跨语言对齐的出现可能源于几个因素。首先,许多语言的词汇表中存在共同的字符模式,特别是对于技术词汇和正式词汇。例如,"technology"在许多语言中有相似的拼写或同源词。其次,预训练目标(MLM)对所有语言都是相同的,这为模型学到跨语言的共享结构提供了动力。第三,共同的源语言影响(如英文在许多领域的主导地位)可能导致不同语言之间的统计相似性。虽然多语言BERT相比于语言特定的BERT在单个语言上的性能有所下降,但其多语言能力和跨语言转移能力在许多实际应用中提供了显著的价值。
8.2 XLM-R与改进的多语言预训练
XLM-R(Cross-lingual Language Model -- RoBERTa)是Facebook AI对多语言模型的进一步改进。相比于mBERT,XLM-R有几个重要的改进。首先,它在更多的语言(100种)和更多的数据上进行了训练,使用的是从CommonCrawl收集的大规模语言特定的语料库。其次,它使用了更优化的RoBERTa预训练策略,而不是原始的BERT设置。第三,XLM-R在所有语言上使用了统一的SentencePiece词元化器,这使得词汇表更加通用和高效。
通过这些改进,XLM-R在多语言任务上通常能超过mBERT,同时对于单个语言的性能也不逊于语言特定的模型。XLM-R的成功进一步证实了大规模多语言预训练的有效性,并且表明,对于低资源语言(缺乏大量标注数据的语言),通过从多语言预训练模型进行转移学习可以取得显著的改进。
7. 词向量的实际应用与案例分析
7.1 信息检索与相似度计算中的应用
词向量在信息检索系统中的应用是最直接和最成功的。在传统的基于关键词匹配的信息检索系统中,查询和文档都被表示为关键词集合,系统通过计算关键词的重叠程度来评估相关性。然而,这种方法存在明显的问题:首先,它无法处理同义词,一个查询中使用"汽车"而文档中使用"车辆"时,系统无法识别两者的关系;其次,它无法处理高阶语义相似性,例如"狗"和"宠物"之间的包含关系;再次,它容易受到词汇表不完整和多义词的影响。
引入词向量后,信息检索系统可以通过计算查询向量和文档向量之间的余弦相似度来度量相关性,这自然地解决了上述问题。设查询向量为q,文档d的向量表示为d,余弦相似度定义为:
\\text{sim}(q, d) = \\frac{q \\cdot d}{\|\|q\|\| \\times \|\|d\|\|}
这个相似度度量在0到1之间,值越大表示查询和文档的语义关系越密切。在一个包含数百万文档的搜索引擎中,系统可以快速计算查询向量与所有文档向量的相似度,然后按相似度从高到低排序返回结果。这个过程相比于关键词匹配有很多优势:首先,计算是纯数学的,没有显式的规则或词典的需要;其次,系统可以自动学习和适应语言的变化和风格;再次,系统对于新词汇和新的语言用法有一定的容错能力。
在实际应用中,词向量的相似度计算通常不是在所有d个维度上进行的,而是在最相关的几个维度或者通过某种近似方法进行的。这是因为精确计算数百万个向量的相似度仍然是一个计算上的挑战。常用的技巧包括哈希索引、近似最近邻搜索(Approximate Nearest Neighbor Search, ANN)等。例如,局部敏感哈希(Locality Sensitive Hashing, LSH)可以将高维向量映射到低维哈希码,使得相近的向量有较高的概率被映射到相同的哈希桶,从而大大加速搜索。
7.2 命名实体识别与序列标注的改进
命名实体识别(Named Entity Recognition, NER)是自然语言处理中的一个基础任务,目标是从文本中识别出人名、地名、组织名等特定类型的实体。在词向量出现之前,NER系统通常依赖于大量的手工设计的特征,包括词汇特征、字符特征、句法特征等,以及精心编码的规则和字典。这种方法虽然在一些特定领域可以达到很高的准确率,但需要大量的人工工作,且在新的领域或新的类型实体上的泛化能力有限。
使用词向量作为输入特征的NER系统有几个优势。首先,词向量自动捕捉了词汇的语义信息,相同类型的实体(如人名)往往具有相似的向量表示。这使得即使在训练中没有看到的具体词汇,模型也能通过识别相似的向量模式来进行预测。其次,词向量减少了人工特征工程的需要,使得系统更容易构建和维护。再次,在词向量的基础上结合RNN或其他序列模型,系统可以学到序列中相邻词汇之间的相互依赖关系,这对于正确识别实体边界很重要。
一个典型的基于词向量的NER系统结构如下:首先,输入文本被分词为单个词汇;其次,每个词汇被映射为其对应的词向量(如果词汇在训练语料库中未出现,则可以使用随机向量或字符级向量);再次,词向量序列被输入到一个序列标注模型(如BiLSTM或Transformer),该模型为序列中的每个位置预测标签(实体类型或非实体);最后,使用条件随机场(Conditional Random Field, CRF)或其他解码方法确保预测的标签序列符合有效的实体结构。
7.3 情感分析与文本分类的案例
文本分类是自然语言处理中应用最广泛的任务之一,其中情感分析是一个特别重要的子任务。情感分析的目标是确定一段文本(如产品评论、社交媒体帖子)表达的情感是积极的、消极的还是中性的。传统的情感分析方法通常依赖于手工编制的情感词汇表和复杂的特征工程。虽然这些方法在某些情况下有效,但它们面临几个根本性的问题:首先,情感表达往往是复杂和有歧义的,同一个词在不同的上下文中可能有完全相反的极性;其次,新的表达方式和俚语不断出现,手工维护的词汇表难以跟上;再次,一些表达情感的方式可能非常微妙,仅通过查找词汇表无法识别。
使用词向量和深度学习模型的情感分析系统则可以自动学习这些复杂的模式。一个简单但有效的方法是,首先将文本的所有词向量取平均,得到整个文本的向量表示:
\\mathbf{d} = \\frac{1}{n} \\sum_{i=1}\^{n} \\mathbf{v}_i
其中n是文本中的词数,v_i是第i个词的向量。然后,这个文本向量被输入到一个或多个全连接层,最后使用softmax层进行分类。这个简单的方法在许多情感分析基准数据集上已经能够达到相当不错的性能,大约80-90%的准确率。
更复杂的方法则使用循环神经网络或卷积神经网络来捕捉文本中的序列依赖关系或局部特征。例如,一个卷积神经网络可以使用多个不同宽度的卷积核来提取不同长度的短语特征,然后通过最大池化将这些特征聚合起来。这些更复杂的模型通常能在情感分析任务上达到更好的性能,但代价是增加了模型的复杂性和计算成本。
8. 词向量的局限性与批判分析
8.1 多义性问题的本质
尽管词向量在许多任务上表现出色,但固定词向量方法的根本局限性之一就是无法处理词汇的多义性。在自然语言中,同一个词汇在不同的上下文中往往有不同的含义。例如,英文词汇"bank"可以指河岸(river bank)或金融机构(commercial bank),这两个含义在语义上完全不同,甚至在许多应用中应该被当作两个不同的实体。然而,在固定词向量模型中,"bank"在这两种用法中被赋予完全相同的向量表示。
这个问题在实践中的影响程度取决于具体的应用。对于某些任务(如文本分类),固定的词向量表示可能仍然足够有效,因为分类器可以学会通过上下文词汇来推断真实的含义。但对于某些其他任务(如信息检索或机器翻译),多义性可能导致显著的性能下降。例如,在机器翻译中,如果模型不能正确区分"bank"的两个含义,它可能会选择不适当的目标语言词汇。
解决这个问题的一个方法是词义消歧(Word Sense Disambiguation, WSD),即在给定上下文的情况下,确定词汇的具体含义。虽然词义消歧是一个经典的自然语言处理问题,拥有几十年的研究历史,但仍然是一个相当困难的任务,特别是对于罕见的词义。在词向量出现后,一个有趣的观察是,某些词义消歧方法可以通过聚类词汇使用的上下文来自动发现不同的词义,并为每个词义学习分离的向量表示。
从根本上来说,多义性问题指向了语言表示中的一个深层问题:语义不仅由词汇本身决定,还由整个上下文决定。这也是为什么后来出现的上下文化表示方法(如BERT)能够更好地处理这个问题------它们为同一个词汇在不同上下文中学习不同的表示。
8.2 低频词汇与罕见现象
词向量的学习过程天然地对高频词汇有利,而对低频或罕见的词汇不利。这是因为,在无监督的学习过程中,词汇出现的频率直接影响了模型能够从其中学到的信号强度。高频词汇有许多上下文示例可以学习,而低频词汇只有少数几个。此外,某些超稀有词汇或完全未见过的词汇甚至无法学到有意义的向量。
在实践中,这个问题通常通过几种方式来缓解。第一种方法是字符级或子词级的向量化,如使用BPE或FastText中的字符n-gram方法。这样,即使一个词汇在训练中没有出现,也可以通过其字符成分的向量组合来生成一个合理的向量。第二种方法是使用预训练的词向量并定期更新词表,确保最常见的词汇都有良好的表示。第三种方法是在微调过程中,对低频词汇使用较小的学习率更新,或者完全冻结它们的向量。
这个问题在某些应用中更加严重。例如,在处理科学论文、医学文献或其他专业领域的文本时,往往会出现大量的低频的专业词汇。虽然这些词汇对于理解文本很重要,但词向量模型可能无法为它们学到有意义的表示。这激发了研究者们开发领域特定的词向量训练方法,即在特定领域的大规模未标注语料库上训练词向量。
8.3 文化和语言偏见问题
近年来,人们越来越认识到,预训练的词向量(和语言模型)可能会编码和强化社会偏见。例如,研究表明,在一些词向量空间中,"男性"倾向于与"计算机程序员"相关联,而"女性"倾向于与"护士"或"秘书"相关联。虽然这些关联来自于训练数据中实际存在的社会模式,但模型将这些统计关联转化为向量空间中的几何关系,然后可能通过各种下游应用进一步强化和传播这些偏见。
这个问题在跨文化和跨语言的应用中尤为复杂。不同文化和不同语言中存在不同的社会规范和偏见,而多语言模型可能会将这些不同的偏见混合在一个共享的向量空间中,导致不可预见的行为。例如,某个文化中被认为是正常的性别分工,在另一个文化中可能被认为是有害的刻板印象。处理这个问题需要仔细的偏见审计、数据选择和模型设计。
一些方法已经被提出来缓解这个问题。一种方法是去偏(Debiasing),即在训练后的词向量中识别和消除与保护特征(如性别或种族)相关的方向。另一种方法是在训练过程中明确地添加约束,鼓励模型学到无偏的表示。第三种方法是更加谨慎地选择训练数据,可能删除或加权那些包含明显有害偏见的数据。虽然这些方法可以在一定程度上缓解问题,但完全解决偏见问题仍然是一个开放的、充满挑战的课题。
9. 理论分析与未来方向
9.1 词向量的数学性质与近似性
词向量模型虽然在实践中取得了巨大的成功,但对其理论性质的理解仍在不断深化。一个重要的发现是,许多词向量模型实际上可以被解释为某个共现矩阵的隐式因式分解。例如,Goldberg和Levy证明了Skip-gram with negative sampling可以被解释为最小化向量内积与PMI的差异,这在数学上与对一个转换后的共现矩阵进行矩阵分解等价。这个理论洞察将看似不同的方法(共现矩阵和神经网络)统一在同一个框架下。
类似地,对于其他词向量模型,我们也可以推导出相应的共现矩阵表示和数学等价性。这些理论结果有几个重要的意义。首先,它们提供了对为什么这些方法有效的更深层的理解,而不仅仅是经验观察。其次,理论框架允许我们从共现统计的角度预测模型的性能和局限,从而指导我们改进算法设计。再次,这些理论联系揭示了不同算法之间的本质联系,可能导致新的、更优越的混合方法。
需要特别指出的是,词向量的学习过程隐含地进行了某种形式的维度规约,将极高维的共现空间映射到相对较低维的向量空间。这个过程涉及到信息的损失,但同时也过滤掉了噪声。关键的观察是,在原始共现矩阵中,由于高频词汇和稀有共现的影响,可能存在很多噪音。通过学习低维向量表示,模型实际上是在寻找数据中最主要的、最稳定的模式,这些模式更可能是真实的语义关系,而不是统计噪声。这个过程类似于主成分分析(Principal Component Analysis, PCA)中的维度规约,其中我们保留数据方差最大的维度,丢弃方差较小的维度。
在最优化理论的角度,词向量学习可以被看作是一个非凸优化问题。虽然目标函数是非凸的,但在实践中,随机梯度下降等简单的优化方法往往能找到相当不错的局部最优解。这个现象的原因可能是,虽然函数景观包含多个局部最优点,但许多局部最优点都有相似的性质(都能捕捉到语言的基本结构),因此即使落入不同的局部最优,性能仍然相当不错。
9.2 语言模型的缩放规律与涌现能力
近年来的一个重要发现是,大型语言模型表现出的许多能力,包括某些形式的推理和创意生成,似乎是大规模和模型能力的涌现现象。涌现能力(Emergent Abilities)指的是,当模型达到某个规模和能力阈值时,突然出现的、之前在较小模型中看不到的能力。例如,提示工程(Prompt Engineering)------通过仔细设计输入提示来引导模型行为------似乎对于较小的模型不太有效,但对于大型模型则变得非常有力。这种能力的出现往往与模型参数数量、训练数据规模和模型架构的改进有关,但具体的机制仍然不完全清楚。
对于这些涌现能力的根源,目前还缺乏完整的理论理解。一些假说认为,涌现能力来自于模型学到了足够丰富和通用的表示,使其能够在足够多的不同情境中执行类似的推理过程。例如,当模型达到足够的规模时,它可能学到了足够抽象的概念(如"因果关系"、"逻辑矛盾"等),可以应用于它在训练中未明确见过的新场景。另一些假说则认为,涌现能力来自于大模型能够捕捉更长的依赖关系和更复杂的模式,这些模式仅在足够大的规模上才显著。还有一些研究表明,涌现能力可能与模型的泛化能力和对分布外(out-of-distribution)样本的抵抗力有关。
无论原因如何,涌现能力的存在深刻地改变了我们对语言建模和人工智能的理解,也激发了对更大模型的持续追求。然而,这也带来了新的挑战,包括计算成本的大幅增加、模型可解释性的进一步降低,以及控制和对齐大型模型行为的难度增加。
9.3 词向量到大型语言模型的进化路径
从Word2Vec到现代的大型语言模型(如GPT系列、Claude等),我们可以看到一条清晰的进化路径。这个路径的关键里程碑包括:首先,从固定词向量到上下文化表示(通过RNN和Transformer);其次,从单任务学习到多任务预训练(如BERT和GPT);再次,从编码器模型到编码-解码模型再到纯解码器模型(如GPT-3和GPT-4);最后,从仅处理文本到处理多模态信息(如CLIP和GPT-4V)。
每一步的进化都涉及到模型表示能力的增强、训练数据规模的扩大、和/或优化方法的改进。值得注意的是,虽然技术在不断进步,但基于分布假说的基本思想------词汇的含义由其使用上下文定义------仍然是所有这些模型的核心。现代的大型语言模型虽然架构和规模与Word2Vec差异巨大,但其学习信号的根本来源仍然是相同的:通过预测上下文(或更广泛的语言任务)来学习有意义的表示。
9.3 表示学习的可解释性与对齐问题
虽然基于向量的表示在实践中非常有效,但我们对这些表示的具体含义和结构的理解仍然有限。一个重要的研究方向是表示的可解释性(Interpretability)。与基于规则的符号系统不同,在向量表示中,很难准确指出某个特定向量维度对应于某个特定的语义特征。虽然我们知道某些维度似乎对应于某些概念(如性别、数字、形容词)的某些方面,但这种对应往往是模糊的、高维的。最近的研究表明,虽然不能从单个维度来理解表示,但可以通过识别和分析高维特征组合来更好地理解模型的决策过程。
另一个重要的问题是表示的对齐(Alignment)。在多模态学习(结合文本、图像、声音等多种模式)中,或在跨语言转移中,一个关键的挑战是使不同模式或不同语言的表示在某个共同的向量空间中对齐。虽然多语言BERT等模型在某种程度上实现了自动对齐,但这种对齐往往不完美,可能导致某些信息的丧失。更好地理解和改进跨模态、跨语言的对齐,是使用向量表示的一个持续的挑战。
9.4 能源效率与环保问题
随着模型规模的不断增大,训练和推理这些模型所需的计算资源也在急剧增加。这不仅意味着更高的经济成本,也意味着更大的能源消耗和环保影响。一项研究估计,训练一个大型语言模型可能消耗与多个美国家庭全年用电量相当的电力。这引发了关于人工智能研究可持续性的重要问题。
为了解决这个问题,研究者们在多个方向上进行了努力。一是开发更有效率的模型架构,如我们前面提到的ALBERT,通过参数共享和其他技巧来减少计算量。二是开发更有效的预训练和微调方法,如参数高效的微调(Parameter-Efficient Fine-Tuning)技术,包括低秩自适应(Low-Rank Adaptation, LoRA)等,这些方法允许在不完全重新训练整个模型的情况下适应新任务。三是寻求更好的知识蒸馏方法,将大型模型的知识压缩到较小的学生模型中,以减少推理时的计算需求。这些努力是朝着更可持续和负责任的人工智能研究的重要步骤。
10. 结论与展望
10.1 从词向量到现代语言理解的发展路径
我们在本文中追踪了从简单的词向量到复杂的预训练语言模型的发展路径。这个发展过程不仅代表了技术的进步,更反映了我们对语言本质和机器学习的理解的深化。从one-hot编码的稀疏表示,到Word2Vec等方法的密集向量,再到BERT等模型的上下文化动态表示,每一步都解决了之前方法的某个关键限制,同时为新的、更强大的方法打开了大门。
这个发展过程也说明了一个一般性的机器学习原理:好的表示是学习成功的基础。无论是在计算机视觉中使用CNN学习图像特征,还是在自然语言处理中使用循环神经网络或Transformer学习文本表示,核心的洞察都是相同的------模型首先需要学到输入数据的有意义的表示,然后才能在这些表示之上解决具体的任务。对表示学习的投入和研究直接导致了下游任务性能的大幅改进。
10.2 未来的研究方向与开放问题
尽管取得了显著的进步,但自然语言处理中仍然存在许多未解决的问题和有前景的研究方向。一个重要的方向是常识推理(Commonsense Reasoning)。虽然预训练的语言模型在许多任务上表现出色,但它们在需要对世界如何运作有深层理解的任务上往往表现不佳。例如,在理解物理、社交互动或逻辑推理时,这些模型经常做出违反常识的预测。开发能够更好地整合常识知识和因果推理的方法,是提升语言模型实用性的重要方向。
另一个重要的方向是可解释性和可信度(Interpretability and Trustworthiness)。随着语言模型在越来越多的高风险应用中使用(如医疗诊断、法律建议、财务决策),理解模型的决策过程和可靠性变得至关重要。开发更好的模型解释方法,以及建立对模型输出的信心程度的估计,是未来工作的重要课题。
第三个方向是多模态学习(Multimodal Learning)。自然世界中,理解往往需要整合多种信息源,如文本、视觉和听觉。虽然已有一些多模态模型(如CLIP、DALL-E)取得了令人瞩目的成果,但如何更有效地在不同模态之间进行学习和表示转移仍然是一个开放问题。
第四个方向是小数据学习和转移学习(Few-Shot Learning and Transfer Learning)。虽然大规模预训练已经证明了其价值,但在许多真实应用中,标注数据仍然很稀缺。开发能够在少量示例或零样本设置下工作的方法,将预训练模型的知识更有效地转移到新任务,仍然是一个重要的研究课题。
第五个方向是模型效率和可持续性(Model Efficiency and Sustainability)。如前所述,大型模型的训练和部署成本在经济和环保方面都很高。开发更高效的模型架构、优化的训练程序、有效的知识蒸馏和压缩技术,是使人工智能更广泛可及和可持续的关键。
10.3 对自然语言处理未来的思考
展望自然语言处理的未来,我们可能会看到几个重要的发展趋势。首先,模型可能会继续增长,但增长的方式可能会变化。受到计算成本和环保考虑的限制,而不是无限制的规模增长,研究者们可能会关注于在给定的计算预算下最大化效率,以及开发更智能的架构和学习方法,而不是简单的规模扩大。
其次,我们可能会看到更强的多模态和多语言能力的发展。语言不仅与文本相关,还与视觉、听觉和其他感官相关。能够无缝地跨越这些模态工作的模型,将开启新的应用和理解可能性。同样,对低资源语言和非英文语言的关注也会增加,这将使自然语言处理的好处能够惠及更多的人群。
再次,我们可能会看到将符号推理和神经网络方法相结合的新方法的出现。符号系统的强大推理能力和神经网络的学习和适应能力的结合,可能会产生比任何一种方法单独使用更强大的系统。混合式方法,结合显式的知识表示和神经学习,可能会成为未来系统的特征。
最后,随着语言模型的应用越来越广泛,对其公平性、偏见、隐私保护和安全性的关注也会增加。开发能够公平对待不同用户群体、不强化社会偏见、保护用户隐私、抵抗恶意使用的模型,将成为自然语言处理研究中一个越来越重要的部分。
10.4 最后的思考
从Word2Vec的简洁优雅到BERT的复杂功能,我们目睹了自然语言处理和深度学习中一段令人激动的进展历程。这个历程不仅仅是技术的进步,更是科学理解的加深。通过这个过程,我们学到了许多关于语言、学习和表示的深刻见解。
语言不仅仅是一个符号系统,而是一个高度结构化、充满统计规律性的系统,可以通过大规模数据上的优化过程有效地学到。词汇的含义不是绝对的、固定的,而是由其在大量文本中与其他词汇的共现模式定义的。通过简单的数学原理和大规模的数据,我们能够创建模型,这些模型能够学到人类语言的深层结构,并在许多任务上达到或超过人类的表现。
这些发现有更广泛的意义。它们表明,复杂的认知能力------如语言理解------可能不一定需要显式的符号操纵或特殊的认知架构,而可以通过相对通用的学习机制,在充分的数据和计算资源上自然地出现。这为人工智能研究和认知科学提供了重要的见解。
随着我们继续推进自然语言处理的边界,面对新的挑战和机会,词向量的核心思想------将离散的符号映射到连续的向量空间以捕捉语言结构------将继续作为基础。无论未来的方法如何演变,这个基本的洞察将始终是现代自然语言处理的基石。
参考文献与阅读延伸
- Harris, Z. S. (1954). Distributional structure. Word, 10(2-3), 146-162. --- 分布假说的原始论文,提出"相似的词有相似的分布"的核心思想
- Turney, P. D., & Pantel, P. (2010). From frequency to meaning: Vector space models of semantics. Journal of Machine Learning Research, 37, 141-188. --- 向量空间模型的综合综述
- Mikolov, T., Chen, K., Corrado, G., & Dean, J. (2013). Efficient estimation of word representations in vector space. arXiv preprint arXiv:1301.3781. --- Word2Vec的原始论文,首次在arXiv发布
- Pennington, J., Socher, R., & Manning, C. D. (2014). GloVe: Global vectors for word representation. Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP), 1532-1543. --- GloVe模型
- Goldberg, Y., & Levy, O. (2014). word2vec explained: Deriving Mikolov et al.'s negative-sampling word-embedding method. arXiv preprint arXiv:1402.4290. --- Word2Vec的理论分析,揭示与矩阵分解的等价性
- Bojanowski, F., Grave, E., Joulin, A., & Mikolov, T. (2017). Enriching word vectors with subword information. Transactions of the Association for Computational Linguistics, 5, 135-146. --- FastText论文
- Vaswani, A., Shazeer, N., Parmar, N., et al. (2017). Attention is all you need. Advances in Neural Information Processing Systems (NeurIPS), 30, 5998-6008. --- Transformer架构的原始论文
- Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2018). BERT: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805. --- BERT的原始论文,后被ACL 2019接收
- Liu, Y., Ott, M., Goyal, N., et al. (2019). RoBERTa: A robustly optimized BERT pretraining approach. arXiv preprint arXiv:1907.11692. --- RoBERTa改进,后被ACL 2020接收
- Lan, Z., Chen, M., Goodman, S., et al. (2020). ALBERT: A lite BERT for self-supervised learning of language representations. International Conference on Learning Representations (ICLR) 2020. --- ALBERT效率改进(注:虽然在2019年11月提交arXiv,但正式发表于2020年ICLR)
- Clark, K., Luong, M. T., Le, Q. V., & Manning, C. D. (2020). ELECTRA: Pre-training text encoders as discriminators rather than generators. International Conference on Learning Representations (ICLR) 2020. --- ELECTRA预训练方法