词嵌入

Glossary of Deep Learning: Word Embedding | by Jaron Collis | Deeper Learning | Medium

词嵌入在英语和德语中。词语的语义对等是通过上下文推断来的,所以类似的词意味着相同的位置。这是因为词相关的语义是一致的,无论什么语言。


介绍

词嵌入的基本思想是将文本调整为数字。

这个改变是必须的因为许多机器学习算法(包括深度网络)需要他们输入一个连续值的向量。它们不接受字符串或者纯文本。

所以自然语言模型技术喜欢词嵌入以映射单词或者短语从此表到对应的数字向量中。不仅可以接受学习算法的处理,向量的表示有俩个重要和高级的特征

  • 维度减小:这是更有效的一种表现
  • 上下文相近: 这是一个更具表现能力的体现

如果你熟悉词袋方法,你会知道结果很大,非常稀疏的独热编码向量,其中向量的维度代表着每个此表的大小。词嵌入是目的是使用更低的维度空间创建对应的向量,这也被叫做词向量。

词向量被用作意义分析,以提取文本的意义以能够让自然语言理解。让语言模型能够预测文本的含义,它需要知道上下文中相似的单词。例如,我们倾向于在种植、采摘、实用和榨汁的句子例找到水果词(比如苹果橙子),但是不会希望这些相同的概念与飞机接近。

由词嵌入创建的向量保持了相似性,所以哪些经常出现在附近的单词也会在向量处靠近。为了说明这为什么有用,请查看The amazing power of word vectors 或者 Distributed Word Vectors 在Kaggole上的简洁。

什么是词嵌入的答案是:从文本语料库中构建的低位向量表示,保存了上下文相似的单词。

介绍word2vec

现在我们知道了它是什么,它怎么工作?如果你之前遇到过降维,你会知道这通常使用无监督学习算法实现。这是一个使用了最著名的产生词嵌入的方法:word2cec

由俩个方法实现word2vec,CBOW(Continuous Bag-Of-Words连续磁带模型)和 Skip-gram

在CBOW中我们有一个环绕着一些目标词的窗口,然后考虑它包裹的单词(在上下文中)。我们将这些单词作为输入进入到我们的网络中然后使用它尝试预测目标词。

Skip-gram完全相反,我们有目标词,然后我们尝试预测周围的单词,即预测围绕一个词的上下文。

输入的词作为独热编码的向量传入。这将进入线性单元的隐藏层,然后加入softmax函数进行预测。这里的方法是训练隐藏层权重矩阵以找到我们词的有效的代表。这个权重矩阵通常被叫做embedding矩阵,可以作为查询表进行查询。

这里展示了词嵌入是怎么工作的wevi (ronxin.github.io)

embedding矩阵由的单词数量大小是隐藏层中神经元数量决定的。如果有1000个单词和300个神经元,举证的大小是1000x300(因为对我们的输入使用了独热编码)一旦计算完成,向量花费O(1)的查找对应的结果矩阵的行。

嵌入的大小是隐藏层的大小,也就是表示单词之间的相似性的特征的数量,往往比词汇表中唯一单词的数量要小很多,(十万与百万)。嵌入大小是一种权衡:更多的特征意味着更多的计算复杂度,运行时间也会更长但也意味着更合适的表示与潜在更好的模型。


单词嵌入的一个有趣的特点是,因为它们是单词之间上下文相似性的数值表示,所以它们可以被算术地操纵。最典型的例子就是从“男人”中减去“国王”的概念,加上“女人”的概念。答案将取决于你的训练集,但你可能会看到最重要的结果之一是“Queen”这个词。这篇很棒的文章解释了其中的原因。p.migdal.pl/2017/01/06/king-man-woman-queen-why.html

Last modification:August 29, 2024
如果觉得我的文章对你有用,请随意赞赏