神经网络:输入层由什么组成?

Min*_*ker 6 machine-learning neural-network

最终编辑:清理问题并接受runDOSrun的答案。IVlad的性能同样好,user3760780的性能也非常有用。我建议阅读所有这三个以及评论。TLDR的答案是,可能性1或多或少是正确的,但我的措辞很差。

神经网络中输入层由什么组成?该层做什么?

神经网络在这里是一个类似的问题:输入层是否包含神经元?但是那里的答案并没有消除我的困惑。

就像上面问题中的发布者一样,我对Internet关于基本前馈网络的输入层不得不说的许多矛盾说法感到困惑。

我将跳过指向矛盾的教程和文章的链接,并列出我可以看到的三种可能性。哪一个(如果有)是正确的?

  1. 输入层将数据直接传递到第一隐藏层,在此将数据乘以第一隐藏层的权重。
  2. 输入层在传递数据之前先通过激活函数传递数据。然后将数据乘以第一个隐藏层的权重。
  3. 输入层具有自己的权重,可以乘以输入数据。然后,输入层将数据传递给激活函数,然后再传递给激活层。然后将数据乘以第一个隐藏层的权重。

谢谢!

编辑1:这是一张图片和一个示例,进一步说明。

IVl*_*lad 6

在您的 3 个描述中,第一个最适合:

  1. 输入层将数据直接传递到第一个隐藏层,在那里数据乘以第一个隐藏层的权重。

标准多层感知器的输入层由单元组成(您可以称它们为输入神经元,但我更喜欢使用术语单元,因为您希望神经元进行一些计算,而输入层不是这种情况)您分配一个值(您的输入数据实例的一部分,或机器学习术语中单个实例的特征的值),并且它们只是将该值提供给第一个隐藏层中的每个神经元,从而导致您的第一种情况描绘在你的形象中。

为了更准确,我将其重新表述为:

  • 输入层的每个单元,按照从上到下的顺序,将其分配的值传递给第一个隐藏层的每个神经元。然后,每个隐藏层神经元的每个值(乘以x1, x2, ..., xm)与其权重向量(w1, w2, ..., wm),求和乘积值(x1*w1 + x2*w2 + ... + xm*wm),应用其激活函数将此总和(物流,双曲正切,恒等函数),并返回由激活计算的值作用到下一层。

因此,对于您的示例,隐藏层中最顶层的神经元将接收输入:

.5, .6
Run Code Online (Sandbox Code Playgroud)

从输入层,它会计算并返回:

g(.4 * .5 + .3 * .6)
Run Code Online (Sandbox Code Playgroud)

g它的激活函数在哪里,可以是任何东西:

g(x) = x # identity function, like in your picture
g(x) = 1 / (1 + exp(-x)) # logistic sigmoid
Run Code Online (Sandbox Code Playgroud)

在我看来,权重也进入其中并不完全正确,因为它的权重是它自己的,但我想这种区别并不是很重要;它当然不会影响结果。

你必须记住,这都是从概念上讲的。在正确的实现中,您根本不会有任何实际层,只有一些矩阵乘法。但他们将实施相同的概念。在尝试理解某事时,您应该从参考基本概念开始。

  1. 输入层在传递数据之前先通过激活函数传递数据。然后将数据乘以第一个隐藏层的权重。

这是不正确的,输入层只返回分配给它的一些值给下一层中的每个神经元。

有没有找到的参考资料?我很确定这样做不是标准做法。

  1. 输入层有自己的权重,可以乘以传入的数据。输入层然后在传递数据之前通过激活函数传递数据。然后将数据乘以第一个隐藏层的权重。

同样,情况并非如此。它没有权重,也没有激活函数。


run*_*run 5

由于我在您链接的线程中给出了答案,因此我也会尽力解决您的困惑。

我注意到的第一件事是您似乎对权重属于哪一层感到困惑。答案不是一个而是两个。图像中的权重是从输入到隐藏层权重,应如此引用以避免在多个层中产生歧义。再次,不同的约定。但是坚持这个,因为它最好地反映了官方数学符号(权重被引用为 w_ij 表示权重从 i 到 j(有时 j 到 i 取决于作者))。

首先让我说自然语言和图形总是模棱两可,处理问题的最佳方法是数学。它简单明了......尽管我们大多数人可能与它有不好的关系:)

话虽如此,让我们从图像开始(这是一个单层感知器,假设下一层实际上是一个隐藏层,它没有区别):

在此处输入图片说明

这个图像对于初学者来说更清晰,因为它将激活单个神经元的过程分解为所有组件:

  • 输入和权重(在 inp 和 hid 层之间)被组合和求和。这是线性组合在此处输入图片说明 net_j 是下一个隐藏层中神经元 j 的输入。

  • 这个网络输入被输入到激活函数 f 中,这样隐藏层中每个隐藏神经元的激活是 在此处输入图片说明 (这里描述为 o_j,我将其称为 h_j,因为我们假装它位于隐藏层中)。

所以得到每个隐藏神经元 h_j 值的整个过程可以用简单的公式来总结:

在此处输入图片说明

  • 每个输入都乘以它与这个神经元 h_j 的连接。
  • 所有这些重量输入产品都会被求和。
  • 这被输入到激活函数 f 中。
  • 结果是神经元 h_j 的值。

这是对所有神经元 h_j 完成的,然后在下一层重复。

所以实际上你的选项都不是 100% 正确或完整的。1.) 措辞正确但不完整。

编辑:您图像中的正确可能性是#1:

在此处输入图片说明

(如前所述,权重只有 2 个索引,单元有 1 个索引。w_ij 是从单元 x_i 到 h_j 的权重)