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的邊界。