神经网络之PPMI矩阵

🧩 一、问题回顾:为什么要用 PPMI?

共现矩阵 中,我们统计了词与词共同出现的次数。

但**"次数"并不能直接反映语义关联强度**:

  • 高频词(如"的""是""一个")会出现在几乎所有上下文里 → 共现次数大,但语义关联弱。
  • 低频但特定搭配的词(如"苹果--吃")共现次数少,但语义关联强。

👉 所以,我们需要一种度量能体现**"某两个词的共现是偶然还是有意义"**。

这就引出了 PMI(Pointwise Mutual Information)


🧮 二、PMI 的定义

PMI 衡量两个事件(这里是两个词)之间的关联程度

PMI(wi,wj)=log⁡P(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)=log⁡C(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⁡(log⁡C(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 的输入
相关推荐
网教盟人才服务平台2 小时前
“方班预备班盾立方人才培养计划”正式启动!
大数据·人工智能
芯智工坊3 小时前
第15章 Mosquitto生产环境部署实践
人工智能·mqtt·开源
菜菜艾3 小时前
基于llama.cpp部署私有大模型
linux·运维·服务器·人工智能·ai·云计算·ai编程
TDengine (老段)3 小时前
TDengine IDMP 可视化 —— 分享
大数据·数据库·人工智能·时序数据库·tdengine·涛思数据·时序数据
小真zzz3 小时前
搜极星:第三方多平台中立GEO洞察专家全面解析
人工智能·搜索引擎·seo·geo·中立·第三方平台
GreenTea4 小时前
从 Claw-Code 看 AI 驱动的大型项目开发:2 人 + 10 个自治 Agent 如何产出 48K 行 Rust 代码
前端·人工智能·后端
火山引擎开发者社区4 小时前
秒级创建实例,火山引擎 Milvus Serverless 让 AI Agent 开发更快更省
人工智能
冬奇Lab4 小时前
一天一个开源项目(第72篇):everything-claude-code - 最系统化的 Claude Code 增强框架
人工智能·开源·资讯
火山引擎开发者社区4 小时前
ArkClaw:以 SLI 度量驱动,构建新一代 Agent 全链路可观测体系
人工智能