词向量模型详解(Word Embedding)

词向量(Word Embedding)是自然语言处理(NLP)中最基础且影响深远的表示学习方法之一。它将离散的词汇映射为低维、稠密的实数向量,使计算机能够“理解”词语之间的语义与句法关系。以下从核心思想、经典模型、训练机制、评估方法、局限性到现代演进进行系统梳理。


一、 为什么需要词向量?

表示方式 维度 稀疏性 能否表达相似性 计算效率
One-Hot 词表大小(常>10万) 极高 ❌ 任意两词正交
共现矩阵+降维(LSA/SVD) 可降维 降低 ✅ 依赖人工窗口/权重
词向量(分布式表示) 50~300 极低 ✅ 向量距离/夹角反映语义

核心假设Distributed Representation(分布式表示)

“一个词的含义由其上下文决定。”(Firth, 1957)
语义相似的词在语料中出现的上下文模式相似,因此在向量空间中距离更近。


二、 经典词向量模型

1. Word2Vec(Mikolov et al., 2013)

基于局部上下文预测的无监督学习框架,包含两种架构:

架构 输入 输出 特点
CBOW 上下文词向量平均 中心词 训练快,对常见词友好
Skip-gram 中心词 上下文词 对罕见词更鲁棒,效果通常更好

关键优化技术

  • 负采样(Negative Sampling):将 VVV 分类问题转化为 k+1k+1k+1 个二分类问题(kkk 通常取 5~20),大幅降低 softmax 计算量。
  • 层次 Softmax(Hierarchical Softmax):基于霍夫曼树组织词表,将计算复杂度从 O(V)O(V)O(V) 降至 O(log⁡V)O(\log V)O(logV)
  • 子采样(Subsampling):对高频词(如 the, is)进行概率丢弃,缓解词频分布极度不均衡问题。

2. GloVe(Global Vectors, Pennington et al., 2014)

思想:融合全局统计信息与局部上下文预测。
先构建词-词共现矩阵 XXXXijX_{ij}Xij 表示词 iii 和词 jjj 在窗口内共现次数),再优化以下目标:
J=∑i,jf(Xij)(wi⊤w~j+bi+b~j−log⁡Xij)2 J = \sum_{i,j} f(X_{ij}) \left( \mathbf{w}_i^\top \tilde{\mathbf{w}}_j + b_i + \tilde{b}_j - \log X_{ij} \right)^2 J=i,jf(Xij)(wiw~j+bi+b~jlogXij)2

  • f(x)f(x)f(x) 为加权函数:x<xmaxx<x_{max}x<xmax(x/xmax)α(x/x_{max})^\alpha(x/xmax)α,否则 111(抑制极高频/低频共现噪声)
  • 优点:充分利用全局语料统计,在词类比(Analogy)任务上常优于 Word2Vec。

3. FastText(Bojanowski et al., 2016)

核心改进:引入**子词(Subword / Character n-gram)**信息。

  • 将词 <where> 拆分为:<wh, whe, her, ere, re>(以 <, > 标记边界)
  • 词向量 = 所有 n-gram 向量之和 + 完整词向量
  • 优势
    • 有效解决 OOV(未登录词)问题
    • 对形态丰富的语言(德语、土耳其语、阿拉伯语等)效果显著提升
    • 训练速度极快,常用于轻量级文本分类

三、 训练流程与超参数

  1. 预处理:分词 → 构建词表 → 过滤低频词 → 构建训练对(CBOW/Skip-gram)或共现矩阵(GloVe)
  2. 关键超参数
    • dim:向量维度(50/100/200/300)
    • window:上下文窗口大小(通常 5~10)
    • negative:负采样数量(5~20)
    • epochs:训练轮数(5~20)
    • min_count:最低词频阈值(通常 5)
  3. 常用工具Gensim, fasttext Python库, TensorFlow/PyTorch 自定义实现

四、 评估方法

类型 任务 指标 说明
内在评估(Intrinsic) 词相似度(WordSim-353, MC, RG) Spearman/Pearson 相关系数 衡量向量空间是否对齐人类语义判断
词类比(Analogy: A:B :: C:?) 准确率 测试向量是否支持线性语义关系(如 king-man+woman≈queen)
外在评估(Extrinsic) 作为下游任务输入特征(分类、NER、MT等) 任务指标(F1, Acc, BLEU等) 更贴近实际应用,但受模型/数据影响大

⚠️ 注意:内在指标高 ≠ 下游任务一定好。静态词向量无法区分多义词,复杂任务中可能被上下文模型超越。


五、 局限性与现代演进

静态词向量的根本缺陷

  1. 一词一义:无法处理多义词(如“苹果”公司 vs 水果,“打”电话 vs 打篮球)
  2. 上下文无关:同一词在任何句子中向量固定
  3. 长程依赖弱:仅依赖局部窗口,难以捕捉句法/篇章结构

向上下文表示的演进

模型 年份 核心思想 是否静态
ELMo 2018 双向 LSTM 动态生成词向量 ✅ 动态
BERT 2018 Transformer + MLM 预训练 ✅ 动态
RoBERTa / DeBERTa / 大语言模型 2019~ 更大规模 + 更优训练策略 ✅ 动态

💡 现状(2026):传统静态词向量在工业界已逐步被上下文感知表示(LLM Embeddings)取代,但在以下场景仍有价值:

  • 资源受限/边缘设备部署
  • 需要高度可解释性的规则系统
  • 领域词表极小、无需上下文建模的任务
  • 作为大模型微调前的轻量化基线

六、 实用建议

  1. 选型指南
    • 通用中文:GloVe-wiki-zhWord2Vec-Baike
    • 多语言/形态复杂语言:FastText-cc 系列
    • 需要动态语义:直接使用 sentence-transformers 或开源 LLM 的 token embeddings
  2. 注意事项
    • 不同模型/语料训练的向量空间不可直接混用(需对齐如 VecMap
    • 领域偏移严重时,建议在目标语料上继续训练(gensim.models.word2vec.Word2Vec.build_vocab(update=True)
    • 向量维度并非越高越好,需与下游任务数据量匹配

七、 总结

词向量通过分布式表示将离散符号转化为可计算的几何空间,是 NLP 从“规则驱动”迈向“数据驱动”的关键转折点。Word2Vec、GloVe、FastText 等模型虽架构不同,但共享同一哲学:从共现或预测中学习语义。尽管静态词向量已被上下文模型超越,其核心思想(负采样、子词建模、低维流形假设)仍深刻嵌入现代大语言模型的 Embedding 层与训练范式中。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐