我无法掌握如何从 LSTM 模型中输出词嵌入。我在输出上看到了许多使用 softmax 激活函数的示例,但为此我需要输出一个与词汇表一样长的热向量(这太长了)。那么,我应该在输出上使用线性激活函数来直接获取词嵌入(然后找到最接近的词)还是我在这里遗漏了什么?
当输出是词嵌入时,LSTM 的输出层应该如何?
人工智能
自然语言处理
长短期记忆
词嵌入
word2vec
2021-11-16 23:15:52
2个回答
实际上,LSTM 并不是用来获取 word2vec 的。实际上,word2vec 是使用 MLP(多层感知器)从词库中提取的。关于如何提取 word2wec 有一个很棒的教程:http: //mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/
在将单词表示为向量之后,您将文本输入到深度架构中的 LSTM,其中最后一层必须是 softmax 才能对文本进行分类。
在研究论文中,尚不清楚他们是如何做到这一点的。据我了解,您需要在 RNN 层之后添加一个密集层。这个密集层是你的词汇量的大小。根据我的经验,如果你有足够的数据,这甚至适用于大量词汇(对我来说是 30 000 - 40 000)。在这里,您不会尝试重建嵌入,而是重建当前单词的 one-hot 向量。然后,您可以使用交叉熵损失。最后一层将有很多参数。
您将看到几个直接在词嵌入输出上使用 MSE 损失的实现。就我个人而言,这种方法并没有成功,但如果其他人可以分享他们的经验,那就太好了。