2016-11-04 120 views
2

我通讀本頁面:http://neuralnetworksanddeeplearning.com/chap1.html以更好地瞭解神經網絡的工作原理。我想創建一個簡單的Java前饋網絡,它沒有反向傳播或培訓。瞭解神經網絡圖層,節點和點積

我在模糊的是網絡中每層「神經元」所涉及的數學。假設我有三層。第一層採用大小爲100的輸入矢量。這是否意味着我的第一層將有100個神經元?這是否也意味着每個神經元的輸入將是所有100個輸入乘以權重的總和?這是總結我的神經元激活功能的輸入?

在該章節中提到,神經元/感知器的所有輸入之和可以重新表示爲輸入(x)和權重(w)的點積。我可以將它們視爲兩個獨立的向量,它們的點積給出了x1w1 x2w2 x3w3 ..等,但是x1w1 + x2w2 + ..的總和仍然等於點積?

最後,如果一層應該有一個100的輸入和1000的輸出,這是否意味着該層實際上有1000個神經元,每個神經元需要100個輸入?那麼這個圖層爲每個神經元輸出1個值,從而給出1000個輸出?

如果這些問題完全無關緊要,我會提前致歉,我已經在線閱讀了一些文檔,這是我迄今爲止的理解,但很難驗證沒有問問真正理解它的人。如果您有其他資源或視頻可以提供幫助,他們會非常感激。

+0

此外,良好的學習的地方是[deeplearning4j(HTTPS:/ /deearningarning4j.org/neuralnet-overview)瞭解神經網絡的基礎知識。 –

回答

1

這是我在stackoverflow的第一個答案,所以請放輕鬆。

如果我正確理解你的問題,你想知道人造神經元背後的數學是如何工作的。神經元由以下列表中顯示的5個組件組成。 (下標i表示第i個輸入或重量。)

  1. 一組輸入xi。
  2. 一組權重wi。
  3. 閾值,u。
  4. 激活函數f。
  5. 單個神經元輸出y。

人造神經元有一個相當簡單的結構。

使用單元步驟激活功能,就可以判斷一組權重(和閾值),將產生以下分類: Click to view classification

綜觀數4.一種激活函數f。許多不同的功能可以在身份功能最簡單的情況下發生。

的神經元輸出Y,是施加激活函數到的輸入,少了加權和的結果。

根據所使用的激活函數,此值可以是離散或實數。

Here's的Y的輸出,其保持特定功能F.

一旦輸出已計算出,它可以被傳遞到另一個神經元(或組神經元)或由外部環境取樣。神經元輸出的解釋考慮

@Seephore

原則上取決於問題,對可以在人工神經網絡中使用的隱藏層的數量沒有限制。這樣的網絡可以使用來自深度學習文獻的「堆疊」或其他技術來訓練。是的,你可以有1000層,但我不知道你是否會得到很多好處:在深度學習中,我更常見的是1-20層隱藏層,而不是1000層隱藏層。在實踐中,層數是基於實際問題的,例如,在合理的訓練時間和沒有過度擬合的情況下會導致良好的準確性。

你在問什麼: 我會假設你的意思是說100個輸入和1000個輸出? 當輸入接受加權值時,其輸出會將其輸出給下一層中的所有其他節點(神經元),但該值仍來自給定節點。

有許多「願望洗」書出他們對於Java,但如果你真的想進入它讀This

+0

謝謝,這很有幫助。還有一個問題需要澄清:當一個圖層被定義爲具有100個輸入和1000個輸入時,這是否意味着每個神經元將100個輸入作爲加權和輸出1個值,並且該圖層具有1000個這些神經元? – Seephor

+0

是的,我的意思是1000的輸出。您可以在此回覆評論,而不是發佈新答案。 – Seephor

+0

明白了,就像我剛纔說的那樣,我是新手 –