也就是说,有没有论文描述了keras embedding layer的方法?这些方法(和其他方法,如 Glove 等)之间是否有比较?
keras嵌入层和word2vec有什么区别?
嵌入(通常,不仅在 Keras 中)是用于学习分类数据的向量表示的方法。它们最常用于处理文本数据。Word2vec 和 GloVe 是学习词嵌入的两个流行框架。嵌入的作用是,它们只是学习将one-hot 编码的分类变量映射到比输入向量维数更小的浮点数向量。例如,代表大小为 50 000 的词汇表中的单词的 one-hot 向量被映射到大小为 100 的实值向量。然后,嵌入向量用于您想要将其用作特征的任何内容。
一热向量实值向量(网络的其他层)
与“通常”学习的嵌入层相比,不同之处在于 Word2vec 的训练方式。Word2vec被训练来预测单词是否属于上下文,给定其他单词,例如判断“牛奶”是否是一个可能的单词,给定“猫在喝……”句子乞求。通过这样做,我们希望 Word2vec 能够学习一些关于该语言的知识,就像引用“你应该知道它所拥有的公司的一个词”中的那样约翰·鲁珀特·弗斯 (John Rupert Firth)。使用上面的例子,Word2vec 了解到“cat”很可能与“milk”一起出现,但也可能与“house”或“pet”一起出现,因此它在某种程度上类似于“dog”。因此,由 Word2vec 或类似模型创建的嵌入学习使用相似向量来表示具有相似含义的单词。
另一方面,通过将嵌入学习为神经网络的一层,可以训练网络来预测您想要的任何内容。例如,您可以训练您的网络来预测文本的情绪。在这种情况下,嵌入将学习与该特定问题相关的特征。作为副作用,他们还可以学习有关该语言的一些通用知识,但网络并未针对此类任务进行优化。使用“猫”的例子,为情感分析训练的嵌入可能会发现“猫”和“狗”是相似的,因为人们经常对他们的宠物说好话。
实际上,您可以使用预训练的 Word2vec 嵌入作为任何神经网络(或其他算法)的特征。如果您的数据很小,它们可以为您提供优势,因为预训练的嵌入是在大量文本上训练的。另一方面,有一些例子表明,从数据中学习嵌入并针对特定问题进行优化可能会更有效(Qi 等人,2018 年)。
Qi, Y., Sachan, DS, Felix, M., Padmanabhan, SJ, & Neubig, G. (2018)。预训练的词嵌入何时以及为何对神经机器翻译有用?arXiv 预印本 arXiv:1804.06323。
对于 Keras 嵌入层,您正在使用监督学习。我的猜测是嵌入在这里学习的自变量将直接映射到因变量。
然而,word2vec 或 glove 是无监督学习问题。在这里,学习的嵌入取决于您提供给模型的数据。
http://colah.github.io/posts/2014-07-NLP-RNNs-Representations -> 这篇博文清楚地解释了嵌入层是如何在 Keras 嵌入层中训练的。希望这可以帮助。Word2Vec 是使用特定架构的预训练嵌入模型。
嵌入层和 Word2Vec 可以类似于 CNN 层和 Imagenet 预训练模型。