tensorflow 中的词嵌入(无 pre_trained)

word embeddings in tensorflow (no pre_trained)

我是 tensorflow 的新手,正在尝试查看不同的 tensorflow 示例以更好地理解它。

现在我已经看到许多 tensorflow 示例中都使用了这一行,而没有提及用于获取单词嵌入的任何特定嵌入算法。

embeddings = tf.Variable(tf.random_uniform((vocab_size, embed_dim), -1, 1))
embed = tf.nn.embedding_lookup(embeddings, input_data)

这里有一些例子:

我知道第一行将通过随机分布初始化词的嵌入,但嵌入向量会在模型中进一步训练以提供更准确的词表示(并将初始随机值更改为更准确数字),如果是的话,当没有提到任何明显的嵌入方法时,实际使用的方法是什么,例如在代码中使用 word2vec 和 glove(或者在代码中提供这些方法的 pre_tained 向量而不是随机数)开始)?

是的,这些嵌入像 weightsbiases 一样经过进一步训练,否则用一些随机值表示单词将没有任何意义。这些嵌入会在训练时更新,就像您更新 weight 矩阵一样,也就是说,通过使用梯度下降或 Adam 优化器等优化方法

当我们使用像 word2vec 这样的预训练嵌入时,它们已经在非常大的数据集上进行了训练,并且已经非常准确地表示了单词,因此,它们不需要任何进一步的训练。如果您要问这些是如何训练的,有两种主要的训练算法可用于从文本中学习嵌入;它们是连续词袋 (CBOW) 和 Skip Grams。在这里完全解释它们是不可能的,但我建议从 Google 那里寻求帮助。 This 文章可能会让您入门。