【问题标题】:In CBOW model, do we need to take Average at Hidden layer?在 CBOW 模型中,我们需要在隐藏层取平均值吗?
【发布时间】:2020-09-24 20:31:18
【问题描述】:

我搜索并阅读了一些关于 CBOW 的文章。但似乎这些文章之间有区别。

据我了解:

  • 输入是一个批处理向量。我们将把它提供给隐藏层。这样我们就可以在隐藏层得到另一个batch vector H
  • article (part 2.2.1) 中,他们说我们不会在隐藏层使用任何激活函数,但我们将批向量 H 取平均值以获得单个矢量(不再是一批)。然后我们将这个平均向量输入到输出层并对其应用 Softmax。

  • 但是,在这个Coursera's video 中,他们对批处理向量 H 取平均值。他们只是将此批处理向量 H 提供给输出层,并将 Softmax 应用于批处理输出向量。然后在上面计算成本函数。
  • 而且,在Coursera's video 中,他们说我们可以在隐藏层使用 RelU 作为激活函数。这是一种新方法吗?因为看了很多文章,都说Hidden层没有Activation功能。

你能帮我回答一下吗?

【问题讨论】:

    标签: machine-learning nlp word2vec word-embedding


    【解决方案1】:

    在实际实现中(您可以查看其源代码),上下文词向量集在作为“输入”输入到神经网络之前被平均在一起。

    然后,对输入的任何反向传播调整也将应用于对该平均值有贡献的所有向量。

    (例如,在与 Google 的原始 word2vec 论文一起发布的原始 word2vec.c 中,您可以看到向量计数为 neu1,然后通过除以上下文窗口计数 cw 进行平均,位于:

    https://github.com/tmikolov/word2vec/blob/master/word2vec.c#L444-L448 )

    【讨论】:

    • 非常感谢。我感觉清晰了很多。所以我可以认为,在 Coursera 的视频中,他们似乎使用了一些新方法?
    • 我还没有查看 Coursera 视频,但是您对(普通)softmax 的引用让我认为他们提供了一个高级的、近似的、理论的观点来说明 word2vec 算法的动机。实际的实现倾向于提供分层softmax或负采样而不是字面普通的softmax作为预测/反向传播的方法 - 以提高效率。 (普通的 softmax 会起作用,但那些替代的“稀疏”训练方法在实践中要高效得多。)同样,如果您想确切地了解真正的代码在做什么,我会关注源代码。
    猜你喜欢
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    相关资源
    最近更新 更多