静态词嵌入(Word2Vec/GloVe)与上下文词嵌入(BERT)的本质区别
词嵌入技术经历了从静态(Word2Vec、GloVe、FastText)到动态上下文(BERT、ELMo)的演进。请分析两类词嵌入的核心差异,包括多义性问题、表示容量、训练范式等方面。
回答
屠龙少年
静态词嵌入(Static Embeddings):
- Word2Vec(CBOW/Skip-gram)、GloVe(共现矩阵分解)、FastText(子词嵌入)
- 每个词映射为一个固定的稠密向量
上下文词嵌入(Contextual Embeddings):
- ELMo(双向LSTM)、BERT(Transformer)、GPT
- 每个词在不同上下文中得到不同的向量表示
核心区别:
| 维度 | 静态嵌入 | 上下文嵌入 |
|---|---|---|
| 一词多义 | ❌ 无法区分(如bank=银行/河岸) | ✅ 上下文自动消歧 |
| 上下文信息 | ❌ 不考虑 | ✅ 双向/单向上下文 |
| 训练数据 | 可大规模(Word2Vec用100B tokens) | 需要更多(BERT用3B) |
| 计算成本 | 低(离线生成/在线查表) | 高(需实时Transformer推理) |
| 表示容量 | 固定(300维常用) | 动态(不同层编码不同粒度) |
| OOV问题 | ❌ FastText部分解决 | ✅ 子词分词可处理 |
ELMo vs BERT:
- ELMo:拼接的浅层双向LSTM,每层有独立意义(语法/语义)
- BERT:深层Transformer,层间差异更大(底层语法→中层语义→顶层任务)
实践选择:
- 低资源/延迟敏感:静态嵌入
- 需要精细语义:上下文嵌入
- 混合方案:静态嵌入作为BERT输入的一部分