在CBOW模型中,我们是否需要在“隐藏层”取平均值?

问题描述

搜索并阅读了一些有关CBOW的文章。但是这些文章之间似乎有所不同。

据我了解:

  • 输入是批处理向量。然后我们将其提供给Hidden层。这样我们将在隐藏层获得另一个批处理向量H
  • article (part 2.2.1)中,他们说我们不会在隐藏层使用任何激活函数,但是我们会批处理向量H 取平均值一个向量(不再是一个批处理)。然后,我们将此平均矢量输入到“输出”层,并在其上应用softmax

enter image description here

  • 但是,在此Coursera's video中,他们不要取批次矢量H的平均值。他们只是将此批次矢量H馈送到输出层,并将softmax应用于批次输出矢量。然后在其上计算Cost函数
  • 而且,在Coursera's video中,他们说我们可以将RelU用作隐藏层的激活功能。这是新方法吗?因为我读了很多文章,但是他们总是说隐藏层没有激活功能

您能帮我回答吗?

解决方法

在实际的实现方式中-您可以查看其源代码-在 作为输入作为神经网络的输入之前,将上下文词向量集平均在一起。

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

(例如,在与Google的原始word2vec论文一起发布的原始word2vec.c中,您可以看到将向量分类为neu1,然后通过除以上下文窗口计数{{1} },位于:

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