首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用隐藏层的word2vec,而不是‘一热’,以减少重量在其他网?

使用隐藏层的word2vec,而不是‘一热’,以减少重量在其他网?
EN

Data Science用户
提问于 2018-03-07 21:22:01
回答 2查看 1.1K关注 0票数 1

我一直在阅读关于word2vec的文章,它能够将单词编码成向量表示。这些词的坐标(概率)与它们通常的上下文-邻居词聚在一起。

例如,如果我们在数据集中有10k个唯一的单词,我们将向网络中输入10000个特征。例如,该网络可以有300个隐神经元,每个神经元都具有线性激活函数。

网络的输出为10000个神经元,每个神经元都有一个softmax分类器。每个这样的“软最大输出”表示从我们的10k字典中选择合适单词的概率。

问题1:通过最后的软输出层,我能够从“语义分组”单词中获益。然而,它似乎太大了--它仍然有10000种概率。

我真的能用那300个神经元来形成我的其他网络吗?比如说,在我的LSTM里,等等?

那么我的LSTM的重量就不会占用那么大的磁盘空间了。然而,我需要将300维状态解码回我的10k维状态,这样我就可以查找它了。

问题2:...are实际上已经存在于隐藏层或输出层的“编码”向量?

参考文献:第一第二第三

EN

回答 2

Data Science用户

回答已采纳

发布于 2018-03-09 03:37:40

回答我自己帖子中的问题1:

我真的能用那300个神经元来形成我的其他网络吗?比如说,在我的LSTM里,等等?

是的,我可以,因为隐藏的结果(图片中的橙色)已经表示了实际的嵌入向量。它现在应该用于任何其他自定义网络(LSTM等),而不是单一热编码向量。如果有多个定制网络正在开发,使用这个橙色矢量确实会大大减少所需重量的数量。

注意,一个热向量和橙色层之间的连接用一个特殊的矩阵表示.

矩阵是特殊的,因为每个列(或行,取决于您喜欢的表示法)已经表示了这300个神经元中的这些预激活--这是对应的一个热向量的响应。所以你只需取一个列,把它当作整个橙色层,这是非常方便的。

这里有更多的信息:https://datascience.stackexchange.com/a/29161/43077

回答问题2:实际上,编码值已经存在于隐藏层(图片上橙色)的结果中。您可以在任何其他算法中使用它们。

只有在训练时才需要红色输出层。从InputVector到HiddenLayer的权重是您最终关心的

票数 1
EN

Data Science用户

发布于 2018-03-07 23:06:45

您是在问300维“中间层”是否已经学会将单词编码到像word2vec这样的嵌入中?

如果是这样,我会说不。一个热向量中没有指定两个单词之间的距离的东西。例如,猫和桌子的一个热矢量距离猫和狮子的距离是一样的。有了嵌入式,显然您希望第二个示例更紧密地结合在一起。

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/28778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档