我通读了这个页面:http://neuralnetworksanddeeplearning.com/chap1.html以更好地理解神经网络的工作原理。我想用Java创建一个没有反向传播或训练的简单前馈网络。
我所模糊的是每个"神经元"所涉及的数学。网络中的一层。说我有三层。第一层采用大小为100的输入向量。这是否意味着我的第一层将有100个神经元?这是否也意味着每个神经元的输入将是所有100个输入乘以权重的总和?那是和神经元激活功能的输入吗?
在本章中提到神经元/感知器的所有输入的总和可以重新表示为输入(x)和权重(w)的点积。我可以将它们视为两个单独的向量,它们的点积给我x1w1 x2w2 x3w3 ..等等,但是x1w1 + x2w2 + ..的总和如何仍然等于点积?
最后,如果一个层的输入为100且输出为1000,那是否意味着该层实际上有1000个神经元,每个神经元需要100个输入?因此,每个神经元输出1个值,从而产生1000个输出?
我提前道歉,如果这些问题完全偏离或微不足道,我已经在线阅读了一些文档,这是我迄今为止的理解,但是如果不问一个真正理解它的人就很难验证。如果您有其他资源或视频可以提供帮助,我们非常感谢。
答案 0 :(得分:1)
这是我在stackOverflow中的第一个答案,所以请轻松一点。
如果我正确理解你的问题,你就会想知道人工神经元背后的数学运算方式。神经元由以下列表中显示的5个组件组成。 (下标i表示第i个输入或权重。)
人工神经元具有相当简单的结构。
使用单位步骤激活功能,您可以确定将产生以下分类的一组权重(和阈值): Click to view classification
查看数字4.激活功能f。身份功能最简单,可以发生许多不同的功能。
神经元输出Y是将激活函数应用于输入的加权和的结果,而不是阈值即可。
此值可以是离散的或实际的,具体取决于所使用的激活功能。
Here's Y的输出,它包含特定的函数F.
一旦计算出输出,就可以将其传递给另一个神经元(或一组神经元)或由外部环境采样。神经元输出的解释取决于所考虑的问题
@Seephore
原则上,可以在人工神经网络中使用的隐藏层的数量没有限制。可以使用"堆叠"来训练这样的网络。或深度学习文献中的其他技术。是的,你可以有1000层,但我不知道你是否会获得很多好处:在深度学习中我更常见于1-20个隐藏层之间,而不是1000个隐藏层。在实践中,层数是基于实际问题,例如,什么将导致合理的训练时间和没有过度拟合的良好准确性。
你在问什么: 我会假设你想说100输入和1000输出? 当输入接收加权值时,其输出将其输出到下一层中的所有其他节点(神经元),但该值仍来自给定节点。
有许多"希望洗"为Java预订,但如果你真的想进入它,请阅读This