0

我尝试编写一个神经网络类,但我不完全理解它的某些方面。我有两个关于folling设计的问题。神经网络开发

I have developed Neural Netowrk Design like this

  1. 我是不是做正确吗?偏倚神经元是否需要连接到所有神经元(输入层中的那些神经元除外)还是只连接到隐藏层中的神经元?

  2. 我的第二个问题是关于计算输出值。我使用下面的公式来计算神经元的输出值。

    HiddenLayerFirstNeuron.Value = 
    (input1.Value * weight) + (input2.Value * weight) + (Bias.Value * weight) 
    

    之后,我计算激活和结果发送输出。并输出神经元做相同的。

我不确定我在做什么,我想清除问题。

回答

0
  1. 偏差通常连接到所有隐藏和输出单位。
  2. 是的,你计算激活函数的输入,如前一层神经元的权重*输出的总和。

与发展好运;)

+0

对不起,但我要求澄清; 除输入单位外,我必须使用激活功能吗? –

+0

是的。我曾对输入单元和网络使用激活函数(sigmoid),但网络性能良好,但输出单元的输出较低,因为归一化数据由于输入单元的激活功能而被再次归一化。 – viceriel

0
  1. 应该有每个隐藏输出层独立的偏置神经元。将层看作应用于一阶多项式的函数,如f(m*x+b)=y,其中y是您的输出,f(x)是您的激活函数。如果你看一下线性项,你会认识到b。这代表了偏差,它与神经网络的行为类似于这种简化:它将超平面在空间中上下移动。请记住,您将有一个偏差每层连接到该层的所有神经元f((wi*xi+b)+...+(wn*xn+b))初始值为1.当涉及到梯度下降时,您将不得不训练这个神经元像一个正常的体重。

  2. 在我看来,你也应该将激活函数应用到输出层。这是通常用多层感知器完成的。但它实际上取决于你想要的。例如,如果您使用逻辑功能作为激活功能,并且您希望输出间隔为(0,1),那么您必须将激活功能应用于输出。由于基本的线性组合,就像在你的例子中那样,理论上可以超越前面提到的Intervall的边界。