[問題] 請教 RBFNN 的問題已回收

看板MATLAB作者 (小太保)時間16年前 (2009/05/13 20:10), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/2 (看更多)
我用隨機選取法建構了 rbfnn (幅狀基底函數類神經網路) 網路, 訓練樣本有 400 個,我讓該網路隨機產生 40 個中心點, 並因此 得到 40 個權重值. 我的問題是, 如果接下來我產生驗證用樣本 200 個,那當我將這 200 個驗證樣本丟進 rbfnn 裡面時... 一、我在訓練階段得出的 40 個中心點需要帶入驗證階段的 rbfnn 嗎? 二、亦或者我在驗證階段只需把權重值帶入 rbfnn 即可? 因為我看程式碼,權重矩陣 W 得到的過程是.. 選出中心點→計算相互間距離→產生 rbf矩陣 →讓它與目標輸出相乘得到W→再由 rbf矩陣 與 W 相乘得到實際輸出 我的疑惑是,因為實際輸出應該要與輸入有關,而 rbf 會依帶入 的資料點不同而不同(訓練階段與驗證階段的資料點不同),rbf不 同,W 就會變,W 會變的話「驗證」就無意義。 ┌─用來得到 W (在訓練階段可依此得到權重) rbf矩陣─┤ └─用來得到實際輸出 而 rbf 矩陣就是由中心點與資料點來的,因此中心點若變,rbf 就會變,則合理的想法就是在驗證階段時把之前選好的中心點以 及權重矩陣都帶進來,但因為資料點變了,rbf矩陣計算公式.. phi(j,i) = exp(((-norm(centers(:,i) - p(:,j))/sigma)^2)/2); p 為資料點,在這情況下 rbf 還是會依資料點的改變而改變,變 成在驗證階段 W 還是會跟著變...而若設定 W 「不變」,得出來 的結果就變得不準... 不曉得該怎麼辦哩...有人有這方面的經驗嗎? PS其實我一直覺得奇怪, 依程式的公式... 權重 W = pinv(phi)*t'; // phi = rbf矩陣, t = 目標輸出 實際輸出 yh = (phi*W); 在這情況下 yh = (phi*pinv(phi)*t'); 在這情況下決定該網路的主要參數反而不是「權重」,反而是 rbf矩陣了。 所以我可以解讀為 rbfnn 在訓練階段的重點在得出「中心點」 而非得出「權重值」嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.170.230.180

05/13 21:34, , 1F
中心點跟權重值訓練出來後,在測試時就應該固定
05/13 21:34, 1F

05/13 23:22, , 2F
中心點可以固定,但權重=pinv(rbfm) x 目標輸出<=rbfm會變
05/13 23:22, 2F

05/13 23:22, , 3F
因為 rbf矩陣 的計算與 中心點 & 驗證資料點有關
05/13 23:22, 3F

05/14 06:22, , 4F
還是說,我訓練好中心點與權重後,因W=pinv(phi)*t';
05/14 06:22, 4F

05/14 06:23, , 5F
==> phi(rbf矩陣) = pinv(Wt); 然後再依此得到 yh=(phi*W)
05/14 06:23, 5F
文章代碼(AID): #1A2hZCm- (MATLAB)
文章代碼(AID): #1A2hZCm- (MATLAB)