如何設置神經網絡以使它們接受並輸出連續的值範圍而不是離散值? 從幾年前做神經網絡課程的記憶中,激活函數將是一個sigmoid,它會產生一個介於0和1之間的值。如果我想讓我的神經網絡產生一個實值的標量,我應該怎麼做做?我想也許如果我想要一個介於0和10之間的值,我可以將值乘以10?如果我有負面價值呢?這是人們通常做的還是有其他方式?怎麼樣的輸入?神經網絡中的連續輸出
由於
如何設置神經網絡以使它們接受並輸出連續的值範圍而不是離散值? 從幾年前做神經網絡課程的記憶中,激活函數將是一個sigmoid,它會產生一個介於0和1之間的值。如果我想讓我的神經網絡產生一個實值的標量,我應該怎麼做做?我想也許如果我想要一個介於0和10之間的值,我可以將值乘以10?如果我有負面價值呢?這是人們通常做的還是有其他方式?怎麼樣的輸入?神經網絡中的連續輸出
由於
neuroevolution的大部分工作都涉及使用具有連續輸入和輸出的神經網絡。
有幾種常用的方法:
每值regular sigmoid http://natekohl.net/media/sigmoid-reg.gif steep sigmoid http://natekohl.net/media/sigmoid-steep.gif
每值沒有規則需要的輸出(*)爲任何特定功能。事實上,我們通常需要添加一些算術運算在每本身在給定節點實現的功能結束後,以規模和否則輸出強制到特定的形式。
使用全有或全無輸出和/或0.0到1.0歸一化輸出的優點是它使事情更容易處理,並且還避免了溢出等問題。 (*)「輸出」在這裏可以理解爲網絡內給定節點(神經元)或整個網絡的給定節點(神經元)的輸出。
正如馬克貝西所指出的,[整個網絡]和[網絡]的輸出通常都會接收一些過濾/轉換。正如在這個迴應中以及Mark的評論中所暗示的那樣,可能最好在網絡的「隱藏」層中具有標準化/標準節點,並根據輸入和/或輸出的要求應用一些標準化/轉換/離散化網絡;然而,這種做法只是一個實用性的問題,而不是神經網絡的一般要求。
您通常需要對輸入和輸出進行一些過濾(電平轉換等)。顯然,過濾輸入會改變內部狀態,所以需要考慮一些問題,以避免丟失你正在訓練的信號。
既然我敢肯定有人會提到它 - 你可以定義網絡,這樣你不*有*做當然的輸入或輸出,任何轉換。但是,通用節點通常會更容易,並且會進行一些明確的過濾。 – 2009-12-01 02:14:55