了解神经网络图层,节点和点积

时间:2016-11-04 00:01:57

标签: java neural-network deep-learning

我通读了这个页面:http://neuralnetworksanddeeplearning.com/chap1.html以更好地理解神经网络的工作原理。我想用Java创建一个没有反向传播或训练的简单前馈网络。

我所模糊的是每个"神经元"所涉及的数学。网络中的一层。说我有三层。第一层采用大小为100的输入向量。这是否意味着我的第一层将有100个神经元?这是否也意味着每个神经元的输入将是所有100个输入乘以权重的总和?那是和神经元激活功能的输入吗?

在本章中提到神经元/感知器的所有输入的总和可以重新表示为输入(x)和权重(w)的点积。我可以将它们视为两个单独的向量,它们的点积给我x1w1 x2w2 x3w3 ..等等,但是x1w1 + x2w2 + ..的总和如何仍然等于点积?

最后,如果一个层的输入为100且输出为1000,那是否意味着该层实际上有1000个神经元,每个神经元需要100个输入?因此,每个神经元输出1个值,从而产生1000个输出?

我提前道歉,如果这些问题完全偏离或微不足道,我已经在线阅读了一些文档,这是我迄今为止的理解,但是如果不问一个真正理解它的人就很难验证。如果您有其他资源或视频可以提供帮助,我们非常感谢。

1 个答案:

答案 0 :(得分:1)

这是我在stackOverflow中的第一个答案,所以请轻松一点。

如果我正确理解你的问题,你就会想知道人工神经元背后的数学运算方式。神经元由以下列表中显示的5个组件组成。 (下标i表示第i个输入或权重。)

  1. 一组输入,xi。
  2. 一组重量,wi。
  3. 门槛,你。
  4. 激活功能,f。
  5. 单个神经元输出,y。
  6. 人工神经元具有相当简单的结构。

    使用单位步骤激活功能,您可以确定将产生以下分类的一组权重(和阈值): Click to view classification

    查看数字4.激活功能f。身份功能最简单,可以发生许多不同的功能。

    神经元输出Y是将激活函数应用于输入加权和的结果,而不是阈值即可。

    此值可以是离散的或实际的,具体取决于所使用的激活功能。

    Here's Y的输出,它包含特定的函数F.

    一旦计算出输出,就可以将其传递给另一个神经元(或一组神经元)或由外部环境采样。神经元输出的解释取决于所考虑的问题

    @Seephore

    原则上,可以在人工神经网络中使用的隐藏层的数量没有限制。可以使用"堆叠"来训练这样的网络。或深度学习文献中的其他技术。是的,你可以有1000层,但我不知道你是否会获得很多好处:在深度学习中我更常见于1-20个隐藏层之间,而不是1000个隐藏层。在实践中,层数是基于实际问题,例如,什么将导致合理的训练时间和没有过度拟合的良好准确性。

    你在问什么:   我会假设你想说100输入和1000输出? 当输入接收加权值时,其输出将其输出到下一层中的所有其他节点(神经元),但该值仍来自给定节点。

    有许多"希望洗"为Java预订,但如果你真的想进入它,请阅读This