Keras Embedding 层如何训练嵌入层

数据挖掘 Python 喀拉斯 词嵌入
2021-10-05 09:18:01

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

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

3个回答

两个答案都是错误的。

嵌入层是一个可训练层,包含 1 个嵌入矩阵,它是二维的,在一个轴上是分类输入可以采用的唯一值的数量(例如,在小写字母的情况下为 26),在另一个轴上是维度您的嵌入空间。嵌入层的作用是以一种对手头任务有用的方式将一个类别映射到密集空间,至少在监督任务中是这样。这通常意味着嵌入向量中存在一些语义值,并且在该空间中接近的类别对于任务的意义将接近。

从某种意义上说,这与单热编码有关,它将离散类别映射到矢量特征表示中。您仍然可以为神经网络执行此操作,但如果您在密集层中使用它,您将创建大量的权重,其中大多数不经常使用。在它们之间放置一个嵌入层可以减少可学习权重的数量,然后再将它们与输入的其他部分进行交互。另一个优点是嵌入矩阵基本上可以用作查找表,因此您可以真正使用类别索引的稀疏性来查找嵌入的当前值,并且在应用反向传播时仅调整权重矩阵的该条目.

这篇博文清楚地解释了嵌入层是如何在 Keras 嵌入层中训练的。希望这可以帮助。

据我了解,它是一个简单的自动编码器,这意味着它所做的只是尝试将输入映射到另一个空间,所以没有花哨的训练,只是一些简单的前馈和反向传播。这就是为什么训练速度相当快的原因。

如果你想使用预训练的嵌入,你可以这样做

嵌入层使用嵌入矩阵来映射数据,并且在训练期间永远不会更新Keras 嵌入层中没有可训练的参数。您可以参考Keras 嵌入层文档进行详细了解。