嵌入
在基于 BoW 或 TF/IDF 训练分类器时,我们使用的是长度为 vocabsize 的高维词袋向量,并且我们显式地将低维位置表示向量转换为稀疏的独热表示。然而,这种独热表示并不节省内存。此外,每个…
课程内容
嵌入
课前测验
在基于 BoW 或 TF/IDF 训练分类器时,我们使用的是长度为 vocab_size 的高维词袋向量,并且我们显式地将低维位置表示向量转换为稀疏的独热表示。然而,这种独热表示并不节省内存。此外,每个单词都被独立对待,即独热编码的向量无法表达单词之间的语义相似性。
嵌入的想法是用低维密集向量来表示单词,这些向量能够以某种方式反映单词的语义含义。稍后我们会讨论如何构建有意义的词嵌入,但现在我们只需将嵌入理解为一种降低单词向量维度的方法。
嵌入层会将一个单词作为输入,并生成指定 embedding_size 的输出向量。从某种意义上说,它与 Linear 层非常相似,但它不需要独热编码向量,而是可以直接接受单词编号作为输入,从而避免创建大型独热编码向量。
通过在分类器网络中使用嵌入层作为第一层,我们可以从词袋模型切换到 嵌入袋 模型。在嵌入袋模型中,我们首先将文本中的每个单词转换为对应的嵌入,然后对所有这些嵌入计算某种聚合函数,例如 sum、average 或 max。

图片由作者提供
✍️ 练习:嵌入
通过以下笔记本继续学习:
语义嵌入:Word2Vec
虽然嵌入层可以学习将单词映射到向量表示,但这种表示不一定具有很强的语义意义。如果我们能学习一种向量表示,使得相似单词或同义词在某种向量距离(例如欧几里得距离)上彼此接近,那就更好了。
为此,我们需要以特定方式在大量文本上预训练嵌入模型。一种训练语义嵌入的方法叫做 Word2Vec。它基于两种主要架构来生成单词的分布式表示:
- 连续词袋 (CBoW) —— 在这种架构中,我们训练模型根据上下文预测单词。给定 ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$,模型的目标是根据 $(W_{-2},W_{-1},W_1,W_2)$ 预测 $W_0$。
