🧠 一、核心问题回顾
我们有两个向量表示:
-
稀疏向量(Sparse Vector)
- 通常是 One-hot 或共现矩阵(co-occurrence matrix)的一行。
- 维度非常高(几万甚至几百万)。
- 大多数维度为 0。
- 每个维度代表某个词、上下文、或特征。
-
密集向量(Dense Vector)
- 维度较低(几十到几百)。
- 每个维度是一个“混合语义特征”。
- 是从稀疏空间“学习压缩”出来的。
问题是:
为什么密集向量(低维)能代表稀疏向量(高维)中的语义关系?
⚙️ 二、直观理解:从“身份编号”到“语义坐标”
稀疏表示(如 one-hot)就像:
- 给每个词一个唯一的编号;
- 每个词在空间中是一个孤立的点;
- 两个词之间没有任何几何或统计关系。
密集表示(embedding)相当于:
- 用实数向量为每个词找到一个“坐标”;
- 坐标位置由语料中的共现规律决定;
- 距离近的词出现在相似上下文中;
- 实际上是对稀疏信息的一种语义压缩与泛化。
🧮 三、数学视角:稀疏向量的低维逼近
1. 设定
假设我们有一个词汇表 ( V ),每个词 (wi)( w_i )(wi) 的稀疏表示是一个高维向量 (xi∈RN)( \mathbf{x}_i \in \mathbb{R}^N )(xi∈RN),其中 ( N ) 可以是:
- 词-上下文共现矩阵的列数;
- 或词的 One-hot 向量维度。
这些 (xi)( \mathbf{x}_i )(xi) 形成一个庞大的矩阵:
$$
X =
\begin{bmatrix}
* & \mathbf{x}_1^T & - \
* & \mathbf{x}_2^T & - \
& \vdots & \
* & \mathbf{x}_V^T & -
\end{bmatrix}
\in \mathbb{R}^{V \times N}
$$
2. 稀疏矩阵的问题
- (X)( X )(X) 非常稀疏(绝大部分为 0);
- (N)( N )(N) 可能比 (V)( V )(V) 还大(几百万级别);
- 存储与计算都不可行;
- 直接比较词与词的相似度几乎没有意义。
3. 低维表示的思想
我们希望找到一个低维矩阵 (E∈RV×d)( E \in \mathbb{R}^{V \times d} )(E∈RV×d),
使得每一行 (ei)( \mathbf{e}_i )(ei)(词的 embedding 向量)
能“近似保留”原稀疏向量的语义结构:
X≈EWT
X \approx E W^T
X≈EWT
其中 (W∈RN×d)( W \in \mathbb{R}^{N \times d} )(W∈RN×d) 是“解码矩阵”或“上下文向量矩阵”。
🔹 换句话说:
- 稀疏向量 (xi)( \mathbf{x}_i )(xi) 在高维空间中;
- 我们用一个线性变换 ( E ) 把它投影到低维空间;
- 要求这种投影仍能近似原有的相似关系。
📘 四、从线性代数看:稀疏矩阵的低秩分解
低维词向量的本质,其实是一种矩阵分解(Matrix Factorization)。
1. LSA(Latent Semantic Analysis)
最早的思想来自 LSA:
- 构造一个词-文档矩阵 ( X )(TF-IDF 权重);
- 对其做奇异值分解(SVD):
X=UΣVT X = U \Sigma V^T X=UΣVT
- 取前 ( k ) 个奇异值和对应列:
Xk=UkΣkVkT X_k = U_k \Sigma_k V_k^T Xk=UkΣkVkT
此时:
- (UkΣk)( U_k \Sigma_k )(UkΣk) 就是词的密集表示;
- 它在最小平方误差意义下,是原稀疏矩阵的最优低维逼近。
💡 所以:密集词向量是稀疏矩阵的低秩近似。
2. GloVe、Word2Vec 的联系
Word2Vec、GloVe 虽然没有显式使用 SVD,但本质上也是在做类似的事:
-
Word2Vec Skip-gram 模型训练目标:
maximize∑(i,j)logP(wj∣wi) \text{maximize} \quad \sum_{(i,j)} \log P(w_j|w_i) maximize(i,j)∑logP(wj∣wi)
这等价于在隐式地分解一个共现概率矩阵 (P(wj∣wi))( P(w_j|w_i) )(P(wj∣wi))。 -
GloVe 明确写出了目标函数:
wiTw~∗j+bi+b~∗j≈log(X∗ij) w_i^T \tilde{w}*j + b_i + \tilde{b}*j \approx \log(X*{ij}) wiTw~∗j+bi+b~∗j≈log(X∗ij)
这里 (X∗ij)( X*{ij} )(X∗ij) 是共现次数。
也就是说:GloVe 直接对稀疏的共现矩阵做了对数平滑的低维分解。
🧩 五、直觉理解:从稀疏统计 → 密集语义
举个例子:
| 上下文 | 猫 | 狗 | 苹果 |
|---|---|---|---|
| 喵喵叫 | 5 | 0 | 0 |
| 吠叫 | 0 | 6 | 0 |
| 吃 | 4 | 4 | 6 |
| 水果 | 0 | 0 | 8 |
这就是一个稀疏的“词-上下文共现矩阵”。
我们希望找到低维向量:
猫: [0.9, 0.7]
狗: [0.8, 0.8]
苹果: [0.1, 0.9]
使得它们的相似度能重建上表的大致规律。
也就是说:
- “猫”和“狗”向量接近(因为共现模式相似);
- “苹果”远离“猫”和“狗”(因为上下文不同)。
👉 所以密集向量是稀疏共现模式的压缩编码。
🔍 六、从信息论角度理解
从信息论的角度,embedding 是一种有信息保留的压缩编码(information-preserving compression):
- 稀疏向量中包含大量冗余(比如“的”、“是”等高频词对所有词几乎都共现);
- 通过训练,我们学到了一组低维基向量,使得:
I(词向量;共现统计)≈I(原稀疏表示) I(\text{词向量}; \text{共现统计}) \approx I(\text{原稀疏表示}) I(词向量;共现统计)≈I(原稀疏表示)
即:保留了最有用的语义信息。
这就像主成分分析(PCA)提取主轴:
低维空间捕获高维数据中主要的变化方向(即语义主轴)。
🧠 七、总结:密集词向量“代表”稀疏向量的机制
| 层面 | 原理 | 说明 | |
|---|---|---|---|
| 几何层面 | 稀疏空间的低维投影 | 保留距离与方向(语义) | |
| 线性代数层面 | 稀疏矩阵的低秩分解 | (X≈EWT)( X \approx E W^T )(X≈EWT) | |
| 概率统计层面 | 共现概率建模 | (P(contextword)≈softmax(E))(P(\text{context}\text{word})\approx\text{softmax}(E))(P(contextword)≈softmax(E)) | |
| 信息论层面 | 压缩编码 | 去掉冗余,保留语义信息 |
最终:
密集词向量并不是直接替代稀疏词向量,而是它的“语义压缩映射” ——
一种低维、连续的、保留主要语义结构的表示。
🔚 八、简明总结一句话
密集词向量 = 稀疏共现信息的低维压缩,使语义相似的词在几何上靠近。
874

被折叠的 条评论
为什么被折叠?



