【问题标题】:number of units in the output layer of Hierarchical SoftmaxHierarchical Softmax 输出层的单元数
【发布时间】:2023-03-15 00:09:01
【问题描述】:

在 word2vec 中,有 3 层:输入层、隐藏层和输出层。

如果我们使用传统的 softmax 方法, 对于大小为 V 的语料库,输出层的单元数也将是 V(单热向量输入)。

如果我们使用 Hierarchical Softmax, 文章说只有 V-1 个节点(在霍夫曼二叉树中)。 是不是表示案例中输出层只有V-1个单元?

这是我正在阅读的参考资料: https://arxiv.org/pdf/1411.2738.pdf

非常感谢。

【问题讨论】:

    标签: neural-network word2vec hierarchical softmax


    【解决方案1】:

    在实践中,word2vec 分层-softmax 实现创建了一个输出层,其节点数量与词汇单词的数量完全相同。例如,请参阅原始 Google word2vec.c 行:

    https://github.com/tmikolov/word2vec/blob/20c129af10659f7c50e86e3be406df663beff438/word2vec.c#L356

    或者在gensim Python实现行中:

    https://github.com/RaRe-Technologies/gensim/blob/f3bf792ee1344ed17ad2836ab3c38b4210f59889/gensim/models/word2vec.py#L1171

    然后,您可以在CreateBinaryTree (C) 或create_binary_tree 函数的输出层中查看如何为单词分配单独的霍夫曼代码和节点(“点”)。

    【讨论】:

    • 但是在页面CreateBinaryTree中,节点数=V-1,与词汇单词数不一样?
    • 啊,是的,你是对的。因此,原始 word2vec.c 和 gensim 的实现都为 HS 输出权重分配了一个全长的词汇数组......但不要使用最后一个插槽。因此,您的问题的答案似乎是,“是的,有 V-1 个活动节点,但还有一个已分配且未使用”。您可能想尝试更改现有代码以减少分配一个,并查看是否有任何中断,以确认此解释。
    • 我同意你的看法。感谢您的大力帮助! :P
    猜你喜欢
    • 2017-05-15
    • 2020-07-07
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    相关资源
    最近更新 更多