Keras Embedding 层如何训练嵌入层

机器算法验证 深度学习 喀拉斯 词嵌入
2022-01-24 18:56:22

Keras Embedding 层中的嵌入层是如何训练的?(比如说使用 tensorflow 后端,意思是它类似于 word2vec、glove 或 fasttext)

假设我们不使用预训练嵌入。

2个回答

Keras 中的嵌入层的训练与网络架构中的任何其他层一样:通过使用选定的优化方法对它们进行调整以最小化损失函数。与其他层的主要区别在于它们的输出不是输入的数学函数。相反,该层的输入用于索引具有嵌入向量 [1] 的表。但是,底层的自动微分引擎优化这些向量以最小化损失函数是没有问题的……

因此,您不能说 Keras 中的嵌入层与 word2vec [2] 的作用相同。请记住,word2vec 指的是一个非常具体的网络设置,它试图学习一个捕获单词语义的嵌入。使用 Keras 的嵌入层,您只是试图最小化损失函数,因此,例如,如果您正在处理情感分类问题,学习的嵌入可能不会捕获完整的单词语义,而只会捕获它们的情感极性......

例如,下图取自 [3] 显示了三个句子的嵌入,其中包含从头开始训练的 Keras 嵌入层,作为监督网络的一部分,该网络旨在检测点击诱饵标题(左)和预训练的word2vec嵌入(右)。如您所见,word2vec嵌入反映了短语 b) 和 c) 之间的语义相似性。相反,Keras 的 Embedding 层生成的嵌入可能对分类有用,但不能捕捉 b) 和 c) 的语义相似性。

在此处输入图像描述

这解释了为什么当您的训练样本数量有限时,使用word2vec权重初始化嵌入层可能是个好主意,因此至少您的模型认识到“阿尔卑斯山”和“喜马拉雅山”是相似的东西,即使它们不两者都不会出现在训练数据集的句子中。

[1] Keras 'Embedding' 层是如何工作的?

[2] https://www.tensorflow.org/tutorials/word2vec

[3] https://link.springer.com/article/10.1007/s10489-017-1109-7

注意:实际上,图像显示了嵌入层之后的层的激活,但就本示例而言,这无关紧要...查看 [3] 中的更多详细信息

嵌入层只是从离散且稀疏的 1-hot-vector 到连续且密集的潜在空间的投影。它是 (n,m) 的矩阵,其中 n 是您的词汇量大小,n 是您想要的潜在空间维度。只有在实践中,实际上不需要进行矩阵乘法,而是可以通过使用索引来节省计算量。所以在实践中,它是将正整数(对应于单词的索引)映射到固定大小的密集向量(嵌入向量)的层。

您可以训练它使用 Skip-Gram 或 CBOW 创建 Word2Vec 嵌入。或者,您可以针对您的特定问题对其进行训练,以获得适合您手头特定任务的嵌入。您还可以加载预训练的嵌入(如 Word2Vec、GloVe 等),然后继续针对您的特定问题进行训练(迁移学习的一种形式)。

其它你可能感兴趣的问题