当前位置: 首页 > article >正文

【NLP】 6. 词向量的可变性及其影响

词向量的可变性及其影响

1. 引言

词向量(word embeddings)是自然语言处理(NLP)中用于表示单词语义的核心技术。它们通过将单词映射到高维向量空间,使得相似的单词在空间中具有接近的表示。然而,即使使用相同的数据和模型,词向量的表示仍然可能发生变化,这种现象被称为词向量的可变性(variability of word embeddings)

2. 词向量可变性的来源

即使在以下因素保持不变的情况下:

  • 数据集:相同的文本语料库
  • 模型:相同的训练算法(如 Word2Vec、GloVe、FastText)
  • 学习方法:相同的超参数和优化方式
  • 推理方法:相同的计算方式

词向量仍可能有所不同。这种可变性主要来自:

  1. 随机初始化(Random Initialization)
    • 词向量在训练开始时的权重是随机初始化的,不同的初始化可能导致最终的词向量有所不同。
  2. 负采样(Negative Sampling)
    • Word2Vec 及类似模型在训练时使用负采样,这一过程涉及随机选择的负例,导致不同的训练可能生成不同的结果。
  3. 批处理顺序(Mini-batch Order)
    • 在随机梯度下降(SGD)或 Adam 优化器中,数据的顺序会影响参数更新的路径,从而影响最终的词向量。

3. 如何衡量词向量的可变性

我们通常使用**最近邻一致性(Nearest Neighbor Consistency)**来评估同一单词在不同训练运行中的稳定性。

3.1 最近邻一致性

对于一个单词 w:

  • 训练两个不同版本的词向量(V1 和 V2)。
  • 对比在 V1 和 V2 中,w 的 k 近邻单词(top-k nearest neighbors)。
  • 计算 V1 和 V2 之间的近邻重叠度。

公式:
Overlap ( w ) = ∣ N N k ( w , V 1 ) ∩ N N k ( w , V 2 ) ∣ k \text{Overlap}(w) = \frac{|NN_k(w, V1) \cap NN_k(w, V2)|}{k} Overlap(w)=kNNk(w,V1)NNk(w,V2)
其中:

  • N N k ( w , V 1 ) NN_k(w, V1) NNk(w,V1)

    表示单词 w 在 V1 词向量中的前 k 个最近邻单词集合。

如果重叠度较高,则词向量表示较稳定;如果重叠度较低,则表示同一个单词在不同的训练过程中表现出了较大的变化。

3.2 余弦相似度变化

Sim ( w ) = cos ⁡ ( v w V 1 , v w V 2 ) \text{Sim}(w) = \cos(\mathbf{v}_w^{V1}, \mathbf{v}_w^{V2}) Sim(w)=cos(vwV1,vwV2)

其中:

  • v w V 1 \mathbf{v}_w^{V1} vwV1

    v w V 2 \mathbf{v}_w^{V2} vwV2

    是单词 w 在两个训练版本中的词向量。

  • 计算它们的余弦相似度,以衡量同一单词在两个不同训练版本中的相似程度。

4. 词向量可变性的影响

4.1 对 NLP 任务的影响

  • 信息检索(Information Retrieval)
    不稳定的词向量可能导致相似性搜索结果的不一致,影响文档排名和推荐系统。
  • 机器翻译(Machine Translation)
    词向量的变化可能影响翻译模型对单词之间关系的学习,导致翻译质量下降。
  • 情感分析(Sentiment Analysis)
    词向量的变化可能改变某些单词的情感极性,影响模型的预测结果。

4.2 解决方案

  1. 固定随机种子(Fix Random Seed)
    在模型训练时固定随机种子,以减少不同运行之间的随机性带来的影响。
  2. 对齐词向量(Procrustes Alignment)
    • 训练多个版本的词向量后,通过 Procrustes 变换对齐它们,以减少不同训练结果的偏差。
  3. 使用预训练模型(Pre-trained Embeddings)
    采用预训练的词向量(如 GloVe、FastText),避免因训练过程的变化而引入不稳定性。
  4. 降维分析(Dimensionality Reduction)
    通过 PCA、t-SNE 或 UMAP 观察词向量空间结构,确保相似单词的局部几何结构稳定。

同时,低频词更容易受影响


http://www.kler.cn/a/589255.html

相关文章:

  • DeepSeek本地部署 (Windows+Ollama+Docker Desktop+ RAGFlow)
  • VSTO(C#)Excel开发10:启动和卸载顺序 事件处理 监视变化
  • 蓝桥杯备考:模拟+堆 ---接水问题
  • Unity 封装一个依赖于MonoBehaviour的计时器(下) 链式调用
  • 【新人系列】Golang 入门(五):集合类型 - 下
  • Docker系列——从零开始打包FunASR的Http服务
  • Nuxt3 使用 ElementUI Plus报错问题
  • Android之Sentry接入
  • 在 Windows 11 上使用 PyCharm 创建一个 Flask 项目,并使用 `pipenv` 进行虚拟环境管理
  • HarmonyOS NEXT 声明式UI语法学习笔记-创建自定义组件
  • 麒麟服务器操作系统QT系列软件工具手册
  • AD9850函数信号发生器制作(全套资料)
  • RK3568 android11 基于PN7160的NXP NFC移植
  • ASP.NET Webform和ASP.NET MVC 后台开发 大概80%常用技术
  • 操作系统的磁盘调度
  • 鸿蒙Next开发中的坑与问题总结
  • 五大基础算法——枚举算法
  • 从被动响应到主动预见:智能可观测性技术的变革与实践
  • Qt常见面试题合集
  • ⚡️Jolt -- 通过JSON配置来处理复杂数据转换的工具