将矢量与单词相关联的另一种流行且有效的方法是使用密集的“单词向量”,也称为“单词嵌入”。 虽然通过单热编码获得的向量是二进制的,稀疏的(主要由零组成)和非常高维的(与词汇表中的单词数相同的维度),“单词嵌入”是低维浮点向量(即 “密集”向量,与稀疏向量相反)。 与通过one-hot编码获得的单词向量不同,单词嵌入是从数据中学习的。当处理非常大的词汇表时,通常会看到256维,512维或1024维的单词嵌入。 另一方面,one-hot编码字通常导致20,000维或更高的向量(在这种情况下捕获20,000标记的词汇)。 因此,单词嵌入将更多信息打包到更少的维度中。
有两种方法可以获得嵌入词:
预训练的单词嵌入
学习单词嵌入与所关心的主要任务(例如文档分类或情绪预测)联系起来。在此设置中,将从随机单词向量开始,然后通过与学习神经网络权重相同的方式学习单词向量。加载到模型中使用与所尝试解决的机器学习任务不同的机器学习任务预先计算的单词嵌入。这些被称为“预训练的单词嵌入”。
“嵌入”图层学习单词嵌入
将密集向量与单词相关联的最简单方法是随机选择向量。这种方法的问题在于得到的嵌入空间没有结构:例如,单词“准确”和“精确”可能最终会有完全不同的嵌入,即使它们在大多数句子中是可互换的。深度神经网络很难理解这种嘈杂的非结构化嵌入空间。