2013-07-02 54 views
3

我的目標是使用神經網絡解決異或問題。我讀過無數關於多層神經網絡背後的理論,證明和數學的文章。這個理論是有意義的(數學...不是那麼多),但是我有一些關於神經網絡的評估和拓撲的簡單問題。神經網絡評估和拓撲

我覺得我非常接近解決這個問題,但我開始質疑我的拓撲和評估技術。除了反向傳播的複雜性之外,我只想知道我的評估方法是否正確。考慮到這一點,這裏是我的問題:

  1. 假設我們有多個輸入,並各自相應的輸入獲得它自己的節點?我們是否曾將這兩個值輸入到單個節點中?我們輸入這些信息的順序是否重要?

  2. 在評估圖形輸出時,每個節點在獲取值後立即觸發?或者,我們是否會收集上述圖層中的所有值,然後在我們已經消耗完所有輸入後開始渲染?

  3. 評估的順序是否重要?例如,如果層「b」中的給定節點已準備好觸發 - 但同一層中的其他節點仍在等待輸入 - 如果就緒節點無論如何都會觸發?還是應該在發射之前加載圖層中的所有節點?

  4. 每層應該連接到下一層中的所有節點嗎?

enter image description here

我們已經附上一張照片,這應有助於解釋(某些)我的問題。

謝謝你的時間!

+0

有趣的:一個演示,展示神經網絡如何演化爲異或門https://wagenaartje.github.io/netaptic/articles/evolvexor/ –

回答

4

1)是的,每個輸入都有自己的節點,並且該節點始終是該輸入類型的節點。順序無關緊要 - 你只需要保持一致。畢竟,一個未經訓練的神經網絡可以學習將任何一組線性可分離的輸入映射爲輸出,所以不需要爲了使其工作而需要放置節點的順序。

2和3)在下一層的任何節點觸發之前,您需要收集單個圖層中的所有值。如果您使用除步進式之外的任何激活功能,這一點非常重要,因爲輸入總和會影響向前傳播的值。因此,在傳播任何東西之前,你需要知道這個總和是多少。

4)哪些節點連接到哪些其他節點由您決定。由於你的網絡不會過大,異或是一個相當直接的問題,因此你可能最簡單的方法是將一層中的所有節點連接到下一層中的所有節點(即完全連接的神經網絡)。在其他問題中可能會出現特殊情況,最好不要使用這種拓撲結構,但是沒有一種簡單的方法來解決這個問題(大多數人使用試驗法和錯誤法,或者像NEAT那樣使用遺傳算法),以及出於此問題的目的,您無需擔心。

+0

感謝您的快速響應和良好的信息!雖然簡單的問題,你會驚訝這種類型的東西是不是很好的定義:)我感謝你的迴應。 – Colemangrill

+0

隨着NEAT的使用,通過突變引入的新(隱藏)節點不會分成多個層次。結果是隱藏節點連接的方式可能存在循環/週期/重複。這在評估過程中如何處理? –