神经网络之PPMI矩阵
🧩 一、问题回顾:为什么要用 PPMI?
在共现矩阵中,我们统计了词与词共同出现的次数。
但**“次数”并不能直接反映语义关联强度**:
- 高频词(如“的”“是”“一个”)会出现在几乎所有上下文里 → 共现次数大,但语义关联弱。
- 低频但特定搭配的词(如“苹果–吃”)共现次数少,但语义关联强。
👉 所以,我们需要一种度量能体现**“某两个词的共现是偶然还是有意义”**。
这就引出了 PMI(Pointwise Mutual Information)。
🧮 二、PMI 的定义
PMI 衡量两个事件(这里是两个词)之间的关联程度:
PMI(wi,wj)=logP(wi,wj)P(wi),P(wj) PMI(w_i, w_j) = \log \frac{P(w_i, w_j)}{P(w_i) , P(w_j)} PMI(wi,wj)=logP(wi),P(wj)P(wi,wj)
含义:
- 如果两个词独立出现,则 (P(wi,wj)=P(wi)P(wj))( P(w_i, w_j) = P(w_i) P(w_j) )(P(wi,wj)=P(wi)P(wj)),PMI = 0
- 如果它们比独立出现更频繁地一起出现 → PMI > 0
- 如果它们几乎从不一起出现 → PMI < 0
🧠 举例
假设语料统计结果如下:
| 词对 | 共现次数 | PMI 含义 |
|---|---|---|
| (吃, 苹果) | 很多 | PMI 高(语义相关) |
| (吃, 书) | 几乎没有 | PMI 低(语义不相关) |
| (的, 苹果) | 次数大但普遍 | PMI≈0(无特异语义) |
⚙️ 三、PMI 的计算公式(基于计数矩阵)
设:
- (C(wi,wj)):词(wi)与(wj)( C(w_i, w_j) ):词 (w_i) 与 (w_j)(C(wi,wj)):词(wi)与(wj) 的共现次数
- (C(wi)=∑jC(wi,wj))( C(w_i) = \sum_j C(w_i, w_j) )(C(wi)=∑jC(wi,wj)):词 (w_i) 的总出现次数
- (N=∑i,jC(wi,wj))( N = \sum_{i,j} C(w_i, w_j) )(N=∑i,jC(wi,wj)):所有共现对的总次数
则:
P(wi,wj)=C(wi,wj)N,P(wi)=C(wi)N,P(wj)=C(wj)N
P(w_i, w_j) = \frac{C(w_i, w_j)}{N}
\quad , \quad
P(w_i) = \frac{C(w_i)}{N}
\quad , \quad
P(w_j) = \frac{C(w_j)}{N}
P(wi,wj)=NC(wi,wj),P(wi)=NC(wi),P(wj)=NC(wj)
代入:
PMI(wi,wj)=logC(wi,wj)⋅NC(wi)⋅C(wj)
PMI(w_i, w_j) = \log \frac{C(w_i, w_j) \cdot N}{C(w_i) \cdot C(w_j)}
PMI(wi,wj)=logC(wi)⋅C(wj)C(wi,wj)⋅N
💡 四、PPMI(正点互信息)
问题:PMI 可能为负(当两个词比随机还少共现)。
负值往往无意义且影响向量分析,于是只保留正值:
PPMI(wi,wj)=max(PMI(wi,wj),0) PPMI(w_i, w_j) = \max(PMI(w_i, w_j), 0) PPMI(wi,wj)=max(PMI(wi,wj),0)
即:
只保留“比随机更相关”的词对。
🧱 五、从共现矩阵 → PPMI 矩阵
假设有一个简单语料:
我 爱 吃 苹果 和 香蕉
窗口大小 = 1
共现矩阵(示意):
| 目标\上下文 | 我 | 爱 | 吃 | 苹果 | 和 | 香蕉 |
|---|---|---|---|---|---|---|
| 我 | 0 | 1 | 0 | 0 | 0 | 0 |
| 爱 | 1 | 0 | 1 | 0 | 0 | 0 |
| 吃 | 0 | 1 | 0 | 1 | 0 | 0 |
| 苹果 | 0 | 0 | 1 | 0 | 1 | 0 |
| 和 | 0 | 0 | 0 | 1 | 0 | 1 |
| 香蕉 | 0 | 0 | 0 | 0 | 1 | 0 |
我们可依次计算:
PPMI(wi,wj)=max(logC(wi,wj)⋅NC(wi)C(wj),0)
PPMI(w_i, w_j) = \max\left( \log \frac{C(w_i, w_j) \cdot N}{C(w_i)C(w_j)}, 0 \right)
PPMI(wi,wj)=max(logC(wi)C(wj)C(wi,wj)⋅N,0)
得到一个实数矩阵(多数值为 0,少数高关联词如 “吃–苹果” 会有较高的正值)。
🧮 六、PPMI 矩阵的特点
| 特点 | 说明 |
|---|---|
| 去除了频率偏差 | 高频功能词不再主导矩阵 |
| 凸显语义关系 | “吃–苹果”“狗–汪汪”等搭配得到高权重 |
| 稀疏但信息集中 | 仅保留真正相关的词对 |
| 可进一步降维 | 用 SVD → 得到低维稠密语义向量(LSA、GloVe) |
🧠 七、直觉理解
想象二维空间:
| 共现情况 | 概率 | PMI/PPMI 含义 |
|---|---|---|
| “苹果–吃” 经常一起 | 高于独立预期 | PPMI↑,语义相关 |
| “苹果–跑” 几乎无共现 | 低于独立预期 | PPMI=0 |
| “的–苹果” 经常出现但无特异性 | 接近独立 | PPMI≈0 |
因此,PPMI矩阵是共现矩阵的“语义放大版”。
✅ 八、总结对比
| 项目 | 共现矩阵 | PPMI矩阵 |
|---|---|---|
| 元素含义 | 共现次数 | 语义关联强度(信息量) |
| 值域 | 0 ~ ∞(整数) | 0 ~ 实数(通常 <10) |
| 高频词 | 权重大 | 权重小(被修正) |
| 语义性 | 弱 | 强 |
| 后续可操作性 | 可直接降维(SVD) | 常作为 GloVe 的输入 |
