RBF神經(jīng)網(wǎng)絡(luò)和BP神經(jīng)網(wǎng)絡(luò)的區(qū)別就在于訓(xùn)練方法上面:RBF的隱含層與輸入層之間的連接權(quán)值不是隨機(jī)確定的,是有一種固定算式的。下面以精確型RBF為例。
假設(shè)每個(gè)樣本有R維的特征。有S1個(gè)訓(xùn)練集樣本。IW1表示訓(xùn)練集,即S1XR的一個(gè)矩陣。
此時(shí),輸入一個(gè)R維的測(cè)試集樣本p,首先將p和IW1計(jì)算歐氏距離。
RBF徑向基函數(shù)的效果是:
所謂徑向基函數(shù) (Radial Basis Function 簡(jiǎn)稱 RBF), 就是某種沿徑向?qū)ΨQ的標(biāo)量函數(shù)。通常定義為空間中任一點(diǎn)x到某一中心xc之間歐氏距離的單調(diào)函數(shù) , 可記作 k(||x-xc||), 其作用往往是局部的 , 即當(dāng)x遠(yuǎn)離xc時(shí)函數(shù)取值很小。最常用的徑向基函數(shù)是高斯核函數(shù) ,形式為 k(||x-xc||)=exp{- ||x-xc||^2/(2*σ^2) } 其中xc為核函數(shù)中心,σ為函數(shù)的寬度參數(shù) , 控制了函數(shù)的徑向作用范圍。
簡(jiǎn)單地說,就是某個(gè)測(cè)試集樣本p和某個(gè)訓(xùn)練集樣本越接近,即歐氏距離越小,那么在RBF作用后輸出的值就越大。
假設(shè)這個(gè)樣本p和訓(xùn)練集中某個(gè)樣本(即IW1中某一列)很相似(即歐氏距離dist很?。?,那么輸出結(jié)果a1中(a1維度是S1X1)就有一個(gè)值會(huì)很大。經(jīng)過權(quán)重和偏置的作用后,再進(jìn)入線性分類器中,就很容易可以分出來。這是我的直觀的理解。
生成RBF的matlab函數(shù):net = newrbe(P,T,spread)。只有一個(gè)參數(shù)spread需要調(diào)整。
P
RxQ matrix of Q R-element input vectors
T
SxQ matrix of Q S-element target class vectors
spread
Spread of radial basis functions (default = 1.0)
The larger the spread is, the smoother the function approximation will be. Too large a spread can cause numerical problems.
也就是說,spread這個(gè)參數(shù)越大,RBF圖像越平滑,RBF的輸出差距不大,則所有輸入的作用都會(huì)被減弱。
關(guān)于此算法,MATLAB文檔中給出了很精煉的解釋:
newrbe creates a two-layer network. The first layer has radbas neurons, and calculates its weighted inputs with dist and its net input with netprod. The second layer has purelin neurons, and calculates its weighted input withdotprod and its net inputs with netsum. Both layers have biases.
newrbe sets the first-layer weights to P', and the first-layer biases are all set to 0.8326/spread, resulting in radial basis functions that cross 0.5 at weighted inputs of +/– spread.
(就是說這樣設(shè)計(jì)出默認(rèn)的RBF的效果是,關(guān)于X=0對(duì)稱,橫軸為+/-0.8333時(shí)函數(shù)的縱軸坐標(biāo)值大約是0.5,表現(xiàn)在圖中就是cross于這個(gè)點(diǎn)。如果加權(quán)后輸入是+/- spread的話,正好產(chǎn)生此效果。)
The second-layer weights IW{2,1} and biases b{2} are found by simulating the first-layer outputs A{1} and then solving the following linear expression:
[W{2,1} b{2}] * [A{1}; ones] = T
也就是說,RBF實(shí)際上是一個(gè)兩層的神經(jīng)網(wǎng)絡(luò)。很簡(jiǎn)單,隱層是使用RBF作為激活函數(shù)的神經(jīng)元,輸出層采用線性函數(shù)的神經(jīng)元,做一個(gè)線性分類。在前面的dist計(jì)算歐氏距離過程中,RBF采用高斯函數(shù),實(shí)際上是將數(shù)據(jù)轉(zhuǎn)化到高維空間,認(rèn)為存在某個(gè)高維空間能夠使得數(shù)據(jù)在這個(gè)空間是線性可分的。因此輸出層是線性的。
上面也解釋了本文開頭中講的,神經(jīng)元之間非隨機(jī)的權(quán)值是如何計(jì)算的:實(shí)際上,第一層的權(quán)值設(shè)為輸入矩陣P的轉(zhuǎn)置。而第二層的權(quán)值和偏置是要通過輸入?yún)?shù)T、第一層的output結(jié)果來反推的。
下面是MATLAB文檔中給的簡(jiǎn)單代碼:
下面是一個(gè)例子
%% I. 清空環(huán)境變量
clear all
clc
%% II. 訓(xùn)練集/測(cè)試集產(chǎn)生
%%
% 1. 產(chǎn)生隨機(jī)數(shù)據(jù)
NIR = rand(60,5);
%%
% 2. 隨機(jī)產(chǎn)生訓(xùn)練集和測(cè)試集
temp = randperm(size(NIR,1));
% 訓(xùn)練集――50個(gè)樣本
P_train = NIR(temp(1:50),:)';
T_train = NIR(temp(1:50),:)';
% 測(cè)試集――10個(gè)樣本
P_test = NIR(temp(51:end),:)';
T_test = NIR(temp(51:end),:)';
N = size(P_test,2);
%% III. RBF神經(jīng)網(wǎng)絡(luò)創(chuàng)建及仿真測(cè)試
%%
% 1. 創(chuàng)建網(wǎng)絡(luò)
net = newrbe(P_train,T_train,30);
%%
% 2. 仿真測(cè)試
T_sim = sim(net,P_test);
%% IV. 性能評(píng)價(jià)
%%
% 1. 相對(duì)誤差error
error = abs(T_sim - T_test)./T_test;
%%
% 2. 結(jié)果對(duì)比
result = [T_test' T_sim' error']
%% V. 繪圖
figure
plot(1:N,T_test,'b:*',1:N,T_sim,'r-o')
legend('真實(shí)值','預(yù)測(cè)值')
xlabel('預(yù)測(cè)樣本')
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4762瀏覽量
100539 -
仿真器
+關(guān)注
關(guān)注
14文章
1016瀏覽量
83641 -
MATLAB仿真
+關(guān)注
關(guān)注
4文章
176瀏覽量
19903 -
RBF
+關(guān)注
關(guān)注
0文章
40瀏覽量
15703
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論