Радиальное базисное приближение

Этот пример использует функцию NEWRB, чтобы создать радиальную базисную сеть, которая аппроксимирует функцию, определяемую набором точек данных.

Задайте 21 входные параметры P и сопоставленные цели T.

X = -1:.1:1;
T = [-.9602 -.5770 -.0729  .3771  .6405  .6600  .4609 ...
      .1336 -.2013 -.4344 -.5000 -.3930 -.1647  .0988 ...
      .3072  .3960  .3449  .1816 -.0312 -.2189 -.3201];
plot(X,T,'+');
title('Training Vectors');
xlabel('Input Vector P');
ylabel('Target Vector T');

Figure contains an axes object. The axes object with title Training Vectors contains an object of type line.

Мы хотели бы найти функцию, которая соответствует этой 21 точке данных. Один способ сделать это с радиальной базисной сетью. Радиальная базисная сеть является сетью с двумя слоями. Скрытый слой радиальных базисных нейронов и выходной слой линейных нейронов. Вот радиальная базисная передаточная функция, используемая скрытым слоем.

x = -3:.1:3;
a = radbas(x);
plot(x,a)
title('Radial Basis Transfer Function');
xlabel('Input p');
ylabel('Output a');

Figure contains an axes object. The axes object with title Radial Basis Transfer Function contains an object of type line.

Веса и смещения каждого нейрона в скрытом слое задают положение и ширину радиальной основной функции. Каждый линейный выходной нейрон формирует взвешенную сумму этих радиальных основных функций. С правильным весом и значениями смещения для каждого слоя и достаточными скрытыми нейронами, радиальная базисная сеть может соответствовать любой функции любой желаемой точностью. Это - пример трех радиальных основных функций (в синем), масштабируются и суммируются, чтобы произвести функцию (в пурпурном).

a2 = radbas(x-1.5);
a3 = radbas(x+2);
a4 = a + a2*1 + a3*0.5;
plot(x,a,'b-',x,a2,'b--',x,a3,'b--',x,a4,'m-')
title('Weighted Sum of Radial Basis Transfer Functions');
xlabel('Input p');
ylabel('Output a');

Figure contains an axes object. The axes object with title Weighted Sum of Radial Basis Transfer Functions contains 4 objects of type line.

Функциональный NEWRB быстро создает радиальную базисную сеть, которая аппроксимирует функцию, определяемую P и T. В дополнение к набору обучающих данных и целям, NEWRB берет два аргумента, цель квадратичной невязки суммы и постоянное распространение.

eg = 0.02; % sum-squared error goal
sc = 1;    % spread constant
net = newrb(X,T,eg,sc);
NEWRB, neurons = 0, MSE = 0.176192

Чтобы видеть, как сеть выполняет, повторно постройте набор обучающих данных. Затем симулируйте сетевой ответ для входных параметров в той же области значений. Наконец, постройте результаты на том же графике.

plot(X,T,'+');
xlabel('Input');

X = -1:.01:1;
Y = net(X);

hold on;
plot(X,Y);
hold off;
legend({'Target','Output'})

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Target, Output.