菜单

词嵌入

相关源文件

本页面详细介绍了 D2L.ai 存储库中实现的词嵌入技术。词嵌入是将单词转换为密集向量表示,这些向量在连续的向量空间中捕捉语义关系。本节将解释代码库中如何实现 word2vec、GloVe 和 FastText 等词嵌入,以及它们如何成为更高级的自然语言处理任务的基础组成部分。有关基于这些嵌入的注意力机制和 Transformer 架构,请参阅 注意力机制Transformer 架构

词嵌入基础知识

词嵌入将离散的词标记转换为连续的向量空间,在其中语义相似的词彼此靠近。与将每个词视为孤立实体的独热编码不同,词嵌入基于词的上下文来捕捉词之间的关系。

词嵌入的关键优势包括:

  1. 维度固定的密集表示,与词汇量大小无关
  2. 通过向量接近度反映语义相似性
  3. 支持数学运算(例如,king - man + woman ≈ queen)
  4. 跨下游 NLP 任务的可迁移性

词表示的演进

来源:img/seq2seq.svg

词嵌入架构

D2L.ai 的实现支持三种主要的词嵌入技术:

Word2Vec 模型

Word2Vec 由 Google 开发,使用浅层神经网络学习词向量。实现了两种主要架构:

  1. 连续词袋模型 (CBOW):根据上下文词预测目标词。
  2. Skip-gram:根据目标词预测上下文词。

实现细节

D2L.ai 中的 Word2Vec 实现支持自定义参数:

参数描述默认值
embed_size词向量的维度100
context_size上下文窗口大小5
negative_samples负样本的数量5
epochs训练迭代次数5
batch_size小批量大小512
learning_rate学习率0.01

来源:img/seq2seq.svg

GloVe (Global Vectors)

GloVe 由斯坦福大学开发,结合了全局矩阵分解和局部上下文窗口方法来生成词嵌入。

实现细节

D2L.ai 中的 GloVe 使用以下训练方法:

  1. 从语料库构建共现矩阵
  2. 应用加权矩阵分解
  3. 最小化基于共现概率比的目标函数

来源:img/seq2seq.svg

FastText

FastText 由 Facebook 开发,通过将每个词视为字符 n-gram 的集合来扩展 Word2Vec,使其能够处理词汇外单词和形态丰富的语言。

来源:img/seq2seq.svg

系统集成

词嵌入是 D2L.ai 架构中 NLP 流水线的基本构建块。下图说明了词嵌入如何与其他组件集成。

来源:img/seq2seq.svg

框架实现

D2L.ai 中的词嵌入实现遵循存储库的跨框架架构,允许相同的嵌入模型在多个深度学习框架上运行。

来源:img/seq2seq.svg

词嵌入可视化

词嵌入可以可视化以理解词之间的语义关系。D2L.ai 存储库提供了降维技术(如 t-SNE 或 PCA)的工具,用于将高维词向量可视化到 2D 或 3D 空间。

语义关系示例

词嵌入捕捉各种语言关系。

关系类型示例对
性别(男,女),(国王,王后),(他,她)
时态(行走,走过),(游泳,游过)
比较(好,更好),(坏,更坏)
首都-国家(巴黎,法国),(东京,日本)
货币-国家(美元,美国),(欧元,欧洲)

来源:img/seq2seq.svg

训练工作流程

D2L.ai 的实现遵循此通用工作流程来训练词嵌入。

来源:img/seq2seq.svg

实际考量

在使用 D2L.ai 框架中的词嵌入时,请考虑以下实际方面:

  1. 词汇量大小:更大的词汇量需要更多的内存和训练时间。
  2. 嵌入维度:更高的维度可以捕捉更多信息,但可能导致过拟合。
  3. 上下文窗口大小:影响捕捉到的语义关系。
  4. 预处理:分词、标准化和处理罕见词会影响嵌入质量。
  5. 预训练 vs. 从头开始训练:使用预训练的嵌入通常可以提高有限数据的性能。

内存需求

词汇量大小嵌入维度所需内存
10,000100约 4 MB
100,000300约 120 MB
1,000,000300约 1.2 GB

来源:img/seq2seq.svg

从词嵌入到序列模型

词嵌入是序列建模任务的基础组件。在 D2L.ai 架构中,它们作为更复杂的 NLP 模型的输入。

来源:img/seq2seq.svg

结论

词嵌入构成了 D2L.ai 存储库中现代 NLP 系统的基础。它们将离散的单词转换为捕获语义关系的连续向量空间,使下游 NLP 任务能够利用这些表示。该实现跨各种深度学习框架支持多种嵌入技术(Word2Vec、GloVe、FastText),这体现了该存储库对框架无关的教育内容的承诺。

有关基于这些词嵌入的更高级 NLP 架构,请参阅 注意力机制Transformer 架构