[問題] 倒傳遞類神經 矩陣運算 轉換函式 tansi …已回收
大家好 問題是這樣的
我呼叫了nntool 訓練比較基本的 Feed-forward backprop
由於小弟有特殊需求,因此需要實作一個方法代替sim(net,input)
相信有學過類神經的各位應該知道 a = f(W*P+b)
a - 輸出
f - 轉換函式
W - 權重
P - 輸入向量
b - 偏權值
Feed-forward backprop 照理說也是多層感知機才對
所以我應該只要把訓練好的權重直接拿來計算 就能得到我要的結果
但實作後發現 卻不是這麼回事....
雖然沒必要 但我還是把其中一行Code貼上來好了
tansig(network1.IW{1,1}*Input)+network1.B{1};
假如我想要的答案是 [6 6]
但我自己計算 得到的卻是 [-0.9 -0.98]
後來我嘗試驗證了一下 發現一個問題 那就是轉換函式 tansig
tansig(6) = 1 ; tansig(-6) = -1;
可以看到上面這個結果 無論給予7、8、9 或者 -7、-8、....、-200
都不會逃出 -1 ~~~1 這個範圍
那到底matlab模擬出來的結果 基於我用的神經模型 要怎樣才能於大於1 或 小於-1?
還是說..其實計算並不像我所想的 只有多層感知機如此簡單?
但我找了些資料 大多是講怎麼運用鎖鏈法則偏微分 來得到新的權重
卻幾乎沒看到 倒傳遞類神經確定全部權重後 是怎麼計算的。
期望有人能解惑 謝謝。
-------------------------------------------------------------
2011/08/13
問題總算解決了 感謝 jounle 版友的協助
問題點在於 input、target 沒做正規化
下面是我與J大的來信 給有需要的人參考
J大:
我有用過nntool
不過沒有研究的很深
就我的經驗應該是沒有含正規化的東西在裡面
為什麼和你的計算會有出入我也不是很清楚
正規化就是配合神經網路作一些數據處理
譬如使用tangsig函數
上下限在+1和-1
所以要把輸入的數據值大小都限制在+1~-1之間
以單一向量為例,總數目為100的資料來看
首先找尋這100個數據裡面最大及最小的值
以這兩個值作為上下限
重新計算每個數據的值
new_p =[[p-min(p)]/[max(p)-min(p)]]*2-1
完成後你會發現每個數據都在+1~-1的範圍內
不過要注意處理多維向量要分開處理每個向量
不要搞混
如果你需要出來的數據上下限超過+1~-1
這需要反正規化
new_out = [(網路out+1)/2]*[max(原out)-min(原out)]+min(原out)
步驟就是
先將輸入的數據正規化(包括輸入向量及輸出向量)
丟進網路訓練
完成就可進行網路輸出
分類問提則不須反正規化
回歸問題則須反正規化
將所得的輸出值套用new_out公式可得反正規化結果
原out即未正規化的輸出向量
網路out即網路輸出的向量(介於+1~-1)
最後的話
建議你使用一層為tansig或是logsig的函數
然後後面接一個purelin的函數
講的可能不是很清楚
給你參考
還是建議多看一些論文或文章比較好
--------------------------------------------
你好!
就在剛剛 小弟總算得到想要得結果了
跟大大說的沒錯 的確就是正規化搞鬼
小弟參考的是下面這篇 內含Sourcecode 還有正規化 和反正規化所用的呼叫含
式
http://www.cnblogs.com/heaad/archive/2011/3/7.html
正規化後 總算矩陣運算正常了
先前因為.. XOR 的分類 若單純只有 1 -1
不用經過正規化 也可以直接矩陣運算 算出正確答案
所以差點因為這一點而放棄繼續鑽研 想改用手動實作
現在有了解答 總算可以趕進度了
謝謝您的協助
--
我怕的
不是 正眼看妳
而是 一旁砍人的飆仔
--
※ 編輯: pkmu8426 來自: 114.38.101.127 (08/07 17:41)
→
08/08 00:20, , 1F
08/08 00:20, 1F
唉 這我有想過 但治標不治本
FFBPNN 轉換函數就那3個 tansig、purelin、logsig
logsig我沒記錯也是一樣 logsig(8) 還是logsig(10) 最大就是-1~1
至於purelin 那更不用說了 根本就等於沒有換
不過...你這一席話 倒是讓我想試試看 每層都用purelin狀況會如何
只是擔心收斂效果會不佳... 算了 做過之後我再把結果PO上來
※ 編輯: pkmu8426 來自: 118.170.82.179 (08/08 22:51)
→
08/09 14:35, , 2F
08/09 14:35, 2F
→
08/09 14:36, , 3F
08/09 14:36, 3F
※ 編輯: pkmu8426 來自: 114.38.110.108 (08/14 00:01)