CodeWalk

静态词嵌入(Word2Vec/GloVe)与上下文词嵌入(BERT)的本质区别

作者:屠龙少年 · 2026-05-30 12:55

词嵌入技术经历了从静态(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输入的一部分