词表示学习全解析
立即解锁
发布时间: 2025-09-04 00:51:27 阅读量: 5 订阅数: 12 AIGC 


自然语言处理的表示学习
### 词表示学习全解析
#### 1. 符号化词表示
##### 1.1 独热词表示
独热词表示将每个词映射到词汇表的一个索引上。对于一个词,其独热向量只有一个维度的值为 1,其余维度都为 0。形式上,对于词 $w^{(i)}$,其第 $j$ 维的表示为:
\[
w_j^{(i)} =
\begin{cases}
1, & \text{if } j = i \\
0, & \text{otherwise}
\end{cases}
\]
独热词表示只能区分不同的词,不包含任何句法或语义信息。任意两个词的独热向量相互正交,例如“cat”和“dog”的余弦相似度与“cat”和“sun”的余弦相似度都为 0。不过,它是词袋模型进行文档表示的基础,在信息检索和文本分类中广泛应用。
##### 1.2 基于语言知识库的词表示
研究人员通过反思词与词之间的关系,构建复杂的词 - 词网络。例如在著名的语言知识库 WordNet 中,人类语言学家会手动标注每个词的同义词和上位词。
可以使用类似独热表示的向量形式来表示一个词:
\[
w_j^{(i)} =
\begin{cases}
1, & \text{if } (w^{(i)}, \text{has\_hypernym}, w^{(j)}) \\
-1, & \text{if } (w^{(i)}, \text{has\_hyponym}, w^{(j)}) \\
0, & \text{otherwise}
\end{cases}
\]
这种表示的表达能力有限,对于没有共同上位词和下位词的两个词,相似度为 0。直接采用原始的图形式更好,在图上可以使用度量方法来推导两个词之间的相似度。对于同义词网络,可以计算网络上两个词之间的距离作为它们的语义相似度(即两个词之间的最短路径长度)。对于上位词 - 下位词网络,可以利用层次信息更好地度量相似度,例如信息内容(IC)方法:
\[
s(w_1, w_2) = \max_{w \in C(w_1, w_2)}[-\log P(w)]
\]
其中 $C(w_1, w_2)$ 是 $w_1$ 和 $w_2$ 的共同上位词集合,$P(w)$ 是词 $w$ 在语料库中出现的概率。
##### 1.3 基于语料库的词表示
构建语言知识库的过程很耗时,而收集语料库相对容易。基于语料库自动推导词表示的正确性依赖于背后的语言假设,首先介绍词袋假设。
词袋假设认为可以忽略文档中词的顺序,将文档视为词的多重集,词的频率可以反映文档的内容。这样,文档可以用一个行向量表示,向量中的每个元素表示一个词在文档中的出现情况或频率。
当把每个文档的行向量堆叠形成一个文档(行) - 词(列)矩阵时,将注意力从行转移到列,每列代表一个词在一组文档中的出现情况。如果“rat”和“cat”倾向于出现在相同的文档中,它们在列中的统计信息会相似。
还可以更灵活地定义词的上下文来获得其他类型的表示。例如,定义一个以词为中心的固定大小窗口,使用窗口内的词作为该词的上下文,这对应于著名的分布假设:一个词的含义由其上下文描述。然后统计出现在一个词邻域内的词,使用字典作为词表示,每个键是一个上下文词,值是该上下文词在一定距离内的出现频率。
为了进一步扩展词的上下文,一些工作提出包含依赖链接或由参数位置诱导的链接。
在符号化表示中,每个表示项都有清晰且可解释的含义,对应于特定的词、同义词集或术语,因此称为“符号化表示”。
#### 2. 分布式词表示
符号化表示虽然简单且可解释,但不适合计算。例如,其稀疏性使得计算词与词之间的相似度很困难,像信息内容方法等不能自然地推广到其他符号化表示。分布式表示解决了这个问题。
分布式表示将一个对象(这里是一个词)表示为一个固定长度的实值向量,向量的每个维度没有明确的含义。具体来说,语义分散在表示的所有(,或大部分)维度中,一个维度对所有(或大部分)词的语义都有贡献。需要强调的是,“分布式表示”与“分布性表示”(由“分布假设”诱导)完全不同且相互正交。分布式表示描述表示的形式,而分布假设(表示)描述语义的来源。
##### 2.1 初步:解释表示
虽然分布式表示的每个维度不可解释,但仍需要近似解释表示所传达的含义。介绍两种基本的计算方法:相似度和降维。
- **相似度**
- **欧几里得距离**:是向量 $\mathbf{u}$ 和 $\mathbf{v}$ 差向量的 L2 范数。
\[
d_{Euclidean}(\mathbf{u}, \mathbf{v}) = \|\mathbf{u} - \mathbf{v}\|_2 = \sqrt{\sum_{i = 1}^{d}|u_i - v_i|^2}
\]
- **欧几里得相似度**:定义为距离的倒数。
\[
s_{Euclidean}(\mathbf{u}, \mathbf{v}) = \frac{1}{\sqrt{\sum_{i = 1}^{d}|u_i - v_i|^2}}
\]
- **余弦相似度**:通过两个向量之间的夹角来度量相似度。
\[
s_{cosine}(\mathbf{u}, \mathbf{v}) = \frac{\mathbf{u} \cdot \mathbf{v}}{\|\mathbf{u}\|_2\|\mathbf{v}\|_2}
\]
- **降维**
分布式表示虽然比符号化表示的维度低,但仍存在于高于三维的流形中。为了可视化,需要将向量的维度降低到 2 或 3。这里简要介绍主成分分析(PCA)。
PCA 使用正交线性变换将向量转换为一组新的坐标。在新的坐标系中,一个轴指向解释数据最大方差的方向,并且与所有其他轴正交。后面构建的轴解释的方差较小,对拟合数据的重要性较低。因此可以只使用前两到三个轴作为主成分,忽略后面的轴。
形式上,用一组单位行向量 $\{\mathbf{d}_j | j = 1, \ldots, k\}$ 表示新轴,样本 $\mathbf{u}$ 的原始向量可以在新坐标中表示为:
\[
\mathbf{u} = \sum_{j = 1}^{k}a_j\mathbf{d}_j \approx \sum_{j = 1}^{r}a_j\mathbf{d}_j
\]
其中 $a_j$ 是向量 $\mathbf{d}_j$ 表示 $\mathbf{u}$ 的权重,$\mathbf{a} = [a_1, \ldots, a_r]$ 形成 $\mathbf{u}$ 的新向量表示。在实践中,为了可视化通常设置 $r = 2$ 或 3。
新坐标集 $\{\mathbf{d}_j | j = 1, \ldots, k\}$ 可以通过协方差矩阵的特征分解或奇异值分解(SVD)计算。在 SVD 中,一个实值矩阵可以分解为:
\[
\mathbf{U} = \mathbf{W}\Sigma\mathbf{D}
\]
其中 $\Sigma$ 是正实数的对角矩阵,即奇异值,$\mathbf{W}$ 和 $\mathbf{D}$ 是由正交向量形成的奇异矩阵。对于数据样本(例如 $\mathbf{U}$ 的第 $i$ 行):
\[
\mathbf{U}_{i,:} = \sum_{j = 1}^{k}\sigma_j\mathbf{W}_{i,j}\mathbf{D}_{j,:}
\]
因此在上述公式中,$a_j = \sigma_j\mathbf{W}_{i,j}$ 且 $\mathbf{d}_j = \mathbf{D}_{j,:}$。
虽然 PCA 在高维数据可视化中广泛应用,但无法可视化形成非线性流形的表示。其他降维方法,如 t - SNE 可以解决这个问题。
##### 2.2 基于矩阵分解的词表示
分布式表示可以通过矩阵分解或神经网络从符号化表示转换而来。这里介绍基于矩阵分解的方法,包括潜在语义分析(LSA)、其概率版本 PLSA 和潜在狄利克雷分配(LDA)。
- **潜在语义分析(LSA)**
LSA 利用奇异值分解(SVD)将符号化表示矩阵进行转换。假设有一个词 - 文档矩阵 $\mathbf{M} \in \mathbb{R}^{n \times d}$,其中 $n$ 是词的数量,$d$ 是文档的数量。通过线性代数,它可以唯一地分解为三个矩阵的乘积:$\mathbf{M} = \mathbf{W}\Sigma\mathbf{D}^{\top}$,其中 $\Sigma$ 是正实数的对角矩阵,$\mathbf{W}$ 和 $\mathbf{D}$ 的列分别是左奇异向量和右奇异向量。
矩阵 $\mathbf{M}$ 的第 $i$ 行表示第 $i$ 个词的符号化表示,分解为:
\[
\mathbf{M}_{i,:} = \mathbf{W}_{i,:}\Sigma\mathbf{D}^{\top}
\]
从这个公式可以看出,只有 $\mathbf{W}$ 的第 $i$ 行对第 $i$ 个词的符号化表示有贡献。更重要的是,由于 $\mathbf{D}$ 是正交矩阵,词 $w_i$ 和 $w_j$ 之间的相似度为:
\[
\mathbf{M}_{i,:}\mathbf{M}_{j,:}^{\top} = \mathbf{W}_{i,:}\Sigma^2\mathbf{W}_{j,:}^{\top}
\]
因此可以将 $\mathbf{W}_{i,:}\Sigma$ 作为词 $w_i$ 的分布式表示。
将特征值按降序排列,最大的 $K$ 个奇异值(及其奇异向量)对矩阵 $\mathbf{M}$ 的贡献最大。因此只使用它们来近似 $\mathbf{M}$,公式变为:
\[
\mathbf{M}_{i,:} \approx \mathbf{W}_{i,:K} \odot [\sigma_1, \sigma_2, \ldots, \sigma_K]\mathbf{D}^{\top}_{:,:K}
\]
其中 $\odot$ 是元素级乘法,$\sigma_i$ 是 $\Sigma$ 的第 $i$ 个对角元素。
在 LSA 中,对计数统计进行 SVD 得到分布式表示 $\mathbf{W}_{i,:K}$。通常,使用较小的 $K$ 就可以得到足够好的近似,这意味着高维符号化表示中的语义现在被压缩并分布到低维实值向量中。LSA 广泛用于提高信息检索中基于查询的文档排名的召回率,因为它支持模糊语义匹配。
LSA 的一个挑战是计算成本高。对一个 $n \times d$ 矩阵进行完整的 SVD 需要 $O(\min\{n^2d, nd^2\})$ 时间,并且 SVD 的并行化并不容易。随机索引方法可以克服基于 SVD 的 LSA 的计算困难,避免对巨大的词 - 文档矩阵进行昂贵的预处理。在随机索引中,为每个文档分配一个随机生成的高维稀疏三元向量(称为索引向量)。对于文档中的每个词,将文档的索引向量添加到词的向量中。处理完整个文本语料库后,可以得到累积的词向量。随机索引易于并行化和实现,其性能与基于 SVD 的 LSA 相当。
- **概率潜在语义分析(PLSA)**
LSA 进一步发展为 PLSA。可以将 $\mathbf{W}_{i,:K}$ 视为潜在因子 $\{z_k | k = 1, \ldots, K\}$ 上的分布,其中:
\[
\mathbf{W}_{i,k} = P(w_i | z_k), \quad k = 1, \ldots, K
\]
类似地,$\mathbf{D}_{i,:K}$ 也可以视为一个分布:
\[
\mathbf{D}_{j,k} = P(d_j | z_k), \quad k = 1, \ldots, K
\]
$\{\sigma_k | k = 1, \ldots, K\}$ 是因子 $z_k$ 的先验概率,即 $P(z_k) = \sigma_k$。因此,词 - 文档矩阵成为词 $w_j$ 和文档 $d_j$ 的联合概率:
\[
\mathbf{M}_{i,j} = P(w_i, d_j) = \sum_{k = 1}^{K}P(w_i | z_k)P(z_k)P(d_j | z_k)
\]
借助贝叶斯定理,可以计算在文档 $d_j$ 给定的情况下 $w_i$ 的条件概率:
\[
P(w_i | d_j) = \frac{P(w_i, d_j)}{P(d_j)} = \sum_{k = 1}^{K}P(w_i | z_k)P(z_k | d_j)
\]
从这个公式可以看出定义了一个生成过程。为了在文档 $d_j$ 中生成一个词,首先从 $P(z_k | d_j)$ 中采样一个潜在因子 $z_k$,然后从条件概率 $P(w_i | z_k)$ 中采样一个词 $w_i$。
为了使上述公式严格成立,$\mathbf{W}$、$\Sigma$ 和 $\mathbf{D}$ 的元素必须是非负的。在这种概率约束下进行优化时,使用与 SVD 不同的损失函数:
\[
\mathcal{L} = -\sum_{j}\sum_{i}\mathbf{M}_{i,j} \log P(w_i, d_j)
\]
后续工作证明优化上述目标与非负矩阵分解相同。
- **潜在狄利克雷分配(LDA)**
PLSA 进一步发展为 LDA,这是一种流行的主题模型,广泛用于文档检索。LDA 在由上述公式定义的生成过程中添加了层次贝叶斯先验。文档 $j$ 中词的生成过程如下:
1. 选择 $\theta_j \in \mathbb{R}^{K} \sim Dir(\alpha)$,其中 $Dir(\alpha)$ 是狄利克雷分布(通常 $\alpha$ 的每个维度小于 1),$K$ 是主题数量。这是文档 $d_j$ 中主题的概率分布。
2. 对于每个主题 $z$,选择 $\phi_z \in \mathbb{R}^{|V|} \sim Dir(\beta)$,其中 $|V|$ 是词汇表的大小。通常 $\beta$ 的每个维度小于 1。这是主题 $z$ 生成词的概率分布。
3. 对于文档 $d_j$ 中的每个词 $w_i$:
- 选择一个主题 $z_{i,j} \sim Multinomial(\theta_j)$。
- 从 $w_{i,j} = P(w_j | d_j) \sim Multinomial(\phi_{z_{i,j}})$ 中选择一个词。
LDA 有两个特点需要强调:一是狄利克雷先验中的超参数 $\alpha$ 和 $\beta$ 通常设置为小于 1,导致“稀疏先验”,即采样的 $\theta$ 和 $\phi$ 的大多数维度接近零。
下面用 mermaid 流程图展示 LDA 的生成过程:
```mermaid
graph LR
A[选择文档 j] --> B[选择主题分布 θj ~ Dir(α)]
B --> C[为每个主题 z 选择词分布 φz ~ Dir(β)]
C --> D[对于文档 d_j 中的每个词 w_i]
D --> E[选择主题 z_{i,j} ~ Multinomial(θj)]
E --> F[选择词 w_{i,j} ~ Multinomial(φ_{z_{i,j}})]
```
综上所述,词表示学习有多种方法,从简单的符号化表示到更复杂的分布式表示,每种方法都有其特点和适用场景。在实际应用中,需要根据具体需求选择合适的方法。
### 词表示学习全解析
#### 3. 不同词表示方法的对比
为了更清晰地了解符号化表示和分布式表示的差异,下面通过表格进行对比:
| 表示类型 | 优点 | 缺点 | 适用场景 |
| ---- | ---- | ---- | ---- |
| 符号化表示 | 简单且可解释,每个表示项有清晰含义 | 计算困难,稀疏性导致词相似度计算不易,方法难以推广 | 对可解释性要求高,对计算效率要求不高的场景,如初步的语义分析 |
| 分布式表示 | 解决了符号化表示的计算难题,语义分散在各维度,更适合计算 | 向量维度无明确含义,解释性差 | 需要进行大规模计算和复杂语义匹配的场景,如信息检索、文本分类 |
#### 4. 词表示学习方法的应用案例
##### 4.1 信息检索
在信息检索中,词表示学习方法起着关键作用。以分布式表示中的 LSA 为例,它可以将高维的符号化表示压缩到低维实值向量中,支持模糊语义匹配。具体操作步骤如下:
1. **数据准备**:收集相关的文档集合,构建词 - 文档矩阵 $\mathbf{M}$。
2. **矩阵分解**:对词 - 文档矩阵 $\mathbf{M}$ 进行 SVD 分解,得到 $\mathbf{W}$、$\Sigma$ 和 $\mathbf{D}$。
3. **获取分布式表示**:取 $\mathbf{W}_{i,:K}$ 作为词的分布式表示。
4. **查询处理**:将查询词转换为分布式表示,与文档的分布式表示进行相似度计算,根据相似度对文档进行排序。
通过这种方式,可以提高基于查询的文档排名的召回率,找到与查询语义相关的文档。
##### 4.2 文本分类
文本分类任务也可以利用词表示学习方法。基于语料库的词表示可以将文本转换为向量形式,便于分类算法处理。以下是一个简单的文本分类流程:
1. **数据收集与预处理**:收集文本数据,并进行分词、去除停用词等预处理操作。
2. **词表示构建**:根据词袋假设或分布假设,构建词的表示,如使用文档 - 词矩阵。
3. **特征提取**:从词表示中提取特征,如词频、TF - IDF 等。
4. **模型训练**:选择合适的分类模型,如支持向量机、神经网络等,使用训练数据进行模型训练。
5. **分类预测**:使用训练好的模型对新的文本进行分类预测。
#### 5. 词表示学习的发展趋势
随着自然语言处理技术的不断发展,词表示学习也在不断演进。以下是一些可能的发展趋势:
- **融合多种信息**:将不同来源的信息,如语言知识库、语料库、上下文信息等进行融合,以获得更丰富、更准确的词表示。
- **动态词表示**:考虑词在不同上下文和语境中的动态变化,生成更灵活的词表示。
- **与深度学习的结合**:进一步探索词表示学习与深度学习模型的结合,如在循环神经网络、卷积神经网络、Transformer 等模型中应用更有效的词表示。
#### 6. 总结
词表示学习是自然语言处理中的重要基础,它为各种自然语言处理任务提供了有力支持。符号化表示和分布式表示各有优缺点,适用于不同的场景。在实际应用中,需要根据具体需求选择合适的词表示方法。同时,随着技术的发展,词表示学习也在不断创新和完善,未来有望取得更好的效果。
下面用 mermaid 流程图展示词表示学习在自然语言处理中的整体应用流程:
```mermaid
graph LR
A[文本数据] --> B[词表示学习]
B --> C{表示类型}
C -->|符号化表示| D[简单语义分析]
C -->|分布式表示| E[信息检索]
C -->|分布式表示| F[文本分类]
E --> G[查询处理]
F --> H[模型训练与预测]
```
总之,深入理解词表示学习的方法和原理,对于推动自然语言处理技术的发展具有重要意义。在实际应用中,我们应充分发挥各种方法的优势,不断探索和创新,以满足不同场景下的需求。
0
0
复制全文
相关推荐









