我一直在阅读关于word2vec的文章,它能够将单词编码成向量表示。这些词的坐标(概率)与它们通常的上下文-邻居词聚在一起。
例如,如果我们在数据集中有10k个唯一的单词,我们将向网络中输入10000个特征。例如,该网络可以有300个隐神经元,每个神经元都具有线性激活函数。
网络的输出为10000个神经元,每个神经元都有一个softmax分类器。每个这样的“软最大输出”表示从我们的10k字典中选择合适单词的概率。

问题1:通过最后的软输出层,我能够从“语义分组”单词中获益。然而,它似乎太大了--它仍然有10000种概率。
我真的能用那300个神经元来形成我的其他网络吗?比如说,在我的LSTM里,等等?
那么我的LSTM的重量就不会占用那么大的磁盘空间了。然而,我需要将300维状态解码回我的10k维状态,这样我就可以查找它了。
问题2:...are实际上已经存在于隐藏层或输出层的“编码”向量?
发布于 2018-03-09 03:37:40
我真的能用那300个神经元来形成我的其他网络吗?比如说,在我的LSTM里,等等?
是的,我可以,因为隐藏的结果(图片中的橙色)已经表示了实际的嵌入向量。它现在应该用于任何其他自定义网络(LSTM等),而不是单一热编码向量。如果有多个定制网络正在开发,使用这个橙色矢量确实会大大减少所需重量的数量。
注意,一个热向量和橙色层之间的连接用一个特殊的矩阵表示.
矩阵是特殊的,因为每个列(或行,取决于您喜欢的表示法)已经表示了这300个神经元中的这些预激活--这是对应的一个热向量的响应。所以你只需取一个列,把它当作整个橙色层,这是非常方便的。
这里有更多的信息:https://datascience.stackexchange.com/a/29161/43077
回答问题2:实际上,编码值已经存在于隐藏层(图片上橙色)的结果中。您可以在任何其他算法中使用它们。
只有在训练时才需要红色输出层。从InputVector到HiddenLayer的权重是您最终关心的
发布于 2018-03-07 23:06:45
您是在问300维“中间层”是否已经学会将单词编码到像word2vec这样的嵌入中?
如果是这样,我会说不。一个热向量中没有指定两个单词之间的距离的东西。例如,猫和桌子的一个热矢量距离猫和狮子的距离是一样的。有了嵌入式,显然您希望第二个示例更紧密地结合在一起。
https://datascience.stackexchange.com/questions/28778
复制相似问题