Min*_*ker 6 machine-learning neural-network
最终编辑:清理问题并接受runDOSrun的答案。IVlad的性能同样好,user3760780的性能也非常有用。我建议阅读所有这三个以及评论。TLDR的答案是,可能性1或多或少是正确的,但我的措辞很差。
神经网络中输入层由什么组成?该层做什么?
神经网络在这里是一个类似的问题:输入层是否包含神经元?但是那里的答案并没有消除我的困惑。
就像上面问题中的发布者一样,我对Internet关于基本前馈网络的输入层不得不说的许多矛盾说法感到困惑。
我将跳过指向矛盾的教程和文章的链接,并列出我可以看到的三种可能性。哪一个(如果有)是正确的?
谢谢!
编辑1:这是一张图片和一个示例,进一步说明。

在您的 3 个描述中,第一个最适合:
- 输入层将数据直接传递到第一个隐藏层,在那里数据乘以第一个隐藏层的权重。
标准多层感知器的输入层由单元组成(您可以称它们为输入神经元,但我更喜欢使用术语单元,因为您希望神经元进行一些计算,而输入层不是这种情况)您分配一个值(您的输入数据实例的一部分,或机器学习术语中单个实例的特征的值),并且它们只是将该值提供给第一个隐藏层中的每个神经元,从而导致您的第一种情况描绘在你的形象中。
为了更准确,我将其重新表述为:
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)
在我看来,权重也进入其中并不完全正确,因为它的权重是它自己的,但我想这种区别并不是很重要;它当然不会影响结果。
你必须记住,这都是从概念上讲的。在正确的实现中,您根本不会有任何实际层,只有一些矩阵乘法。但他们将实施相同的概念。在尝试理解某事时,您应该从参考基本概念开始。
- 输入层在传递数据之前先通过激活函数传递数据。然后将数据乘以第一个隐藏层的权重。
这是不正确的,输入层只返回分配给它的一些值给下一层中的每个神经元。
有没有找到的参考资料?我很确定这样做不是标准做法。
- 输入层有自己的权重,可以乘以传入的数据。输入层然后在传递数据之前通过激活函数传递数据。然后将数据乘以第一个隐藏层的权重。
同样,情况并非如此。它没有权重,也没有激活函数。
由于我在您链接的线程中给出了答案,因此我也会尽力解决您的困惑。
我注意到的第一件事是您似乎对权重属于哪一层感到困惑。答案不是一个而是两个。图像中的权重是从输入到隐藏层的权重,应如此引用以避免在多个层中产生歧义。再次,不同的约定。但是坚持这个,因为它最好地反映了官方数学符号(权重被引用为 w_ij 表示权重从 i 到 j(有时 j 到 i 取决于作者))。
首先让我说自然语言和图形总是模棱两可,处理问题的最佳方法是数学。它简单明了......尽管我们大多数人可能与它有不好的关系:)
话虽如此,让我们从图像开始(这是一个单层感知器,假设下一层实际上是一个隐藏层,它没有区别):
这个图像对于初学者来说更清晰,因为它将激活单个神经元的过程分解为所有组件:
输入和权重(在 inp 和 hid 层之间)被组合和求和。这是线性组合
net_j 是下一个隐藏层中神经元 j 的输入。
这个网络输入被输入到激活函数 f 中,这样隐藏层中每个隐藏神经元的激活是
(这里描述为 o_j,我将其称为 h_j,因为我们假装它位于隐藏层中)。
所以得到每个隐藏神经元 h_j 值的整个过程可以用简单的公式来总结:
这是对所有神经元 h_j 完成的,然后在下一层重复。
所以实际上你的选项都不是 100% 正确或完整的。1.) 措辞正确但不完整。
编辑:您图像中的正确可能性是#1:
(如前所述,权重只有 2 个索引,单元有 1 个索引。w_ij 是从单元 x_i 到 h_j 的权重)
| 归档时间: |
|
| 查看次数: |
8123 次 |
| 最近记录: |